Rendu complexe de bloc via TESR
-
je l’ai completée mais sa ne change rien
package Universe.common; import java.util.HashMap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler { public static class TESRIndex { Block block; int metadata; public TESRIndex(Block block, int metadata) { this.block = block; this.metadata = metadata; } @Override public int hashCode() { return block.hashCode() + metadata; } @Override public boolean equals(Object o) { if(!(o instanceof TESRIndex)) return false; TESRIndex tesr = (TESRIndex)o; return tesr.block == block && tesr.metadata == metadata; } } public static HashMap <tesrindex, iinventoryrenderer="">blockByTESR = new HashMap<tesrindex, iinventoryrenderer="">(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { // TODO Auto-generated method stub TESRIndex index = new TESRIndex(block, metadata); if(blockByTESR.containsKey(index)) { blockByTESR.get(index).renderInventory(-0.5, -0.5, -0.5); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return true; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.renderInventoryTESRId; } } ```</tesrindex,></tesrindex,> -
J’ai jamais vu ça, si tu commente le bloc tout fonctionne ?
-
comment sa ?
-
// devant le GameRegistry.registerBlock
-
rien
je sais pas pourquoi quand je lance le monde il genere puis sa bloque et OutOf memory sinon je peux essayer de compiler le mod
et tester avec mes 4go de ram alloués ?2014-03-04 20:32:30 [Infos] [Minecraft-Server] Preparing start region for level 0 2014-03-04 20:32:31 [Infos] [Minecraft-Server] Preparing spawn area: 18% 2014-03-04 20:32:32 [Infos] [Minecraft-Server] Preparing spawn area: 36% 2014-03-04 20:32:33 [Infos] [Minecraft-Server] Preparing spawn area: 62% 2014-03-04 20:32:34 [Infos] [Minecraft-Server] Preparing spawn area: 86% 2014-03-04 20:32:52 [Infos] [STDERR] java.lang.OutOfMemoryError: Java heap space -
@‘Bowser338’:
rien
= pas de crash ?
-
Petit Probleme
le rendu en main ne marche pas j’ai toujours le carré dans la mainJe n’arrive pas a integrer sa au client Proxy
TESRInventoryRenderer.blockByTESR.put(new TESRIndex(Universe.common.BasicSolarPanel, 0), new TileEntitySolarPanelBasicSpecialRender());il me met une erreur la ou je dois indiquer la classe de mon bloc ( Universe.common.BasicSolarPanel )
-
C’est pas la classe du bloc, mais l’objet du bloc qu’il faut (ClassePrincipale.nomdubloc)
-
Merci Erreur réglée mais quand je lance le jeu maintenant sa crash
–-- Minecraft Crash Report ---- // Would you like a cupcake? Time: 05/03/14 16:16 Description: There was a severe problem during mod loading that has caused the game to fail cpw.mods.fml.common.LoaderException: java.lang.NullPointerException at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:75) at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:524) 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 com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201) at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181) 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 com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112) at cpw.mods.fml.common.Loader.loadMods(Loader.java:511) at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:183) at net.minecraft.client.Minecraft.startGame(Minecraft.java:473) at net.minecraft.client.Minecraft.run(Minecraft.java:808) at net.minecraft.client.main.Main.main(Main.java:93) 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:131) at net.minecraft.launchwrapper.Launch.main(Launch.java:27) Caused by: java.lang.NullPointerException at Universe.common.TESRInventoryRenderer$TESRIndex.hashCode(TESRInventoryRenderer.java:27) at java.util.HashMap.hash(Unknown Source) at java.util.HashMap.put(Unknown Source) at Universe.common.ClientProxy.<init>(ClientProxy.java:36) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at cpw.mods.fml.common.ProxyInjector.inject(ProxyInjector.java:58) ... 33 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.6.4 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.7.0_51, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 928539264 bytes (885 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 Suspicious classes: FML and Forge are installed IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v8.11 FML v6.4.45.953 Minecraft Forge 9.11.1.953 4 mods loaded, 4 mods active mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed FML{6.4.45.953} [Forge Mod Loader] (bin) Unloaded->Constructed Forge{9.11.1.953} [Minecraft Forge] (bin) Unloaded->Constructed UltimateUniverseMod{1.0.0} [Ultimate Universe Mod] (bin) Unloaded->ErroredJe crois que c’est lié a TESRInventoryRenderer
donc :
package Universe.common; import java.util.HashMap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler { public static class TESRIndex { Block block; int metadata; public TESRIndex(Block block, int metadata) { this.block = block; this.metadata = metadata; } @Override public int hashCode() { return block.hashCode() + metadata; } @Override public boolean equals(Object o) { if(!(o instanceof TESRIndex)) return false; TESRIndex tesr = (TESRIndex)o; return tesr.block == block && tesr.metadata == metadata; } } public static HashMap <tesrindex, iinventoryrenderer="">blockByTESR = new HashMap<tesrindex, iinventoryrenderer="">(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { TESRIndex index = new TESRIndex(block, metadata); if(blockByTESR.containsKey(index)) { blockByTESR.get(index).renderInventory(-0.5, -0.5, -0.5); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return true; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.renderInventoryTESRId; } } ```</tesrindex,></tesrindex,></init> -
Ton bloc est null. Classe principale ?
-
package Universe.common; import net.minecraft.block.Block; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EnumCreatureType; import net.minecraftforge.common.Configuration; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = "UltimateUniverseMod", name = "Ultimate Universe Mod", version = "1.0.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class UniverseMain { public static Block PanneauSolaireBasique; @SidedProxy(clientSide = "Universe.common.ClientProxy", serverSide = "Universe.common.CommonProxy") public static CommonProxy proxy; @Instance("ModTutoriel") public static UniverseMain instance; @EventHandler public void PreInit(FMLPreInitializationEvent event) { // Blocks PanneauSolaireBasique = new BasicSolarPanel(1000).setTextureName("universe:PanneauSolaireBasique").setUnlocalizedName("PSB"); GameRegistry.registerBlock(PanneauSolaireBasique, "PSB"); LanguageRegistry.addName(PanneauSolaireBasique,"Basic Solar Panel"); } @EventHandler public void Init(FMLInitializationEvent event) { //Registry GameRegistry.registerTileEntity(TileEntitySolarPanelBasic.class, "TileEntitySolarPanelBasic"); proxy.registerTileEntityRender(); } @EventHandler public void PostInit(FMLPostInitializationEvent event) { } } -
Étrange, le bloc est bien initialisé et la méthode du proxy est appelé après l’initialisation. Je ne vois pas de raison à ce crash. Je peux voir ton ClientProxy ?
-
J’ai trouvé d’ou venait l’erreur des crochets en trop
Mais sinon toujours pas le rendu en main et dans l’inventaire

-
Dans ce cas il manque toujours quelque chose. Envoie ton ClientProxy.
-
package Universe.common; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderGhast; import net.minecraft.client.renderer.entity.RenderZombie; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import Universe.common.CommonProxy; import Universe.common.TESRInventoryRenderer.TESRIndex; public class ClientProxy extends CommonProxy { @Override public void registerRender() { renderBasciSolarPanelID = RenderingRegistry.getNextAvailableRenderId(); renderInventoryTESRId = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(new TESRInventoryRenderer()); RenderingRegistry.registerBlockHandler(renderBasciSolarPanelID, new RenderCustomBlocks()); } public static int renderBasciSolarPanelID; public static int renderInventoryTESRId; @Override public void registerTileEntityRender() { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySolarPanelBasic.class, new TileEntitySolarPanelBasicSpecialRender()); TESRInventoryRenderer.blockByTESR.put(new TESRIndex(UniverseMain.PanneauSolaireBasique, 0), new TileEntitySolarPanelBasicSpecialRender()); } } -
Ta méthode registerRender n’est pas appelé dans ta classe principale.
Dans la méthode init de ta classe principale ajoute :
proxy.registerRender(); -
sa change rien
Je commence a etre perdu la -
Dans ta classe TESRInventoryRenderer, tu as bien :
@Override public int getRenderId() { return ClientProxy.renderInventoryTESRId; }?
-
Oui il y est
package Universe.common; import java.util.HashMap; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler { public static class TESRIndex { Block block; int metadata; public TESRIndex(Block block, int metadata) { this.block = block; this.metadata = metadata; } @Override public int hashCode() { return block.hashCode() + metadata; } @Override public boolean equals(Object o) { if(!(o instanceof TESRIndex)) return false; TESRIndex tesr = (TESRIndex)o; return tesr.block == block && tesr.metadata == metadata; } } public static HashMap <tesrindex, iinventoryrenderer="">blockByTESR = new HashMap<tesrindex, iinventoryrenderer="">(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { TESRIndex index = new TESRIndex(block, metadata); if(blockByTESR.containsKey(index)) { blockByTESR.get(index).renderInventory(-0.5, -0.5, -0.5); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { return true; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.renderInventoryTESRId; } } ```</tesrindex,></tesrindex,> -
Franchement… Je ne sais pas, tout le code semble bon
