Jump to content

[1.8] How to get ModelResourceLocation from ItemStack?


RoseCotton

Recommended Posts

Really, what I want is an IBakedModel from either a RenderItem or an ItemStack.

 

I just want to render an item within a block that is representative of the ItemStack held in a block's TileEntity.

 

I'm copying a lot of code from the ItemFrame because it's the closest thing to what I want to do (i.e. render an item that is stored in a block).

 

I'll post code if that helps, but I think I've narrowed down my question enough that it's probably not necessary.

(this isn't one of those "my code's broke" questions).

hw developer in a sw world

Link to comment
Share on other sites

Hi

 

This might help...

 

RenderItem::

    public void renderItemModel(ItemStack stack)

    {

        IBakedModel ibakedmodel = this.itemModelMesher.getItemModel(stack);

        this.renderItemModelTransform(stack, ibakedmodel, ItemCameraTransforms.TransformType.NONE);

    }

 

 

-TGG

Link to comment
Share on other sites

Hi

 

This might help...

 

RenderItem::

    public void renderItemModel(ItemStack stack)

    {

        IBakedModel ibakedmodel = this.itemModelMesher.getItemModel(stack);

        this.renderItemModelTransform(stack, ibakedmodel, ItemCameraTransforms.TransformType.NONE);

    }

 

-TGG

 

Thanks, Grey Ghost.

I looked at that a number of times but am getting the organization wrong in my head.

Would I extend RenderItem a RenderShelfItems class or something?

Currently I'm saying:

public class RenderShelfItems extends Render

 

Should I instead say:

public class RenderShelfItems extends RenderItem

?

 

Or do I create a new RenderItem object and call the renderItemModel method?

I specify the location within the block for each of four ItemStacks that need to have an Item rendered in the block, so can I use renderItemModel(itemStackX) and somehow specify _where_ to render the item?

 

mod:

package com.rosecotton.shelvesmod;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.common.registry.LanguageRegistry;
import net.minecraftforge.fml.relauncher.Side;

import com.rosecotton.shelvesmod.BlockShelf;
//import com.becky.testmod01.Testmod01;

@Mod(modid = ShelvesMod.MODID, name = ShelvesMod.MODNAME, version = ShelvesMod.VERSION) 

public class ShelvesMod 
{

  public static Block shelfBlock;
  //public static Item brickIngot;
  public static final String MODID = "shelvesmod";
  public static final String MODNAME = "RoseCotton's Shelves Mod for 1.8";
  public static final String VERSION = "1.0";
  public static int type;

  @Instance(value = "shelvesmod")
  public static ShelvesMod instance = new ShelvesMod();
  
  public static class MySidedProxyHolder {
	  @SidedProxy(modId="shelvesmod",clientSide="com.rosecotton.shelvesmod.ClientProxy", serverSide="com.rosecotton.shelvesmod.CommonProxy")
	  public static CommonProxy proxy;
	  }
	  
	  public class CommonProxy {
		  // Common or server stuff here that needs to be overridden on the client
	  }
	  public class ClientProxy extends CommonProxy {
		  // Override common stuff with client specific stuff here
	  }

  @EventHandler
  public void preInit(FMLPreInitializationEvent event) 
  {

  	//blocks
  	shelfBlock = new BlockShelf(type);
  	LanguageRegistry.addName(shelfBlock, "Shelf Block");
  	
  	GameRegistry.registerTileEntity(ShelfTitleEntity.class, "shelfTitleEntity");
  	//was com.rosecotton.shelvesmod.ShelfTitleEntity.class
  	
  	
  	//items
  	//brickIngot = new ItemBrickIngot();
	  //MOVE GAMEREGISTRY TO ITEM CLASS?
  	//GameRegistry.registerItem(brickIngot, ((ItemBrickIngot) brickIngot).getName());
  	//LanguageRegistry.addName(brickIngot, "Brick Ingot");
	NetworkRegistry.INSTANCE.registerGuiHandler(ShelvesMod.instance, GuiHandlerRegistry.getInstance());
	GuiHandlerRegistry.getInstance().registerGuiHandler(new GuiHandlerShelf(), GuiHandlerShelf.getGuiID());
  }

  @EventHandler
  public void init(FMLInitializationEvent event) 
  {
  	//System.out.println("Called method: init");
  
  	if(event.getSide() == Side.CLIENT)
  	{
  		
  		RenderItem renderItem = Minecraft.getMinecraft().getRenderItem();

  		renderItem.getItemModelMesher().register(Item.getItemFromBlock(shelfBlock), 0, new ModelResourceLocation(ShelvesMod.MODID + ":" + ((BlockShelf) shelfBlock).getName(), "shelfBlock"));
  		Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(shelfBlock),0, new ModelResourceLocation(ShelvesMod.MODID+":"+ "shelfBlock", "inventory"));
  	}
  	
  	//recipes
  	GameRegistry.addRecipe(new ItemStack(shelfBlock), new Object[]{
  	"   ",
  	"  A",
  	" AA",
  	'A', Items.stick //getItemFromBlock(Blocks.planks)
  	});
  }
    @EventHandler
    public void postInit(FMLPostInitializationEvent event) 
    {
    	System.out.println("Called method: postInit");
    }
}

 

Block

package com.rosecotton.shelvesmod;

//import BlockStairs;

import java.util.Iterator;
import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.passive.EntityOcelot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.inventory.InventoryLargeChest;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.ILockableContainer;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;


public class BlockShelf extends BlockContainer {

    public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
    public static final PropertyEnum SECTION = PropertyEnum.create("section", BlockShelf.EnumShape.class);
    
    private final Random rand = new Random();
   // private static final String __OBFID = "CL_00000214";
private final String name = "shelfBlock";
ModelResourceLocation modelresourcelocation = new ModelResourceLocation("shelvesmod"+":"+name, "inventory");
    
    protected BlockShelf(int type)
    {
        super(Material.wood);
        //TEH FOLLOWIONG LINE MIGHT HAVE BEEN USEFUL BUT MAYBE CAUSED AN ERROR AT RUNTIME, TRY AGAIN
        this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
        //this.chestType = type;
        this.setCreativeTab(CreativeTabs.tabMisc);
        this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        this.useNeighborBrightness = true;
	this.setDefaultState(this.blockState.getBaseState());
        GameRegistry.registerBlock(this, name);
    	this.setUnlocalizedName(ShelvesMod.MODID + "_" + name);
    	this.setBlockBounds(1/16.0F, 0, 1/16.0F, 15/16.0F, 8/16.0F, 15/16.0F);
    }

    public String toString()
    {
        return this.name;
    }
    public String getName()
    {
        return this.name;
    }

    // used by the renderer to control lighting and visibility of other blocks.
    // set to false because this block doesn't fill the entire 1x1x1 space
    @Override
    public boolean isOpaqueCube() {
      return false;
    }

    // used by the renderer to control lighting and visibility of other blocks, also by
    // (eg) wall or fence to control whether the fence joins itself to this block
    // set to false because this block doesn't fill the entire 1x1x1 space
    @Override
    public boolean isFullCube() {
      return false;
    }
    
    // this function returns the correct item type corresponding to the colour of our block;
    // i.e. when a sign is broken, it will drop the correct item.
    @Override
    public int damageDropped(IBlockState state)
    {
      //EnumColour enumColour = (EnumColour)state.getValue(PROPERTYCOLOUR);
      //return this.getMetadata();//enumColour.getMetadata();
    	return 0;
    }
    

    
    
    public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
    {
        if (worldIn.getBlockState(pos.north()).getBlock() == this)
        {
            this.setBlockBounds(0.0625F, 0.0F, 0.0F, 0.9375F, 0.875F, 0.9375F);
        }
        else if (worldIn.getBlockState(pos.south()).getBlock() == this)
        {
            this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 1.0F);
        }
        else if (worldIn.getBlockState(pos.west()).getBlock() == this)
        {
            this.setBlockBounds(0.0F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        }
        else if (worldIn.getBlockState(pos.east()).getBlock() == this)
        {
            this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 1.0F, 0.875F, 0.9375F);
        }
        else
        {
            this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        }
    }

    public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
    {
        //this.checkForSurroundingChests(worldIn, pos, state);
        Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();

        while (iterator.hasNext())
        {
            EnumFacing enumfacing = (EnumFacing)iterator.next();
            BlockPos blockpos1 = pos.offset(enumfacing);
            IBlockState iblockstate1 = worldIn.getBlockState(blockpos1);

        }
    }
