[1.6.4]Entity при смерти

61
0
При смерти спавнится Entity но все время только на координатах 0 0 0
Вот код в 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;
    }



}
 
Код:
    public void setPosition(double posX, double posY, double posZ) {
this.posX = posX;
this.posY = posY;
this.posZ = posZ;
    }
 
Пожалуйста.
 
Entity нету на карте. Оно спавнится но его не видно, и с рендером и без.
[merge_posts_bbcode]Добавлено: 23.06.2016 19:29:26[/merge_posts_bbcode]

Вот привязка рендера
Код:
RenderingRegistry.registerEntityRenderingHandler(EntityCorpse.class,
                new RenderCorpse());

сам рендер
Код:
package divcraft.minefix.update;

import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;

import org.lwjgl.opengl.GL11;

import divcraft.guns.model.Shoot;

public class RenderCorpse extends Render implements IItemRenderer {

    protected ModelBiped Body;
    public EntityPlayer player;

    public RenderCorpse() {
        Body = new ModelBiped();
    }

    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type) {

        switch (type) {
        case ENTITY:
            return true;
        default:
            return false;
        }
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
            ItemRendererHelper helper) {
        return false;
    }

    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
        switch (type) {
        case ENTITY: {
            GL11.glPushMatrix();
            RenderBlocks rb = (RenderBlocks) data[0];
            EntityClientPlayerMP icon11 = (EntityClientPlayerMP) data[1];
            rb.minecraftRB.renderEngine.bindTexture(icon11
                    .getLocationSkin());
            GL11.glRotatef(65F, 2F, 0F, -0.2F);
            GL11.glRotatef(65F, -10F, 1F, 0F);
            GL11.glRotatef(0F, 0F, 3F, 0F);

            GL11.glTranslatef(-0F, -0.1F, -0.09F);
            float scale = 1.0F;
            GL11.glScalef(0.07F, 0.07F, 0.07F);

            Shoot.render((Entity) data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
                    0.0625F);
            GL11.glPopMatrix();

        }
        default:
            break;
        }

    }

    @Override
    public void doRender(Entity entity, double d0, double d1, double d2,
            float f, float f1) {
        // TODO Auto-generated method stub
        
    }

    @Override
    protected ResourceLocation getEntityTexture(Entity entity) {
        // TODO Auto-generated method stub
        return null;
    }

}
 
А где регистрация твоего Entity?
[merge_posts_bbcode]Добавлено: 23.06.2016 19:31:51[/merge_posts_bbcode]

И ты не даёшь твоей Entity какую-либо геометрию.
 
Точно я не регистрирую) А как регистрировать обычное Entity как Tile я знаю а обычное нет
 
Entity (сущность) не Item (предмет).
[merge_posts_bbcode]Добавлено: 23.06.2016 19:34:24[/merge_posts_bbcode]
Код:
EntityRegistry.registerModEntity(EntityCorpse.class, "EntityCorpse", 0, ModID.instance, 20, 1, true);
 
Код:
public class RenderEntityItemThrowable extends Render {

    @Override
    public void doRender(Entity entity, double x, double y, double z, float yaw, float partialTickTime) {
        render((EntityItemThrowable)entity, x, y, z, yaw, partialTickTime);
    }

    @Override
    public ResourceLocation getEntityTexture(Entity entity) {
        return null;
    }

    private void render(EntityItemThrowable entity, double x, double y, double z, float yaw, float partialTickTime) {
        GL11.glPushMatrix();
        GL11.glTranslated(x, y, z);
---
RenderBlocks rb = (RenderBlocks) data[0];
            EntityClientPlayerMP icon11 = (EntityClientPlayerMP) data[1];
            rb.minecraftRB.renderEngine.bindTexture(icon11
                    .getLocationSkin());
            GL11.glRotatef(65F, 2F, 0F, -0.2F);
            GL11.glRotatef(65F, -10F, 1F, 0F);
            GL11.glRotatef(0F, 0F, 3F, 0F);

            GL11.glTranslatef(-0F, -0.1F, -0.09F);
            float scale = 1.0F;
            GL11.glScalef(0.07F, 0.07F, 0.07F);

            Shoot.render((Entity) data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
                    0.0625F);
        GL11.glPopMatrix();
    }

}
Что-то типа этого, я точно не знаю.
 
Все равно чего то нету Entity. Может дело в привязке к Render 
Код:
RenderingRegistry.registerEntityRenderingHandler(EntityCorpse.class,
                new RenderCorpse());
 
Я не знаю.
[merge_posts_bbcode]Добавлено: 23.06.2016 19:49:37[/merge_posts_bbcode]

А ты хоть уверен в том что твой код присвоению твоего рендера к твоей Entity срабатывает?
 
А регистрацию кидать ModBase  Init ?
[merge_posts_bbcode]Добавлено: 23.06.2016 19:59:13[/merge_posts_bbcode]

Я ClientProxy регистрировал
 
Назад
Сверху