Jump to content

Elix_x

Members
  • Posts

    878
  • Joined

  • Last visited

Posts posted by Elix_x

  1. From looking at the error it seems as if one of the models you passed to the MultiModel is null. Use a debugger to find out why.

    Actually it is not. It crashes on invoking this method on my

    ISmartItemModel

    .

     

    EDIT: For now, i'm returning

    ItemCameraTransforms.DEFAULT

    and that fixed that crash. But.

    [14:09:51] [Client thread/FATAL]: Unreported exception thrown!
    java.lang.NullPointerException
    at net.minecraft.client.renderer.entity.RenderItem.renderQuads(RenderItem.java:213) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:128) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:112) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItem(RenderItem.java:153) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:329) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73) ~[itemRenderer.class:?]
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361) ~[itemRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1111) ~[EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
    [14:09:51] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:612]: ---- Minecraft Crash Report ----
    // Shall we play a game?
    
    Time: 05.03.16 14:09
    Description: Unexpected error
    
    java.lang.NullPointerException: Unexpected error
    at net.minecraft.client.renderer.entity.RenderItem.renderQuads(RenderItem.java:213)
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:128)
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:112)
    at net.minecraft.client.renderer.entity.RenderItem.renderItem(RenderItem.java:153)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:329)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312)
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73)
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361)
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1111)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107)
    at net.minecraft.client.Minecraft.run(Minecraft.java:380)
    at net.minecraft.client.main.Main.main(Main.java:116)
    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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:26)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    at net.minecraft.client.renderer.entity.RenderItem.renderQuads(RenderItem.java:213)
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:128)
    at net.minecraft.client.renderer.entity.RenderItem.renderModel(RenderItem.java:112)
    at net.minecraft.client.renderer.entity.RenderItem.renderItem(RenderItem.java:153)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:329)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312)
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73)
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361)
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283)
    
    -- Affected level --
    Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['Player766'/268, l='MpServer', x=-1114,34, y=67,00, z=-173,44]]
    Chunk stats: MultiplayerChunkCache: 130, 130
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: 
    Level spawn location: -1082,00,64,00,-193,00 - World: (-1082,64,-193), Chunk: (at 6,4,15 in -68,-13; contains blocks -1088,0,-208 to -1073,255,-193), Region: (-3,-1; contains chunks -96,-32 to -65,-1, blocks -1536,0,-512 to -1025,255,-1)
    Level time: 133325 game time, 3737 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: survival (ID 0). Hardcore: false. Cheats: false
    Forced entities: 110 total; [EntityPlayerSP['Player766'/268, l='MpServer', x=-1114,34, y=67,00, z=-173,44], EntitySkeleton['Skeleton'/21, l='MpServer', x=-1188,50, y=21,00, z=-195,50], EntitySkeleton['Skeleton'/33, l='MpServer', x=-1169,50, y=18,00, z=-238,91], EntityEnderman['Enderman'/34, l='MpServer', x=-1172,41, y=23,22, z=-226,25], EntitySkeleton['Skeleton'/35, l='MpServer', x=-1176,16, y=21,00, z=-227,31], EntitySquid['Squid'/36, l='MpServer', x=-1170,57, y=59,79, z=-175,05], EntitySquid['Squid'/37, l='MpServer', x=-1175,27, y=52,64, z=-153,13], EntitySquid['Squid'/39, l='MpServer', x=-1169,54, y=48,41, z=-110,69], EntityBat['Bat'/43, l='MpServer', x=-1169,31, y=24,10, z=-95,63], EntitySquid['Squid'/49, l='MpServer', x=-1161,63, y=58,41, z=-188,04], EntitySquid['Squid'/50, l='MpServer', x=-1162,64, y=56,10, z=-156,16], EntitySquid['Squid'/51, l='MpServer', x=-1167,69, y=47,84, z=-155,51], EntityZombie['Zombie'/52, l='MpServer', x=-1166,81, y=12,00, z=-136,50], EntityBat['Bat'/53, l='MpServer', x=-1149,44, y=18,06, z=-142,44], EntitySquid['Squid'/54, l='MpServer', x=-1157,81, y=60,04, z=-135,84], EntityBat['Bat'/55, l='MpServer', x=-1162,03, y=21,25, z=-101,91], EntitySkeleton['Skeleton'/56, l='MpServer', x=-1155,50, y=16,00, z=-95,50], EntityEnderman['Enderman'/57, l='MpServer', x=-1154,50, y=16,00, z=-94,50], EntitySquid['Squid'/66, l='MpServer', x=-1147,53, y=61,52, z=-236,98], EntitySquid['Squid'/67, l='MpServer', x=-1141,67, y=56,28, z=-221,56], EntitySquid['Squid'/68, l='MpServer', x=-1133,15, y=52,32, z=-219,26], EntitySquid['Squid'/69, l='MpServer', x=-1153,82, y=57,58, z=-198,94], EntitySquid['Squid'/70, l='MpServer', x=-1140,32, y=49,54, z=-188,93], EntitySquid['Squid'/71, l='MpServer', x=-1142,27, y=52,25, z=-158,81], EntitySquid['Squid'/72, l='MpServer', x=-1140,21, y=46,06, z=-133,03], EntitySquid['Squid'/73, l='MpServer', x=-1153,18, y=48,94, z=-145,78], EntityZombie['Zombie'/74, l='MpServer', x=-1140,50, y=29,00, z=-115,50], EntitySkeleton['Skeleton'/75, l='MpServer', x=-1150,72, y=25,00, z=-119,16], EntitySquid['Squid'/76, l='MpServer', x=-1148,29, y=61,45, z=-124,97], EntitySquid['Squid'/78, l='MpServer', x=-1138,30, y=48,63, z=-112,32], EntityBat['Bat'/80, l='MpServer', x=-1146,56, y=30,10, z=-95,44], EntitySquid['Squid'/88, l='MpServer', x=-1131,26, y=51,78, z=-234,00], EntitySquid['Squid'/90, l='MpServer', x=-1120,17, y=50,16, z=-233,28], EntitySquid['Squid'/91, l='MpServer', x=-1134,38, y=58,82, z=-225,09], EntitySquid['Squid'/92, l='MpServer', x=-1137,01, y=58,53, z=-209,75], EntitySquid['Squid'/93, l='MpServer', x=-1126,49, y=39,44, z=-181,13], EntitySquid['Squid'/94, l='MpServer', x=-1117,90, y=48,36, z=-141,78], EntitySquid['Squid'/95, l='MpServer', x=-1134,28, y=60,81, z=-113,82], EntitySquid['Squid'/96, l='MpServer', x=-1127,59, y=49,67, z=-110,78], EntitySquid['Squid'/98, l='MpServer', x=-1126,11, y=47,10, z=-111,89], EntitySquid['Squid'/112, l='MpServer', x=-1115,24, y=47,11, z=-230,15], EntitySquid['Squid'/113, l='MpServer', x=-1102,92, y=47,96, z=-231,72], EntitySquid['Squid'/114, l='MpServer', x=-1103,00, y=51,15, z=-224,55], EntitySquid['Squid'/115, l='MpServer', x=-1109,97, y=47,50, z=-203,26], EntityCreeper['Creeper'/116, l='MpServer', x=-1104,50, y=31,00, z=-181,50], EntityItem['item.item.Ring.0'/117, l='MpServer', x=-1108,13, y=52,00, z=-170,19], EntityItem['item.item.Ring.0'/118, l='MpServer', x=-1108,13, y=51,00, z=-169,75], EntitySquid['Squid'/119, l='MpServer', x=-1108,50, y=52,56, z=-168,79], EntitySkeleton['Skeleton'/120, l='MpServer', x=-1112,50, y=16,00, z=-137,50], EntitySquid['Squid'/121, l='MpServer', x=-1104,54, y=52,30, z=-129,91], EntitySquid['Squid'/122, l='MpServer', x=-1105,44, y=52,75, z=-136,91], EntitySquid['Squid'/123, l='MpServer', x=-1108,44, y=56,27, z=-117,62], EntitySquid['Squid'/124, l='MpServer', x=-1112,85, y=51,30, z=-121,24], EntitySquid['Squid'/125, l='MpServer', x=-1111,18, y=54,47, z=-128,91], EntitySkeleton['Skeleton'/138, l='MpServer', x=-1096,50, y=23,00, z=-241,50], EntitySkeleton['Skeleton'/139, l='MpServer', x=-1088,78, y=22,00, z=-229,06], EntityCreeper['Creeper'/140, l='MpServer', x=-1096,50, y=22,00, z=-225,50], EntityCreeper['Creeper'/141, l='MpServer', x=-1092,50, y=22,00, z=-226,50], EntitySquid['Squid'/142, l='MpServer', x=-1099,15, y=49,71, z=-233,66], EntitySquid['Squid'/143, l='MpServer', x=-1089,01, y=54,28, z=-212,78], EntitySquid['Squid'/144, l='MpServer', x=-1102,44, y=48,23, z=-207,96], EntitySkeleton['Skeleton'/145, l='MpServer', x=-1089,53, y=27,00, z=-177,91], EntityBat['Bat'/146, l='MpServer', x=-1101,66, y=32,38, z=-183,22], EntityBat['Bat'/147, l='MpServer', x=-1091,78, y=31,72, z=-166,97], EntityBat['Bat'/148, l='MpServer', x=-1093,44, y=31,06, z=-166,13], EntityBat['Bat'/149, l='MpServer', x=-1087,31, y=32,47, z=-156,25], EntitySquid['Squid'/150, l='MpServer', x=-1091,91, y=42,00, z=-146,53], EntitySquid['Squid'/151, l='MpServer', x=-1102,95, y=45,93, z=-145,81], EntitySquid['Squid'/152, l='MpServer', x=-1093,41, y=62,37, z=-145,25], EntitySquid['Squid'/153, l='MpServer', x=-1085,75, y=56,84, z=-142,99], EntitySquid['Squid'/154, l='MpServer', x=-1098,26, y=43,57, z=-143,67], EntitySquid['Squid'/155, l='MpServer', x=-1097,82, y=45,88, z=-145,16], EntitySquid['Squid'/156, l='MpServer', x=-1100,00, y=42,06, z=-144,85], EntitySquid['Squid'/157, l='MpServer', x=-1097,44, y=51,95, z=-137,82], EntitySquid['Squid'/158, l='MpServer', x=-1092,02, y=54,02, z=-132,21], EntitySkeleton['Skeleton'/159, l='MpServer', x=-1101,50, y=16,00, z=-122,50], EntityEnderman['Enderman'/160, l='MpServer', x=-1102,50, y=16,00, z=-122,50], EntityZombie['Zombie'/161, l='MpServer', x=-1094,50, y=17,00, z=-103,50], EntityZombie['Zombie'/162, l='MpServer', x=-1093,50, y=17,00, z=-103,50], EntitySkeleton['Skeleton'/169, l='MpServer', x=-1084,50, y=18,00, z=-209,50], EntitySquid['Squid'/170, l='MpServer', x=-1073,42, y=56,92, z=-211,22], EntitySquid['Squid'/171, l='MpServer', x=-1086,99, y=51,80, z=-210,72], EntitySquid['Squid'/172, l='MpServer', x=-1084,13, y=56,39, z=-215,99], EntityCreeper['Creeper'/173, l='MpServer', x=-1082,34, y=26,00, z=-145,97], EntityBat['Bat'/174, l='MpServer', x=-1078,50, y=28,10, z=-156,25], EntitySkeleton['Skeleton'/175, l='MpServer', x=-1087,09, y=25,00, z=-147,56], EntityZombie['Zombie'/176, l='MpServer', x=-1085,50, y=25,00, z=-149,50], EntityZombie['Zombie'/177, l='MpServer', x=-1080,50, y=28,00, z=-156,50], EntitySpider['Spider'/178, l='MpServer', x=-1082,50, y=28,00, z=-157,50], EntityBat['Bat'/179, l='MpServer', x=-1073,25, y=31,03, z=-153,72], EntityZombie['Zombie'/180, l='MpServer', x=-1080,50, y=27,00, z=-157,50], EntitySquid['Squid'/181, l='MpServer', x=-1077,60, y=59,84, z=-147,37], EntitySquid['Squid'/182, l='MpServer', x=-1075,16, y=61,91, z=-142,01], EntitySquid['Squid'/183, l='MpServer', x=-1070,75, y=59,21, z=-156,96], EntityZombie['Zombie'/184, l='MpServer', x=-1081,94, y=24,00, z=-129,34], EntitySkeleton['Skeleton'/185, l='MpServer', x=-1086,50, y=27,00, z=-140,50], EntitySquid['Squid'/186, l='MpServer', x=-1076,90, y=59,73, z=-134,22], EntitySkeleton['Skeleton'/187, l='MpServer', x=-1083,50, y=22,00, z=-125,50], EntitySkeleton['Skeleton'/188, l='MpServer', x=-1084,50, y=22,00, z=-125,50], EntityWitch['Witch'/193, l='MpServer', x=-1068,50, y=40,00, z=-204,50], EntityWitch['Witch'/194, l='MpServer', x=-1070,50, y=40,00, z=-202,50], EntitySkeleton['Skeleton'/195, l='MpServer', x=-1064,44, y=24,00, z=-148,09], EntityBat['Bat'/196, l='MpServer', x=-1068,00, y=26,10, z=-155,69], EntitySquid['Squid'/197, l='MpServer', x=-1056,75, y=46,74, z=-151,57], EntityZombie['Zombie'/198, l='MpServer', x=-1070,50, y=32,00, z=-156,50], EntityZombie['Zombie'/199, l='MpServer', x=-1071,50, y=32,00, z=-152,50], EntitySquid['Squid'/206, l='MpServer', x=-1051,33, y=46,56, z=-232,55], EntitySquid['Squid'/207, l='MpServer', x=-1054,04, y=56,48, z=-117,43], EntityZombie['Zombie'/208, l='MpServer', x=-1056,88, y=12,00, z=-105,06], EntityCreeper['Creeper'/223, l='MpServer', x=-1037,50, y=15,00, z=-161,50]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
    Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:383)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2645)
    at net.minecraft.client.Minecraft.run(Minecraft.java:409)
    at net.minecraft.client.main.Main.main(Main.java:116)
    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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:26)
    
    -- System Details --
    Details:
    Minecraft Version: 1.8.9
    Operating System: Windows 7 (amd64) version 6.1
    Java Version: 1.8.0_73, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 418828088 bytes (399 MB) / 898629632 bytes (857 MB) up to 1717043200 bytes (1637 MB)
    JVM Flags: 0 total; 
    IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
    FML: MCP 9.19 Powered by Forge 11.15.1.1744 6 mods loaded, 6 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.19} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAAAA	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8.9-11.15.1.1744.jar) 
    UCHIJAAAA	Forge{11.15.1.1744} [Minecraft Forge] (forgeSrc-1.8.9-11.15.1.1744.jar) 
    UCHIJAAAA	Baubles{1.1.3.0} [baubles] (Baubles-1.8.9-1.1.3.0-deobf.jar) 
    UCHIJAAAA	excore{1.3.9} [EXCore] (bin) 
    UCHIJAAAA	armorsets{2.0} [Armor Sets] (bin) 
    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.4.13084 Compatibility Profile Context 14.301.1001.0' Renderer: 'AMD Radeon HD 8570D'
    Launched Version: 1.8.9
    LWJGL: 2.9.4
    OpenGL: AMD Radeon HD 8570D GL version 4.4.13084 Compatibility Profile Context 14.301.1001.0, 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,forge'
    Type: Client (map_client.txt)
    Resource Packs: 
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 4x AMD A8-6600K APU with Radeon(tm) HD Graphics 
    [14:09:51] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:612]: #@!@# Game crashed! Crash report saved to: #@!@# C:\my\mcmodding\mods\Armor-Sets\1.8.9\run\.\crash-reports\crash-2016-03-05_14.09.51-client.txt
    AL lib: (EE) alc_cleanup: 1 device not closed

     

    EDIT 2: After removing this from item class:

    @Override
    @SideOnly(Side.CLIENT)
    public ModelResourceLocation getModel(ItemStack itemstack, EntityPlayer player, int useRemaining){
    	return ClientProxy.MODELLOCATION;
    }
    

    It does not crash any more, but item is rendered as untextured cube (missing texture).

     

    And this is my current

    ClientProxy

    :

    public class ClientProxy implements IProxy {
    
    public static final ModelResourceLocation MODELLOCATION = new ModelResourceLocation("ItemsSet", "ItemsSet");
    
    public static KeyBinding armorSetKeyBinding = new KeyBinding("key.armorsets.armor", Keyboard.KEY_F, "category.armorsets");
    public static KeyBinding baublesSetKeyBinding = new KeyBinding("key.armorsets.baubles", Keyboard.KEY_G, "category.armorsets");
    public static KeyBinding armorBaublesSetKeyBinding = new KeyBinding("key.armorsets.armorbaubles", Keyboard.KEY_V, "category.armorsets");
    
    @Override
    public void preInit(FMLPreInitializationEvent event){
    
    }
    
    @Override
    public void init(FMLInitializationEvent event){
    	ModelLoader.setCustomModelResourceLocation(ArmorSetsBase.itemArmorSet, 0, MODELLOCATION);
    
    	ClientRegistry.registerKeyBinding(armorSetKeyBinding);
    	ClientRegistry.registerKeyBinding(baublesSetKeyBinding);
    	ClientRegistry.registerKeyBinding(armorBaublesSetKeyBinding);
    
    	FMLCommonHandler.instance().bus().register(new KeyBindingsCheckEvent());
    	MinecraftForge.EVENT_BUS.register(new BakeModelEvent());
    }
    
    @Override
    public void postInit(FMLPostInitializationEvent event){
    
    }
    
    }
    

  2. Unfortunately, the only way you'll be able to utilize direct calls is through means of overriding the default rendering system, which can mean conflicts.

     

    So if it really is necessary to tweak the base classes to do so, then go for it. But it's heavily discouraged by the Forge team, simply on the fact that it has a high chance of breaking when used with other mods.

     

    And actually, I've heard of people utilizing the getModel method in the item class to do direct GL calls. That's also discouraged do to the possibility to break, and may get patched. But that may be your easiest entry point for now. Good luck, and have fun.

    I'm trying to not modifiy base classes in this case, but i've heard of that too. I think coolAlias is using it.

     

    Still, thanks for help!

  3. You won't be using manual rendering for items, from 1.8 on-wards. Item models are the future!

    I know, the new item rendering cuts out a ton of flexibility and cool effects that you can use through the GL pipeline. However, it can break when several mods are trying to do all these effects at once. So to keep things simple, the items use baked models, which also speed up rendering a bit. It also means that resource pack authors can change some things in the model to suit the style of their textures.

     

    It will take some getting used to for the migration. However, it is definitely worth while. Lots of headache is saved in the long run. Plus, even with the cuts to flexibility, the Forge team has worked really hard to give us as much opportunity with this new system, to side step some of the restrictions, and implement some of the flexibility we had before.

    I know about 1.8 rendering system and models. It's very flexible and usefull.

    However, the coolest effects you can do with Open GL aren't possible. Luckily, it's not the case for most mods.

     

    Tile entity still having TESR really helps.

    But with items...

     

    Actually, here's my mod's repository that i'm talking about, that uses stencils and other effects, as depths for rendering: https://github.com/elix-x/Teleplates.

  4. Good day.

    I don't want to create 4 specific topics for each question, so i will ask them all here.

     

    1) 1.9 just came out, forge is probably waiting for mcp, but what changes to code and especially rendering should we expect?

     

    2) My mod is using some rendering abilities of another mod. So this other mod is not required on server, but is on client. Is there simple way of telling this to forge?

     

    3) By default in minecraft and forge, stencils are disabled (GL stencils). Why?

     

    4) I'm currently in progress of moving my mod to 1.8.9 from 1.7.10. In 1.7.10 i "enabled"stencils with CoFHCore, because my items (with IItemRenderer) and tile entities were using them. Even if i will "enable" stencils in a different way/mod, how can i render my items, if there's no IItemRenderer?

     

    Thanks for help!

    If you have any questions - just ask!

  5. 1) Yes. But not necesserily. It will be synced from server to client anyway.

    2) Do NOT cast player to client/server/singleplayer specific unless you really have to. If you can perform operations on player, without casting to specific type, do not cast it.

     

    Sode note: why are you doing

    (false)

    ? Just wondering. First time seeing this style.

     

    Hi elix, thanks for your reply. :)

     

    I will modify my code, considering what you said above.

     

    About return (false), I like to get a clear view of what I am returning inside my code. It's an habit I got since college. ;D

     

    What about the player experience management I did ? Is it ok ? I took a look earlier on the EntityPlayer class and it seems that these variables are initialized with negative values, so I don't really know if it's ok to do the way I did.

    I'm not able to tell you anything about this part, as i've never worked with experience (:D).

    You'll have to try or to ask/wait someone else to answer.

  6. I could do that in a future release, but what would you recommend for scripting events via resource pack that forge already has? or are my only options invent something, use a lua module that is in an external jar, or another language jar?

     

     

    Also the word is dynamically and I intend to do more than one mod in a jar. I will do the same with materials and Block.SoundTypes next, then items, then biomes, then entities(yes I mean mobs), then dimensions. The jar won't be called Customcraft for nothing.  Besides, the end user will be able to add new blocks, items, etc, from console commands.  If you read the dated code above, you would have figured that one out. The creative tab that the end user gets to use will have for an icon, an untextured version of what is stored in it, i.e. custom blocks will use an untextured block for the tab's icon. I am doing that on purpose, the untextured block represents something brand new.

    Using standart config files will be a pain to do all this.

    Seriously, go learn json and GSON, and trust me, your life will be over 9000 times easier.

  7. I know that one of the parameters for WorldRenderer is the GL draw type.  GL11.GL_QUADS, etc.

     

    So where can I read about those types? I am GL noob in terms of conventions. Everything I know i learned from scratch (a lot actually).

     

    Look for some GL tutorials.  If you hover over

    GL11.GL_QUADS

    you can do a jump-to-definition which will take you to the GL11 class and you can look at the other modes there (I can't find a list online).  QUADS is more or less deprecated because it's inefficient, but no one in Minecraft modding cares (it's faster to draw two triangles than making the CPU calculate said triangles).  The other options I can remember are... LINES (may not work, use instead...), LINE_STRIP, and TRIANGLE_STRIP.

    There's also

    GL_POLYGON

    and i think

    GL_POINTS

    .

  8. Thanks for answer.

     

    Question 3 is very important, so i will try to explain it to you:

    When you explore a world, new chunks are generated. When you exit the world, they are stored. When you load world back up, it loads chunks from drive, but it does not generate them.

    So, question 3 is asking: if one day you change your database, and add coordinates that for "the given player" are in already generated chunk (chunk stored on drive), do you want to place (from code) blocks you just added in this chunk?

     

    I want the blocks to be spawned in the world no matter what. I am using world.setBlock() to spawn the blocks and I got no problem with blocks spawning or dissapearing after a player exits the world. The only problem I got was how I could sync the new coordinates added to my table with the world since I cant know where the last block was builded. I searched over the internet and saw that I can save custom data with the WorldSavedData but I cant impement it.

     

    Thanks for taking the time to try helping me :)

    Ok. That clarifies a lot of things.

     

    I suppose that you already have a class that connects to your database and reads blocks.

     

    Now, you have 3 things to do:

    1) Considering you are in 1.7.10, create BlockPos (holding x, y, z), read and write to nbt methods and with your IDE generate

    hashCode

    and

    equals

    methods.

    2) Create your WorldSavedData class, following tutorial, including

    get(World)

    method to get data instance. You can use

    perMapStorage

    , I suppose you already have one. In there, add

    Set<BlockPos>

    field. This set will hold all blocks that were already generated. To save and load

    Set

    to/from nbt, use NBTTagList.

    3) Use world generator and chunk load events to generate blocks.

     

    Do first 2 steps, and try to do 3rd yourself. If you have any problems, ask them here, we will help.

     

    EDIT: Official

    WorldSavedData

    tutorial: https://mcforge.readthedocs.org/en/latest/datastorage/worldsaveddata/.

  9. I will repeate questions that have already been asked. Please answer all of them precisely and we will be able to help you:

    -You want to generate blocks in worlds from remote database, right?

    -Database can be changed by you at any time?

    -Blocks, should they be generated in already generated chunks?

    -How many dimensions do you want to affect (only overworld, all vanilla or you can configure for any dimension from database)?

     

    If you do not understand a question please ask us to say it in different way.

     

    Hello,

    I will happily answer all the questions the best I can.

     

    -You want to generate blocks in worlds from remote database, right?

      Yes, I got a remote MySQL database that holds coordinates of Blocks. This is the structure of my table:

     

      ID  |  posX  |  posY  |  posX

     

      posX, posY and posZ is the block should be in the world.

     

    -Database can be changed by you at any time?

      Yes. I got a script running that affects the table I mention above. It is not changing the table, it is just adds more and more coordinates to the database.

     

    -Blocks, should they be generated in already generated chunks?

      Well, I am not sure I understand this question.

     

    -How many dimensions do you want to affect (only overworld, all vanilla or you can configure for any dimension from database)?

      The only dimension I want to affect is the overworld.

    Thanks for answer.

     

    Question 3 is very important, so i will try to explain it to you:

    When you explore a world, new chunks are generated. When you exit the world, they are stored. When you load world back up, it loads chunks from drive, but it does not generate them.

    So, question 3 is asking: if one day you change your database, and add coordinates that for "the given player" are in already generated chunk (chunk stored on drive), do you want to place (from code) blocks you just added in this chunk?

  10. Is this correct way to do it?

    Yes, although I don't know what you mean by "return in my item". You set the model for an Item using ModelLoader.setCustomModelResourceLocation.

    Ok. Thank you.

     

    And i meant this:

    
    @Override
    @SideOnly(Side.CLIENT)
    public ModelResourceLocation getModel(ItemStack itemstack, EntityPlayer player, int useRemaining){
    	return new ModelResourceLocation(ClientProxy.MODELLOCATIONKEY, ClientProxy.MODELLOCATIONKEY);
    }
    
    }
    

    (But i will remove it).

  11. I will repeate questions that have already been asked. Please answer all of them precisely and we will be able to help you:

    -You want to generate blocks in worlds from remote database, right?

    -Database can be changed by you at any time?

    -Blocks, should they be generated in already generated chunks?

    -How many dimensions do you want to affect (only overworld, all vanilla or you can configure for any dimension from database)?

     

    If you do not understand a question please ask us to say it in different way.

  12. From looking at the error it seems as if one of the models you passed to the MultiModel is null. Use a debugger to find out why.

    I'll look into it with debug then.

     

    Also,

    How exactly do i register my

    ISmartItemModel

    in

    ModelBakeEvent

    ?

    Right now, i'm calling

    event.registry.putObject

    , and using resource location that i return in my item.

    Is this correct way to do it?

  13. 2 things:

    How exactly do i register my

    ISmartItemModel

    in

    ModelBakeEvent

    ?

    Right now, i'm calling

    event.registry.putObject

    , and using resource loaction that i return in my item.

     

    Something went wrong, i don't quite know what exactly:

    [10:39:06] [Client thread/FATAL]: Unreported exception thrown!
    java.lang.NullPointerException
    at net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ForgeHooksClient.java:387) ~[ForgeHooksClient.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:327) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73) ~[itemRenderer.class:?]
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361) ~[itemRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283) ~[EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1111) ~[EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
    [10:39:06] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:612]: ---- Minecraft Crash Report ----
    // Sorry 
    
    Time: 24.02.16 10:39
    Description: Unexpected error
    
    java.lang.NullPointerException: Unexpected error
    at net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ForgeHooksClient.java:387)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:327)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312)
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73)
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361)
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1111)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107)
    at net.minecraft.client.Minecraft.run(Minecraft.java:380)
    at net.minecraft.client.main.Main.main(Main.java:116)
    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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:26)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    at net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ForgeHooksClient.java:387)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelTransform(RenderItem.java:327)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemModelForEntity(RenderItem.java:312)
    at net.minecraft.client.renderer.ItemRenderer.renderItem(ItemRenderer.java:73)
    at net.minecraft.client.renderer.ItemRenderer.renderItemInFirstPerson(ItemRenderer.java:361)
    at net.minecraft.client.renderer.EntityRenderer.renderHand(EntityRenderer.java:832)
    at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1468)
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1283)
    
    -- Affected level --
    Details:
    Level name: MpServer
    All players: 1 total; [EntityPlayerSP['Player953'/645, l='MpServer', x=-1114,34, y=67,00, z=-173,44]]
    Chunk stats: MultiplayerChunkCache: 603, 603
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: 
    Level spawn location: -1082,00,64,00,-193,00 - World: (-1082,64,-193), Chunk: (at 6,4,15 in -68,-13; contains blocks -1088,0,-208 to -1073,255,-193), Region: (-3,-1; contains chunks -96,-32 to -65,-1, blocks -1536,0,-512 to -1025,255,-1)
    Level time: 131653 game time, 2065 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: survival (ID 0). Hardcore: false. Cheats: false
    Forced entities: 231 total; [EntitySquid['Squid'/512, l='MpServer', x=-1053,72, y=47,69, z=-184,88], EntitySquid['Squid'/516, l='MpServer', x=-1057,34, y=46,94, z=-175,81], EntitySquid['Squid'/517, l='MpServer', x=-1056,78, y=49,72, z=-163,38], EntityCreeper['Creeper'/519, l='MpServer', x=-1051,50, y=12,00, z=-117,50], EntityCreeper['Creeper'/552, l='MpServer', x=-1037,50, y=15,00, z=-161,50], EntityBat['Bat'/41, l='MpServer', x=-1182,89, y=20,00, z=-193,32], EntitySkeleton['Skeleton'/44, l='MpServer', x=-1192,59, y=23,00, z=-184,09], EntityZombie['Zombie'/46, l='MpServer', x=-1192,50, y=23,00, z=-169,50], EntitySkeleton['Skeleton'/87, l='MpServer', x=-1169,50, y=18,00, z=-238,91], EntitySquid['Squid'/88, l='MpServer', x=-1173,19, y=61,00, z=-192,13], EntitySkeleton['Skeleton'/89, l='MpServer', x=-1181,84, y=20,00, z=-191,56], EntitySquid['Squid'/90, l='MpServer', x=-1171,81, y=62,13, z=-193,53], EntitySquid['Squid'/91, l='MpServer', x=-1171,41, y=62,22, z=-187,50], EntitySquid['Squid'/92, l='MpServer', x=-1175,63, y=56,06, z=-193,50], EntitySquid['Squid'/93, l='MpServer', x=-1166,09, y=58,31, z=-182,78], EntitySquid['Squid'/95, l='MpServer', x=-1175,59, y=57,53, z=-142,16], EntityZombie['Zombie'/96, l='MpServer', x=-1162,53, y=15,00, z=-136,00], EntitySquid['Squid'/97, l='MpServer', x=-1172,78, y=46,47, z=-137,19], EntitySquid['Squid'/98, l='MpServer', x=-1171,63, y=59,19, z=-145,47], EntitySquid['Squid'/99, l='MpServer', x=-1168,56, y=56,78, z=-146,19], EntitySquid['Squid'/100, l='MpServer', x=-1165,13, y=60,31, z=-139,13], EntityCreeper['Creeper'/101, l='MpServer', x=-1177,19, y=18,00, z=-97,84], EntitySquid['Squid'/127, l='MpServer', x=-1162,31, y=58,41, z=-200,34], EntitySquid['Squid'/128, l='MpServer', x=-1156,75, y=59,44, z=-194,69], EntitySquid['Squid'/129, l='MpServer', x=-1163,66, y=62,19, z=-184,50], EntitySquid['Squid'/130, l='MpServer', x=-1164,78, y=62,09, z=-179,19], EntitySquid['Squid'/131, l='MpServer', x=-1171,47, y=62,19, z=-179,13], EntitySquid['Squid'/132, l='MpServer', x=-1165,25, y=58,63, z=-187,16], EntitySquid['Squid'/133, l='MpServer', x=-1160,88, y=50,97, z=-152,94], EntityPlayerSP['Player953'/645, l='MpServer', x=-1114,34, y=67,00, z=-173,44], EntitySquid['Squid'/134, l='MpServer', x=-1165,28, y=47,66, z=-149,53], EntitySquid['Squid'/135, l='MpServer', x=-1165,63, y=60,53, z=-153,16], EntitySquid['Squid'/136, l='MpServer', x=-1161,41, y=58,69, z=-146,41], EntitySquid['Squid'/137, l='MpServer', x=-1160,66, y=56,75, z=-153,59], EntitySquid['Squid'/138, l='MpServer', x=-1170,28, y=54,94, z=-149,34], EntityBat['Bat'/139, l='MpServer', x=-1149,36, y=19,16, z=-141,75], EntitySquid['Squid'/140, l='MpServer', x=-1158,75, y=46,19, z=-143,13], EntitySquid['Squid'/141, l='MpServer', x=-1160,63, y=58,00, z=-141,59], EntitySquid['Squid'/142, l='MpServer', x=-1163,50, y=62,41, z=-137,53], EntitySquid['Squid'/143, l='MpServer', x=-1155,13, y=49,81, z=-136,63], EntitySquid['Squid'/144, l='MpServer', x=-1158,09, y=59,56, z=-142,78], EntitySquid['Squid'/145, l='MpServer', x=-1166,00, y=58,09, z=-139,16], EntitySquid['Squid'/170, l='MpServer', x=-1139,47, y=52,56, z=-235,06], EntitySquid['Squid'/172, l='MpServer', x=-1136,09, y=48,13, z=-233,75], EntitySquid['Squid'/173, l='MpServer', x=-1142,25, y=50,19, z=-227,75], EntitySquid['Squid'/174, l='MpServer', x=-1138,84, y=59,09, z=-230,47], EntitySquid['Squid'/175, l='MpServer', x=-1140,13, y=57,56, z=-224,41], EntitySquid['Squid'/176, l='MpServer', x=-1140,44, y=51,50, z=-233,84], EntitySquid['Squid'/177, l='MpServer', x=-1146,94, y=56,72, z=-220,78], EntitySquid['Squid'/178, l='MpServer', x=-1142,59, y=55,28, z=-208,09], EntitySquid['Squid'/179, l='MpServer', x=-1140,91, y=55,34, z=-212,25], EntitySquid['Squid'/180, l='MpServer', x=-1145,50, y=53,41, z=-220,72], EntitySquid['Squid'/181, l='MpServer', x=-1132,50, y=57,25, z=-217,47], EntitySquid['Squid'/182, l='MpServer', x=-1142,03, y=55,09, z=-215,53], EntitySquid['Squid'/183, l='MpServer', x=-1136,00, y=56,22, z=-211,56], EntitySquid['Squid'/184, l='MpServer', x=-1142,88, y=49,72, z=-147,44], EntitySquid['Squid'/185, l='MpServer', x=-1149,44, y=51,44, z=-151,41], EntitySquid['Squid'/186, l='MpServer', x=-1154,94, y=52,66, z=-149,00], EntitySquid['Squid'/187, l='MpServer', x=-1152,56, y=47,97, z=-139,91], EntitySquid['Squid'/188, l='MpServer', x=-1149,69, y=47,88, z=-135,22], EntitySquid['Squid'/189, l='MpServer', x=-1141,72, y=49,88, z=-145,16], EntitySquid['Squid'/190, l='MpServer', x=-1151,22, y=45,97, z=-148,34], EntityZombie['Zombie'/191, l='MpServer', x=-1140,50, y=29,00, z=-115,50], EntitySquid['Squid'/192, l='MpServer', x=-1135,47, y=60,94, z=-116,25], EntitySkeleton['Skeleton'/193, l='MpServer', x=-1145,19, y=28,00, z=-117,44], EntitySquid['Squid'/196, l='MpServer', x=-1145,59, y=61,34, z=-117,09], EntitySquid['Squid'/224, l='MpServer', x=-1136,19, y=49,94, z=-230,19], EntitySquid['Squid'/225, l='MpServer', x=-1133,94, y=46,97, z=-227,28], EntitySquid['Squid'/226, l='MpServer', x=-1131,44, y=48,59, z=-223,03], EntitySquid['Squid'/227, l='MpServer', x=-1127,03, y=49,66, z=-227,16], EntitySquid['Squid'/228, l='MpServer', x=-1133,50, y=48,25, z=-236,13], EntitySquid['Squid'/229, l='MpServer', x=-1129,19, y=49,66, z=-230,50], EntitySquid['Squid'/231, l='MpServer', x=-1131,00, y=47,09, z=-221,91], EntitySquid['Squid'/232, l='MpServer', x=-1137,81, y=51,78, z=-222,34], EntitySquid['Squid'/233, l='MpServer', x=-1132,72, y=58,16, z=-224,66], EntitySquid['Squid'/234, l='MpServer', x=-1136,13, y=58,09, z=-222,31], EntitySquid['Squid'/235, l='MpServer', x=-1131,63, y=49,10, z=-193,95], EntitySquid['Squid'/236, l='MpServer', x=-1133,75, y=50,56, z=-188,91], EntitySquid['Squid'/237, l='MpServer', x=-1131,67, y=43,77, z=-186,74], EntitySquid['Squid'/238, l='MpServer', x=-1124,65, y=43,19, z=-184,82], EntitySquid['Squid'/239, l='MpServer', x=-1128,74, y=49,09, z=-179,42], EntitySquid['Squid'/240, l='MpServer', x=-1128,91, y=57,03, z=-113,84], EntitySquid['Squid'/241, l='MpServer', x=-1135,25, y=56,50, z=-121,25], EntitySquid['Squid'/242, l='MpServer', x=-1137,63, y=57,47, z=-113,19], EntitySquid['Squid'/243, l='MpServer', x=-1137,81, y=58,66, z=-113,88], EntitySquid['Squid'/286, l='MpServer', x=-1119,81, y=48,31, z=-224,00], EntitySquid['Squid'/287, l='MpServer', x=-1105,38, y=50,31, z=-236,97], EntitySquid['Squid'/288, l='MpServer', x=-1106,69, y=51,28, z=-224,00], EntitySquid['Squid'/289, l='MpServer', x=-1118,81, y=52,16, z=-228,03], EntitySquid['Squid'/290, l='MpServer', x=-1115,09, y=49,59, z=-227,84], EntitySquid['Squid'/291, l='MpServer', x=-1113,09, y=47,22, z=-227,50], EntitySquid['Squid'/292, l='MpServer', x=-1108,06, y=48,97, z=-224,38], EntitySquid['Squid'/293, l='MpServer', x=-1107,63, y=48,53, z=-231,28], EntitySquid['Squid'/294, l='MpServer', x=-1114,34, y=47,47, z=-223,53], EntitySquid['Squid'/295, l='MpServer', x=-1114,38, y=51,19, z=-222,59], EntityBat['Bat'/296, l='MpServer', x=-1110,31, y=19,19, z=-205,69], EntitySquid['Squid'/297, l='MpServer', x=-1111,12, y=47,06, z=-197,72], EntitySquid['Squid'/298, l='MpServer', x=-1115,55, y=50,60, z=-197,25], EntitySquid['Squid'/299, l='MpServer', x=-1117,31, y=42,06, z=-188,47], EntitySquid['Squid'/300, l='MpServer', x=-1114,13, y=49,97, z=-185,12], EntityItem['item.item.Ring.0'/301, l='MpServer', x=-1108,13, y=52,00, z=-170,19], EntityItem['item.item.Ring.0'/302, l='MpServer', x=-1108,13, y=51,00, z=-169,75], EntitySkeleton['Skeleton'/303, l='MpServer', x=-1112,50, y=16,00, z=-137,50], EntitySkeleton['Skeleton'/304, l='MpServer', x=-1115,95, y=16,32, z=-138,72], EntityCreeper['Creeper'/305, l='MpServer', x=-1109,50, y=17,00, z=-135,50], EntityBat['Bat'/306, l='MpServer', x=-1112,48, y=17,06, z=-133,10], EntitySquid['Squid'/307, l='MpServer', x=-1118,16, y=49,06, z=-137,28], EntitySkeleton['Skeleton'/3379, l='MpServer', x=-1177,50, y=22,00, z=-226,50], EntitySquid['Squid'/308, l='MpServer', x=-1116,19, y=54,13, z=-129,00], EntityCreeper['Creeper'/3380, l='MpServer', x=-1175,59, y=22,00, z=-225,89], EntitySquid['Squid'/309, l='MpServer', x=-1118,22, y=57,09, z=-130,38], EntitySquid['Squid'/310, l='MpServer', x=-1109,31, y=56,50, z=-134,38], EntitySquid['Squid'/311, l='MpServer', x=-1103,84, y=54,59, z=-133,28], EntitySquid['Squid'/312, l='MpServer', x=-1116,97, y=54,03, z=-126,13], EntitySquid['Squid'/313, l='MpServer', x=-1105,66, y=52,50, z=-123,94], EntitySquid['Squid'/314, l='MpServer', x=-1108,47, y=53,81, z=-133,44], EntitySquid['Squid'/315, l='MpServer', x=-1112,59, y=56,00, z=-127,28], EntitySquid['Squid'/316, l='MpServer', x=-1103,88, y=49,03, z=-139,41], EntitySquid['Squid'/317, l='MpServer', x=-1111,06, y=49,34, z=-112,09], EntitySquid['Squid'/318, l='MpServer', x=-1110,63, y=51,75, z=-109,41], EntitySquid['Squid'/319, l='MpServer', x=-1110,03, y=50,84, z=-130,38], EntitySquid['Squid'/320, l='MpServer', x=-1112,16, y=54,81, z=-128,88], EntitySquid['Squid'/321, l='MpServer', x=-1114,75, y=56,31, z=-107,41], EntitySquid['Squid'/322, l='MpServer', x=-1121,47, y=52,97, z=-117,22], EntitySquid['Squid'/323, l='MpServer', x=-1104,00, y=51,63, z=-113,22], EntitySquid['Squid'/324, l='MpServer', x=-1109,03, y=50,00, z=-110,63], EntitySquid['Squid'/327, l='MpServer', x=-1120,75, y=46,34, z=-110,34], EntitySquid['Squid'/334, l='MpServer', x=-1120,59, y=53,31, z=-108,25], EntitySquid['Squid'/335, l='MpServer', x=-1105,31, y=52,53, z=-113,88], EntitySkeleton['Skeleton'/355, l='MpServer', x=-1088,50, y=25,00, z=-249,13], EntitySkeleton['Skeleton'/356, l='MpServer', x=-1095,50, y=23,00, z=-242,50], EntitySkeleton['Skeleton'/357, l='MpServer', x=-1096,50, y=23,00, z=-241,50], EntityZombie['Zombie'/359, l='MpServer', x=-1093,19, y=22,00, z=-246,31], EntitySkeleton['Skeleton'/361, l='MpServer', x=-1092,53, y=22,00, z=-225,50], EntitySquid['Squid'/362, l='MpServer', x=-1101,44, y=47,88, z=-230,63], EntitySquid['Squid'/363, l='MpServer', x=-1100,38, y=48,09, z=-229,22], EntityZombie['Zombie'/364, l='MpServer', x=-1097,50, y=22,00, z=-223,13], EntitySquid['Squid'/365, l='MpServer', x=-1106,00, y=51,06, z=-216,75], EntitySquid['Squid'/366, l='MpServer', x=-1093,72, y=54,91, z=-213,50], EntitySquid['Squid'/367, l='MpServer', x=-1099,53, y=50,72, z=-215,13], EntitySquid['Squid'/368, l='MpServer', x=-1093,41, y=54,88, z=-205,13], EntitySquid['Squid'/369, l='MpServer', x=-1094,25, y=52,19, z=-216,34], EntitySquid['Squid'/370, l='MpServer', x=-1094,97, y=56,69, z=-218,41], EntitySquid['Squid'/371, l='MpServer', x=-1100,69, y=49,75, z=-205,09], EntitySquid['Squid'/372, l='MpServer', x=-1099,28, y=53,00, z=-210,69], EntityBat['Bat'/373, l='MpServer', x=-1085,34, y=29,10, z=-156,20], EntitySquid['Squid'/374, l='MpServer', x=-1103,19, y=48,81, z=-146,69], EntitySquid['Squid'/375, l='MpServer', x=-1089,50, y=46,50, z=-147,88], EntitySquid['Squid'/376, l='MpServer', x=-1095,16, y=46,13, z=-140,22], EntitySquid['Squid'/377, l='MpServer', x=-1097,66, y=46,03, z=-149,00], EntitySquid['Squid'/378, l='MpServer', x=-1095,94, y=49,13, z=-144,78], EntitySquid['Squid'/379, l='MpServer', x=-1097,25, y=47,56, z=-141,66], EntitySquid['Squid'/380, l='MpServer', x=-1097,41, y=45,50, z=-140,50], EntitySquid['Squid'/381, l='MpServer', x=-1099,00, y=48,31, z=-143,81], EntitySquid['Squid'/382, l='MpServer', x=-1103,63, y=43,34, z=-137,25], EntitySquid['Squid'/383, l='MpServer', x=-1094,16, y=46,06, z=-145,00], EntitySquid['Squid'/384, l='MpServer', x=-1095,41, y=42,28, z=-146,75], EntitySquid['Squid'/385, l='MpServer', x=-1092,41, y=44,47, z=-137,22], EntitySquid['Squid'/386, l='MpServer', x=-1097,97, y=52,13, z=-136,09], EntitySquid['Squid'/387, l='MpServer', x=-1091,13, y=51,34, z=-132,47], EntitySquid['Squid'/388, l='MpServer', x=-1086,09, y=51,53, z=-132,28], EntitySquid['Squid'/389, l='MpServer', x=-1097,34, y=54,09, z=-142,25], EntitySquid['Squid'/390, l='MpServer', x=-1096,75, y=54,97, z=-135,28], EntitySquid['Squid'/391, l='MpServer', x=-1089,38, y=54,50, z=-138,47], EntitySquid['Squid'/392, l='MpServer', x=-1096,28, y=53,84, z=-134,31], EntitySquid['Squid'/393, l='MpServer', x=-1097,34, y=51,69, z=-137,72], EntitySquid['Squid'/394, l='MpServer', x=-1102,78, y=54,06, z=-131,97], EntitySquid['Squid'/395, l='MpServer', x=-1107,25, y=55,19, z=-132,13], EntitySquid['Squid'/396, l='MpServer', x=-1106,50, y=50,84, z=-132,81], EntitySquid['Squid'/397, l='MpServer', x=-1097,44, y=49,75, z=-125,28], EntitySquid['Squid'/398, l='MpServer', x=-1096,56, y=52,31, z=-129,38], EntitySquid['Squid'/399, l='MpServer', x=-1100,53, y=51,09, z=-123,38], EntityZombie['Zombie'/400, l='MpServer', x=-1087,72, y=20,00, z=-123,16], EntitySquid['Squid'/401, l='MpServer', x=-1092,78, y=53,41, z=-125,19], EntitySquid['Squid'/402, l='MpServer', x=-1101,72, y=55,09, z=-117,13], EntitySquid['Squid'/403, l='MpServer', x=-1105,16, y=52,88, z=-116,06], EntitySquid['Squid'/404, l='MpServer', x=-1096,84, y=53,28, z=-121,41], EntitySquid['Squid'/405, l='MpServer', x=-1095,66, y=51,13, z=-117,72], EntitySquid['Squid'/406, l='MpServer', x=-1090,59, y=51,00, z=-121,66], EntitySquid['Squid'/407, l='MpServer', x=-1101,44, y=51,16, z=-130,97], EntityEnderman['Enderman'/408, l='MpServer', x=-1091,50, y=19,00, z=-100,50], EntitySquid['Squid'/435, l='MpServer', x=-1072,66, y=55,28, z=-220,53], EntitySquid['Squid'/437, l='MpServer', x=-1079,09, y=51,66, z=-238,91], EntitySquid['Squid'/438, l='MpServer', x=-1071,31, y=48,75, z=-230,31], EntitySquid['Squid'/439, l='MpServer', x=-1075,09, y=49,88, z=-208,63], EntitySquid['Squid'/440, l='MpServer', x=-1076,66, y=54,56, z=-216,72], EntitySquid['Squid'/441, l='MpServer', x=-1085,69, y=52,75, z=-219,41], EntitySquid['Squid'/442, l='MpServer', x=-1070,19, y=54,09, z=-217,72], EntitySquid['Squid'/443, l='MpServer', x=-1077,31, y=53,13, z=-219,34], EntitySquid['Squid'/444, l='MpServer', x=-1079,75, y=53,47, z=-215,69], EntitySquid['Squid'/445, l='MpServer', x=-1075,91, y=50,00, z=-224,03], EntitySkeleton['Skeleton'/446, l='MpServer', x=-1079,50, y=43,00, z=-193,91], EntityCreeper['Creeper'/447, l='MpServer', x=-1079,44, y=27,00, z=-156,97], EntityCreeper['Creeper'/448, l='MpServer', x=-1082,34, y=26,00, z=-145,97], EntityCreeper['Creeper'/449, l='MpServer', x=-1082,50, y=26,00, z=-152,50], EntitySquid['Squid'/450, l='MpServer', x=-1081,53, y=59,22, z=-152,06], EntitySquid['Squid'/451, l='MpServer', x=-1087,16, y=60,44, z=-145,97], EntitySquid['Squid'/452, l='MpServer', x=-1076,38, y=61,03, z=-146,38], EntitySquid['Squid'/453, l='MpServer', x=-1078,06, y=57,66, z=-132,47], EntitySquid['Squid'/454, l='MpServer', x=-1071,25, y=59,16, z=-134,00], EntitySquid['Squid'/455, l='MpServer', x=-1083,81, y=61,00, z=-140,19], EntitySquid['Squid'/456, l='MpServer', x=-1082,91, y=57,56, z=-141,34], EntitySquid['Squid'/457, l='MpServer', x=-1080,00, y=62,41, z=-128,09], EntitySquid['Squid'/458, l='MpServer', x=-1073,63, y=57,47, z=-139,41], EntitySquid['Squid'/459, l='MpServer', x=-1070,03, y=56,28, z=-132,19], EntitySquid['Squid'/460, l='MpServer', x=-1073,38, y=59,81, z=-124,25], EntitySquid['Squid'/461, l='MpServer', x=-1084,47, y=61,16, z=-143,59], EntitySquid['Squid'/462, l='MpServer', x=-1070,28, y=58,03, z=-125,31], EntitySquid['Squid'/463, l='MpServer', x=-1079,97, y=56,63, z=-124,81], EntitySquid['Squid'/475, l='MpServer', x=-1067,75, y=45,38, z=-233,53], EntitySquid['Squid'/476, l='MpServer', x=-1062,66, y=46,91, z=-230,53], EntitySquid['Squid'/477, l='MpServer', x=-1062,09, y=48,09, z=-229,94], EntitySquid['Squid'/478, l='MpServer', x=-1065,38, y=49,00, z=-226,44], EntitySquid['Squid'/479, l='MpServer', x=-1066,00, y=50,97, z=-233,13], EntitySquid['Squid'/480, l='MpServer', x=-1067,03, y=51,47, z=-228,41], EntitySquid['Squid'/481, l='MpServer', x=-1061,25, y=47,78, z=-225,56], EntitySquid['Squid'/482, l='MpServer', x=-1055,13, y=50,53, z=-236,00], EntitySquid['Squid'/483, l='MpServer', x=-1071,38, y=48,06, z=-225,25], EntitySquid['Squid'/484, l='MpServer', x=-1070,53, y=49,38, z=-222,31], EntitySquid['Squid'/485, l='MpServer', x=-1053,84, y=47,75, z=-169,91], EntitySkeleton['Skeleton'/486, l='MpServer', x=-1064,44, y=24,00, z=-148,09], EntityCreeper['Creeper'/487, l='MpServer', x=-1065,50, y=29,00, z=-158,50], EntityBat['Bat'/488, l='MpServer', x=-1068,00, y=26,10, z=-155,69], EntityBat['Bat'/489, l='MpServer', x=-1070,31, y=25,04, z=-158,47], EntitySquid['Squid'/490, l='MpServer', x=-1067,75, y=61,81, z=-155,19], EntitySquid['Squid'/491, l='MpServer', x=-1075,97, y=58,72, z=-145,88], EntitySquid['Squid'/492, l='MpServer', x=-1069,88, y=60,47, z=-143,09], EntitySquid['Squid'/493, l='MpServer', x=-1074,84, y=62,41, z=-147,69], EntitySquid['Squid'/494, l='MpServer', x=-1067,38, y=59,09, z=-135,31], EntitySquid['Squid'/495, l='MpServer', x=-1062,66, y=57,66, z=-123,19], EntitySquid['Squid'/511, l='MpServer', x=-1056,31, y=48,25, z=-238,50]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
    Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:383)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2645)
    at net.minecraft.client.Minecraft.run(Minecraft.java:409)
    at net.minecraft.client.main.Main.main(Main.java:116)
    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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:26)
    
    -- System Details --
    Details:
    Minecraft Version: 1.8.9
    Operating System: Windows 7 (amd64) version 6.1
    Java Version: 1.8.0_73, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 490291800 bytes (467 MB) / 898105344 bytes (856 MB) up to 1717043200 bytes (1637 MB)
    JVM Flags: 0 total; 
    IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
    FML: MCP 9.19 Powered by Forge 11.15.1.1744 6 mods loaded, 6 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.19} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAAAA	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8.9-11.15.1.1744.jar) 
    UCHIJAAAA	Forge{11.15.1.1744} [Minecraft Forge] (forgeSrc-1.8.9-11.15.1.1744.jar) 
    UCHIJAAAA	Baubles{1.1.3.0} [baubles] (Baubles-1.8.9-1.1.3.0-deobf.jar) 
    UCHIJAAAA	excore{1.3.8} [EXCore] (bin) 
    UCHIJAAAA	armorsets{2.0} [Armor Sets] (bin) 
    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.4.13084 Compatibility Profile Context 14.301.1001.0' Renderer: 'AMD Radeon HD 8570D'
    Launched Version: 1.8.9
    LWJGL: 2.9.4
    OpenGL: AMD Radeon HD 8570D GL version 4.4.13084 Compatibility Profile Context 14.301.1001.0, 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,forge'
    Type: Client (map_client.txt)
    Resource Packs: 
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    CPU: 4x AMD A8-6600K APU with Radeon(tm) HD Graphics 
    [10:39:06] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:612]: #@!@# Game crashed! Crash report saved to: #@!@# C:\my\mcmodding\mods\Armor-Sets\1.8.9\run\.\crash-reports\crash-2016-02-24_10.39.06-client.txt
    AL lib: (EE) alc_cleanup: 1 device not closed
    

     

    Client proxy:

    public class ClientProxy implements IProxy {
    
    public static final String MODELLOCATIONKEY = "ItemsSet";
    
    public static KeyBinding armorSetKeyBinding = new KeyBinding("key.armorsets.armor", Keyboard.KEY_F, "category.armorsets");
    public static KeyBinding baublesSetKeyBinding = new KeyBinding("key.armorsets.baubles", Keyboard.KEY_G, "category.armorsets");
    public static KeyBinding armorBaublesSetKeyBinding = new KeyBinding("key.armorsets.armorbaubles", Keyboard.KEY_V, "category.armorsets");
    
    @Override
    public void preInit(FMLPreInitializationEvent event){
    
    }
    
    @Override
    public void init(FMLInitializationEvent event){
    	ClientRegistry.registerKeyBinding(armorSetKeyBinding);
    	ClientRegistry.registerKeyBinding(baublesSetKeyBinding);
    	ClientRegistry.registerKeyBinding(armorBaublesSetKeyBinding);
    
    	FMLCommonHandler.instance().bus().register(new KeyBindingsCheckEvent());
    	MinecraftForge.EVENT_BUS.register(new BakeModelEvent());
    }
    
    @Override
    public void postInit(FMLPostInitializationEvent event){
    
    }
    
    }
    

     

    BakeModelEvent:

    public class BakeModelEvent {
    
    @SubscribeEvent
    public void bake(ModelBakeEvent event){
    	event.modelRegistry.putObject(new ModelResourceLocation(ClientProxy.MODELLOCATIONKEY, ClientProxy.MODELLOCATIONKEY), new ItemItemsSetModel());
    }
    
    }
    

     

    ISmartItemModel:

    public class ItemItemsSetModel implements ISmartItemModel {
    
    @Override
    public List<BakedQuad> getFaceQuads(EnumFacing facing){
    	return null;
    }
    
    @Override
    public List<BakedQuad> getGeneralQuads(){
    	return null;
    }
    
    @Override
    public boolean isAmbientOcclusion(){
    	return false;
    }
    
    @Override
    public boolean isGui3d(){
    	return false;
    }
    
    @Override
    public boolean isBuiltInRenderer(){
    	return false;
    }
    
    @Override
    public TextureAtlasSprite getParticleTexture(){
    	return null;
    }
    
    @Override
    public ItemCameraTransforms getItemCameraTransforms(){
    	return null;
    }
    
    @Override
    public IBakedModel handleItemState(ItemStack itemstack){
    	ItemStack[] items = ((ItemItemsSet) itemstack.getItem()).getItems(itemstack);
    	ImmutableMap.Builder<String, IFlexibleBakedModel> parts = ImmutableMap.builder();
    	for(ItemStack item : items){
    		if(item != null){
    			IBakedModel model = Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getItemModel(item);
    			if(model instanceof IFlexibleBakedModel){
    				parts.put(item.toString(), (IFlexibleBakedModel) model);
    			} else {
    				parts.put(items.toString(), new IFlexibleBakedModel.Wrapper(model, DefaultVertexFormats.ITEM));
    			}
    		}
    	}
    	return new MultiModel.Baked(null, parts.build());
    }
    
    }
    

     

    And my item (do not worry about abstract, right click and information methods, i'm testing with items that override this class):

    public abstract class ItemItemsSet extends ItemItemsList {
    
    @Override
    public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player){
    	if(!world.isRemote){
    		player.inventory.markDirty();
    		if(hasPlayerItems(player)){
    			ItemStack newItemstack = new ItemStack(this);
    			setItems(newItemstack, getPlayerItems(player));
    			setPlayerItems(player, getItems(itemstack));
    			return newItemstack;
    		} else {
    			setPlayerItems(player, getItems(itemstack));
    			itemstack.stackSize = 0;
    			return itemstack;
    		}
    	}
    	return itemstack;
    }
    
    public abstract boolean hasPlayerItems(EntityPlayer player);
    
    public abstract ItemStack[] getPlayerItems(EntityPlayer player);
    
    public abstract void setPlayerItems(EntityPlayer player, ItemStack[] items);
    
    @Override
    public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean debug){
    	list.add("---");
    	for(ItemStack item : getItems(itemstack)){
    		if(item == null){
    			list.add("");
    		} else {
    			if(!GuiScreen.isShiftKeyDown()){
    				list.add(item.getDisplayName());
    			} else {
    				list.addAll(item.getTooltip(player, debug));
    			}
    		}
    		list.add("---");
    	}
    }
    
    @Override
    @SideOnly(Side.CLIENT)
    public ModelResourceLocation getModel(ItemStack itemstack, EntityPlayer player, int useRemaining){
    	return new ModelResourceLocation(ClientProxy.MODELLOCATIONKEY, ClientProxy.MODELLOCATIONKEY);
    }
    
    }
    

  14. -There's very many methods in

    ISmartItemModel

    that i don't know what to do with. For now, i just left them empty or return null.

    Only handleItemState will be called on the smart model, unless that method also returns a smart model, in which case that 2nd smart model will not be treated as smart.

    Ok. I'll leave them empty.

    -To get
    IModel

    , i need ResourceLocation. To get

    ResourceLocation

    from

    ItemStack

    , i need

    ItemStack

    ,

    EntityPlayer

    and

    int

    . Where do i get

    player

    and

    useRemaining

    ?

    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getItemModel(stack). This will give you an IBakedModel, see below on how to use it in your ISmartItemmodel.

    That's what i was looking for!

    Thanks!

    Also i noticed in

    ModelLoader

    , that if

    ResourceLocation

    is instance of

    ModelResourceLocation

    , it will use vanilla loader. And that's the only thing i can return in

    Item.getModel

    .

    You don't need to use Item.getModel at all.

    Ok.

    I was alos thinking about encoding player UUID and use remaining in to resource path of

    ResourceLocation

    , to decode them back in my

    ISmartItemModel

    . Is this the only way to go?

    Why do you need them? :D

    I needed them, because i didn't know correct way to get models.

    One last thing, should i in my

    ISmartItemModel

    also implement

    IModel

    ? Because it apparently is not

    IModel

    already, and i can't return it in

    ICustomModelLoader

    .

    No. IModel is "unbaked". The IModel is what you produce in the model loader, it will then be baked into the smart model (or any other baked model). But I think you should not use a custom loader after all, a smart model is the better choice.

    So, how should i register my

    ISmartItemModel

    then?

    EDIT: One more thing,

    ISmartItemModel

    requires me to return

    IBakedModel

    , but

    MultiModel

    isn't

    IBakedModel

    , and to

    bake

    it, it requires a lot of things i don't know where to get from.

    Since you do this from an ISmartItemModel and you are getting baked models for the individual items already (see above), you can construct MultiModel.Baked directly. Pass null for "base" (or a base model such as a holder shell for the items) and the map of sub models as "parts". To make your models flexible (IFlexibleBakedModel) first check if they already are using instanceof, if not use IFlexibleBakedModel.Wrapper with DefaultVertexFormats.ITEM.

    Ok. Thank you!!!

     

    I'll try all that, and see how it goes!

  15. I should say (shame on me) is that my console has the following when I RClick on it:

     

    java.lang.NullPointerException: Ticking entity
    at com.nealegaming.mod.container.ContainerDraftingBoard.canInteractWith(ContainerDraftingBoard.java:93)
    

     

    That method is this:

     

    public boolean canInteractWith(EntityPlayer playerIn)
        {
        	return this.worldObj.getBlockState(this.pos).getBlock() != NGBlocks.draftingTable ? false : playerIn.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
        }
    

    Then there's something null there (it should be obvious).

    Now, use your IDE's debug mode to see what actually is null.

×
×
  • Create New...

Important Information

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