@Override
    public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase player)
    {
        return this.getDefaultState().withProperty(FACING, player.getHorizontalFacing());
    }

    public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
    {
        EnumFacing enumfacing = EnumFacing.getHorizontal(MathHelper.floor_double((double)(placer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3).getOpposite();
        state = state.withProperty(FACING, enumfacing);
        BlockPos blockpos1 = pos.north();
        BlockPos blockpos2 = pos.south();
        BlockPos blockpos3 = pos.west();
        BlockPos blockpos4 = pos.east();
        boolean flag = this == worldIn.getBlockState(blockpos1).getBlock();
        boolean flag1 = this == worldIn.getBlockState(blockpos2).getBlock();
        boolean flag2 = this == worldIn.getBlockState(blockpos3).getBlock();
        boolean flag3 = this == worldIn.getBlockState(blockpos4).getBlock();

        if (!flag && !flag1 && !flag2 && !flag3)
        {
            worldIn.setBlockState(pos, state, 3);
        }
        else if (enumfacing.getAxis() == EnumFacing.Axis.X && (flag || flag1))
        {
            if (flag)
            {
                worldIn.setBlockState(blockpos1, state, 3);
            }
            else
            {
                worldIn.setBlockState(blockpos2, state, 3);
            }

            worldIn.setBlockState(pos, state, 3);
        }
        else if (enumfacing.getAxis() == EnumFacing.Axis.Z && (flag2 || flag3))
        {
            if (flag2)
            {
                worldIn.setBlockState(blockpos3, state, 3);
            }
            else
            {
                worldIn.setBlockState(blockpos4, state, 3);
            }

            worldIn.setBlockState(pos, state, 3);
        }

        if (stack.hasDisplayName())
        {
            TileEntity tileentity = worldIn.getTileEntity(pos);

            if (tileentity instanceof TileEntityChest)
            {
                ((TileEntityChest)tileentity).setCustomName(stack.getDisplayName());
            }
        }
    }
    
    public IBlockState correctFacing(World worldIn, BlockPos pos, IBlockState state)
    {
        EnumFacing enumfacing = null;
        Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();

        while (iterator.hasNext())
        {
            EnumFacing enumfacing1 = (EnumFacing)iterator.next();
            IBlockState iblockstate1 = worldIn.getBlockState(pos.offset(enumfacing1));

            if (iblockstate1.getBlock() == this)
            {
                return state;
            }

            if (iblockstate1.getBlock().isFullBlock())
            {
                if (enumfacing != null)
                {
                    enumfacing = null;
                    break;
                }

                enumfacing = enumfacing1;
            }
        }

        if (enumfacing != null)
        {
            return state.withProperty(FACING, enumfacing.getOpposite());
        }
        else
        {
            EnumFacing enumfacing2 = (EnumFacing)state.getValue(FACING);

            if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
            {
                enumfacing2 = enumfacing2.getOpposite();
            }

            if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
            {
                enumfacing2 = enumfacing2.rotateY();
            }

            if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
            {
                enumfacing2 = enumfacing2.getOpposite();
            }

            return state.withProperty(FACING, enumfacing2);
        }
    }





    public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
    {
        TileEntity tileentity = worldIn.getTileEntity(pos);

        if (tileentity instanceof IInventory)
        {
            InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)tileentity);
            worldIn.updateComparatorOutputLevel(pos, this);
        }

        super.breakBlock(worldIn, pos, state);
    }
    
   /* 
// This is where you can do something when the block is broken. In this case drop the inventory's contents
@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {

	IInventory inventory = worldIn.getTileEntity(pos) instanceof IInventory ? (IInventory)worldIn.getTileEntity(pos) : null;

	if (inventory != null){
		// For each slot in the inventory
		for (int i = 0; i < inventory.getSizeInventory(); i++){
			// If the slot is not empty
			if (inventory.getStackInSlot(i) != null)
			{
				// Create a new entity item with the item stack in the slot
				EntityItem item = new EntityItem(worldIn, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, inventory.getStackInSlot(i));

				// Apply some random motion to the item
				float multiplier = 0.1f;
				float motionX = worldIn.rand.nextFloat() - 0.5f;
				float motionY = worldIn.rand.nextFloat() - 0.5f;
				float motionZ = worldIn.rand.nextFloat() - 0.5f;

				item.motionX = motionX * multiplier;
				item.motionY = motionY * multiplier;
				item.motionZ = motionZ * multiplier;

				// Spawn the item in the world
				worldIn.spawnEntityInWorld(item);
			}
		}

		// Clear the inventory so nothing else (such as another mod) can do anything with the items
		inventory.clear();
	}

	// Super MUST be called last because it removes the tile entity
	super.breakBlock(worldIn, pos, state);
}*/



// Called when the block is right clicked
// In this block it is used to open the blocks gui when right clicked by a player
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) {
	// Uses the gui handler registered to your mod to open the gui for the given gui id
	// open on the server side only  (not sure why you shouldn't open client side too... vanilla doesn't, so we better not either)
	if (worldIn.isRemote) return true;


	playerIn.openGui(ShelvesMod.instance, GuiHandlerShelf.getGuiID(), worldIn, pos.getX(), pos.getY(), pos.getZ());
   	System.out.println("Called method: BlockShelf.onBlockActivated");
	return true;
}
@Override
   public TileEntity createNewTileEntity(World worldIn, int meta)
    {
        return new ShelfTitleEntity();
    }



    private boolean isBlocked(World worldIn, BlockPos pos)
    {
        return this.isBelowSolidBlock(worldIn, pos) || this.isOcelotSittingOnChest(worldIn, pos);
    }

    private boolean isBelowSolidBlock(World worldIn, BlockPos pos)
    {
        return worldIn.getBlockState(pos.up()).getBlock().isNormalCube();
    }




    private boolean isOcelotSittingOnChest(World worldIn, BlockPos pos)
    {
        Iterator iterator = worldIn.getEntitiesWithinAABB(EntityOcelot.class, new AxisAlignedBB((double)pos.getX(), (double)(pos.getY() + 1), (double)pos.getZ(), (double)(pos.getX() + 1), (double)(pos.getY() + 2), (double)(pos.getZ() + 1))).iterator();
        EntityOcelot entityocelot;

        do
        {
            if (!iterator.hasNext())
            {
                return false;
            }

            Entity entity = (Entity)iterator.next();
            entityocelot = (EntityOcelot)entity;
        }
        while (!entityocelot.isSitting());

        return true;
    }

    public boolean hasComparatorInputOverride()
    {
        return true;
    }

    @Override
    public IBlockState getStateFromMeta(int meta)
    {
        EnumFacing enumfacing = EnumFacing.getFront(meta);

        if (enumfacing.getAxis() == EnumFacing.Axis.Y)
        {
            enumfacing = EnumFacing.NORTH;
        }

        return this.getDefaultState().withProperty(FACING, enumfacing);
    }

    @Override
    public int getMetaFromState(IBlockState state)
    {
      EnumFacing facing = (EnumFacing)state.getValue(FACING);

      int facingbits = facing.getHorizontalIndex();
      return facingbits;// | colourbits;
    }

    // necessary to define which properties your blocks use
    // will also affect the variants listed in the blockstates model file
    @Override
    protected BlockState createBlockState()
    {
        return new BlockState(this, new IProperty[] {FACING,SECTION});
    }

    
    @Override
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return Item.getItemFromBlock(this);
    }
    public static enum EnumShape implements IStringSerializable
    {
        TOP("top"),
        MIDDLE("middle"),
        BOTTOM("bottom");

        private final String name;

        private static final String __OBFID = "CL_00003061";

        private EnumShape(String name)
        {
            this.name = name;
        }

        public String toString()
        {
            return this.name;
        }

        public String getName()
        {
            return this.name;
        }

    }
    public TileEntity createTileEntity(World world, int metadata)
    {
       return new ShelfTitleEntity();
    }
    
    @Override
    public int getRenderType()
    {
        return 3;
    }
    
}

 

TileEntity (misspelled)

package com.rosecotton.shelvesmod;
import java.util.Arrays;

import net.minecraft.block.BlockChest;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
//import net.minecraft.network.INetworkManager;
import net.minecraft.network.Packet;
//import net.minecraft.network.packet.Packet132TileEntityData;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.IChatComponent;
import net.minecraft.world.World;
import net.minecraft.nbt.NBTTagList;

public class ShelfTitleEntity extends TileEntity implements IInventory {
final int NUMBER_OF_SLOTS = 4;
    public int numPlayersUsing;
private ItemStack[] itemStacks = new ItemStack[NUMBER_OF_SLOTS];


// will add a key for this container to the lang file so we can name it in the GUI
@Override
public String getName() {
	return "Block Shelf";
}

@Override
public boolean hasCustomName() {
return false;
}

// standard code to look up what the human-readable name is
@Override
public IChatComponent getDisplayName() {
return this.hasCustomName() ? new ChatComponentText(this.getName()) : new ChatComponentTranslation(this.getName());
}

@Override
public int getSizeInventory() {
return itemStacks.length;
}

@Override
public ItemStack getStackInSlot(int slotIndex) {
return itemStacks[slotIndex];
}

@Override
public ItemStack decrStackSize(int slotIndex, int count) {
ItemStack itemStackInSlot = getStackInSlot(slotIndex);
if (itemStackInSlot == null) return null;

ItemStack itemStackRemoved;
if (itemStackInSlot.stackSize <= count) {
	itemStackRemoved = itemStackInSlot;
	setInventorySlotContents(slotIndex, null);
} else {
	itemStackRemoved = itemStackInSlot.splitStack(count);
	if (itemStackInSlot.stackSize == 0) {
		setInventorySlotContents(slotIndex, null);
	}
}
  markDirty();
return itemStackRemoved;
}

// -----------------------------------------------------------------------------------------------------------
// The following method is not needed for this example but are part of IInventory so must be implemented
/**
* This method removes the entire contents of the given slot and returns it.
* Used by containers such as crafting tables which return any items in their slots when you close the GUI
* @param slotIndex
* @return
*/
@Override
public ItemStack getStackInSlotOnClosing(int slotIndex) {
ItemStack itemStack = getStackInSlot(slotIndex);
if (itemStack != null) setInventorySlotContents(slotIndex, null);
return itemStack;
}

// overwrites the stack in the given slotIndex with the given stack
@Override
public void setInventorySlotContents(int slotIndex, ItemStack itemstack) {
itemStacks[slotIndex] = itemstack;
if (itemstack != null && itemstack.stackSize > getInventoryStackLimit()) {
	itemstack.stackSize = getInventoryStackLimit();
}
markDirty();
}

// This is the maximum number if items allowed in each slot
// This only affects things such as hoppers trying to insert items you need to use the container to enforce this for players
// inserting items via the gui
@Override
public int getInventoryStackLimit() {
return 64;
}

// Return true if the given player is able to use this block. In this case it checks that
// 1) the world tileentity hasn't been replaced in the meantime, and
// 2) the player isn't too far away from the centre of the block
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
if (this.worldObj.getTileEntity(this.pos) != this) return false;
final double X_CENTRE_OFFSET = 0.5;
final double Y_CENTRE_OFFSET = 0.5;
final double Z_CENTRE_OFFSET = 0.5;
final double MAXIMUM_DISTANCE_SQ = 8.0 * 8.0;
return player.getDistanceSq(pos.getX() + X_CENTRE_OFFSET, pos.getY() + Y_CENTRE_OFFSET, pos.getZ() + Z_CENTRE_OFFSET) < MAXIMUM_DISTANCE_SQ;
}

//-----------------------------------------------------------------------------------------------------------
//The following method is not needed for this example but are part of IInventory so must be implemented
@Override
public void openInventory(EntityPlayer player) {
    if (!player.isSpectator())
    {
        if (this.numPlayersUsing < 0)
        {
            this.numPlayersUsing = 0;
        }

        ++this.numPlayersUsing;
        this.worldObj.addBlockEvent(this.pos, this.getBlockType(), 1, this.numPlayersUsing);
        this.worldObj.notifyNeighborsOfStateChange(this.pos, this.getBlockType());
        this.worldObj.notifyNeighborsOfStateChange(this.pos.down(), this.getBlockType());
    	System.out.println("Called method: ShelfTitleEntity.openInventory");
    }
}

