Dragonisser Posted May 16, 2015 Posted May 16, 2015 Well i made a sandvich on a plate and as soon as i throw it and it lands, it glitches through the floor (kinda like the arrrow issue). Only when i load the world again i can see it where it should be. Entity package de.prwh.minefortress.entity; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import cpw.mods.fml.common.registry.IThrowableEntity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import de.prwh.minefortress.main.Inits; public class EntitySandvich extends EntityMob implements IThrowableEntity { public int innerRotation; private int delayBeforeCanPickup = 10; public Entity shootingEntity; public EntitySandvich(World p_i1595_1_) { super(p_i1595_1_); this.innerRotation = this.rand.nextInt(100000); } public EntitySandvich(World p_i1595_1_, EntityLivingBase par2EntityLivingBase) { super(p_i1595_1_); this.shootingEntity = par2EntityLivingBase; } public boolean isAIEnabled() { return true; } public void onLivingUpdate() { this.innerRotation++; if (this.delayBeforeCanPickup > 0) { --this.delayBeforeCanPickup; } this.updateArmSwingProgress(); float f = this.getBrightness(1.0F); if (f > 0.5F) { this.entityAge += 2; } super.onLivingUpdate(); } public boolean canBeCollidedWith() { return true; } @SideOnly(Side.CLIENT) public float getShadowSize() { return this.height / 8.0F; } public boolean hitByEntity(Entity p_85031_1_) { return true; } protected Entity findPlayerToAttack() { return entityToAttack; } public void onCollideWithPlayer(EntityPlayer player) { if (!this.worldObj.isRemote) { if (this.delayBeforeCanPickup > 0) { return; } if (this.shootingEntity == player) { player.inventory.addItemStackToInventory(new ItemStack(Inits.sandvich, 1)); this.setDead(); } else if (this.shootingEntity != player) { final float heal = player.getMaxHealth() - player.getHealth(); player.heal(heal); player.getFoodStats().func_151686_a((ItemFood) Inits.sandvich, new ItemStack(Inits.sandvich, 1)); this.setDead(); } } } @Override public Entity getThrower() { return shootingEntity; } @Override public void setThrower(Entity entity) { this.shootingEntity = entity; } } Render package de.prwh.minefortress.render; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import de.prwh.minefortress.entity.EntitySandvich; import de.prwh.minefortress.entity.ModelSandvich; @SideOnly(Side.CLIENT) public class RenderSandvich extends RenderLiving { protected ModelBase model; public RenderSandvich(ModelSandvich modelsandvich, float f) { super(modelsandvich, f); model = new ModelSandvich(); } public static final ResourceLocation resources = new ResourceLocation("minefortress:textures/entity/sandvich.png"); public void renderSandvich(EntitySandvich entity, double par2, double par4, double par6, float par8, float par9) { float f2 = (float) entity.innerRotation /* + par9 */; float f3 = MathHelper.sin(f2 * 0.05F) / 2.0F + 0.5F; //f3 += f3 * f3; f3 = Math.abs(f3 / 6); super.doRender(entity, par2, par4 + f3, par6, par8, par9); } public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { renderSandvich((EntitySandvich) par1Entity, par2, par4, par6, par8, par9); } @Override protected ResourceLocation getEntityTexture(Entity entity) { return resources; } } Item package de.prwh.minefortress.items; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import de.prwh.minefortress.entity.EntitySandvich; public class ItemSandvich extends ItemFood { public ItemSandvich(int p_i45339_1_, float p_i45339_2_, boolean p_i45339_3_) { super(p_i45339_1_, p_i45339_2_, p_i45339_3_); this.setAlwaysEdible(); } public int getMaxItemUseDuration(ItemStack p_77626_1_) { return 64; } public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { --p_77654_1_.stackSize; p_77654_3_.getFoodStats().func_151686_a(this, p_77654_1_); final float heal = p_77654_3_.getMaxHealth() - p_77654_3_.getHealth(); p_77654_3_.heal(heal); double d = Math.random(); if (d < 0.33) { p_77654_2_.playSoundAtEntity(p_77654_3_, "minefortress:weapon.nom", 0.5F, p_77654_2_.rand.nextFloat() * 0.1F + 0.9F); } else if (d > 0.33 && d < 0.66) { p_77654_2_.playSoundAtEntity(p_77654_3_, "minefortress:weapon.nom2", 0.5F, p_77654_2_.rand.nextFloat() * 0.1F + 0.9F); } else if (d > 0.66) { p_77654_2_.playSoundAtEntity(p_77654_3_, "minefortress:weapon.nom3", 0.5F, p_77654_2_.rand.nextFloat() * 0.1F + 0.9F); } this.onFoodEaten(p_77654_1_, p_77654_2_, p_77654_3_); return p_77654_1_; } public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) { if (entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entityLiving; if (stack.stackSize > 1) { --stack.stackSize; } else if (stack.stackSize == 1) { --stack.stackSize; player.inventory.setInventorySlotContents(player.inventory.currentItem, null); } if (!entityLiving.worldObj.isRemote) { EntitySandvich sand = new EntitySandvich(entityLiving.worldObj, entityLiving); sand.setLocationAndAngles(player.posX + Math.random(), player.posY + 1.5D, player.posZ + Math.random(), player.rotationYaw, player.rotationPitch); double x = -1 * Math.sin(player.rotationYaw * Math.PI / 180) * 0.75F; double z = Math.cos(player.rotationYaw * Math.PI / 180) * 0.75F; double y = (float) 0.5F; sand.setVelocity(x, y, z); player.worldObj.spawnEntityInWorld(sand); } } return false; } } Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.