- 61
- 0
При смерти спавнится Entity но все время только на координатах 0 0 0
Вот код в Event
Сам Entity
Вот код в Event
Код:
@ForgeSubscribe
public void dropCrops(LivingDropsEvent event) {
EntityLivingBase to = event.entityLiving;
World world = event.entityLiving.worldObj;
EntityCorpse corpse = new EntityCorpse(world);
corpse.setDrops(event.drops);
world.spawnEntityInWorld(corpse);
corpse.setPosition(to.posX, to.posY, to.posZ);
System.out.println(corpse);
event.setCanceled(true);
}
Сам Entity
Код:
package divcraft.minefix.update;
import java.util.ArrayList;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryBasic;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
public class EntityCorpse extends Entity implements IInventory {
public EntityCorpse(World par1World) {
super(par1World);
// TODO Auto-generated constructor stub
}
private ItemStack[] inv = new ItemStack[12];
public long lastopen;
public InventoryBasic inventory;
public void setDrops(ArrayList<EntityItem> drops) {
inventory = new InventoryBasic("InventoryEntityCorpse", false,
drops.size());
for (int i = 0; i < drops.size(); ++i) {
EntityItem entity_item = drops.get(i);
if (entity_item.getEntityItem() != null) {
inventory.setInventorySlotContents(i,
entity_item.getEntityItem());
}
}
}
public void setPosition(double posX, double posY, double posZ) {
// TODO Auto-generated method stub
}
@Override
public void onInventoryChanged() {
// TODO Auto-generated method stub
}
@Override
protected void entityInit() {
// TODO Auto-generated method stub
}
@Override
public void readEntityFromNBT(NBTTagCompound tagCompound) {
super.readFromNBT(tagCompound);
NBTTagList tagList = tagCompound.getTagList("Inventory");
for (int i = 0; i < tagList.tagCount(); ++i) {
NBTTagCompound tag = (NBTTagCompound) tagList.tagAt(i);
byte slot = tag.getByte("Slot");
if (slot >= 0 && slot < this.inv.length) {
this.inv[slot] = ItemStack.loadItemStackFromNBT(tag);
}
}
}
@Override
public void writeEntityToNBT(NBTTagCompound tagCompound) {
super.writeToNBT(tagCompound);
NBTTagList itemList = new NBTTagList();
for (int i = 0; i < this.inv.length; ++i) {
ItemStack stack = this.inv[i];
if (stack != null) {
NBTTagCompound tag = new NBTTagCompound();
tag.setByte("Slot", (byte) i);
stack.writeToNBT(tag);
itemList.appendTag(tag);
}
}
tagCompound.setTag("Inventory", itemList);
}
@Override
public int getSizeInventory() {
return this.inv.length;
}
@Override
public ItemStack getStackInSlot(int i) {
return this.inv[i];
}
@Override
public ItemStack decrStackSize(int slot, int amt) {
ItemStack stack = this.getStackInSlot(slot);
if (stack != null) {
if (stack.stackSize <= amt) {
this.setInventorySlotContents(slot, (ItemStack) null);
} else {
stack = stack.splitStack(amt);
if (stack.stackSize == 0) {
this.setInventorySlotContents(slot, (ItemStack) null);
}
}
}
return stack;
}
@Override
public ItemStack getStackInSlotOnClosing(int i) {
ItemStack stack = this.getStackInSlot(i);
if (stack != null) {
this.setInventorySlotContents(i, (ItemStack) null);
}
return stack;
}
@Override
public void setInventorySlotContents(int slot, ItemStack stack) {
this.inv[slot] = stack;
if (stack != null && stack.stackSize > this.getInventoryStackLimit()) {
stack.stackSize = this.getInventoryStackLimit();
}
}
@Override
public String getInvName() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isInvNameLocalized() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
// TODO Auto-generated method stub
return false;
}
@Override
public void openChest() {
// TODO Auto-generated method stub
}
@Override
public void closeChest() {
// TODO Auto-generated method stub
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
// TODO Auto-generated method stub
return false;
}
}