//-----------------------------------------------------------------------------------------------------------
//The following method is not needed for this example but are part of IInventory so must be implemented
@Override
public void closeInventory(EntityPlayer player) {
    if (!player.isSpectator() && this.getBlockType() instanceof BlockChest)
    {
        --this.numPlayersUsing;
        this.worldObj.addBlockEvent(this.pos, this.getBlockType(), 1, this.numPlayersUsing);
        this.worldObj.notifyNeighborsOfStateChange(this.pos, this.getBlockType());
        this.worldObj.notifyNeighborsOfStateChange(this.pos.down(), this.getBlockType());
    }
}

// Return true if the given stack is allowed to go in the given slot.  In this case, we can insert anything.
// This only affects things such as hoppers trying to insert items you need to use the container to enforce this for players
// inserting items via the gui
@Override
public boolean isItemValidForSlot(int slotIndex, ItemStack itemstack) {
return true;
}


// This is where you save any data that you don't want to lose when the tile entity unloads
// In this case, it saves the itemstacks stored in the container
@Override
public void writeToNBT(NBTTagCompound parentNBTTagCompound)
{
super.writeToNBT(parentNBTTagCompound); // The super call is required to save and load the tileEntity's location

// to use an analogy with Java, this code generates an array of hashmaps
// The itemStack in each slot is converted to an NBTTagCompound, which is effectively a hashmap of key->value pairs such
//   as slot=1, id=2353, count=1, etc
// Each of these NBTTagCompound are then inserted into NBTTagList, which is similar to an array.
NBTTagList dataForAllSlots = new NBTTagList();
for (int i = 0; i < this.itemStacks.length; ++i) {
	if (this.itemStacks[i] != null)	{
		NBTTagCompound dataForThisSlot = new NBTTagCompound();
		dataForThisSlot.setByte("Slot", (byte) i);
		this.itemStacks[i].writeToNBT(dataForThisSlot);
		dataForAllSlots.appendTag(dataForThisSlot);
	}
}
// the array of hashmaps is then inserted into the parent hashmap for the container
parentNBTTagCompound.setTag("Items", dataForAllSlots);
}

// This is where you load the data that you saved in writeToNBT
@Override
public void readFromNBT(NBTTagCompound parentNBTTagCompound)
{
super.readFromNBT(parentNBTTagCompound); // The super call is required to save and load the tiles location

final byte NBT_TYPE_COMPOUND = 10;       // See NBTBase.createNewByType() for a listing
NBTTagList dataForAllSlots = parentNBTTagCompound.getTagList("Items", NBT_TYPE_COMPOUND);

Arrays.fill(itemStacks, null);           // set all slots to empty
for (int i = 0; i < dataForAllSlots.tagCount(); ++i) {
	NBTTagCompound dataForOneSlot = dataForAllSlots.getCompoundTagAt(i);
	int slotIndex = dataForOneSlot.getByte("Slot") & 255;

	if (slotIndex >= 0 && slotIndex < this.itemStacks.length) {
		this.itemStacks[slotIndex] = ItemStack.loadItemStackFromNBT(dataForOneSlot);
	}
}
}

public boolean receiveClientEvent(int id, int type)
{
    if (id == 1)
    {
        this.numPlayersUsing = type;
        return true;
    }
    else
    {
        return super.receiveClientEvent(id, type);
    }
}

@Override
public int getField(int id) {
return Item.getIdFromItem(itemStacks[id].getItem());
}

@Override
public void setField(int id, int value) {
itemStacks[id].setItem(Item.getItemById(value));
}

@Override
public int getFieldCount() {
return itemStacks.length;
}

// set all slots to empty
@Override
public void clear() {
Arrays.fill(itemStacks, null);
}
}

 

RenderShelfItems (never runs, don't know where or how to use this)

package com.rosecotton.shelvesmod;



import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.BlockRendererDispatcher;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureCompass;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemSkull;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.MapData;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;

@SideOnly(Side.CLIENT)
public class RenderShelfItems extends Render
{
	private static final ResourceLocation mapBackgroundTextures = new ResourceLocation("textures/map/map_background.png");
    private final Minecraft mc = Minecraft.getMinecraft();
    private final ModelResourceLocation itemFrameModel = new ModelResourceLocation("item_frame", "normal");
    private final ModelResourceLocation mapModel = new ModelResourceLocation("item_frame", "map");
    private RenderItem itemRenderer[] = new RenderItem[4];
    //private static final String __OBFID = "CL_00001002";

    public RenderShelfItems(RenderManager renderManagerIn, RenderItem renderItemIn[])
    {
        super(renderManagerIn);
        renderManagerIn.entityRenderMap.put(ShelfTitleEntity.class, new RenderShelfItems(renderManager, null));
        for (int i = 0; i<4; i++)
        {
        	this.itemRenderer[i] = renderItemIn[i];
        }
    }

    public void doRender(ShelfTitleEntity entity, double x, double y, double z, float rotationMaybeIn, float partialTicks)
    {
        GlStateManager.pushMatrix();
        BlockPos blockpos = entity.getPos();
        double d3 = (double)blockpos.getX() - entity.getPos().getX() + x;
        double d4 = (double)blockpos.getY() - entity.getPos().getY() + y;
        double d5 = (double)blockpos.getZ() - entity.getPos().getZ() + z;
        for(int i = 0; i<4; i++)
        {
	        double d3Add = d3 + (double)(4 +(i%2)*8)/16;
	        double d4Add = d4 + (double)(2 + (i/2)*6)/16;
	        double d5Add = d5 + (double)(13 - (i/2)*8)/16;
	        //GlStateManager.translate(d3 + 0.5D, d4 + 0.5D, d5 + 0.5D);  OLD CODE
	        GlStateManager.translate(d3Add, d4Add, d5Add);
	        //GlStateManager.rotate(180.0F - entity.rotationYaw, 0.0F, 1.0F, 0.0F);
	        //this.renderManager.renderEngine.bindTexture(TextureMap.locationBlocksTexture);
	        BlockRendererDispatcher blockrendererdispatcher = this.mc.getBlockRendererDispatcher();
	        ModelManager modelmanager = blockrendererdispatcher.getBlockModelShapes().getModelManager();
	        IBakedModel ibakedmodel;

	        //OLD CODE
	        /*if (entity.getStackInSlot(i) != null && entity.getStackInSlot(i).getItem() == Items.filled_map)
	        {
	            ibakedmodel = modelmanager.getModel(this.mapModel);
	        }
	        else
	        {
	            ibakedmodel = modelmanager.getModel(this.itemFrameModel);
	        }*/
	        if (entity.getStackInSlot(i) != null)
	        {
	        	ibakedmodel = modelmanager.getModel(new ModelResourceLocation(entity.getStackInSlot(i).getUnlocalizedName(),"inventory"));
	        }
	        else
	        {
	        	ibakedmodel = modelmanager.getMissingModel();
	        }

	        GlStateManager.pushMatrix();
	        GlStateManager.translate(-0.5F, -0.5F, -0.5F);
	        blockrendererdispatcher.getBlockModelRenderer().renderModelBrightnessColor(ibakedmodel, 1.0F, 1.0F, 1.0F, 1.0F);
	        GlStateManager.popMatrix();
	        GlStateManager.translate(0.0F, 0.0F, 0.4375F);
	        this.renderItem(entity);
	        GlStateManager.popMatrix();
	        //OLD, OMG I CANNOT MAKE THIS WORK, field_174860_B IS AN ENUMFACING FACING DIRECTION VARIABLE THINGY AND I CAN'T SEEM TO GET IT...
	        //this.func_147914_a(entity, x + (double)((float)entity.field_174860_b.getFrontOffsetX() * 0.3F), y - 0.25D, z + (double)((float)entity.field_174860_b.getFrontOffsetZ() * 0.3F));
	        //this.func_147914_a(entity, x, y, z);  //SCREW IT, WE CAN TWEAK THE POSITIONING LATER
    	}
    }

    protected ResourceLocation getEntityTexture(EntityItemFrame entity)
    {
        return null;
    }

    private void renderItem(ShelfTitleEntity shelfTitleEntityIn)
    {
        ItemStack itemstack[] = new ItemStack[4];
        for (int i = 0; i<4; i++)
        {
        	itemstack[i] = shelfTitleEntityIn.getStackInSlot(i);
        

	        if (itemstack[i] != null)
	        {
	            EntityItem entityitem = new EntityItem(shelfTitleEntityIn.getWorld(), 0.0D, 0.0D, 0.0D, itemstack[i]);
	            Item item = entityitem.getEntityItem().getItem();
	            
	            //DO I WANT THIS?  WILL IT SCREW UP THE NUMBER OF ITEMS I HAVE STORED IN EACH STACK OR JUST DISPLAY PROPERLY?
	            entityitem.getEntityItem().stackSize = 1;
	            entityitem.hoverStart = 0.0F;
	            GlStateManager.pushMatrix();
	            GlStateManager.disableLighting();
	            
	            //I DON'T DO ROTATION SO I THINK IT'S OK TO LEAVE THIS OUT
	            //int i = shelfTitleEntityIn.getRotation();

	            //if (item == Items.filled_map)
	            //{
	            //    i = i % 4 * 2;
	            //}

	            //GlStateManager.rotate((float)i * 360.0F / 8.0F, 0.0F, 0.0F, 1.0F);

	            if (item == Items.filled_map)
	            {
	                this.renderManager.renderEngine.bindTexture(mapBackgroundTextures);
	                GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
	                float f = 0.0078125F;
	                GlStateManager.scale(f, f, f);
	                GlStateManager.translate(-64.0F, -64.0F, 0.0F);
	                MapData mapdata = Items.filled_map.getMapData(entityitem.getEntityItem(), shelfTitleEntityIn.getWorld());
	                GlStateManager.translate(0.0F, 0.0F, -1.0F);

	                if (mapdata != null)
	                {
	                    this.mc.entityRenderer.getMapItemRenderer().func_148250_a(mapdata, true);
	                }
	            }
	            else
	            {
	                TextureAtlasSprite textureatlassprite = null;

	                if (item == Items.compass)
	                {
	                    textureatlassprite = this.mc.getTextureMapBlocks().getAtlasSprite(TextureCompass.field_176608_l);
	                    this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);

	                    if (textureatlassprite instanceof TextureCompass)
	                    {
	                        TextureCompass texturecompass = (TextureCompass)textureatlassprite;
	                        double d0 = texturecompass.currentAngle;
	                        double d1 = texturecompass.angleDelta;
	                        texturecompass.currentAngle = 0.0D;
	                        texturecompass.angleDelta = 0.0D;
	                        
	                        //NM COMPASS ACCURACY. THIS IS RIDICULOUS. I CANNOT FIGURE OUT HOW TO GET THE ENUMFACING ROTATION DATA FOR MY SHELFTILEENTITY
	                        //texturecompass.updateCompass(shelfTitleEntityIn.getWorld(), shelfTitleEntityIn.getPos().getX(), shelfTitleEntityIn.getPos().getZ(), (double)MathHelper.wrapAngleTo180_float((float)(180 + shelfTitleEntityIn.field_174860_b.getHorizontalIndex() * 90)), false, true);
	                        texturecompass.currentAngle = d0;
	                        texturecompass.angleDelta = d1;
	                    }
	                    else
	                    {
	                        textureatlassprite = null;
	                    }
	                }

	                GlStateManager.scale(0.5F, 0.5F, 0.5F);

	                /*if (!this.itemRenderer.shouldRenderItemIn3D(entityitem.getEntityItem()) || item instanceof ItemSkull)
	                {
	                    GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F);
	                }*/

	                GlStateManager.pushAttrib();
	                RenderHelper.enableStandardItemLighting();
	                this.itemRenderer[i].renderItemModel(shelfTitleEntityIn.getStackInSlot(i));
	                RenderHelper.disableStandardItemLighting();
	                GlStateManager.popAttrib();

	                if (textureatlassprite != null && textureatlassprite.getFrameCount() > 0)
	                {
	                    textureatlassprite.updateAnimation();
	                }
	            }

	            GlStateManager.enableLighting();
	            GlStateManager.popMatrix();
	        }
        }
    }

    //I REALLY DON'T KNOW WHAT THIS IS BUT IF IT'S FOR LABELS OR LIVING THINGS OR WHATEVER, LET'S SKIP IT
    /*
    protected void func_147914_a(ShelfTitleEntity shelfTitleEntityIn2, double p_147914_2_, double p_147914_4_, double p_147914_6_)
    {
    	for(int i = 0; i<4; i++)
    	{
	        if (Minecraft.isGuiEnabled() && shelfTitleEntityIn2.getStackInSlot(i) != null && shelfTitleEntityIn2.getStackInSlot(i).hasDisplayName() && this.renderManager.pointedEntity == (shelfTitleEntityIn2.getStackInSlot(i)))
	        {
	            float f = 1.6F;
	            float f1 = 0.016666668F * f;
	            double d3 = shelfTitleEntityIn2.getDistanceSqToEntity(this.renderManager.livingPlayer);
	            float f2 = shelfTitleEntityIn2.isSneaking() ? 32.0F : 64.0F;

	            if (d3 < (double)(f2 * f2))
	            {
	                String s = shelfTitleEntityIn2.getStackInSlot(i).getDisplayName();

	                if (shelfTitleEntityIn2.isSneaking())
	                {
	                    FontRenderer fontrenderer = this.getFontRendererFromRenderManager();
	                    GlStateManager.pushMatrix();
	                    GlStateManager.translate((float)p_147914_2_ + 0.0F, (float)p_147914_4_ + shelfTitleEntityIn2.height + 0.5F, (float)p_147914_6_);
	                    GL11.glNormal3f(0.0F, 1.0F, 0.0F);
	                    GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
	                    GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
	                    GlStateManager.scale(-f1, -f1, f1);
	                    GlStateManager.disableLighting();
	                    GlStateManager.translate(0.0F, 0.25F / f1, 0.0F);
	                    GlStateManager.depthMask(false);
	                    GlStateManager.enableBlend();
	                    GlStateManager.blendFunc(770, 771);
	                    Tessellator tessellator = Tessellator.getInstance();
	                    WorldRenderer worldrenderer = tessellator.getWorldRenderer();
	                    GlStateManager.disableTexture2D();
	                    worldrenderer.startDrawingQuads();
	                    int i = fontrenderer.getStringWidth(s) / 2;
	                    worldrenderer.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
	                    worldrenderer.addVertex((double)(-i - 1), -1.0D, 0.0D);
	                    worldrenderer.addVertex((double)(-i - 1), 8.0D, 0.0D);
	                    worldrenderer.addVertex((double)(i + 1), 8.0D, 0.0D);
	                    worldrenderer.addVertex((double)(i + 1), -1.0D, 0.0D);
	                    tessellator.draw();
	                    GlStateManager.enableTexture2D();
	                    GlStateManager.depthMask(true);
	                    fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, 553648127);
	                    GlStateManager.enableLighting();
	                    GlStateManager.disableBlend();
	                    GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
	                    GlStateManager.popMatrix();
	                }
	                else
	                {
	                    this.renderLivingLabel(shelfTitleEntityIn2, s, p_147914_2_, p_147914_4_, p_147914_6_, 64);
	                }
	            }
	        }
    	}
    }*/

    protected ResourceLocation getEntityTexture(Entity entity)
    {
        return this.getEntityTexture((EntityItemFrame)entity);
    }

    protected void renderName(Entity entity, double x, double y, double z)
    {
        //this.func_147914_a((EntityItemFrame)entity, x, y, z);
    }

    public void doRender(Entity entity, double x, double y, double z, float rotationMaybeIn, float partialTicks)
    {
        this.doRender((EntityItemFrame)entity, x, y, z, rotationMaybeIn, partialTicks);
    }

}

 

