spear
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package com.kitsu.medievalcraft;
|
||||
|
||||
import net.minecraft.client.renderer.entity.RenderSnowball;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import com.kitsu.medievalcraft.entity.EntityITSpear;
|
||||
import com.kitsu.medievalcraft.entity.EntityModelArrow;
|
||||
import com.kitsu.medievalcraft.entity.EntityShit;
|
||||
import com.kitsu.medievalcraft.entity.EntityTester;
|
||||
@@ -10,9 +8,12 @@ import com.kitsu.medievalcraft.item.ModItems;
|
||||
import com.kitsu.medievalcraft.renderer.RenderId;
|
||||
import com.kitsu.medievalcraft.renderer.RendererRegistry;
|
||||
import com.kitsu.medievalcraft.renderer.blocks.RenderModelArrow;
|
||||
import com.kitsu.medievalcraft.renderer.blocks.RenderModelITSpear;
|
||||
|
||||
import cpw.mods.fml.client.FMLClientHandler;
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.client.renderer.entity.RenderSnowball;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ClientProxy extends CommonProxy {
|
||||
|
||||
@@ -21,6 +22,7 @@ public class ClientProxy extends CommonProxy {
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityShit.class, new RenderSnowball(ModItems.itemShit));
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityTester.class, new RenderSnowball(ModItems.itemTester));
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityModelArrow.class, new RenderModelArrow());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityITSpear.class, new RenderModelITSpear());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package com.kitsu.medievalcraft;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
import com.kitsu.medievalcraft.block.ModBlocks;
|
||||
import com.kitsu.medievalcraft.compat.FuelHandler;
|
||||
import com.kitsu.medievalcraft.compat.ModDict;
|
||||
import com.kitsu.medievalcraft.crafting.CraftingHandle;
|
||||
import com.kitsu.medievalcraft.crafting.ModCrafting;
|
||||
import com.kitsu.medievalcraft.entity.EntityITSpear;
|
||||
import com.kitsu.medievalcraft.entity.EntityModelArrow;
|
||||
import com.kitsu.medievalcraft.entity.EntityShit;
|
||||
import com.kitsu.medievalcraft.entity.EntityTester;
|
||||
@@ -49,6 +48,7 @@ import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||
import cpw.mods.fml.common.registry.EntityRegistry;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
@Mod(modid = Main.MODID, name = Main.MODNAME, version = Main.VERSION)
|
||||
public class Main {
|
||||
@@ -111,7 +111,8 @@ public class Main {
|
||||
|
||||
EntityRegistry.registerModEntity(EntityShit.class, "itemShit", 1, this, 64, 10, true);
|
||||
EntityRegistry.registerModEntity(EntityModelArrow.class, "itemModelArrow", 2, this, 64, 10, true);
|
||||
EntityRegistry.registerModEntity(EntityTester.class, "itemTester", 3, this, 64, 10, true);
|
||||
EntityRegistry.registerModEntity(EntityITSpear.class, "itemITSpear", 3, this, 64, 10, true);
|
||||
EntityRegistry.registerModEntity(EntityTester.class, "itemTester", 4, this, 64, 10, true);
|
||||
|
||||
GameRegistry.registerFuelHandler(new FuelHandler());
|
||||
|
||||
|
||||
@@ -65,33 +65,35 @@ public class Firebox extends BlockContainer{
|
||||
public boolean isFireSource(World world, int x, int y, int z, ForgeDirection side) {
|
||||
if (this == ModBlocks.firebox && side == UP){
|
||||
TileEntityFirebox tile = (TileEntityFirebox) world.getTileEntity(x, y, z);
|
||||
if(this.getItemBurnTime(tile.getStackInSlot(0))>0){
|
||||
return true;
|
||||
if(tile.isOn==true){
|
||||
if(this.getItemBurnTime(tile.getStackInSlot(0))>0){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLightValue(IBlockAccess world,int x,int y,int z){
|
||||
if(world.getBlockMetadata(x, y, z)==1){
|
||||
return 15;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if(world.getBlockMetadata(x, y, z)==1){
|
||||
return 15;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void randomDisplayTick(World world, int x, int y, int z, Random rand)
|
||||
{
|
||||
super.randomDisplayTick(world, x, y, z, random);
|
||||
|
||||
|
||||
|
||||
if(world.getBlockMetadata(x, y, z)==1){
|
||||
if (rand.nextInt(24) == 0&&world.getBlock(x, y+1, z)!=Blocks.fire)
|
||||
{
|
||||
world.playSound((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), "fire.fire", 1.0F + rand.nextFloat(), rand.nextFloat() * 0.7F + 0.3F, false);
|
||||
}
|
||||
if (rand.nextInt(24) == 0&&world.getBlock(x, y+1, z)!=Blocks.fire)
|
||||
{
|
||||
world.playSound((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), "fire.fire", 1.0F + rand.nextFloat(), rand.nextFloat() * 0.7F + 0.3F, false);
|
||||
}
|
||||
int l;
|
||||
float f;
|
||||
float f1;
|
||||
@@ -129,8 +131,10 @@ public class Firebox extends BlockContainer{
|
||||
}
|
||||
if(player.inventory.getCurrentItem()!=null){
|
||||
if (tileEnt.getStackInSlot(0)==null){
|
||||
tileEnt.setInventorySlotContents(0, player.inventory.getCurrentItem());
|
||||
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
|
||||
if(isItemFuel(player.inventory.getCurrentItem())==true){
|
||||
tileEnt.setInventorySlotContents(0, player.inventory.getCurrentItem());
|
||||
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
|
||||
}
|
||||
}
|
||||
if (tileEnt.getStackInSlot(0)!=null){
|
||||
if(player.inventory.getCurrentItem()!=null){
|
||||
|
||||
582
src/main/java/com/kitsu/medievalcraft/entity/EntityITSpear.java
Normal file
582
src/main/java/com/kitsu/medievalcraft/entity/EntityITSpear.java
Normal file
@@ -0,0 +1,582 @@
|
||||
package com.kitsu.medievalcraft.entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.kitsu.medievalcraft.item.ModItems;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.IProjectile;
|
||||
import net.minecraft.entity.monster.EntityEnderman;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.entity.projectile.EntityArrow;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.play.server.S2BPacketChangeGameState;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityITSpear extends EntityArrow implements IProjectile {
|
||||
private int field_145791_d = -1;
|
||||
private int field_145792_e = -1;
|
||||
private int field_145789_f = -1;
|
||||
private Block field_145790_g;
|
||||
private int inData;
|
||||
private boolean inGround;
|
||||
/** 1 if the player can pick up the arrow */
|
||||
public int canBePickedUp;
|
||||
/** Seems to be some sort of timer for animating an arrow. */
|
||||
public int arrowShake;
|
||||
/** The owner of this arrow. */
|
||||
public Entity shootingEntity;
|
||||
private int ticksInGround;
|
||||
private int ticksInAir;
|
||||
private double damage = 10.0D;
|
||||
/** The amount of knockback an arrow applies when it hits a mob. */
|
||||
private int knockbackStrength;
|
||||
|
||||
public EntityITSpear(World world)
|
||||
{
|
||||
super(world);
|
||||
this.renderDistanceWeight = 10.0D;
|
||||
this.setSize(0.5F, 0.5F);
|
||||
}
|
||||
|
||||
public EntityITSpear(World world, double x, double y, double z)
|
||||
{
|
||||
super(world);
|
||||
this.renderDistanceWeight = 10.0D;
|
||||
this.setSize(0.5F, 0.5F);
|
||||
this.setPosition(x, y, z);
|
||||
this.yOffset = 0.0F;
|
||||
}
|
||||
|
||||
@SuppressWarnings("cast")
|
||||
public EntityITSpear(World world, EntityLivingBase player, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_)
|
||||
{
|
||||
super(world);
|
||||
this.renderDistanceWeight = 10.0D;
|
||||
this.shootingEntity = player;
|
||||
|
||||
if (player instanceof EntityPlayer)
|
||||
{
|
||||
this.canBePickedUp = 1;
|
||||
}
|
||||
|
||||
this.posY = player.posY + (double)player.getEyeHeight() + 0.10000000149011612D;
|
||||
double d0 = p_i1755_3_.posX - player.posX;
|
||||
double d1 = p_i1755_3_.boundingBox.minY + (double)(p_i1755_3_.height / 3.0F) - this.posY;
|
||||
double d2 = p_i1755_3_.posZ - player.posZ;
|
||||
double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2);
|
||||
|
||||
if (d3 >= 1.0E-7D)
|
||||
{
|
||||
float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F;
|
||||
float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI));
|
||||
double d4 = d0 / d3;
|
||||
double d5 = d2 / d3;
|
||||
this.setLocationAndAngles(player.posX + d4, this.posY, player.posZ + d5, f2, f3);
|
||||
this.yOffset = 0.0F;
|
||||
float f4 = (float)d3 * 0.2F;
|
||||
this.setThrowableHeading(d0, d1 + (double)f4, d2, p_i1755_4_, p_i1755_5_);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("cast")
|
||||
public EntityITSpear(World world, EntityLivingBase player, float p_i1756_3_)
|
||||
{
|
||||
super(world);
|
||||
this.renderDistanceWeight = 10.0D;
|
||||
this.shootingEntity = player;
|
||||
|
||||
if (player instanceof EntityPlayer)
|
||||
{
|
||||
this.canBePickedUp = 1;
|
||||
}
|
||||
|
||||
this.setSize(0.5F, 0.5F);
|
||||
this.setLocationAndAngles(player.posX, player.posY + (double)player.getEyeHeight(), player.posZ, player.rotationYaw, player.rotationPitch);
|
||||
|
||||
this.posX += (player.getLookVec().xCoord);
|
||||
//this.posY -= 0.10000000149011612D;
|
||||
this.posZ += (player.getLookVec().zCoord);
|
||||
//this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
|
||||
this.posY += player.getLookVec().yCoord;
|
||||
if(player.getLookVec().yCoord < 0){
|
||||
this.posY += player.getLookVec().yCoord * 2;
|
||||
}
|
||||
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
|
||||
//this.setSize(0.5F, 0.5F);
|
||||
//this.setLocationAndAngles(player.posX, player.posY + (double)player.getEyeHeight(), player.posZ, player.rotationYaw, player.rotationPitch);
|
||||
//this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
|
||||
//this.posY -= 0.10000000149011612D;
|
||||
//this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
|
||||
//this.setPosition(this.posX, this.posY, this.posZ);
|
||||
this.yOffset = 0.0F;
|
||||
this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
|
||||
this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
|
||||
this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI));
|
||||
this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F);
|
||||
}
|
||||
|
||||
protected void entityInit()
|
||||
{
|
||||
this.dataWatcher.addObject(16, Byte.valueOf((byte)0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
|
||||
*/
|
||||
@SuppressWarnings("cast")
|
||||
public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_)
|
||||
{
|
||||
float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_);
|
||||
p_70186_1_ /= (double)f2;
|
||||
p_70186_3_ /= (double)f2;
|
||||
p_70186_5_ /= (double)f2;
|
||||
p_70186_1_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_;
|
||||
p_70186_3_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_;
|
||||
p_70186_5_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_;
|
||||
p_70186_1_ *= (double)p_70186_7_;
|
||||
p_70186_3_ *= (double)p_70186_7_;
|
||||
p_70186_5_ *= (double)p_70186_7_;
|
||||
this.motionX = p_70186_1_/2.5;
|
||||
this.motionY = p_70186_3_/1.75;
|
||||
this.motionZ = p_70186_5_/2.5;
|
||||
float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_);
|
||||
this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI);
|
||||
this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, (double)f3) * 180.0D / Math.PI);
|
||||
this.ticksInGround = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX,
|
||||
* posY, posZ, yaw, pitch
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_)
|
||||
{
|
||||
this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_);
|
||||
this.setRotation(p_70056_7_, p_70056_8_);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the velocity to the args. Args: x, y, z
|
||||
*/
|
||||
@SuppressWarnings("cast")
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_)
|
||||
{
|
||||
|
||||
this.motionX = p_70016_1_ ;
|
||||
this.motionY = p_70016_3_ ;
|
||||
this.motionZ = p_70016_5_ ;
|
||||
|
||||
if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
|
||||
{
|
||||
float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_);
|
||||
this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI);
|
||||
this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, (double)f) * 180.0D / Math.PI);
|
||||
this.prevRotationPitch = this.rotationPitch;
|
||||
this.prevRotationYaw = this.rotationYaw;
|
||||
this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
|
||||
this.ticksInGround = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to update the entity's position/logic.
|
||||
*/
|
||||
@SuppressWarnings("cast")
|
||||
public void onUpdate()
|
||||
{
|
||||
super.onUpdate();
|
||||
|
||||
if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
|
||||
{
|
||||
float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI);
|
||||
}
|
||||
|
||||
Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
//this.getEntityData().setInteger("blockX", this.field_145791_d);
|
||||
|
||||
if (block.getMaterial() != Material.air)
|
||||
{
|
||||
block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
|
||||
if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(this.posX, this.posY, this.posZ)))
|
||||
{
|
||||
this.inGround = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.arrowShake > 0)
|
||||
{
|
||||
--this.arrowShake;
|
||||
}
|
||||
|
||||
if (this.inGround)
|
||||
{
|
||||
int j = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
|
||||
if (block == this.field_145790_g && j == this.inData)
|
||||
{
|
||||
++this.ticksInGround;
|
||||
|
||||
if (this.ticksInGround == -1)
|
||||
{
|
||||
this.setDead();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.inGround = false;
|
||||
this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
|
||||
this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
|
||||
this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
|
||||
this.ticksInGround = 0;
|
||||
this.ticksInAir = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
++this.ticksInAir;
|
||||
Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ);
|
||||
Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
|
||||
MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false);
|
||||
vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ);
|
||||
vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
|
||||
|
||||
if (movingobjectposition != null)
|
||||
{
|
||||
vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
|
||||
}
|
||||
|
||||
Entity entity = null;
|
||||
List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
|
||||
double d0 = 0.0D;
|
||||
int i;
|
||||
float f1;
|
||||
|
||||
for (i = 0; i < list.size(); ++i)
|
||||
{
|
||||
Entity entity1 = (Entity)list.get(i);
|
||||
|
||||
if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5))
|
||||
{
|
||||
f1 = 0.3F;
|
||||
AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand((double)f1, (double)f1, (double)f1);
|
||||
MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3);
|
||||
|
||||
if (movingobjectposition1 != null)
|
||||
{
|
||||
double d1 = vec31.distanceTo(movingobjectposition1.hitVec);
|
||||
|
||||
if (d1 < d0 || d0 == 0.0D)
|
||||
{
|
||||
entity = entity1;
|
||||
d0 = d1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entity != null)
|
||||
{
|
||||
movingobjectposition = new MovingObjectPosition(entity);
|
||||
}
|
||||
|
||||
if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer)
|
||||
{
|
||||
EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit;
|
||||
|
||||
if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer))
|
||||
{
|
||||
movingobjectposition = null;
|
||||
}
|
||||
}
|
||||
|
||||
float f2;
|
||||
float f4;
|
||||
|
||||
if (movingobjectposition != null)
|
||||
{
|
||||
if (movingobjectposition.entityHit != null)
|
||||
{
|
||||
f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
|
||||
int k = MathHelper.ceiling_double_int((double)f2 * this.damage);
|
||||
|
||||
DamageSource damagesource = null;
|
||||
|
||||
if (this.shootingEntity == null)
|
||||
{
|
||||
damagesource = DamageSource.causeArrowDamage(this, this.shootingEntity);
|
||||
}
|
||||
else
|
||||
{
|
||||
damagesource = DamageSource.causeThrownDamage(this, this.shootingEntity);
|
||||
}
|
||||
|
||||
if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman))
|
||||
{
|
||||
movingobjectposition.entityHit.setFire(5);
|
||||
}
|
||||
|
||||
if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k))
|
||||
{
|
||||
if (movingobjectposition.entityHit instanceof EntityLivingBase)
|
||||
{
|
||||
EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit;
|
||||
|
||||
if (!this.worldObj.isRemote)
|
||||
{
|
||||
entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1);
|
||||
}
|
||||
|
||||
if (this.knockbackStrength > 0)
|
||||
{
|
||||
f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
|
||||
if (f4 > 0.0F)
|
||||
{
|
||||
movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase)
|
||||
{
|
||||
EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity);
|
||||
EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase);
|
||||
}
|
||||
|
||||
if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP)
|
||||
{
|
||||
((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F));
|
||||
}
|
||||
}
|
||||
|
||||
this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));
|
||||
|
||||
if (!(movingobjectposition.entityHit instanceof EntityEnderman))
|
||||
{
|
||||
this.setDead();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.motionX *= -0.10000000149011612D;
|
||||
this.motionY *= -0.10000000149011612D;
|
||||
this.motionZ *= -0.10000000149011612D;
|
||||
this.rotationYaw += 180.0F;
|
||||
this.prevRotationYaw += 180.0F;
|
||||
this.ticksInAir = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
this.field_145791_d = movingobjectposition.blockX;
|
||||
this.field_145792_e = movingobjectposition.blockY;
|
||||
this.field_145789_f = movingobjectposition.blockZ;
|
||||
this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f);
|
||||
this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX));
|
||||
this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY));
|
||||
this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ));
|
||||
f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
|
||||
this.posX -= this.motionX / (double)f2 * 0.05000000074505806D;
|
||||
this.posY -= this.motionY / (double)f2 * 0.05000000074505806D;
|
||||
this.posZ -= this.motionZ / (double)f2 * 0.05000000074505806D;
|
||||
this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));
|
||||
this.inGround = true;
|
||||
this.arrowShake = 7;
|
||||
|
||||
|
||||
if (this.field_145790_g.getMaterial() != Material.air)
|
||||
{
|
||||
this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.posX += this.motionX;
|
||||
this.posY += this.motionY;
|
||||
this.posZ += this.motionZ;
|
||||
f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
|
||||
for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
|
||||
{
|
||||
this.prevRotationPitch += 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw < -180.0F)
|
||||
{
|
||||
this.prevRotationYaw -= 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
|
||||
{
|
||||
this.prevRotationYaw += 360.0F;
|
||||
}
|
||||
|
||||
this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
|
||||
this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
|
||||
float f3 = 0.99F;
|
||||
f1 = 0.05F;
|
||||
|
||||
if (this.isInWater())
|
||||
{
|
||||
for (int l = 0; l < 4; ++l)
|
||||
{
|
||||
f4 = 0.25F;
|
||||
this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ);
|
||||
}
|
||||
|
||||
f3 = 0.8F;
|
||||
}
|
||||
|
||||
if (this.isWet())
|
||||
{
|
||||
this.extinguish();
|
||||
}
|
||||
|
||||
this.motionX *= (double)f3;
|
||||
this.motionY *= (double)f3;
|
||||
this.motionZ *= (double)f3;
|
||||
this.motionY -= (double)f1;
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
this.func_145775_I();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* (abstract) Protected helper method to write subclass entity data to NBT.
|
||||
*/
|
||||
public void writeEntityToNBT(NBTTagCompound p_70014_1_)
|
||||
{
|
||||
p_70014_1_.setShort("xTile", (short)this.field_145791_d);
|
||||
p_70014_1_.setShort("yTile", (short)this.field_145792_e);
|
||||
p_70014_1_.setShort("zTile", (short)this.field_145789_f);
|
||||
p_70014_1_.setShort("life", (short)this.ticksInGround);
|
||||
p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g));
|
||||
p_70014_1_.setByte("inData", (byte)this.inData);
|
||||
p_70014_1_.setByte("shake", (byte)this.arrowShake);
|
||||
p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0));
|
||||
p_70014_1_.setByte("pickup", (byte)this.canBePickedUp);
|
||||
p_70014_1_.setDouble("damage", this.damage);
|
||||
}
|
||||
|
||||
/**
|
||||
* (abstract) Protected helper method to read subclass entity data from NBT.
|
||||
*/
|
||||
public void readEntityFromNBT(NBTTagCompound p_70037_1_)
|
||||
{
|
||||
this.field_145791_d = p_70037_1_.getShort("xTile");
|
||||
this.field_145792_e = p_70037_1_.getShort("yTile");
|
||||
this.field_145789_f = p_70037_1_.getShort("zTile");
|
||||
this.ticksInGround = p_70037_1_.getShort("life");
|
||||
this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255);
|
||||
this.inData = p_70037_1_.getByte("inData") & 255;
|
||||
this.arrowShake = p_70037_1_.getByte("shake") & 255;
|
||||
this.inGround = p_70037_1_.getByte("inGround") == 1;
|
||||
|
||||
if (p_70037_1_.hasKey("damage", 99))
|
||||
{
|
||||
this.damage = p_70037_1_.getDouble("damage");
|
||||
}
|
||||
|
||||
if (p_70037_1_.hasKey("pickup", 99))
|
||||
{
|
||||
this.canBePickedUp = p_70037_1_.getByte("pickup");
|
||||
}
|
||||
else if (p_70037_1_.hasKey("player", 99))
|
||||
{
|
||||
this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by a player entity when they collide with an entity
|
||||
*/
|
||||
public void onCollideWithPlayer(EntityPlayer p_70100_1_)
|
||||
{
|
||||
if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0)
|
||||
{
|
||||
boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode;
|
||||
|
||||
if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(ModItems.itemITSpear, 1)))
|
||||
{
|
||||
flag = false;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
{
|
||||
this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
|
||||
p_70100_1_.onItemPickup(this, 1);
|
||||
this.setDead();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
|
||||
* prevent them from trampling crops
|
||||
*/
|
||||
protected boolean canTriggerWalking()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public float getShadowSize()
|
||||
{
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
public void setDamage(double p_70239_1_)
|
||||
{
|
||||
this.damage = p_70239_1_;
|
||||
}
|
||||
|
||||
public double getDamage()
|
||||
{
|
||||
return this.damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the amount of knockback the arrow applies when it hits a mob.
|
||||
*/
|
||||
public void setKnockbackStrength(int p_70240_1_)
|
||||
{
|
||||
this.knockbackStrength = p_70240_1_;
|
||||
}
|
||||
|
||||
/**
|
||||
* If returns false, the item will not inflict any damage against entities.
|
||||
*/
|
||||
public boolean canAttackWithItem()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,7 @@ import com.kitsu.medievalcraft.item.forms.iron.IronSpearTipForm;
|
||||
import com.kitsu.medievalcraft.item.misc.ItemBark;
|
||||
import com.kitsu.medievalcraft.item.misc.ItemSmallBarrelLid;
|
||||
import com.kitsu.medievalcraft.item.misc.RawCuredLeather;
|
||||
import com.kitsu.medievalcraft.item.throwable.ItemITSpear;
|
||||
import com.kitsu.medievalcraft.item.throwable.ItemShit;
|
||||
import com.kitsu.medievalcraft.item.throwable.ItemTester;
|
||||
import com.kitsu.medievalcraft.item.tools.CustomIronHoe;
|
||||
@@ -81,8 +82,11 @@ public final class ModItems {
|
||||
public static Item ironChunk;
|
||||
public static Item hotironChunk;
|
||||
public static Item ironRing;
|
||||
|
||||
public static Item itemShit;
|
||||
public static Item itemITSpear;
|
||||
public static Item itemTester;
|
||||
|
||||
public static Item linkedRings;
|
||||
public static Item ironRingMesh;
|
||||
public static Item chainMailPlate;
|
||||
@@ -425,6 +429,7 @@ public final class ModItems {
|
||||
WOOD(0, 59, 2.0F, 0, 15), STONE(1, 131, 4.0F, 1, 5), IRON(2, 250, 6.0F, 2, 14), EMERALD(3, 1561, 8.0F, 3, 10), GOLD(0, 32, 12.0F, 0, 22);*/
|
||||
|
||||
public static ToolMaterial longswordmat = EnumHelper.addToolMaterial("LONGSWORD", 1, 350, 2.0F, 2.0F, 0);
|
||||
public static ToolMaterial ironspearmat = EnumHelper.addToolMaterial("IRONSPEAR", 1, 350, 2.0F, 2.0F, 0);
|
||||
public static ToolMaterial woodenshieldmat = EnumHelper.addToolMaterial("WOODENSHIELD", 0, 65, 2.0F, -3.5F, 0);
|
||||
public static ToolMaterial ironshieldmat = EnumHelper.addToolMaterial("IRONSHIELD", 0, 500, 2.0F, -3.5F, 0);
|
||||
public static ToolMaterial heavymacemat = EnumHelper.addToolMaterial("HEAVYMACE", 0, 350, 4.0F, -4.0F, 0);
|
||||
@@ -820,6 +825,7 @@ public final class ModItems {
|
||||
|
||||
itemModelArrow = new ItemModelArrow();
|
||||
itemIronTippedModelArrow = new ItemIronTippedModelArrow();
|
||||
itemITSpear = new ItemITSpear("itemITSpear", ironspearmat);
|
||||
|
||||
itemBark= new ItemBark();
|
||||
itemSmallBarrelLid = new ItemSmallBarrelLid();
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package com.kitsu.medievalcraft.item.throwable;
|
||||
|
||||
import com.kitsu.medievalcraft.Main;
|
||||
import com.kitsu.medievalcraft.entity.EntityITSpear;
|
||||
import com.kitsu.medievalcraft.entity.EntityShit;
|
||||
import com.kitsu.medievalcraft.item.ModItems;
|
||||
import com.kitsu.medievalcraft.util.CustomTab;
|
||||
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumAction;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemSword;
|
||||
import net.minecraft.item.Item.ToolMaterial;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
|
||||
import net.minecraftforge.event.entity.player.ArrowNockEvent;
|
||||
|
||||
public class ItemITSpear extends ItemSword {
|
||||
|
||||
private String name = "itemITSpear";
|
||||
|
||||
public ItemITSpear(String name, ToolMaterial mat) {
|
||||
super(mat);
|
||||
setUnlocalizedName(name);
|
||||
setMaxStackSize(1);
|
||||
setCreativeTab(CustomTab.MedievalCraftTab);
|
||||
setTextureName(Main.MODID + ":" + name);
|
||||
GameRegistry.registerItem(this, name);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumAction getItemUseAction(ItemStack stack) {
|
||||
return EnumAction.bow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxItemUseDuration(ItemStack p_77626_1_) {
|
||||
return 72000;
|
||||
}
|
||||
|
||||
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
|
||||
{
|
||||
ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_);
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
if (event.isCanceled())
|
||||
{
|
||||
return event.result;
|
||||
}
|
||||
if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.itemITSpear))
|
||||
{
|
||||
p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_));
|
||||
}
|
||||
return p_77659_1_;
|
||||
}
|
||||
|
||||
public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_)
|
||||
{
|
||||
int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_;
|
||||
ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j);
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
if (event.isCanceled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
j = event.charge;
|
||||
boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0;
|
||||
if (flag || p_77615_3_.inventory.hasItem(ModItems.itemITSpear))
|
||||
{
|
||||
float f = (float)j / 20.0F;
|
||||
f = (f * f + f * 2.0F) / 3.0F;
|
||||
if ((double)f < 0.1D)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (f > 1.0F)
|
||||
{
|
||||
f = 1.0F;
|
||||
}
|
||||
EntityITSpear entityspear = new EntityITSpear(p_77615_2_, p_77615_3_, f * 2.0F);
|
||||
if (f == 1.0F)
|
||||
{
|
||||
entityspear.setIsCritical(true);
|
||||
}
|
||||
int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, p_77615_1_);
|
||||
if (k > 0)
|
||||
{
|
||||
entityspear.setDamage(entityspear.getDamage() + (double)k * 0.5D + 0.5D);
|
||||
}
|
||||
int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, p_77615_1_);
|
||||
if (l > 0)
|
||||
{
|
||||
entityspear.setKnockbackStrength(l);
|
||||
}
|
||||
if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, p_77615_1_) > 0)
|
||||
{
|
||||
entityspear.setFire(100);
|
||||
}
|
||||
p_77615_1_.damageItem(1, p_77615_3_);
|
||||
p_77615_2_.playSoundAtEntity(p_77615_3_, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
|
||||
if (flag)
|
||||
{
|
||||
entityspear.canBePickedUp = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_77615_3_.inventory.consumeInventoryItem(ModItems.itemITSpear);
|
||||
}
|
||||
if (!p_77615_2_.isRemote)
|
||||
{
|
||||
p_77615_2_.spawnEntityInWorld(entityspear);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_)
|
||||
{
|
||||
return p_77654_1_;
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,10 @@ import com.kitsu.medievalcraft.renderer.blocks.machine.ForgeRenderer;
|
||||
import com.kitsu.medievalcraft.renderer.blocks.machine.FourShelfRenderer;
|
||||
import com.kitsu.medievalcraft.renderer.blocks.machine.SolidFilterRender;
|
||||
import com.kitsu.medievalcraft.renderer.blocks.machine.WaterFilterRenderer;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.IRITSpear;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.ItemRendererITModelArrow;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.ItemRendererLongbow;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.ItemRendererModelArrow;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.crucibles.IRCrucible;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.crucibles.empty.IRSlackCrucible;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.crucibles.empty.IRTanninCrucible;
|
||||
@@ -52,7 +55,6 @@ import com.kitsu.medievalcraft.renderer.itemrenderer.tongs.IRSlottedTongs;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.tools.IRCraftingBlade;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.tools.IRForgeHammer;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.tools.IRInlayHammer;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.tools.IRironPicks;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.weapons.IRBattleAxe;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.weapons.IRGladius;
|
||||
import com.kitsu.medievalcraft.renderer.itemrenderer.weapons.ItemRenderHeavymace;
|
||||
@@ -108,10 +110,11 @@ public class RendererRegistry {
|
||||
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.forgeHammer, new IRForgeHammer());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.inlayHammer, new IRInlayHammer());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.customIronPick, new IRironPicks());
|
||||
//MinecraftForgeClient.registerItemRenderer(ModItems.customIronPick, new IRironPicks());
|
||||
|
||||
//MinecraftForgeClient.registerItemRenderer(ModItems.itemModelArrow, new ItemRendererModelArrow());
|
||||
//MinecraftForgeClient.registerItemRenderer(ModItems.itemIronTippedModelArrow, new ItemRendererITModelArrow());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.itemModelArrow, new ItemRendererModelArrow());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.itemIronTippedModelArrow, new ItemRendererITModelArrow());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.itemITSpear, new IRITSpear());
|
||||
|
||||
|
||||
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.emptySoftCrucible), new ItemRendererSECrucible());
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.kitsu.medievalcraft.renderer.blocks;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.kitsu.medievalcraft.entity.EntityITSpear;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class RenderModelITSpear extends Render
|
||||
{
|
||||
|
||||
//private static final ResourceLocation arrowTextures = new ResourceLocation("textures/entity/arrow.png");
|
||||
private static final ResourceLocation arrowTextures = new ResourceLocation("kitsumedievalcraft:textures/items/Spear.png");
|
||||
public static final ResourceLocation MODEL = new ResourceLocation("kitsumedievalcraft:models/Spear.obj");
|
||||
public static final ResourceLocation TEXTURE = new ResourceLocation("kitsumedievalcraft:models/Spear.png");
|
||||
|
||||
public IModelCustom model = AdvancedModelLoader.loadModel(MODEL);
|
||||
|
||||
public void doRender(EntityITSpear p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_ );
|
||||
GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
|
||||
model.renderAll();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
protected ResourceLocation getEntityTexture(EntityITSpear p_110775_1_)
|
||||
{
|
||||
return arrowTextures;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
|
||||
*/
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_)
|
||||
{
|
||||
return this.getEntityTexture((EntityITSpear)p_110775_1_);
|
||||
}
|
||||
|
||||
/**
|
||||
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
|
||||
* handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
|
||||
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
|
||||
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
|
||||
*/
|
||||
|
||||
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
|
||||
{
|
||||
//System.out.println("doRender Ran");
|
||||
this.doRender((EntityITSpear)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
package com.kitsu.medievalcraft.renderer.itemrenderer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
|
||||
import net.minecraftforge.client.IItemRenderer.ItemRendererHelper;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class IRITSpear implements IItemRenderer{
|
||||
|
||||
public static final ResourceLocation MODEL = new ResourceLocation("kitsumedievalcraft:models/Spear.obj");
|
||||
public static final ResourceLocation TEXTURE = new ResourceLocation("kitsumedievalcraft:models/Spear.png");
|
||||
|
||||
public IModelCustom model = AdvancedModelLoader.loadModel(MODEL);
|
||||
|
||||
@Override
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
|
||||
|
||||
switch(type) {
|
||||
case EQUIPPED: {
|
||||
return true;
|
||||
}
|
||||
case EQUIPPED_FIRST_PERSON: {
|
||||
return true;
|
||||
}
|
||||
case INVENTORY: {
|
||||
return true;
|
||||
}
|
||||
case ENTITY: {
|
||||
return true;
|
||||
}
|
||||
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
|
||||
ItemRendererHelper helper) {
|
||||
|
||||
switch(type) {
|
||||
case EQUIPPED: {
|
||||
return false;
|
||||
}
|
||||
case EQUIPPED_FIRST_PERSON: {
|
||||
return false;
|
||||
}
|
||||
case INVENTORY: {
|
||||
return false;
|
||||
}
|
||||
case ENTITY: {
|
||||
return false;
|
||||
}
|
||||
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
|
||||
|
||||
switch(type) {
|
||||
|
||||
case EQUIPPED: {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
|
||||
GL11.glTranslatef(0.5F, 0.4F, -0.0F);
|
||||
//ANGLE, X ROTATE, Y ROTATE, Z ROTATE
|
||||
GL11.glRotatef(140F, 0.0F, 0.0F, 1.0F);
|
||||
//GL11.glRotatef(-20F, 0.0F, 1.0F, 0.0F);
|
||||
//GL11.glRotatef(40F, 1.0F, 0.0F, 0.0F);
|
||||
//GL11.glRotated(90, 1.0, 0.0, 0.0);
|
||||
|
||||
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
|
||||
model.renderAll();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
} break;
|
||||
|
||||
case EQUIPPED_FIRST_PERSON: {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
|
||||
//ANGLE, X ROTATE, Y ROTATE, Z ROTATE
|
||||
GL11.glTranslatef(0.0F, 2.0F, 0.0F);
|
||||
//GL11.glRotatef(45F, 1.0F, 0.0F, 0.0F);
|
||||
// GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F);
|
||||
// GL11.glRotatef(45F, 0.0F, -1.0F, 0.0F);
|
||||
|
||||
//GL11.glRotated(-85, 1.0, 0.0, 0.0);
|
||||
//GL11.glRotated(50, 0.0F, 0.0F, 1.0F);
|
||||
//GL11.glRotated(3, 0.0F, 1.0F, 0.0F);
|
||||
|
||||
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
|
||||
model.renderAll();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
} break;
|
||||
|
||||
case INVENTORY: {
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
float iscale = 9F;
|
||||
GL11.glScalef(iscale, iscale, iscale);
|
||||
//GL11.glRotatef(-45, 0.0F, 0.0F, 1.0F);
|
||||
//GL11.glRotatef(45, 1.0F, 0.0F, 0.0F);
|
||||
//GL11.glTranslatef(0.2F, 1.2F, 0.0F);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
|
||||
model.renderAll();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
} break;
|
||||
|
||||
case ENTITY: {
|
||||
GL11.glPushMatrix();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TEXTURE);
|
||||
GL11.glScalef(5.0F, 5.0F, 5.0F);
|
||||
//GL11.glTranslatef(5.0F, 5.0F, 5.0F);
|
||||
|
||||
//ANGLE, X ROTATE, Y ROTATE, Z ROTATE
|
||||
//GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F);
|
||||
//GL11.glRotatef(90F, 1.0F, 0.0F, 1.0F);
|
||||
//GL11.glRotatef(45F, 0.0F, 0.0F, 1.0F);
|
||||
//GL11.glRotated(90, 1.0, 0.0, 0.0);
|
||||
|
||||
model.renderAll();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
} break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -222,6 +222,9 @@ public class TileEntityFirebox extends TileEntity implements IInventory{
|
||||
private void fireboxMaint(World world, int x, int y, int z){
|
||||
if((this.getStackInSlot(0)==null)&&(world.getBlockMetadata(x, y, z)==1)){
|
||||
world.setBlockMetadataWithNotify(x, y, z, 0, 3);
|
||||
if(world.getBlock(x, y+1, z)==Blocks.fire){
|
||||
world.setBlock(x, y+1, z, Blocks.air, 0, 2);
|
||||
}
|
||||
this.markForUpdate();
|
||||
this.markDirty();
|
||||
//world.getBlock(x, y, z).setLightLevel(0f);
|
||||
|
||||
261
src/main/resources/assets/kitsumedievalcraft/models/Spear.obj
Normal file
261
src/main/resources/assets/kitsumedievalcraft/models/Spear.obj
Normal file
@@ -0,0 +1,261 @@
|
||||
# Blender v2.71 (sub 0) OBJ File: 'Spear.blend'
|
||||
# www.blender.org
|
||||
mtllib Spear.mtl
|
||||
o Cube_Cube.001
|
||||
v 1.846850 -0.006872 0.001740
|
||||
v 1.970270 0.013516 0.001740
|
||||
v 1.623894 0.013516 -0.108096
|
||||
v 1.610836 -0.006872 -0.080340
|
||||
v 1.693859 0.013516 -0.069275
|
||||
v 1.680801 -0.006872 -0.041520
|
||||
v 1.546934 0.013120 -0.186002
|
||||
v 1.546805 -0.006674 -0.158247
|
||||
v 1.846850 0.032717 0.001740
|
||||
v 1.610836 0.032717 -0.080340
|
||||
v 1.680801 0.032717 -0.041520
|
||||
v 1.546805 0.032915 -0.158247
|
||||
v 1.623894 0.013516 0.111576
|
||||
v 1.610836 -0.006872 0.083821
|
||||
v 1.693859 0.013516 0.072756
|
||||
v 1.680801 -0.006872 0.045000
|
||||
v 1.546934 0.013120 0.189483
|
||||
v 1.546805 -0.006674 0.161727
|
||||
v 1.610836 0.032717 0.083821
|
||||
v 1.680801 0.032717 0.045000
|
||||
v 1.546805 0.032915 0.161727
|
||||
v 1.469716 0.012725 -0.108096
|
||||
v 1.482774 0.033113 -0.080340
|
||||
v 1.482774 0.033113 0.001740
|
||||
v 1.482774 -0.006476 -0.080340
|
||||
v 1.469716 0.012725 0.111576
|
||||
v 1.482774 0.033113 0.083821
|
||||
v 1.482774 -0.006476 0.083821
|
||||
v 1.680801 0.032717 0.001740
|
||||
v 1.680801 -0.006872 0.001740
|
||||
v 1.398489 0.053369 0.000806
|
||||
v -1.607362 0.053369 0.000804
|
||||
v 1.398489 0.033056 0.035990
|
||||
v -1.607362 0.033056 0.035988
|
||||
v 1.398489 -0.007571 0.035990
|
||||
v -1.607362 -0.007571 0.035988
|
||||
v 1.398489 -0.027885 0.000806
|
||||
v -1.607362 -0.027885 0.000804
|
||||
v 1.398489 -0.007571 -0.034378
|
||||
v -1.607362 -0.007571 -0.034380
|
||||
v 1.398489 0.033056 -0.034378
|
||||
v -1.607362 0.033056 -0.034380
|
||||
v 1.482774 -0.006476 0.001740
|
||||
vt 0.909646 0.207292
|
||||
vt 0.912341 0.111441
|
||||
vt 0.978695 0.111446
|
||||
vt 0.875903 0.113312
|
||||
vt 0.895238 0.111444
|
||||
vt 0.892542 0.207294
|
||||
vt 0.892582 0.021160
|
||||
vt 0.909686 0.021157
|
||||
vt 0.925060 0.170837
|
||||
vt 0.906990 0.079284
|
||||
vt 0.925060 0.075489
|
||||
vt 0.958883 0.210746
|
||||
vt 0.956164 0.114895
|
||||
vt 0.975439 0.116764
|
||||
vt 0.941807 0.210743
|
||||
vt 0.939088 0.114893
|
||||
vt 0.941767 0.024609
|
||||
vt 0.958842 0.024612
|
||||
vt 0.927928 0.133336
|
||||
vt 0.909857 0.129541
|
||||
vt 0.927928 0.037989
|
||||
vt 0.872778 0.114897
|
||||
vt 0.901924 0.024612
|
||||
vt 0.901964 0.210746
|
||||
vt 0.938308 0.209507
|
||||
vt 0.919866 0.210437
|
||||
vt 0.913295 0.117370
|
||||
vt 0.847576 0.925853
|
||||
vt 0.943494 0.944485
|
||||
vt 0.847316 0.944969
|
||||
vt 0.688030 0.885062
|
||||
vt 0.649924 0.795399
|
||||
vt 0.668977 0.791613
|
||||
vt 0.911733 0.122382
|
||||
vt 0.930175 0.120522
|
||||
vt 0.936745 0.216378
|
||||
vt 0.911318 0.018270
|
||||
vt 0.930427 0.018835
|
||||
vt 0.913224 0.114841
|
||||
vt 0.954682 0.210093
|
||||
vt 0.937231 0.114504
|
||||
vt 0.954682 0.019078
|
||||
vt 0.918303 0.029315
|
||||
vt 0.936745 0.030244
|
||||
vt 0.938308 0.023373
|
||||
vt 0.931737 0.119229
|
||||
vt 0.754198 0.840644
|
||||
vt 0.730639 0.844556
|
||||
vt 0.731301 0.820844
|
||||
vt 0.688030 0.787828
|
||||
vt 0.569166 0.795181
|
||||
vt 0.588241 0.791504
|
||||
vt 0.607315 0.890252
|
||||
vt 0.960661 0.018320
|
||||
vt 0.955656 0.114781
|
||||
vt 0.941558 0.018276
|
||||
vt 0.660883 0.975200
|
||||
vt 0.559541 0.956621
|
||||
vt 0.655707 0.956100
|
||||
vt 0.000000 0.000000
|
||||
vt 0.786166 0.829217
|
||||
vt 0.779441 0.836886
|
||||
vt 0.779718 0.811540
|
||||
vt 0.772716 0.844556
|
||||
vt 0.756820 0.791740
|
||||
vt 0.780380 0.787828
|
||||
vt 0.744061 0.806292
|
||||
vt 0.957682 0.205726
|
||||
vt 0.938502 0.210596
|
||||
vt 0.807242 0.834065
|
||||
vt 0.813691 0.816388
|
||||
vt 0.813967 0.841735
|
||||
vt 0.820692 0.849405
|
||||
vt 0.839210 0.845493
|
||||
vt 0.813029 0.792676
|
||||
vt 0.836588 0.796588
|
||||
vt 0.862107 0.825693
|
||||
vt 0.862769 0.849405
|
||||
vt 0.849347 0.811141
|
||||
vt 0.848313 0.975191
|
||||
vt 0.848052 0.956091
|
||||
vt 0.944231 0.956602
|
||||
vt 0.876729 0.114667
|
||||
vt 0.894622 0.019078
|
||||
vt 0.894622 0.210093
|
||||
vt 0.927352 0.211156
|
||||
vt 0.908321 0.205676
|
||||
vt 0.660146 0.925845
|
||||
vt 0.654971 0.944960
|
||||
vt 0.558805 0.944468
|
||||
vt 0.607315 0.787828
|
||||
vt 0.949515 0.207294
|
||||
vt 0.906941 0.162449
|
||||
vt 0.924512 0.070802
|
||||
vt 0.924512 0.168102
|
||||
vt 0.949556 0.021160
|
||||
vt 0.906184 0.076454
|
||||
vt 0.923755 0.070802
|
||||
vt 0.923755 0.168102
|
||||
vt 0.918303 0.215449
|
||||
vt 0.919866 0.024303
|
||||
vt 0.904418 0.834555
|
||||
vt 0.884600 0.799370
|
||||
vt 0.904418 0.794239
|
||||
vt 0.904419 0.917186
|
||||
vt 0.884600 0.882001
|
||||
vt 0.904419 0.876870
|
||||
vt 0.832557 0.726440
|
||||
vt 0.736378 0.726924
|
||||
vt 0.736378 0.021532
|
||||
vt 0.544033 0.726915
|
||||
vt 0.447867 0.726423
|
||||
vt 0.447867 0.021031
|
||||
vt 0.448604 0.021688
|
||||
vt 0.544770 0.021167
|
||||
vt 0.544770 0.726412
|
||||
vt 0.653498 0.470833
|
||||
vt 0.645169 0.566340
|
||||
vt 0.636841 0.470833
|
||||
vt 0.737115 0.021157
|
||||
vt 0.833293 0.021669
|
||||
vt 0.833294 0.726915
|
||||
vt 0.737115 0.726403
|
||||
vt 0.832557 0.021048
|
||||
vt 0.544033 0.021523
|
||||
vt 0.448604 0.726933
|
||||
vt 0.636841 0.279818
|
||||
vt 0.653498 0.279818
|
||||
vt 0.645169 0.184311
|
||||
usemtl None
|
||||
s off
|
||||
f 6/1 5/2 2/3
|
||||
f 7/4 3/5 4/6
|
||||
f 3/5 5/2 6/1
|
||||
f 3/5 10/7 11/8
|
||||
f 7/9 12/10 10/11
|
||||
f 2/3 5/2 11/8
|
||||
f 14/12 13/13 17/14
|
||||
f 16/15 15/16 13/13
|
||||
f 20/17 19/18 13/13
|
||||
f 19/19 21/20 17/21
|
||||
f 2/22 9/23 20/17
|
||||
f 16/15 1/24 2/22
|
||||
f 28/25 18/26 17/27
|
||||
f 27/28 31/29 33/30
|
||||
f 31/31 27/32 24/33
|
||||
f 7/34 22/35 23/36
|
||||
f 27/37 33/38 26/39
|
||||
f 41/40 22/41 39/42
|
||||
f 7/34 8/43 25/44
|
||||
f 27/45 26/46 17/27
|
||||
f 10/47 12/48 23/49
|
||||
f 24/33 23/50 31/31
|
||||
f 25/51 43/52 37/53
|
||||
f 23/54 22/55 41/56
|
||||
f 25/57 37/58 39/59
|
||||
f 11/60 29/60 20/60
|
||||
f 20/61 29/62 19/63
|
||||
f 11/64 10/47 29/62
|
||||
f 19/63 27/65 21/66
|
||||
f 29/62 10/47 19/63
|
||||
f 24/67 27/65 19/63
|
||||
f 22/55 25/68 39/69
|
||||
f 16/60 30/60 6/60
|
||||
f 16/70 14/71 30/72
|
||||
f 6/73 30/72 4/74
|
||||
f 30/72 14/71 4/74
|
||||
f 14/71 18/75 28/76
|
||||
f 4/74 25/77 8/78
|
||||
f 28/76 43/79 14/71
|
||||
f 23/80 41/81 31/82
|
||||
f 26/83 33/84 35/85
|
||||
f 35/86 28/87 26/39
|
||||
f 28/88 35/89 37/90
|
||||
f 37/53 43/52 28/91
|
||||
f 1/92 6/1 2/3
|
||||
f 8/93 7/94 4/95
|
||||
f 4/6 3/5 6/1
|
||||
f 5/2 3/5 11/8
|
||||
f 3/5 7/4 10/7
|
||||
f 9/96 2/3 11/8
|
||||
f 18/97 14/98 17/99
|
||||
f 14/12 16/15 13/13
|
||||
f 15/16 20/17 13/13
|
||||
f 13/13 19/18 17/14
|
||||
f 15/16 2/22 20/17
|
||||
f 15/16 16/15 2/22
|
||||
f 26/46 28/25 17/27
|
||||
f 12/100 7/34 23/36
|
||||
f 22/35 7/34 25/44
|
||||
f 21/101 27/45 17/27
|
||||
f 9/102 11/103 20/104
|
||||
f 23/49 24/67 10/47
|
||||
f 1/105 16/106 6/107
|
||||
f 25/77 4/74 43/79
|
||||
f 24/67 19/63 10/47
|
||||
f 43/79 4/74 14/71
|
||||
s 1
|
||||
f 32/108 34/109 33/110
|
||||
f 33/110 34/109 36/111
|
||||
f 36/111 38/112 37/113
|
||||
f 38/114 40/115 39/116
|
||||
f 34/117 32/118 42/119
|
||||
f 42/120 32/121 31/122
|
||||
f 40/115 42/120 41/123
|
||||
f 31/124 32/108 33/110
|
||||
f 35/125 33/110 36/111
|
||||
f 35/125 36/111 37/113
|
||||
f 37/126 38/114 39/116
|
||||
f 34/117 40/127 36/128
|
||||
f 39/116 40/115 41/123
|
||||
f 41/123 42/120 31/122
|
||||
f 40/127 38/129 36/128
|
||||
f 34/117 42/119 40/127
|
||||
BIN
src/main/resources/assets/kitsumedievalcraft/models/Spear.png
Normal file
BIN
src/main/resources/assets/kitsumedievalcraft/models/Spear.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
Reference in New Issue
Block a user