Jump to content

TheCrafter4000

Forge Modder
  • Posts

    33
  • Joined

  • Last visited

Everything posted by TheCrafter4000

  1. Where do you call your IGuiHandler#getServerSideElements / IGuiHandler#getClientSideElements ? Has IDs.storableItemGui the same value at both sides ?
  2. Have watched the tutorial, but I don't want to add or remove some gui - elements if I click the tab, I want to change the container behind, on client and server side
  3. Hello, I wanted to create a gui with tabs( like the creative inventory ). I looked into the creative inventory code, but it looks like the container is the same for every tab ( with other item's of course ), but I need different ( like http://technicpack.wikia.com/wiki/Thermal_Expansion_GUI or gui's in ThinkersConstruct ). Any ideas?
  4. I think I fixed it! I copied the 1.8.9.json(https://github.com/MinecraftForge/MinecraftForge/blob/755df95c96e698cc12cdb51b2d5e4e4f1d1be467/jsons/1.8.9.json) and put it in the dev.json. Working by me, maybe by you too.
  5. I'm using the KeyTypedEvent to get notifyed if the inventory is opened( event is called on cilent side only ), than i'm opening the gui( GuiContainer ), but the container ( Container ) is not opened.
  6. I'm working on a extended player inventory. It's working fine, but the container on server side is not loaded because it's not called, so i need to send a packet from cilent( code is fired at cilent side ) to server.
  7. Hello guys, i need a way to "convert" a EntityPlayerSP( Cilent ) to EntityPlayerMP( Server ).
  8. Fixed it, it looks like I haven't overrided the navigator of my villager, canNavigate() was never true. Why can't I use the normal navigator?
  9. Sorry, my mistake. I play in a flat - world and has a y-offset of 5, I use a offset of four before, still not work. System.out.println( pos.up(5) );
  10. Look at this, I called it in my VillagerWorker - class, because that's the class I'm using this.tasks.addTask(2, new EntityAISaveResources(this, output)); I know that it cannot work if someone destroys the blocks the entity has to go to. I looked into EntityAIMoveToBlock, but I hadn't understood what some methodes do, for exsample the abstract methode func_179488_a(). And it looks like the destanationBlock is get randomly, but my Entity must go to a fixed position, in my case and just for debugging 0,0,0.
  11. 1. In my EntityAISaveResources class, at startExecuting() 2. Yes, 0.5D 3. Does that methode exist? 4. Yes My Villager class public abstract class Villager extends EntityCreature { protected ItemStack[] inventory = new ItemStack[10]; private WorkingState state = WorkingState.Config; public Villager(World worldIn,int GetResourcesMaximum) { super(worldIn); this.state.setMaximums( GetResourcesMaximum ); this.setSize(0.6F, 1.8F); this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(1, new EntityAIOpenDoor(this, true)); this.setAIMoveSpeed(0.5f); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute( SharedMonsterAttributes.maxHealth ).setBaseValue(12); this.getEntityAttribute( SharedMonsterAttributes.movementSpeed ).setBaseValue(0.5D); this.getEntityAttribute( SharedMonsterAttributes.followRange ).setBaseValue(20D); } public ItemStack[] getVillagerInventory() { return inventory; } @Override public void onStruckByLightning(EntityLightningBolt lightningBolt) { if (!this.worldObj.isRemote) { EntityWitch entitywitch = new EntityWitch(this.worldObj); entitywitch.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); entitywitch.func_180482_a(this.worldObj.getDifficultyForLocation(new BlockPos(entitywitch)), (IEntityLivingData)null); this.worldObj.spawnEntityInWorld(entitywitch); this.setDead(); } } @Override public boolean getAlwaysRenderNameTag() { return true; } @Override protected String getLivingSound() { return "mob.villager.idle"; } @Override protected String getHurtSound() { return "mob.villager.hit"; } @Override protected String getDeathSound() { return "mob.villager.death"; } public void setReady() { if( this.state == WorkingState.Config ) WorkingState.increment(state); } public void increment() { WorkingState.increment(state); } public WorkingState getState(){ return state; } public void setSave() { this.state = WorkingState.SaveResources; } @Override public float getAIMoveSpeed() { return super.getAIMoveSpeed(); } My Villager subclass( extends Villlager ) public class VillagerWorker extends Villager { private ItemStack[] recipe = new ItemStack[9]; private BlockPos workbench; private BlockPos[] input = new BlockPos[9]; private ItemStack itemoutput; private BlockPos output; public VillagerWorker(World worldIn) { super(worldIn, ; this.setReady(); output = new BlockPos( 0, 0,0 ); this.setSave(); this.tasks.addTask(2, new EntityAISaveResources(this, output)); } } My EntityAISaveResources - class public class EntityAISaveResources extends EntityAIBase { private BlockPos pos; private Villager villager; public EntityAISaveResources(Villager villager, BlockPos pos) { this.villager = villager; this.pos = pos; this.setMutexBits(5); } @Override public boolean shouldExecute() { return villager.getState() == WorkingState.SaveResources; } @Override public void startExecuting() { System.out.println( pos.up(5) ); System.out.println( villager.getNavigator().tryMoveToXYZ(pos.getX(), pos.getY(), pos.getZ(), 0.5D) ); villager.increment(); } } WorkingState is just an Enum public enum WorkingState { GetResources,DoWork,SaveResources,Config; int GetResourcesCounter,GetResourcesMaximum; public void setMaximums( int GetResourcesMaximum ) { this.GetResourcesCounter = 0; this.GetResourcesMaximum = GetResourcesMaximum; } public static void increment( WorkingState state ){ if( state == GetResources ) { if( state.GetResourcesCounter < state.GetResourcesMaximum ) { state.GetResourcesCounter++; } else { state.GetResourcesCounter = 0; state = DoWork; } } else if( state == SaveResources ) state = GetResources; else if( state == DoWork ) state = SaveResources; else if( state == Config ) state = GetResources; } } Hope thats helpful
  12. Hello guys, I'am working on a Entity that goes to a position, but the entity.getNavigator().tryMoveToXYZ(0,4,0,0.5D) methode ( I've spawned the entity at 10,4,10 with followRange 20 ) doesnt work( it's executed ).
  13. Hello, I just want to send a message to a player if a key is pressed, but, when I press the key nothing happends. My Event class: import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiChat; import net.minecraft.client.settings.GameSettings; import net.minecraft.util.ChatComponentText; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class KeyPressEvents { @SideOnly(Side.CLIENT) @SubscribeEvent(receiveCanceled=true) public void onKeyInput( KeyInputEvent event ) { System.out.println( "called" ); if( Minecraft.getMinecraft().gameSettings.keyBindInventory.isPressed() ) if (!FMLClientHandler.instance().isGUIOpen(GuiChat.class)) Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText( "Pressed" ) ); } } I registered it at the FMLCommonHandler's EventBus FMLCommonHandler.instance().bus().register( new KeyPressEvents() ); The System.out.println( "called" ); is never showen
  14. I have solved the problem! When my furnace started burning, it's meta changed, so minecraft re-creates the tile-entity. A new tile-entity has the default values( 0 and null ), and the values aren't saved.
  15. Yes, I have, but it's the same problem: all values are null so it doesn't write anything.
  16. Yeah, your right. Your're right too. My Container Class: package tc4modpack.thecrafter4000.tc4ores.fusion; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.inventory.SlotFurnaceFuel; import net.minecraft.inventory.SlotFurnaceOutput; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.world.World; public class FusionContainer extends Container { private FusionTileEntity entity; private IBlockState block; public FusionContainer( InventoryPlayer player, World world, BlockPos pos ) { entity = (FusionTileEntity) world.getTileEntity(pos); block = world.getBlockState(pos); addSlotToContainer( new Slot( entity, 0, 26,18 ) ); addSlotToContainer( new SlotFurnaceFuel( entity, 2, 26,54 ) ); addSlotToContainer( new SlotFurnaceOutput( player.player, entity, 4, 44,26 ) ); addSlotToContainer( new Slot( entity, 1, 62,18 ) ); addSlotToContainer( new SlotFurnaceFuel( entity, 3, 62,54 ) ); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 9; ++j) { addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } for (int i = 0; i < 9; ++i) { addSlotToContainer(new Slot(player, i, 8 + i * 18, 142)); } } @Override public boolean canInteractWith(EntityPlayer playerIn) { return true; } @Override public ItemStack transferStackInSlot(EntityPlayer playerIn, int fromSlot) { ItemStack previous = null; Slot slot = (Slot) inventorySlots.get(fromSlot); if (slot != null && slot.getHasStack()) { ItemStack current = slot.getStack(); previous = current.copy(); if (fromSlot < 14) { // From TE Inventory to Player Inventory if (!mergeItemStack(current,14, inventorySlots.size(), true)) return null; } else { // From Player Inventory to TE Inventory if (!mergeItemStack(current, 0, 14, false)) return null; } if (current.stackSize == 0) slot.putStack((ItemStack) null); else slot.onSlotChanged(); if (current.stackSize == previous.stackSize) return null; slot.onPickupFromSlot(playerIn, current); } return previous; } } My Gui Class: package tc4modpack.thecrafter4000.tc4ores.fusion; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.BlockPos; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; public class FusionGui extends GuiContainer { private InventoryPlayer player; private FusionTileEntity entity; public FusionGui( InventoryPlayer player, World world, BlockPos pos ) { super( new FusionContainer( player, world, pos ) ); this.player = player; entity = (FusionTileEntity) world.getTileEntity(pos); xSize = 176; ySize = 166; } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); mc.getTextureManager().bindTexture( new ResourceLocation("tc4ores:textures/gui/fusion.png") ); this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { String s = entity.getDisplayName().getUnformattedText(); fontRendererObj.drawString(s, 88 - fontRendererObj.getStringWidth(s) / 2, 6, 4210752); //#404040 fontRendererObj.drawString(player.getDisplayName().getUnformattedText(), 8, 72, 4210752); //#404040 } } My Block Class: package tc4modpack.thecrafter4000.tc4ores.fusion; import java.util.List; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import scala.actors.threadpool.Arrays; import tc4modpack.thecrafter4000.api.block.IMetaBlockName; import tc4modpack.thecrafter4000.tc4ores.TC4Ores; public class FusionFurnace extends BlockContainer implements IMetaBlockName{ public static final PropertyDirection FACING = PropertyDirection.create("facing"); public static final PropertyBool ACTIVATED = PropertyBool.create("activated"); /** A List of all BlockStates the Block can have */ private final IBlockState[] BlockStates = new IBlockState[] { getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.NORTH ).withProperty(FusionFurnace.ACTIVATED, true), getDefaultState(), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.EAST ).withProperty(FusionFurnace.ACTIVATED, true), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.EAST ).withProperty(FusionFurnace.ACTIVATED, false), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.SOUTH ).withProperty(FusionFurnace.ACTIVATED, true), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.SOUTH ).withProperty(FusionFurnace.ACTIVATED, false), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.WEST ).withProperty(FusionFurnace.ACTIVATED, true), getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.WEST ).withProperty(FusionFurnace.ACTIVATED, false) }; public FusionFurnace( Material materialIn, String name ) { super( materialIn ); setUnlocalizedName( name ); setDefaultState( super.getDefaultState().withProperty(FusionFurnace.FACING, EnumFacing.NORTH).withProperty(FusionFurnace.ACTIVATED, false) ); } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new FusionTileEntity(); } @Override public String getSpecialName(ItemStack stack) { return ""; } @Override public int getRenderType() { return 3; } @Override protected BlockState createBlockState() { return new BlockState( this, new IProperty[]{ FusionFurnace.FACING, FusionFurnace.ACTIVATED } ); } @Override public IBlockState getStateFromMeta(int meta) { return BlockStates[ meta ]; } @Override public int getMetaFromState(IBlockState state) { List<IBlockState> list = Arrays.asList(BlockStates); int i = list.indexOf( state ); if( i == -1 ) i = 1; return i; } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { playerIn.openGui(TC4Ores.instance, 0, worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } @Override public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { switch( placer.getHorizontalFacing().getOpposite() ) { case NORTH: return BlockStates[1]; case EAST: return BlockStates[3]; case SOUTH: return BlockStates[5]; case WEST: return BlockStates[7]; default: { return getDefaultState(); } } } static void activate( World world, BlockPos pos, boolean on ) { System.out.println( "Aktive" ); world.setBlockState( pos, world.getBlockState( pos ).withProperty(FusionFurnace.ACTIVATED, on) ); } } My GuiHandler Class: package tc4modpack.thecrafter4000.tc4ores; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; import tc4modpack.thecrafter4000.tc4ores.fusion.FusionContainer; import tc4modpack.thecrafter4000.tc4ores.fusion.FusionGui; public class TC4GuiHandler implements IGuiHandler{ public static final int FUSION_GUI = 0; @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if( ID == TC4GuiHandler.FUSION_GUI ) return new FusionContainer( player.inventory, world, new BlockPos( x,y,z )); return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if( ID == TC4GuiHandler.FUSION_GUI ) return new FusionGui( player.inventory , world, new BlockPos( x,y,z )); return null; } }
  17. Yes, I have. inventory[] = { null,null,null,null,null } burntime0 = 0 burntime1 = 0 blockmetadata = -1
  18. Hello guys, I'm making an furnace with 2 input and fuel slots, but when I wanted to set the burntime in a function it does not save it in my field. My Tile Entity class: package tc4modpack.thecrafter4000.tc4ores.fusion; import java.util.Arrays; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.gui.IUpdatePlayerListBox; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IChatComponent; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class FusionTileEntity extends TileEntity implements IInventory, IUpdatePlayerListBox{ /** 0 = Input Left, * 1 = Input Right, * 2 = Fuel Left, * 3 = Fuel Right, * 4 = Fusion Output */ private ItemStack[] inventory = new ItemStack[ getSizeInventory() ]; /** The burntime for the left slot*/ private int burntime0 = 0; /** The burntime for the right slot*/ private int burntime1 = 0; private int cooktime = 0; @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); int i = 0; for( ItemStack s : inventory ) { inventory[ i ] = null; if( compound.hasKey( "slot_" +i ) ) inventory[ i ] = ItemStack.loadItemStackFromNBT( compound.getCompoundTag( "slot_" +i ) ); i++; } burntime0 = compound.getInteger("burntime0"); burntime1 = compound.getInteger("burntime1"); cooktime = compound.getInteger("cooktime"); } @Override public void writeToNBT( NBTTagCompound tag ) { super.writeToNBT( tag ); NBTTagCompound[] stacks = new NBTTagCompound[ getSizeInventory() ]; Arrays.fill( stacks, new NBTTagCompound() ); int i = 0; for( NBTTagCompound c : stacks ) { tag.removeTag( "slot_" + i ); if( inventory[ i ] != null ) { inventory[ i ].writeToNBT( c ); tag.setTag("slot_" + i , c ); } i++; } tag.setInteger("burntime0", burntime0); tag.setInteger("burntime1", burntime1); tag.setInteger("cooktime", cooktime); } @Override public String getName() { return "Fusion Furnace"; } @Override public boolean hasCustomName() { return true; } @Override public IChatComponent getDisplayName() { return new ChatComponentText( getName() ); } @Override public int getSizeInventory() { return 5; } @Override public ItemStack getStackInSlot(int index) { return inventory[ index ]; } @Override public ItemStack decrStackSize(int index, int count) { if (inventory[index] != null) { ItemStack itemstack; if (inventory[index].stackSize <= count) { itemstack = inventory[index]; inventory[index] = null; markDirty(); return itemstack; } else { itemstack = inventory[index].splitStack(count); if (inventory[index].stackSize == 0) { inventory[index] = null; } markDirty(); return itemstack; } } else { return null; } } @Override public ItemStack getStackInSlotOnClosing(int index) { return getStackInSlot( index ); } @Override public void setInventorySlotContents(int index, ItemStack stack) { inventory[ index ] = stack; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } @Override public void openInventory(EntityPlayer player) {} @Override public void closeInventory(EntityPlayer player) {} @Override public boolean isItemValidForSlot(int index, ItemStack stack) { switch( index ) { case 0: return true; case 1: return true; case 2: return TileEntityFurnace.isItemFuel( stack ); case 3: return TileEntityFurnace.isItemFuel( stack ); default: return false; } } @Override public int getField(int id) { return (id==0) ? burntime0 : burntime1; } @Override public void setField(int id, int value) { switch( id ) { case 0: burntime0 = value; case 1: burntime1 = value; } } @Override public int getFieldCount() { return 2; } @Override public void clear() { inventory = new ItemStack[ getSizeInventory() ]; } @Override public void update() { if( !worldObj.isRemote ) { // Server Side System.out.println( burntime0 + "," + burntime1 + "," + cooktime + "," + isAktivated() ); if( isAktivated() ) { // if it burns if( burntime0 > 0 ) burntime0--; // increase burntime else stopBurning(); if( burntime1 > 0 ) burntime1--; else stopBurning(); if( inventory[0] != null && inventory[1] != null ) cooktime++; // if it burns it increase the cooktime else cooktime = 0; if( cooktime >= 200 ) { // if its finished cooktime = 0; if( inventory[0].stackSize > 1 ) inventory[0].stackSize = inventory[0].stackSize-1; else inventory[0] = null; if( inventory[1].stackSize > 1 ) inventory[1].stackSize = inventory[1].stackSize-1; else inventory[1] = null; inventory[4] = new ItemStack( Items.beef ); } } else if( cooktime > 0 ) cooktime--; if( !isAktivated() && canSmelt() ) { // if it does not burn but it can startBurning(); // it starts burning System.out.println( "Startet Burning" ); } System.out.println( burntime0 + "," + burntime1 + "," + cooktime + "," + isAktivated() ); } } protected boolean canSmelt() { if( inventory[0] != null && inventory[1] != null && (inventory[2] != null || burntime0 > 0 ) && (inventory[3] != null || burntime1 > 0 ) ) return true; return false; } protected boolean isAktivated() { return (Boolean) worldObj.getBlockState(pos).getValue(FusionFurnace.ACTIVATED); } protected void startBurning() { System.out.println( "An" ); FusionFurnace.activate( worldObj, pos, true ); if( burntime0 <= 0 && inventory[2] != null ) { // burntime0 = TileEntityFurnace.getItemBurnTime( inventory[2] ); burntime0 = 1600; if( inventory[2].stackSize > 1 ) inventory[2].stackSize = inventory[2].stackSize-1; else inventory[2] = null; } if( burntime1 <= 0 && inventory[3] != null ) { // burntime1 = TileEntityFurnace.getItemBurnTime( inventory[3] ); burntime1 = 1500; if( inventory[3].stackSize > 1 ) inventory[3].stackSize = inventory[3].stackSize-1; else inventory[3] = null; } } protected void stopBurning() { System.out.println( "Aus" ); FusionFurnace.activate( worldObj, pos, false ); } public static boolean isBurning( FusionTileEntity entity ) { return (entity.burntime0 > 0 && entity.burntime1 > 0); } } The output log is magic: [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:update:165]: 0,0,0,false // First run [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:startBurning:202]: An // starts burning [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionFurnace:activate:91]: Aktive //sets blockState [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:update:185]: Startet Burning // stated burning [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:update:187]: 1600,1500,0,true // end of the first run [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:update:165]: 0,0,0,true // second run the values are zero! WHY? [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:stopBurning:220]: Aus [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionFurnace:activate:91]: Aktive [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:stopBurning:220]: Aus [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionFurnace:activate:91]: Aktive [22:13:09] [server thread/INFO] [sTDOUT]: [tc4modpack.thecrafter4000.tc4ores.fusion.FusionTileEntity:update:187]: 0,0,0,false After the first run the values are reset. I don't know [glow=red,2,300]WHY[/glow], can anybody help me?
  19. No, I havent, but I have tried a lot with that rendering stuff. I have read many tutorials about rendering, but they render just 3D models( like items that rotate above the block ).
  20. Hello, I am trying to make a custom bookshelf that can store books. I want to render them at the front of the block(2D). I have tried TileEntitySpecialRender, but it havent any idea who it works. Can anyone help me?
×
×
  • Create New...

Important Information

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