ok, sorry for the earlier edit on this post.  I think I got all the bad words out of the comments this time.

hw developer in a sw world

Link to comment
Share on other sites

    public RenderShelfItems(RenderManager renderManagerIn, RenderItem renderItemIn[])
    {
        super(renderManagerIn);
        renderManagerIn.entityRenderMap.put(ShelfTitleEntity.class, new RenderShelfItems(renderManager, null));
        for (int i = 0; i<4; i++)
        {
        	this.itemRenderer[i] = renderItemIn[i];
        }
    }

You'll probably only need one instance of the RenderItem, the Item Frame's constructor is:

    public RenderItemFrame(RenderManager renderManagerIn, RenderItem itemRendererIn)
    {
        super(renderManagerIn);
        this.itemRenderer = itemRendererIn;
    }

It extends Render so you probably want to as well. Just have one instance of the RenderItem and when you call your Render

new RenderShelfItems(Minecraft.getMinecraft().getRenderManager, Minecraft.getMinecraft().getRenderItem());

Link to comment
Share on other sites

Oh, I figured since my shelf holds four items I'd need to make a separate RenderItem for each one, but you're saying that I can get a RenderItem from calling this Minecraft.getMinecraft().getRenderItem() and the line of code

RenderShelfItems renderShelfItems = new RenderShelfItems(Minecraft.getMinecraft().getRenderManager, Minecraft.getMinecraft().getRenderItem());

 

should invoke all the rendering that happens in my RenderShelfItems class?

 

Do I call that line of code in my ShelfTileEntity class or in some other class?  Other calls like that are made inside of RenderManager, but I can't figure out how to 'register' my RenderShelfItems class with RenderManager so it gets called when all the others do.

hw developer in a sw world

Link to comment
Share on other sites

Yes that would do just fine, and when it comes to the rendering:

this.itemRender.renderItemModel(stack1);
this.itemRender.renderItemModel(stack2);
this.itemRender.renderItemModel(stack3);
this.itemRender.renderItemModel(stack4);

Of course you still need to do all the GL transformations, scales, etc to position them correctly. I have no idea how to do that part though

 

In relation to your current code post. In BlockBrick don't have "private static final String __OBFID = "CL_00003555";" That's for vanilla classes only.

Link to comment
Share on other sites

Sweet!  it crashed!  ;) 

That means I actually made it into some new code.

 

I'll debug it when I get back to the computer in a few hours...

 

Here's the console data:

 

 

[04:57:09] [main/INFO] [GradleStart]: Extra: []

[04:57:09] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Becky/.gradle/caches/minecraft/assets, --assetIndex, 1.8, --accessToken, {REDACTED}, --version, 1.8, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker]

[04:57:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker

[04:57:09] [main/INFO] [FML]: Forge Mod Loader version 8.0.20.1023 for Minecraft 1.8 loading

[04:57:09] [main/INFO] [FML]: Java is Java HotSpot Client VM, version 1.8.0_31, running on Windows 7:x86:6.1, installed at C:\Program Files\Java\jre1.8.0_31

[04:57:09] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation

[04:57:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker

[04:57:09] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin

[04:57:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker

[04:57:09] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper

[04:57:10] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!

[04:57:11] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing

[04:57:11] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker

[04:57:12] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker

[04:57:12] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker

[04:57:12] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}

[04:57:13] [Client thread/INFO]: Setting user: Player583

[04:57:13] [Client thread/INFO]: (Session ID is token:FML:Player583)

[04:57:16] [Client thread/INFO]: LWJGL Version: 2.9.1

[04:57:17] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization

[04:57:17] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization

[04:57:17] [Client thread/INFO] [FML]: Searching C:\Users\Becky\Desktop\Forge ModLoader-1.8-8.0.20.1023-1.8-src\eclipse\mods for mods

[04:57:21] [Client thread/INFO] [FML]: Forge Mod Loader has identified 5 mods to load

[04:57:22] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, testmod01, oredetectmod, shelvesmod] at CLIENT

[04:57:22] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, testmod01, oredetectmod, shelvesmod] at SERVER

[04:57:22] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Test Mod 01, FMLFileResourcePack:Ore Detect Mod, FMLFileResourcePack:Shelves Mod

[04:57:22] [Client thread/INFO] [FML]: Processing ObjectHolder annotations

[04:57:22] [Client thread/INFO] [FML]: Found 384 ObjectHolder annotations

[04:57:22] [Client thread/INFO] [sTDOUT]: [com.rosecotton.shelvesmod.GuiHandlerShelf:getGuiID:19]: Called method: GuiHandlerShelf.getGuiID

[04:57:22] [Client thread/INFO] [FML]: Applying holder lookups

[04:57:22] [Client thread/INFO] [FML]: Holder lookups applied

[04:57:23] [sound Library Loader/INFO]: Starting up SoundSystem...

