tiffit Posted March 19, 2016 Posted March 19, 2016 I have made a tile entity that removes an item like the furnace as fuel. But, my problem is that whenever the item gets removed the client crashes with a NPE for rendering the item. Tile Entity: public class TileEntityTemperatureControlledChamber extends GenericDuelTankTileEntity { public boolean isUsingFire = false; public int room_temp = 21; public int itemMax = 60; public boolean itemType; public int currentItem = 0; public int temperature = room_temp; public static HashMap<Item, Boolean> getAllowedFuels(){ HashMap<Item, Boolean> hmap = new HashMap<Item, Boolean>(); hmap.put(Items.blaze_powder, true); hmap.put(Items.blaze_rod, true); hmap.put(Items.fire_charge, true); hmap.put(Item.getItemFromBlock(Blocks.ice), false); hmap.put(Item.getItemFromBlock(Blocks.packed_ice), false); hmap.put(Items.snowball, false); return hmap; } public TileEntityTemperatureControlledChamber() { super(Main.temperatureControlledChamber, 10000, Arrays.asList(Main.filteredWater)); } @Override public int getSizeInventory() { return 1; } @Override public void updateEntity(){ super.updateEntity(); Main.network.sendToDimension(new TCCServerPacket(xCoord, yCoord, zCoord, false, false, temperature), worldObj.provider.dimensionId); calculateIsUsingFire(); if(currentItem > 0){ if(itemType && temperature < 100){ temperature+=3; currentItem--; } if(!itemType && temperature > 0){ temperature--; currentItem--; } if(temperature < 0) temperature = 0; if(temperature > 100) temperature = 100; } if(currentItem == 0){ if(temperature < 21) temperature++; if(temperature > 21) temperature--; if(items[0] != null){ currentItem = itemMax; itemType = getAllowedFuels().get(items[0].getItem()); setInventorySlotContents(0, ISUtil.removeFromStack(1, items[0])); } } } private void calculateIsUsingFire(){ if(items[0] == null || !getAllowedFuels().containsKey(items[0].getItem())) return; Item item = items[0].getItem(); isUsingFire = getAllowedFuels().get(item); } } Crashlog: ---- Minecraft Crash Report ---- // I'm sorry, Dave. Time: 3/19/16 4:14 PM Description: Rendering item java.lang.NullPointerException: Rendering item at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265) at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419) at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585) at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:289) at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067) at net.minecraft.client.Minecraft.run(Minecraft.java:962) at net.minecraft.client.main.Main.main(Main.java:164) 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(Unknown Source) at GradleStart.main(Unknown Source) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265) at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419) -- Item being rendered -- Details: Item Type: null Item Aux: ~~ERROR~~ NullPointerException: null Item NBT: null Item Foil: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585) at net.minecraft.client.gui.inventory.GuiContainer.func_146977_a(GuiContainer.java:289) at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:114) -- Screen render details -- Details: Screen name: tiffit.GUI.GUITemperatureControlledChamber Mouse location: Scaled: (217, 160). Absolute: (434, 159) Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2 -- Affected level -- Details: Level name: MpServer All players: 1 total; [EntityClientPlayerMP['Player940'/375, l='MpServer', x=-224.91, y=107.62, z=337.73]] Chunk stats: MultiplayerChunkCache: 600, 600 Level seed: 0 Level generator: ID 00 - default, ver 1. Features enabled: false Level generator options: Level spawn location: World: (-156,64,256), Chunk: (at 4,4,0 in -10,16; contains blocks -160,0,256 to -145,255,271), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 111531 game time, 12085 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: 121 total; [EntitySkeleton['Skeleton'/22, l='MpServer', x=-293.84, y=49.00, z=362.50], EntitySkeleton['Skeleton'/23, l='MpServer', x=-299.72, y=49.00, z=364.25], EntityCow['Cow'/24, l='MpServer', x=-295.50, y=77.00, z=362.50], EntityCow['Cow'/25, l='MpServer', x=-290.50, y=81.00, z=362.50], EntityZombie['Zombie'/26, l='MpServer', x=-294.25, y=49.00, z=370.47], EntitySpider['Spider'/36, l='MpServer', x=-275.06, y=21.00, z=317.59], EntitySkeleton['Skeleton'/37, l='MpServer', x=-272.25, y=21.00, z=315.50], EntityCow['Cow'/38, l='MpServer', x=-275.03, y=84.00, z=349.13], EntityZombie['Zombie'/39, l='MpServer', x=-278.31, y=24.00, z=360.31], EntityBat['Bat'/40, l='MpServer', x=-285.30, y=30.52, z=362.30], EntityBat['Bat'/41, l='MpServer', x=-272.26, y=25.27, z=361.45], EntitySkeleton['Skeleton'/42, l='MpServer', x=-283.94, y=49.00, z=361.44], EntityZombie['Zombie'/43, l='MpServer', x=-281.56, y=21.00, z=375.00], EntityZombie['Zombie'/44, l='MpServer', x=-281.50, y=21.00, z=379.03], EntityEnderman['Enderman'/45, l='MpServer', x=-283.59, y=21.00, z=377.94], EntityEnderman['Enderman'/46, l='MpServer', x=-285.26, y=22.00, z=383.42], EntityEnderman['Enderman'/47, l='MpServer', x=-286.91, y=23.00, z=382.31], EntityEnderman['Enderman'/48, l='MpServer', x=-282.34, y=22.00, z=386.59], EntityZombie['Zombie'/49, l='MpServer', x=-284.00, y=49.00, z=367.56], EntityZombie['Zombie'/50, l='MpServer', x=-285.44, y=49.00, z=368.50], EntityChicken['Chicken'/51, l='MpServer', x=-279.44, y=79.00, z=368.53], EntityChicken['Chicken'/52, l='MpServer', x=-276.23, y=76.00, z=371.16], EntitySkeleton['Skeleton'/53, l='MpServer', x=-286.09, y=23.95, z=382.31], EntityCreeper['Creeper'/54, l='MpServer', x=-281.59, y=23.00, z=388.09], EntityEnderman['Enderman'/55, l='MpServer', x=-288.72, y=23.00, z=386.53], EntityEnderman['Enderman'/56, l='MpServer', x=-281.47, y=23.00, z=387.22], EntityEnderman['Enderman'/57, l='MpServer', x=-284.41, y=22.00, z=384.38], EntityChicken['Chicken'/58, l='MpServer', x=-283.53, y=64.00, z=402.47], EntityChicken['Chicken'/59, l='MpServer', x=-286.53, y=62.38, z=408.47], EntityBat['Bat'/77, l='MpServer', x=-265.45, y=48.71, z=268.40], EntityBat['Bat'/78, l='MpServer', x=-260.75, y=50.10, z=269.75], EntityBat['Bat'/79, l='MpServer', x=-260.44, y=49.06, z=267.81], EntityCreeper['Creeper'/80, l='MpServer', x=-264.56, y=48.00, z=272.44], EntityCreeper['Creeper'/81, l='MpServer', x=-265.50, y=48.00, z=273.50], EntityBat['Bat'/82, l='MpServer', x=-262.25, y=49.10, z=273.63], EntityBat['Bat'/83, l='MpServer', x=-262.38, y=49.10, z=274.41], EntityBat['Bat'/84, l='MpServer', x=-255.23, y=51.78, z=276.63], EntityCreeper['Creeper'/85, l='MpServer', x=-257.38, y=43.00, z=312.91], EntitySkeleton['Skeleton'/86, l='MpServer', x=-264.91, y=72.00, z=335.50], EntityCreeper['Creeper'/87, l='MpServer', x=-265.22, y=71.00, z=333.22], EntityCreeper['Creeper'/88, l='MpServer', x=-267.69, y=71.00, z=332.69], EntitySkeleton['Skeleton'/89, l='MpServer', x=-266.16, y=71.00, z=329.31], EntitySkeleton['Skeleton'/90, l='MpServer', x=-257.10, y=73.00, z=330.50], EntityCreeper['Creeper'/91, l='MpServer', x=-263.94, y=32.00, z=338.63], EntityBat['Bat'/92, l='MpServer', x=-263.22, y=31.57, z=360.35], EntityBat['Bat'/93, l='MpServer', x=-271.84, y=30.79, z=362.80], EntityCreeper['Creeper'/94, l='MpServer', x=-261.50, y=41.00, z=359.50], EntityBat['Bat'/95, l='MpServer', x=-261.75, y=38.81, z=362.55], EntitySheep['Sheep'/96, l='MpServer', x=-261.81, y=87.00, z=346.22], EntityZombie['Zombie'/105, l='MpServer', x=-255.59, y=49.00, z=269.91], EntityBat['Bat'/106, l='MpServer', x=-258.44, y=50.00, z=271.88], EntityBat['Bat'/107, l='MpServer', x=-255.93, y=50.05, z=272.60], EntityWitch['Witch'/108, l='MpServer', x=-254.50, y=22.00, z=307.50], EntityWitch['Witch'/109, l='MpServer', x=-253.06, y=22.00, z=310.53], EntityZombie['Zombie'/110, l='MpServer', x=-243.03, y=23.00, z=308.47], EntitySpider['Spider'/111, l='MpServer', x=-250.38, y=21.00, z=319.13], EntitySheep['Sheep'/112, l='MpServer', x=-254.34, y=79.00, z=301.22], EntitySheep['Sheep'/113, l='MpServer', x=-249.84, y=85.00, z=314.28], EntityZombie['Zombie'/114, l='MpServer', x=-243.75, y=20.00, z=326.91], EntitySkeleton['Skeleton'/115, l='MpServer', x=-249.22, y=21.00, z=323.28], EntitySkeleton['Skeleton'/116, l='MpServer', x=-250.50, y=21.00, z=324.50], EntitySpider['Spider'/117, l='MpServer', x=-243.97, y=20.00, z=325.59], EntityZombie['Zombie'/118, l='MpServer', x=-246.41, y=43.00, z=318.94], EntityCreeper['Creeper'/119, l='MpServer', x=-254.41, y=74.00, z=345.00], EntityClientPlayerMP['Player940'/375, l='MpServer', x=-224.91, y=107.62, z=337.73], EntityCreeper['Creeper'/120, l='MpServer', x=-245.25, y=72.00, z=344.13], EntitySkeleton['Skeleton'/121, l='MpServer', x=-248.31, y=72.00, z=348.53], EntityCreeper['Creeper'/122, l='MpServer', x=-242.66, y=71.00, z=354.31], EntityZombie['Zombie'/123, l='MpServer', x=-240.06, y=73.00, z=359.38], EntitySkeleton['Skeleton'/124, l='MpServer', x=-244.66, y=5.00, z=376.16], EntitySheep['Sheep'/125, l='MpServer', x=-240.63, y=71.00, z=390.47], EntityCreeper['Creeper'/126, l='MpServer', x=-245.97, y=27.00, z=414.66], EntityWitch['Witch'/142, l='MpServer', x=-229.53, y=21.00, z=286.88], EntitySheep['Sheep'/143, l='MpServer', x=-224.31, y=73.00, z=283.34], EntitySheep['Sheep'/144, l='MpServer', x=-224.53, y=73.00, z=281.38], EntitySheep['Sheep'/145, l='MpServer', x=-239.50, y=76.00, z=284.66], EntitySheep['Sheep'/146, l='MpServer', x=-228.50, y=74.00, z=284.34], EntityCreeper['Creeper'/147, l='MpServer', x=-234.50, y=25.00, z=296.28], EntityCreeper['Creeper'/148, l='MpServer', x=-233.50, y=27.00, z=307.50], EntityCreeper['Creeper'/149, l='MpServer', x=-236.00, y=28.00, z=305.50], EntitySkeleton['Skeleton'/150, l='MpServer', x=-239.13, y=27.00, z=305.47], EntityCreeper['Creeper'/151, l='MpServer', x=-239.38, y=21.00, z=328.03], EntityZombie['Zombie'/152, l='MpServer', x=-233.84, y=29.00, z=330.50], EntityBat['Bat'/153, l='MpServer', x=-234.45, y=24.82, z=333.15], EntityCreeper['Creeper'/154, l='MpServer', x=-234.00, y=22.00, z=336.53], EntityCreeper['Creeper'/155, l='MpServer', x=-226.97, y=24.00, z=341.50], EntityZombie['Zombie'/156, l='MpServer', x=-235.91, y=29.00, z=336.38], EntitySkeleton['Skeleton'/157, l='MpServer', x=-232.50, y=24.00, z=339.50], EntityBat['Bat'/158, l='MpServer', x=-233.18, y=23.82, z=336.79], EntitySheep['Sheep'/159, l='MpServer', x=-226.75, y=72.00, z=382.81], EntityChicken['Chicken'/160, l='MpServer', x=-234.59, y=72.00, z=382.44], EntitySheep['Sheep'/181, l='MpServer', x=-212.78, y=72.00, z=271.38], EntityBat['Bat'/182, l='MpServer', x=-218.31, y=20.10, z=290.75], EntitySheep['Sheep'/183, l='MpServer', x=-210.44, y=74.00, z=299.34], EntityCreeper['Creeper'/184, l='MpServer', x=-212.69, y=15.00, z=333.31], EntitySkeleton['Skeleton'/185, l='MpServer', x=-208.28, y=15.00, z=334.25], EntityCreeper['Creeper'/186, l='MpServer', x=-210.63, y=16.00, z=324.91], EntitySkeleton['Skeleton'/187, l='MpServer', x=-210.16, y=16.00, z=326.31], EntityZombie['Zombie'/188, l='MpServer', x=-209.47, y=14.00, z=338.31], EntitySkeleton['Skeleton'/189, l='MpServer', x=-212.41, y=15.00, z=334.38], EntityCreeper['Creeper'/190, l='MpServer', x=-211.50, y=15.00, z=343.50], EntityCreeper['Creeper'/191, l='MpServer', x=-210.50, y=16.00, z=346.06], EntityCreeper['Creeper'/192, l='MpServer', x=-220.03, y=30.00, z=349.34], EntitySkeleton['Skeleton'/193, l='MpServer', x=-213.50, y=16.00, z=347.06], EntitySkeleton['Skeleton'/194, l='MpServer', x=-210.38, y=15.00, z=355.78], EntitySkeleton['Skeleton'/195, l='MpServer', x=-208.50, y=17.00, z=354.50], EntitySheep['Sheep'/196, l='MpServer', x=-211.22, y=73.00, z=373.69], EntitySheep['Sheep'/197, l='MpServer', x=-224.69, y=71.00, z=393.63], EntitySheep['Sheep'/209, l='MpServer', x=-196.47, y=73.00, z=265.28], EntitySheep['Sheep'/210, l='MpServer', x=-193.84, y=72.00, z=276.84], EntityZombie['Zombie'/211, l='MpServer', x=-207.63, y=15.00, z=336.97], EntitySheep['Sheep'/212, l='MpServer', x=-192.38, y=69.00, z=384.22], EntitySkeleton['Skeleton'/217, l='MpServer', x=-182.22, y=59.00, z=364.31], EntitySheep['Sheep'/218, l='MpServer', x=-191.34, y=69.00, z=375.50], EntityBat['Bat'/219, l='MpServer', x=-183.38, y=39.10, z=417.75], EntitySheep['Sheep'/223, l='MpServer', x=-165.22, y=68.00, z=278.41], EntityCreeper['Creeper'/224, l='MpServer', x=-169.00, y=18.00, z=336.56], EntitySheep['Sheep'/225, l='MpServer', x=-178.53, y=70.00, z=403.42], EntitySheep['Sheep'/226, l='MpServer', x=-166.94, y=69.00, z=410.97], EntitySheep['Sheep'/229, l='MpServer', x=-157.06, y=64.00, z=264.97], EntitySkeleton['Skeleton'/230, l='MpServer', x=-149.78, y=42.00, z=356.31]] Retry entities: 0 total; [] Server brand: fml,forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415) at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566) at net.minecraft.client.Minecraft.run(Minecraft.java:984) at net.minecraft.client.main.Main.main(Main.java:164) 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(Unknown Source) at GradleStart.main(Unknown Source) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_65, Oracle Corporation Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 654726888 bytes (624 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95 FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 12 mods loaded, 12 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) UCHIJAAAA Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) UCHIJAAAA OpenModsCore{0.8} [OpenModsCore] (minecraft.jar) UCHIJAAAA <CoFH ASM>{000} [CoFH ASM] (minecraft.jar) UCHIJAAAA CoFHCore{1.7.10R3.1.0B1} [CoFH Core] (CoFHCore-[1.7.10]3.1.0B1-321-dev.jar) UCHIJAAAA hydrotech{1.0.0} [HydroTech] (bin) UCHIJAAAA OpenMods{0.8} [OpenMods] (OpenModsLib-1.7.10-0.8-snapshot-419-deobf.jar) UCHIJAAAA OpenBlocks{1.4.4} [OpenBlocks] (OpenBlocks-1.7.10-1.4.4-snapshot-692-deobf.jar) UCHIJAAAA ThermalFoundation{1.7.10R1.2.1} [Thermal Foundation] (ThermalFoundation-[1.7.10]1.2.1-109-dev.jar) UCHIJAAAA ThermalDynamics{1.7.10R1.1.0} [Thermal Dynamics] (ThermalDynamics-[1.7.10]1.1.0-161-dev (1).jar) UCHIJAAAA ThermalExpansion{1.7.10R4.1.0B1} [Thermal Expansion] (ThermalExpansion-[1.7.10]4.1.0B1-234-dev.jar) GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 353.62' Renderer: 'GeForce GTX 960M/PCIe/SSE2' OpenModsLib class transformers: [stencil_patches:FINISHED],[movement_callback:FINISHED],[map_gen_fix:FINISHED],[gl_capabilities_hook:FINISHED],[player_render_hook:FINISHED] Class transformer null safety: all safe CoFHCore: -[1.7.10]3.1.0B1-321 ThermalFoundation: -[1.7.10]1.2.1-109 ThermalDynamics: -[1.7.10]1.1.0-161 ThermalExpansion: -[1.7.10]4.1.0B1-234 Stencil buffer state: Function set: GL30, pool: forge, bits: 8 Launched Version: 1.7.10 LWJGL: 2.9.1 OpenGL: GeForce GTX 960M/PCIe/SSE2 GL version 4.5.0 NVIDIA 353.62, NVIDIA Corporation GL Caps: Using GL 1.3 multitexturing. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Anisotropic filtering is supported and maximum anisotropy is 16. Shaders are available because OpenGL 2.1 is supported. Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Packs: [] Current Language: English (US) Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Anisotropic Filtering: Off (1) Quote
coolAlias Posted March 20, 2016 Posted March 20, 2016 It looks like somehow you have created an invalid ItemStack. Show the code that is removing the item. Also, why are you sending a packet every update tick? The Container can sync variables for you via a few methods such as #detectAndSendChanges - that's how the furnace burn time is updated in the client-side GUI, for example. It's better because it only sends packets when needed, e.g. when displaying the information in the GUI. Of course, if you need temperature for rendering the block or something, then yeah, you'll want to send that packet. Quote http://i.imgur.com/NdrFdld.png[/img]
tiffit Posted March 20, 2016 Author Posted March 20, 2016 It looks like somehow you have created an invalid ItemStack. Show the code that is removing the item. Also, why are you sending a packet every update tick? The Container can sync variables for you via a few methods such as #detectAndSendChanges - that's how the furnace burn time is updated in the client-side GUI, for example. It's better because it only sends packets when needed, e.g. when displaying the information in the GUI. Of course, if you need temperature for rendering the block or something, then yeah, you'll want to send that packet. There is a detectAndSendChanges method? I wish I knew about this sooner. About the invalid itemstack, I found out what I was doing and fixed it. Thanks for the help! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.