Plantations !
-
Bonjour, j’ai suivi un petit tutoriel dans les archives pour pouvoir créer de nouvelles plantations, voici mes classes :
Principale :
public static Item Laitue; public static Block LaitueFarm; //Ici nous avons le bloc qui fait pousser la salade. Puis : Laitue = new LaitueEat(2206, 6, 1F, false,this.LaitueFarm, Blocks.farmland).setUnlocalizedName("Laitue").setTextureName("xdoh:laitue"); //Etant donné que la laitue est aussi un item mangeable, je lui ai rajouter des caractéristiques LaitueFarm = new LaitueFarm(2300).setBlockName("LaitueFarm");
La classe LaitueEat:
public class LaitueEat extends ItemSeedFood{ public LaitueEat(int id, int foodAmount, float saturation, boolean isWolfFood, Block LaitueFarm, Block farmland) { super(foodAmount, saturation, LaitueFarm, farmland); } }
Et la plus grande, la classe LaitueFarm:
public class LaitueFarm extends BlockCarrot { public static String[] type = new String[]{"LaitueFarm_0", "LaitueFarm_1", "LaitueFarm_2", "LaitueFarm_3"}; private Icon[] IconArray; public LaitueFarm (int id) { super(); } public IIcon getIcon(int side, int metadata) { return (IIcon) (metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]); } public void registerIcons(IIconRegister iconregister) { IconArray = new Icon[type.length]; for(int i = 0; i < type.length; i++) { IconArray* = (Icon) iconregister.registerIcon("xdoh:" + type*); } } protected Item getSeedItem() { return XdohMod.Laitue; } protected Item getCropItem() { return XdohMod.Laitue; } public int damageDropped(int metadata) { return metadata; } }
Bon, quand je lance le jeu, j’essaie de planter ma salade, et c’est le crash le plus total !
Les logs :
–-- Minecraft Crash Report ---- // Don't be sad, have a hug! <3 Time: 08/03/15 14:44 Description: Unexpected error java.lang.NullPointerException: Unexpected error at net.minecraft.world.chunk.storage.ExtendedBlockStorage.func_150818_a(ExtendedBlockStorage.java:86) at net.minecraft.world.chunk.Chunk.func_150807_a(Chunk.java:653) at net.minecraft.world.World.setBlock(World.java:519) at net.minecraft.world.World.setBlock(World.java:681) at net.minecraft.item.ItemSeedFood.onItemUse(ItemSeedFood.java:39) at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:143) at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:403) at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1518) at net.minecraft.client.Minecraft.runTick(Minecraft.java:2033) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) at net.minecraft.client.Minecraft.run(Minecraft.java:951) 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(GradleStartCommon.java:85) at GradleStart.main(GradleStart.java:45)
Il y aurait une solution ? Merci !
-
1. Mets des balises java;
2. Ton mod est en 1.7 ? Si oui, tu n’as pas besoin de mettre les id de tes blocs/items. -
J’ai donc enlevé les ID, mais le crash est toujours présent
-
Le bloc doit être initialisé avant l’item, sinon ça cause un NPE. C’est logique.
-
@‘robin4002’:
Le bloc doit être initialisé avant l’item, sinon ça cause un NPE. C’est logique.
Merci de ta réponse, mais ça ne marche toujours pas,
–-- Minecraft Crash Report ---- // Everything's going to plan. No, really, that was supposed to happen. Time: 08/03/15 15:38 Description: Unexpected error java.lang.NullPointerException: Unexpected error at fr.squizzcraft.xdoh.common.LaitueFarm.getIcon(LaitueFarm.java:40) at net.minecraft.client.renderer.RenderBlocks.getBlockIconFromSideAndMetadata(RenderBlocks.java:8451) at net.minecraft.client.renderer.RenderBlocks.renderBlockCropsImpl(RenderBlocks.java:4082) at net.minecraft.client.renderer.RenderBlocks.renderBlockCrops(RenderBlocks.java:3850) at net.minecraft.client.renderer.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:362) at net.minecraft.client.renderer.WorldRenderer.updateRenderer(WorldRenderer.java:207) at net.minecraft.client.renderer.RenderGlobal.updateRenderers(RenderGlobal.java:1618) at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1263) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1091) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1056) at net.minecraft.client.Minecraft.run(Minecraft.java:951) 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(GradleStartCommon.java:85) at GradleStart.main(GradleStart.java:45)
Je crois qu’il n’arrive pas à trouver les textures et donc à faire le rendu, pourtant, je les ai placées dans assets/xdoh/textures/blocks renommée de ce type : LaitueFarm_0 !
-
Cette fois si tu as un NPE sur la textures en effet.
Heu attend, tu code bien en 1.7.10 ?
Alors pourquoi tu as des Icon dans ton code ? ça devrait être IIcon.
Ici :private Icon[] IconArray;
Et ici :
IconArray = new Icon[type.length];
Et la fonction :
public void registerIcons(IIconRegister iconregister)
Devrait être :
public void registerBlockIcons(IIconRegister iconregister)
-
@‘robin4002’:
Cette fois si tu as un NPE sur la textures en effet.
Heu attend, tu code bien en 1.7.10 ?
Alors pourquoi tu as des Icon dans ton code ? ça devrait être IIcon.
Ici :private Icon[] IconArray;
Et ici :
IconArray = new Icon[type.length];
Et la fonction :
public void registerIcons(IIconRegister iconregister)
Devrait être :
public void registerBlockIcons(IIconRegister iconregister)
Plus de crash ! Les plantations poussent ! Mais par contre, elles ont un problème avec la poudre d’os, est-ce normal qu’on voit la dernière étape pendant une fraction de seconde et que ça s’arrête après ?
-
Que ça s’arrête après ? C’est à dire ?
-
Ben, si on met la poudre dessus, il va m’afficher la dernière image (LaitueFarm_4) pour ensuite ré-afficher la première
-
Surement car le code est conçu pour plus de 4 textures. Regarde combien de texture à la carotte pour en être sûr.
-
4 aussi O.o
-
Étrange, tu peux regarder quel est le metadata de ton bloc ?
-
(metadata < type.length && metadata >= 0 ? IconArray[metadata] : IconArray[0]);