[04:57:23] [Thread-7/INFO]: Initializing LWJGL OpenAL

[04:57:23] [Thread-7/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)

[04:57:25] [Thread-7/INFO]: OpenAL initialized.

[04:57:25] [sound Library Loader/INFO]: Sound engine started

[04:57:38] [Client thread/INFO]: Created: 512x512 textures-atlas

[04:57:40] [Client thread/INFO] [sTDOUT]: [com.becky.testmod01.Testmod01:postInit:142]: Called method: postInit

[04:57:40] [Client thread/INFO] [sTDOUT]: [com.rosecotton.oredetect.OreDetectMod:postInit:120]: Called method: postInit

[04:57:40] [Client thread/INFO] [sTDOUT]: [com.rosecotton.shelvesmod.ShelvesMod:postInit:99]: Called method: postInit

[04:57:40] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 5 mods

[04:57:40] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Test Mod 01, FMLFileResourcePack:Ore Detect Mod, FMLFileResourcePack:Shelves Mod

[04:57:40] [Client thread/INFO]: SoundSystem shutting down...

[04:57:40] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com

[04:57:40] [sound Library Loader/INFO]: Starting up SoundSystem...

[04:57:40] [Thread-9/INFO]: Initializing LWJGL OpenAL

[04:57:40] [Thread-9/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)

[04:57:40] [Thread-9/INFO]: OpenAL initialized.

[04:57:41] [sound Library Loader/INFO]: Sound engine started

[04:57:43] [Client thread/INFO]: Created: 512x512 textures-atlas

[04:58:11] [server thread/INFO]: Starting integrated minecraft server version 1.8

[04:58:11] [server thread/INFO]: Generating keypair

[04:58:11] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance

[04:58:11] [server thread/INFO] [FML]: Applying holder lookups

[04:58:11] [server thread/INFO] [FML]: Holder lookups applied

[04:58:11] [server thread/INFO]: Preparing start region for level 0

[04:58:12] [server thread/INFO]: Preparing spawn area: 49%

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.NullPointerException

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.ItemModelMesher.register(ItemModelMesher.java:81)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerItem(RenderItem.java:102)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:107)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:112)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerItems(RenderItem.java:526)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.<init>(RenderItem.java:87)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at com.rosecotton.shelvesmod.RenderShelfItems.<init>(RenderShelfItems.java:43)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at com.rosecotton.shelvesmod.ShelfTitleEntity.<init>(ShelfTitleEntity.java:25)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.reflect.Constructor.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Class.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.tileentity.TileEntity.createAndLoadEntity(TileEntity.java:99)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:445)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:96)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:79)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.gen.ChunkProviderServer.loadChunkFromFile(ChunkProviderServer.java:144)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:93)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:329)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:134)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:148)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:457)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Thread.run(Unknown Source)

[04:58:12] [server thread/WARN]: Skipping BlockEntity with id shelfTitleEntity

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.NullPointerException

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.ItemModelMesher.register(ItemModelMesher.java:81)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerItem(RenderItem.java:102)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:107)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:112)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.registerItems(RenderItem.java:526)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.client.renderer.entity.RenderItem.<init>(RenderItem.java:87)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at com.rosecotton.shelvesmod.RenderShelfItems.<init>(RenderShelfItems.java:43)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at com.rosecotton.shelvesmod.ShelfTitleEntity.<init>(ShelfTitleEntity.java:25)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.reflect.Constructor.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Class.newInstance(Unknown Source)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.tileentity.TileEntity.createAndLoadEntity(TileEntity.java:99)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.readChunkFromNBT(AnvilChunkLoader.java:445)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT(AnvilChunkLoader.java:96)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk(AnvilChunkLoader.java:79)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.gen.ChunkProviderServer.loadChunkFromFile(ChunkProviderServer.java:144)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:93)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:329)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:134)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:148)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:457)

[04:58:12] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.lang.Thread.run(Unknown Source)

[04:58:12] [server thread/WARN]: Skipping BlockEntity with id shelfTitleEntity

[04:58:13] [server thread/INFO]: Changing view distance to 8, from 10

[04:58:14] [Netty Local Client IO #0/INFO] [FML]: Server protocol version 1

[04:58:14] [Netty Server IO #1/INFO] [FML]: Client protocol version 1

[04:58:14] [Netty Server IO #1/INFO] [FML]: Client attempting to join with 5 mods : oredetectmod@1.0,FML@8.0.20.1023,shelvesmod@1.0,testmod01@1.0,mcp@9.05

[04:58:14] [Netty Local Client IO #0/INFO] [FML]: [Netty Local Client IO #0] Client side modded connection established

[04:58:14] [server thread/INFO] [FML]: [server thread] Server side modded connection established

[04:58:14] [server thread/INFO]: Player583[local:E:a647b99d] logged in with entity id 336 at (-231.76331149411786, 77.0, 60.54905211113862)

[04:58:14] [server thread/INFO]: Player583 joined the game

[04:58:18] [Client thread/FATAL]: Reported exception thrown!

net.minecraft.util.ReportedException: Exception in world tick

at net.minecraft.client.Minecraft.runTick(Minecraft.java:2109) ~[Minecraft.class:?]

at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1016) ~[Minecraft.class:?]

at net.minecraft.client.Minecraft.run(Minecraft.java:346) [Minecraft.class:?]

at net.minecraft.client.main.Main.main(Main.java:117) [Main.class:?]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_31]

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_31]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_31]

at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_31]

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]

at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]

at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:85) [start/:?]

at GradleStart.main(GradleStart.java:45) [start/:?]

Caused by: java.lang.NullPointerException

at net.minecraft.client.renderer.ItemModelMesher.register(ItemModelMesher.java:81) ~[itemModelMesher.class:?]

at net.minecraft.client.renderer.entity.RenderItem.registerItem(RenderItem.java:102) ~[RenderItem.class:?]

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:107) ~[RenderItem.class:?]

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:112) ~[RenderItem.class:?]

at net.minecraft.client.renderer.entity.RenderItem.registerItems(RenderItem.java:526) ~[RenderItem.class:?]

at net.minecraft.client.renderer.entity.RenderItem.<init>(RenderItem.java:87) ~[RenderItem.class:?]

at com.rosecotton.shelvesmod.RenderShelfItems.<init>(RenderShelfItems.java:43) ~[RenderShelfItems.class:?]

at com.rosecotton.shelvesmod.ShelfTitleEntity.<init>(ShelfTitleEntity.java:25) ~[shelfTitleEntity.class:?]

at com.rosecotton.shelvesmod.BlockShelf.createNewTileEntity(BlockShelf.java:329) ~[blockShelf.class:?]

at net.minecraft.world.chunk.Chunk.createNewTileEntity(Chunk.java:867) ~[Chunk.class:?]

at net.minecraft.world.chunk.Chunk.func_150804_b(Chunk.java:1185) ~[Chunk.class:?]

at net.minecraft.client.multiplayer.ChunkProviderClient.unloadQueuedChunks(ChunkProviderClient.java:84) ~[ChunkProviderClient.class:?]

at net.minecraft.client.multiplayer.WorldClient.tick(WorldClient.java:89) ~[WorldClient.class:?]

at net.minecraft.client.Minecraft.runTick(Minecraft.java:2093) ~[Minecraft.class:?]

... 11 more

[04:58:18] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:568]: ---- Minecraft Crash Report ----

// You're mean.

 

Time: 3/13/15 4:58 AM

Description: Exception in world tick

 

java.lang.NullPointerException: Exception in world tick

at net.minecraft.client.renderer.ItemModelMesher.register(ItemModelMesher.java:81)

at net.minecraft.client.renderer.entity.RenderItem.registerItem(RenderItem.java:102)

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:107)

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:112)

at net.minecraft.client.renderer.entity.RenderItem.registerItems(RenderItem.java:526)

at net.minecraft.client.renderer.entity.RenderItem.<init>(RenderItem.java:87)

at com.rosecotton.shelvesmod.RenderShelfItems.<init>(RenderShelfItems.java:43)

at com.rosecotton.shelvesmod.ShelfTitleEntity.<init>(ShelfTitleEntity.java:25)

at com.rosecotton.shelvesmod.BlockShelf.createNewTileEntity(BlockShelf.java:329)

at net.minecraft.world.chunk.Chunk.createNewTileEntity(Chunk.java:867)

at net.minecraft.world.chunk.Chunk.func_150804_b(Chunk.java:1185)

at net.minecraft.client.multiplayer.ChunkProviderClient.unloadQueuedChunks(ChunkProviderClient.java:84)

at net.minecraft.client.multiplayer.WorldClient.tick(WorldClient.java:89)

at net.minecraft.client.Minecraft.runTick(Minecraft.java:2093)

at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1016)

at net.minecraft.client.Minecraft.run(Minecraft.java:346)

at net.minecraft.client.main.Main.main(Main.java:117)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:85)

at GradleStart.main(GradleStart.java:45)

 

 

A detailed walkthrough of the error, its code path and all known details is as follows:

---------------------------------------------------------------------------------------

 

-- Head --

Stacktrace:

at net.minecraft.client.renderer.ItemModelMesher.register(ItemModelMesher.java:81)

at net.minecraft.client.renderer.entity.RenderItem.registerItem(RenderItem.java:102)

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:107)

at net.minecraft.client.renderer.entity.RenderItem.registerBlock(RenderItem.java:112)

at net.minecraft.client.renderer.entity.RenderItem.registerItems(RenderItem.java:526)

at net.minecraft.client.renderer.entity.RenderItem.<init>(RenderItem.java:87)

at com.rosecotton.shelvesmod.RenderShelfItems.<init>(RenderShelfItems.java:43)

at com.rosecotton.shelvesmod.ShelfTitleEntity.<init>(ShelfTitleEntity.java:25)

at com.rosecotton.shelvesmod.BlockShelf.createNewTileEntity(BlockShelf.java:329)

at net.minecraft.world.chunk.Chunk.createNewTileEntity(Chunk.java:867)

at net.minecraft.world.chunk.Chunk.func_150804_b(Chunk.java:1185)

at net.minecraft.client.multiplayer.ChunkProviderClient.unloadQueuedChunks(ChunkProviderClient.java:84)

 

-- Affected level --

Details:

Level name: MpServer

All players: 1 total; [EntityPlayerSP['Player583'/336, l='MpServer', x=-231.76, y=77.00, z=60.55]]

Chunk stats: MultiplayerChunkCache: 289, 289

Level seed: 0

Level generator: ID 00 - default, ver 1. Features enabled: false

Level generator options:

Level spawn location: -228.00,64.00,60.00 - World: (-228,64,60), Chunk: (at 12,4,12 in -15,3; contains blocks -240,0,48 to -225,255,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

Level time: 33459 game time, 33459 day time

Level dimension: 0

Level storage version: 0x00000 - Unknown?

Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)

Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false

Forced entities: 84 total; [EntityChicken['Chicken'/128, l='MpServer', x=-284.38, y=72.00, z=130.06], EntityChicken['Chicken'/258, l='MpServer', x=-158.22, y=70.97, z=-12.42], EntityChicken['Chicken'/261, l='MpServer', x=-153.66, y=70.00, z=-11.41], EntityChicken['Chicken'/262, l='MpServer', x=-159.40, y=71.00, z=-12.50], EntityChicken['Chicken'/263, l='MpServer', x=-155.94, y=62.67, z=14.06], EntityChicken['Chicken'/143, l='MpServer', x=-259.50, y=75.00, z=-14.25], EntityChicken['Chicken'/144, l='MpServer', x=-259.81, y=72.00, z=2.56], EntityChicken['Chicken'/145, l='MpServer', x=-271.15, y=79.00, z=17.38], EntityCow['Cow'/146, l='MpServer', x=-262.43, y=66.00, z=88.44], EntityChicken['Chicken'/147, l='MpServer', x=-259.94, y=68.00, z=107.73], EntityItem['item.item.egg'/148, l='MpServer', x=-266.66, y=73.00, z=103.75], EntityChicken['Chicken'/149, l='MpServer', x=-266.78, y=73.00, z=103.47], EntityItem['item.item.egg'/150, l='MpServer', x=-266.63, y=75.00, z=113.28], EntityChicken['Chicken'/151, l='MpServer', x=-265.75, y=75.00, z=113.50], EntityChicken['Chicken'/152, l='MpServer', x=-264.33, y=78.46, z=125.70], EntityItem['item.item.egg'/154, l='MpServer', x=-263.81, y=77.00, z=124.75], EntityChicken['Chicken'/155, l='MpServer', x=-261.38, y=69.00, z=121.41], EntityChicken['Chicken'/167, l='MpServer', x=-260.03, y=73.61, z=3.61], EntityItem['item.item.egg'/168, l='MpServer', x=-255.25, y=73.00, z=2.94], EntityBat['Bat'/169, l='MpServer', x=-247.21, y=61.21, z=78.38], EntityBat['Bat'/170, l='MpServer', x=-253.03, y=60.10, z=73.75], EntityBat['Bat'/171, l='MpServer', x=-245.04, y=59.16, z=79.61], EntityBat['Bat'/172, l='MpServer', x=-244.69, y=32.52, z=135.46], EntityBat['Bat'/173, l='MpServer', x=-251.97, y=18.10, z=131.22], EntityChicken['Chicken'/174, l='MpServer', x=-251.84, y=77.00, z=138.27], EntityBat['Bat'/184, l='MpServer', x=-236.52, y=27.25, z=1.98], EntitySquid['Squid'/185, l='MpServer', x=-228.86, y=60.19, z=122.30], EntityChicken['Chicken'/193, l='MpServer', x=-210.41, y=65.00, z=-16.56], EntityChicken['Chicken'/194, l='MpServer', x=-212.36, y=64.14, z=-7.47], EntityCow['Cow'/195, l='MpServer', x=-212.63, y=74.00, z=31.63], EntityBat['Bat'/196, l='MpServer', x=-216.75, y=57.10, z=60.75], EntitySquid['Squid'/197, l='MpServer', x=-219.50, y=61.04, z=124.66], EntityChicken['Chicken'/73, l='MpServer', x=-305.34, y=79.00, z=2.50], EntityPig['Pig'/202, l='MpServer', x=-196.28, y=64.00, z=-13.84], EntityBat['Bat'/1098, l='MpServer', x=-309.43, y=30.00, z=77.49], EntityChicken['Chicken'/203, l='MpServer', x=-204.53, y=64.00, z=-10.02], EntityPig['Pig'/204, l='MpServer', x=-205.47, y=64.00, z=1.53], EntityChicken['Chicken'/76, l='MpServer', x=-306.47, y=81.00, z=16.47], EntityChicken['Chicken'/205, l='MpServer', x=-204.69, y=65.00, z=12.47], EntityChicken['Chicken'/206, l='MpServer', x=-205.03, y=67.00, z=19.31], EntityChicken['Chicken'/207, l='MpServer', x=-200.75, y=68.00, z=25.44], EntityItem['item.item.egg'/208, l='MpServer', x=-206.03, y=69.00, z=21.97], EntityChicken['Chicken'/80, l='MpServer', x=-308.50, y=78.00, z=87.50], EntityPlayerSP['Player583'/336, l='MpServer', x=-231.76, y=77.00, z=60.55], EntityItem['item.item.egg'/209, l='MpServer', x=-202.97, y=67.00, z=21.22], EntityChicken['Chicken'/81, l='MpServer', x=-311.63, y=73.00, z=112.38], EntityCow['Cow'/210, l='MpServer', x=-200.00, y=68.00, z=28.91], EntityCow['Cow'/211, l='MpServer', x=-206.03, y=74.00, z=25.53], EntityItem['item.item.egg'/97, l='MpServer', x=-294.19, y=75.00, z=-3.47], EntityBat['Bat'/225, l='MpServer', x=-185.93, y=51.10, z=-12.77], EntityChicken['Chicken'/98, l='MpServer', x=-289.59, y=74.00, z=-7.41], EntityBat['Bat'/226, l='MpServer', x=-191.25, y=51.29, z=-3.05], EntityChicken['Chicken'/227, l='MpServer', x=-180.50, y=71.00, z=7.34], EntityChicken['Chicken'/99, l='MpServer', x=-299.02, y=78.01, z=4.38], EntityPig['Pig'/228, l='MpServer', x=-185.25, y=64.00, z=7.47], EntityItem['item.item.egg'/229, l='MpServer', x=-180.78, y=71.00, z=6.59], EntityChicken['Chicken'/230, l='MpServer', x=-188.63, y=64.00, z=12.41], EntityChicken['Chicken'/102, l='MpServer', x=-300.59, y=81.00, z=48.34], EntityPig['Pig'/231, l='MpServer', x=-185.53, y=65.00, z=7.28], EntityChicken['Chicken'/103, l='MpServer', x=-299.44, y=81.00, z=78.41], EntityItem['item.item.egg'/232, l='MpServer', x=-189.56, y=64.00, z=12.88], EntityChicken['Chicken'/104, l='MpServer', x=-297.69, y=76.00, z=88.50], EntitySquid['Squid'/233, l='MpServer', x=-179.81, y=61.90, z=106.67], EntityItem['item.item.egg'/105, l='MpServer', x=-289.81, y=72.00, z=88.94], EntitySquid['Squid'/234, l='MpServer', x=-184.91, y=61.53, z=108.90], EntityItem['item.item.egg'/106, l='MpServer', x=-288.63, y=70.00, z=106.16], EntitySquid['Squid'/235, l='MpServer', x=-181.48, y=61.78, z=106.55], EntityChicken['Chicken'/107, l='MpServer', x=-292.59, y=71.00, z=104.38], EntitySquid['Squid'/236, l='MpServer', x=-179.15, y=62.42, z=114.38], EntityBat['Bat'/237, l='MpServer', x=-183.53, y=25.48, z=129.66], EntityBat['Bat'/246, l='MpServer', x=-167.68, y=45.73, z=9.24], EntityChicken['Chicken'/118, l='MpServer', x=-279.78, y=76.00, z=-18.50], EntityItem['item.item.egg'/120, l='MpServer', x=-285.94, y=75.00, z=2.75], EntityChicken['Chicken'/248, l='MpServer', x=-164.44, y=70.00, z=7.38], EntityChicken['Chicken'/121, l='MpServer', x=-287.75, y=82.00, z=20.53], EntityChicken['Chicken'/122, l='MpServer', x=-284.72, y=85.00, z=33.59], EntityChicken['Chicken'/123, l='MpServer', x=-276.53, y=74.00, z=78.28], EntityItem['item.item.egg'/124, l='MpServer', x=-272.34, y=69.00, z=81.00], EntitySquid['Squid'/252, l='MpServer', x=-168.00, y=52.95, z=110.42], EntityChicken['Chicken'/125, l='MpServer', x=-275.66, y=69.00, z=105.66], EntitySquid['Squid'/253, l='MpServer', x=-168.59, y=55.74, z=110.73], EntityItem['item.item.egg'/126, l='MpServer', x=-283.75, y=70.00, z=106.13], EntityChicken['Chicken'/127, l='MpServer', x=-278.69, y=69.00, z=99.56], EntitySquid['Squid'/255, l='MpServer', x=-172.96, y=55.42, z=113.55]]

Retry entities: 0 total; []

Server brand: fml

Server type: Integrated singleplayer server

Stacktrace:

at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:350)

at net.minecraft.client.Minecraft.runTick(Minecraft.java:2106)

at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1016)

at net.minecraft.client.Minecraft.run(Minecraft.java:346)

at net.minecraft.client.main.Main.main(Main.java:117)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:85)

at GradleStart.main(GradleStart.java:45)

 

-- Affected level --

Details:

Level name: MpServer

All players: 1 total; [EntityPlayerSP['Player583'/336, l='MpServer', x=-231.76, y=77.00, z=60.55]]

Chunk stats: MultiplayerChunkCache: 289, 289

Level seed: 0

Level generator: ID 00 - default, ver 1. Features enabled: false

Level generator options:

Level spawn location: -228.00,64.00,60.00 - World: (-228,64,60), Chunk: (at 12,4,12 in -15,3; contains blocks -240,0,48 to -225,255,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

Level time: 33459 game time, 33459 day time

Level dimension: 0

Level storage version: 0x00000 - Unknown?

Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)

Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false

Forced entities: 84 total; [EntityChicken['Chicken'/128, l='MpServer', x=-284.38, y=72.00, z=130.06], EntityChicken['Chicken'/258, l='MpServer', x=-158.22, y=70.97, z=-12.42], EntityChicken['Chicken'/261, l='MpServer', x=-153.66, y=70.00, z=-11.41], EntityChicken['Chicken'/262, l='MpServer', x=-159.40, y=71.00, z=-12.50], EntityChicken['Chicken'/263, l='MpServer', x=-155.94, y=62.67, z=14.06], EntityChicken['Chicken'/143, l='MpServer', x=-259.50, y=75.00, z=-14.25], EntityChicken['Chicken'/144, l='MpServer', x=-259.81, y=72.00, z=2.56], EntityChicken['Chicken'/145, l='MpServer', x=-271.15, y=79.00, z=17.38], EntityCow['Cow'/146, l='MpServer', x=-262.43, y=66.00, z=88.44], EntityChicken['Chicken'/147, l='MpServer', x=-259.94, y=68.00, z=107.73], EntityItem['item.item.egg'/148, l='MpServer', x=-266.66, y=73.00, z=103.75], EntityChicken['Chicken'/149, l='MpServer', x=-266.78, y=73.00, z=103.47], EntityItem['item.item.egg'/150, l='MpServer', x=-266.63, y=75.00, z=113.28], EntityChicken['Chicken'/151, l='MpServer', x=-265.75, y=75.00, z=113.50], EntityChicken['Chicken'/152, l='MpServer', x=-264.33, y=78.46, z=125.70], EntityItem['item.item.egg'/154, l='MpServer', x=-263.81, y=77.00, z=124.75], EntityChicken['Chicken'/155, l='MpServer', x=-261.38, y=69.00, z=121.41], EntityChicken['Chicken'/167, l='MpServer', x=-260.03, y=73.61, z=3.61], EntityItem['item.item.egg'/168, l='MpServer', x=-255.25, y=73.00, z=2.94], EntityBat['Bat'/169, l='MpServer', x=-247.21, y=61.21, z=78.38], EntityBat['Bat'/170, l='MpServer', x=-253.03, y=60.10, z=73.75], EntityBat['Bat'/171, l='MpServer', x=-245.04, y=59.16, z=79.61], EntityBat['Bat'/172, l='MpServer', x=-244.69, y=32.52, z=135.46], EntityBat['Bat'/173, l='MpServer', x=-251.97, y=18.10, z=131.22], EntityChicken['Chicken'/174, l='MpServer', x=-251.84, y=77.00, z=138.27], EntityBat['Bat'/184, l='MpServer', x=-236.52, y=27.25, z=1.98], EntitySquid['Squid'/185, l='MpServer', x=-228.86, y=60.19, z=122.30], EntityChicken['Chicken'/193, l='MpServer', x=-210.41, y=65.00, z=-16.56], EntityChicken['Chicken'/194, l='MpServer', x=-212.36, y=64.14, z=-7.47], EntityCow['Cow'/195, l='MpServer', x=-212.63, y=74.00, z=31.63], EntityBat['Bat'/196, l='MpServer', x=-216.75, y=57.10, z=60.75], EntitySquid['Squid'/197, l='MpServer', x=-219.50, y=61.04, z=124.66], EntityChicken['Chicken'/73, l='MpServer', x=-305.34, y=79.00, z=2.50], EntityPig['Pig'/202, l='MpServer', x=-196.28, y=64.00, z=-13.84], EntityBat['Bat'/1098, l='MpServer', x=-309.43, y=30.00, z=77.49], EntityChicken['Chicken'/203, l='MpServer', x=-204.53, y=64.00, z=-10.02], EntityPig['Pig'/204, l='MpServer', x=-205.47, y=64.00, z=1.53], EntityChicken['Chicken'/76, l='MpServer', x=-306.47, y=81.00, z=16.47], EntityChicken['Chicken'/205, l='MpServer', x=-204.69, y=65.00, z=12.47], EntityChicken['Chicken'/206, l='MpServer', x=-205.03, y=67.00, z=19.31], EntityChicken['Chicken'/207, l='MpServer', x=-200.75, y=68.00, z=25.44], EntityItem['item.item.egg'/208, l='MpServer', x=-206.03, y=69.00, z=21.97], EntityChicken['Chicken'/80, l='MpServer', x=-308.50, y=78.00, z=87.50], EntityPlayerSP['Player583'/336, l='MpServer', x=-231.76, y=77.00, z=60.55], EntityItem['item.item.egg'/209, l='MpServer', x=-202.97, y=67.00, z=21.22], EntityChicken['Chicken'/81, l='MpServer', x=-311.63, y=73.00, z=112.38], EntityCow['Cow'/210, l='MpServer', x=-200.00, y=68.00, z=28.91], EntityCow['Cow'/211, l='MpServer', x=-206.03, y=74.00, z=25.53], EntityItem['item.item.egg'/97, l='MpServer', x=-294.19, y=75.00, z=-3.47], EntityBat['Bat'/225, l='MpServer', x=-185.93, y=51.10, z=-12.77], EntityChicken['Chicken'/98, l='MpServer', x=-289.59, y=74.00, z=-7.41], EntityBat['Bat'/226, l='MpServer', x=-191.25, y=51.29, z=-3.05], EntityChicken['Chicken'/227, l='MpServer', x=-180.50, y=71.00, z=7.34], EntityChicken['Chicken'/99, l='MpServer', x=-299.02, y=78.01, z=4.38], EntityPig['Pig'/228, l='MpServer', x=-185.25, y=64.00, z=7.47], EntityItem['item.item.egg'/229, l='MpServer', x=-180.78, y=71.00, z=6.59], EntityChicken['Chicken'/230, l='MpServer', x=-188.63, y=64.00, z=12.41], EntityChicken['Chicken'/102, l='MpServer', x=-300.59, y=81.00, z=48.34], EntityPig['Pig'/231, l='MpServer', x=-185.53, y=65.00, z=7.28], EntityChicken['Chicken'/103, l='MpServer', x=-299.44, y=81.00, z=78.41], EntityItem['item.item.egg'/232, l='MpServer', x=-189.56, y=64.00, z=12.88], EntityChicken['Chicken'/104, l='MpServer', x=-297.69, y=76.00, z=88.50], EntitySquid['Squid'/233, l='MpServer', x=-179.81, y=61.90, z=106.67], EntityItem['item.item.egg'/105, l='MpServer', x=-289.81, y=72.00, z=88.94], EntitySquid['Squid'/234, l='MpServer', x=-184.91, y=61.53, z=108.90], EntityItem['item.item.egg'/106, l='MpServer', x=-288.63, y=70.00, z=106.16], EntitySquid['Squid'/235, l='MpServer', x=-181.48, y=61.78, z=106.55], EntityChicken['Chicken'/107, l='MpServer', x=-292.59, y=71.00, z=104.38], EntitySquid['Squid'/236, l='MpServer', x=-179.15, y=62.42, z=114.38], EntityBat['Bat'/237, l='MpServer', x=-183.53, y=25.48, z=129.66], EntityBat['Bat'/246, l='MpServer', x=-167.68, y=45.73, z=9.24], EntityChicken['Chicken'/118, l='MpServer', x=-279.78, y=76.00, z=-18.50], EntityItem['item.item.egg'/120, l='MpServer', x=-285.94, y=75.00, z=2.75], EntityChicken['Chicken'/248, l='MpServer', x=-164.44, y=70.00, z=7.38], EntityChicken['Chicken'/121, l='MpServer', x=-287.75, y=82.00, z=20.53], EntityChicken['Chicken'/122, l='MpServer', x=-284.72, y=85.00, z=33.59], EntityChicken['Chicken'/123, l='MpServer', x=-276.53, y=74.00, z=78.28], EntityItem['item.item.egg'/124, l='MpServer', x=-272.34, y=69.00, z=81.00], EntitySquid['Squid'/252, l='MpServer', x=-168.00, y=52.95, z=110.42], EntityChicken['Chicken'/125, l='MpServer', x=-275.66, y=69.00, z=105.66], EntitySquid['Squid'/253, l='MpServer', x=-168.59, y=55.74, z=110.73], EntityItem['item.item.egg'/126, l='MpServer', x=-283.75, y=70.00, z=106.13], EntityChicken['Chicken'/127, l='MpServer', x=-278.69, y=69.00, z=99.56], EntitySquid['Squid'/255, l='MpServer', x=-172.96, y=55.42, z=113.55]]

Retry entities: 0 total; []

Server brand: fml

Server type: Integrated singleplayer server

 

-- System Details --

Details:

Minecraft Version: 1.8

Operating System: Windows 7 (x86) version 6.1

Java Version: 1.8.0_31, Oracle Corporation

Java VM Version: Java HotSpot Client VM (mixed mode), Oracle Corporation

Memory: 835785472 bytes (797 MB) / 1060372480 bytes (1011 MB) up to 1060372480 bytes (1011 MB)

JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M

IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95

FML: MCP v9.10 FML v8.0.20.1023 5 mods loaded, 5 mods active

mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

FML{8.0.20.1023} [Forge Mod Loader] (fmlSrc-1.8-8.0.20.1023-1.8.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

testmod01{1.0} [Test Mod 01] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

oredetectmod{1.0} [Ore Detect Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

shelvesmod{1.0} [shelves Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Launched Version: 1.8

LWJGL: 2.9.1

OpenGL: ATI Radeon HD 4800 Series GL version 3.3.11672 Compatibility Profile Context, ATI Technologies Inc.

GL Caps: Using GL 1.3 multitexturing.

Using GL 1.3 texture combiners.

Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.

Shaders are available because OpenGL 2.1 is supported.

VBOs are available because OpenGL 1.5 is supported.

 

Using VBOs: No

Is Modded: Definitely; Client brand changed to 'fml'

Type: Client (map_client.txt)

Resource Packs: []

Current Language: English (US)

Profiler Position: N/A (disabled)

[04:58:18] [server thread/INFO]: Stopping server

[04:58:18] [server thread/INFO]: Saving players

[04:58:18] [server thread/INFO]: Saving worlds

[04:58:18] [server thread/INFO]: Saving chunks for level 'TestingShelvesGui'/Overworld

[04:58:18] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:568]: #@!@# Game crashed! Crash report saved to: #@!@# C:\Users\Becky\Desktop\Forge ModLoader-1.8-8.0.20.1023-1.8-src\eclipse\.\crash-reports\crash-2015-03-13_04.58.18-client.txt

[04:58:18] [Client thread/INFO] [FML]: Waiting for the server to terminate/save.

[04:58:18] [server thread/INFO]: Saving chunks for level 'TestingShelvesGui'/Nether

[04:58:18] [server thread/INFO]: Saving chunks for level 'TestingShelvesGui'/The End

[04:58:19] [server thread/INFO] [FML]: Applying holder lookups

[04:58:19] [server thread/INFO] [FML]: Holder lookups applied

[04:58:19] [Client thread/INFO] [FML]: Server terminated.

AL lib: (EE) alc_cleanup: 1 device not closed

Java HotSpot Client VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

 

 

hw developer in a sw world

Link to comment
Share on other sites

Easiest way to render the items in the tile entity would be a TESR a lot simpler as you are using a tile entity

Just redid the render in a test environment I built, no positioning but it is possible.

now the code

 

public class TileShelfRender extends TileEntitySpecialRenderer {
    private RenderEntityItem itemRender;
    TileShelfRender() {
        itemRender = new RenderEntityItem(Minecraft.getMinecraft().getRenderManager(),Minecraft.getMinecraft().getRenderItem()) {
            @Override
            public int func_177078_a(ItemStack stack) {
                return SignedBytes.saturatedCast(Math.min(stack.stackSize /32,15) +1);
            }
            @Override
            public boolean shouldBob() {return false;}
            @Override
            public boolean shouldSpreadItems() {return false;}
        };
    }
    public void render(ShelfTitleEntity te, double x, double y, double z, float par6, int par7) {
        for(int i = 0; i < 4; ++i) {
            if(te.getStackInSlot(i) != null) {
                EntityItem customItem = new EntityItem(te.getWorld());
                customItem.hoverStart = 0.0F;
                customItem.setEntityItemStack(te.getStackInSlot(i));
                GlStateManager.pushMatrix();
                GlStateManager.translate((float)x,(float)y,(float)z);
                GlStateManager.translate(0.5F,0.7F,0.5F);
                GlStateManager.rotate(0.0F,0.0F,1.0F,0.0F);
                itemRender.doRender(customItem,0,0,0,0,0);
                GlStateManager.scale(0.7F,0.7F,0.7F);
                GlStateManager.popMatrix();
            }
        }
    }
    @Override
    public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_180535_8_, int p_180535_9_) {
        render((ShelfTitleEntity)te,x,y,z,p_180535_8_,p_180535_9_);
    }
}

 

 

Just to show you it works

width=800 height=449http://i.imgur.com/NDkquNp.png?1[/img]

Did you really need to know?

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello, I want to add more memory to the RunClient gradle task. I added VM options into the configurations and put in "-Xms256m -Xmx2048m" but it doesn't work.
    • Hello, I'm trying to modify the effects of native enchantments for bows and arrows in Minecraft. After using a decompilation tool, I found that the specific implementations of native bow and arrow enchantments (including `ArrowDamageEnchantment`, `ArrowKnockbackEnchantment`, `ArrowFireEnchantment`, `ArrowInfiniteEnchantment`, `ArrowPiercingEnchantment`) do not contain any information about the enchantment effects (such as the `getDamageProtection` function for `ProtectionEnchantment`, `getDamageBonus` function for `DamageEnchantment`, etc.). Upon searching for the base class of arrows, `AbstractArrow`, I found a function named setEnchantmentEffectsFromEntity`, which seems to be used to retrieve the enchantment levels of the tool held by a `LivingEntity` and calculate the specific values of the enchantment effects. However, after testing with the following code, I found that this function is not being called:   @Mixin(AbstractArrow.class) public class ModifyArrowEnchantmentEffects {     private static final Logger LOGGER = LogUtils.getLogger();     @Inject(         method = "setEnchantmentEffectsFromEntity",         at = @At("HEAD")     )     private void logArrowEnchantmentEffectsFromEntity(CallbackInfo ci) {         LOGGER.info("Arrow enchantment effects from entity");     } }   Upon further investigation, I found that within the onHitEntity method, there are several lines of code:               if (!this.level().isClientSide &amp;&amp; entity1 instanceof LivingEntity) {                EnchantmentHelper.doPostHurtEffects(livingentity, entity1);                EnchantmentHelper.doPostDamageEffects((LivingEntity)entity1, livingentity);             }   These lines of code actually call the doPostHurt and doPostAttack methods of each enchantment in the enchantment list. However, this leads back to the issue because native bow and arrow enchantments do not implement these functions. Although their base class defines the functions, they are empty. At this point, I'm completely stumped and seeking assistance. Thank you.
    • I have been trying to make a server with forge but I keep running into an issue. I have jdk 22 installed as well as Java 8. here is the debug file  
    • it crashed again     What the console says : [00:02:03] [Server thread/INFO] [Easy NPC/]: [EntityManager] Server started! [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {iceandfire:fire_dragon_roost=true, iceandfire:fire_lily=true, iceandfire:spawn_dragon_skeleton_fire=true, iceandfire:lightning_dragon_roost=true, iceandfire:spawn_dragon_skeleton_lightning=true, iceandfire:ice_dragon_roost=true, iceandfire:ice_dragon_cave=true, iceandfire:lightning_dragon_cave=true, iceandfire:cyclops_cave=true, iceandfire:spawn_wandering_cyclops=true, iceandfire:spawn_sea_serpent=true, iceandfire:frost_lily=true, iceandfire:hydra_cave=true, iceandfire:lightning_lily=true, iceandfireixie_village=true, iceandfire:myrmex_hive_jungle=true, iceandfire:myrmex_hive_desert=true, iceandfire:silver_ore=true, iceandfire:siren_island=true, iceandfire:spawn_dragon_skeleton_ice=true, iceandfire:spawn_stymphalian_bird=true, iceandfire:fire_dragon_cave=true, iceandfire:sapphire_ore=true, iceandfire:spawn_hippocampus=true, iceandfire:spawn_death_worm=true} [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {TROLL_S=true, HIPPOGRYPH=true, AMPHITHERE=true, COCKATRICE=true, TROLL_M=true, DREAD_LICH=true, TROLL_F=true} [00:02:03] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 41976 bytes (in 5 string chunks with the size of 10000) [00:02:03] [Server thread/INFO] [patchouli/]: Sending reload packet to clients [00:02:03] [Server thread/WARN] [voicechat/]: [voicechat] Running in offline mode - Voice chat encryption is not secure! [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Using server-ip as bind address: 0.0.0.0 [00:02:03] [Server thread/WARN] [ModernFix/]: Dedicated server took 22.521 seconds to load [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Voice chat server started at 0.0.0.0:25565 [00:02:03] [Server thread/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.player.Player from class tschipp.carryon.common.carry.CarryOnDataManager [00:02:03] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@2941ffd5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 0 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 1 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 2 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 3 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 4 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 6 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 7 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 8 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 9 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 10 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 11 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 12 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 13 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 14 [00:02:19] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@ebc7ef2 [00:02:19] [Server thread/INFO] [minecraft/PlayerList]: ZacAdos[/90.2.17.162:49242] logged in with entity id 1062 at (-1848.6727005281205, 221.0, -3054.2468255848935) [00:02:19] [Server thread/ERROR] [ModernFix/]: Skipping entity ID sync for com.talhanation.smallships.world.entity.ship.Ship: java.lang.NoClassDefFoundError: net/minecraft/client/CameraType [00:02:19] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos joined the game [00:02:19] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:19] [Server thread/INFO] [se.mi.te.da.DataManager/]: Sending data to client: ZacAdos [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Received secret request of - Gloop - ZacAdos (17) [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Sent secret to - Gloop - ZacAdos [00:02:21] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully authenticated player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully validated connection of player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Player - Gloop - ZacAdos (cc56befd-d376-3526-a760-340713c478bd) successfully connected to voice chat stop [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping the server [00:02:34] [Server thread/INFO] [mo.pl.ar.ArmourersWorkshop/]: stop local service [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players [00:02:34] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: ZacAdos lost connection: Server closed [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos left the game [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (world): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage: All dimensions are saved [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopping IO worker... [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopped IO worker! [00:02:34] [Server thread/INFO] [Calio/]: Removing Dynamic Registries for: net.minecraft.server.dedicated.DedicatedServer@7dc879e1 [MineStrator Daemon]: Checking server disk space usage, this could take a few seconds... [MineStrator Daemon]: Updating process configuration files... [MineStrator Daemon]: Ensuring file permissions are set correctly, this could take a few seconds... [MineStrator Daemon]: Pulling Docker container image, this could take a few minutes to complete... [MineStrator Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx6302M -Dterminal.jline=false -Dterminal.ansi=true -Djline.terminal=jline.UnsupportedTerminal -p libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar:libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler --add-exports java.base/sun.security.util=cpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming -Djava.net.preferIPv6Addresses=system -DignoreList=bootstraplauncher-1.1.2.jar,securejarhandler-2.1.4.jar,asm-commons-9.5.jar,asm-util-9.5.jar,asm-analysis-9.5.jar,asm-tree-9.5.jar,asm-9.5.jar,JarJarFileSystems-0.3.16.jar -DlibraryDirectory=libraries -DlegacyClassPath=libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/6.0.3/eventbus-6.0.3.jar:libraries/net/minecraftforge/forgespi/6.0.0/forgespi-6.0.0.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/10.0.8/modlauncher-10.0.8.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar:libraries/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar:libraries/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/net/minecraftforge/JarJarSelector/0.3.16/JarJarSelector-0.3.16.jar:libraries/net/minecraftforge/JarJarMetadata/0.3.16/JarJarMetadata-0.3.16.jar:libraries/net/minecraftforge/fmlloader/1.19.2-43.3.0/fmlloader-1.19.2-43.3.0.jar:libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-extra.jar:libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:libraries/com/mojang/authlib/3.11.49/authlib-3.11.49.jar:libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:libraries/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar:libraries/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar:libraries/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar:libraries/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar:libraries/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar:libraries/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar:libraries/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-aarch_64.jar:libraries/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar:libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar cpw.mods.bootstraplauncher.BootstrapLauncher --launchTarget forgeserver --fml.forgeVersion 43.3.0 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [00:02:43] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [00:02:44] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection Latest log [29Mar2024 00:02:42.803] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [29Mar2024 00:02:42.805] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [29Mar2024 00:02:43.548] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [29Mar2024 00:02:43.876] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.878] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:44.033] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [29Mar2024 00:02:44.034] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [29Mar2024 00:02:44.034] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.