Problème de recette furnace



  • Bonjours à tous, je poste encore car j'ai deux problèmes que je n'arrive pas à résoudre.

    Dans un premier cas je veux créer une recette composé d'un slot input et un slotout, mais lorsque je met mon block dans le slot input rien ne se passe.
    le code : https://pastebin.com/XhRrFxcJ

    Et dans un deuxièmes cas la recette se lance mais je peux mettre n'importe quel objet dans le slot et la recette se lance quand même, et je souhaiterai qu'elle puisse se lancer uniquement avec 3 Item et Block définie avec une seule manière de les placer.
    le code : https://pastebin.com/Yg1T2K9P

    Merci de vouloir bien m'aider x)



  • Salut'

    Pour le premier cas, il suffisait de lire une fois le code et tu aurais dû tout de suite voir le problème : la fonction "addRecipe" est vide x)
    Et pour le second problème, la fonction "isSameKey" n'est pas correcte, tu vérifie la taille des tableaux mais tu ne vérifies pas leur contenu (même problème dans la 1e classe également).



  • Merci de ta réponse, je testerai ça plus tard je suis pas chez moi.



  • J'ai réussi à régler le problème du fonctionnement de la recette, en revanche je n'arrive pas encore à faire fonctionner une seule et unique " recipe ", c'est à dire que je peux mettre n'importe quoi dans le input, et j'obtiens quand même l'item définie dans l'output.



  • Yo, c'est un peut le bordel dans tes class de recipe :

    1 - il te faut une Map<ItemStack, ItemStack> qui vas permettre de stocker t'es recipes donc un input qui est la clé et l'output qui sera la valeur

    Map : Permet de stocké des valeurs en leur associant une clé, cette dernière permet de récupéré la valeur qui lui est attaché

    2- un fonction pour vérifié si dans la Map il ya une correspondance avec ton item en entré (slot input), soit la clé

    3- une fonction qui vas permettre de récupéré la valeur associé a la clé (item en entré, soit ton slot input), cette fonction prendra en paramètre l'itemstack qui se situe dans ton slot input.

    Voila un exemple de la class de recipe
    tu peut creer d'autre class de recipe en les extends a cette class

    import java.util.Map;
    import java.util.HashMap;
    
    public class Recipe
    {
    	public static final Recipe INSTANCE = new Recipe();
    
    	private Map<ItemStack, ItemStack> recipes = new HashMap<ItemStack, ItemStack>();
    
    	public Recipe()
    	{
                    // Exemple
    		this.addRecipe(new ItemStack(Items.apple), new ItemStack(Items.diamond));
    	}
    
    	public void addRecipe(ItemStack in, ItemStack out)
    	{
    		if (!this.isKeyExist(in))
    		{
    			this.recipes.put(in, out);
    		}
    	}
    
    	public ItemStack getResult(ItemStack input)
    	{
    		if (this.isKeyExist(input))
    		{
    			for (ItemStack stack : this.recipes.keySet())
    			{
    				if (stack.isItemEqual(input))
    				{
    					return this.recipes.get(stack);
    				}
    			}
    		}
    	}
    
    	public boolean isKeyExist(ItemStack stack)
    	{
    		if (stack != null)
    		{
    			for (ItemStack stack : this.recipes.keySet())
    			{
    				if (stack.isItemEqual(input))
    				{
    					return true;
    				}
    			}
    		}
    
    		return false;
    	}
    }
    

    Ensuite il te faudrat verifié dans le TileEntity de ta machine si la fonction getResult ne retourne pas null pour demarré le craft, sinon tu fait rien



  • Merci de ta réponse.
    J'ai essayé ton code en l'adaptant (logique), sauf que ça ne marche pas. Je crash dès que j'essaie de me connecter.



  • Salut,
    Il faudrait peut-être envoyer le log pour qu'on voie l'erreur.



  • Le crash report montre que l'erreur vient de ma classe TileEntity mais je sais pas quoi modifier 😕

    ---- Minecraft Crash Report ----
    // Shall we play a game?
    
    Time: 18/08/18 20:21
    Description: Ticking block entity
    
    java.lang.NullPointerException: Ticking block entity
    	at com.lezink.lezinkmod.common.TileEntityCompactor.canSmelt(TileEntityCompactor.java:191)
    	at com.lezink.lezinkmod.common.TileEntityCompactor.updateEntity(TileEntityCompactor.java:207)
    	at net.minecraft.world.World.updateEntities(World.java:2160)
    	at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
    	at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    	at com.lezink.lezinkmod.common.TileEntityCompactor.canSmelt(TileEntityCompactor.java:191)
    	at com.lezink.lezinkmod.common.TileEntityCompactor.updateEntity(TileEntityCompactor.java:207)
    
    -- Block entity being ticked --
    Details:
    	Name: TileEntityCompactor // com.lezink.lezinkmod.common.TileEntityCompactor
    	Block type: ID #183 (tile.Copactor // com.lezink.lezinkmod.common.Comapactor)
    	Block data value: 0 / 0x0 / 0b0000
    	Block location: World: (-663,4,-391), Chunk: (at 9,0,9 in -42,-25; contains blocks -672,0,-400 to -657,255,-385), Region: (-2,-1; contains chunks -64,-32 to -33,-1, blocks -1024,0,-512 to -513,255,-1)
    	Actual block type: ID #183 (tile.Copactor // com.lezink.lezinkmod.common.Comapactor)
    	Actual block data value: 0 / 0x0 / 0b0000
    Stacktrace:
    	at net.minecraft.world.World.updateEntities(World.java:2160)
    	at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515)
    
    -- Affected level --
    Details:
    	Level name: Plat
    	All players: 0 total; []
    	Chunk stats: ServerChunkCache: 625 Drop: 0
    	Level seed: -2996494463208639930
    	Level generator: ID 01 - flat, ver 0. Features enabled: true
    	Level generator options: 
    	Level spawn location: World: (-656,4,-400), Chunk: (at 0,0,0 in -41,-25; contains blocks -656,0,-400 to -641,255,-385), Region: (-2,-1; contains chunks -64,-32 to -33,-1, blocks -1024,0,-512 to -513,255,-1)
    	Level time: 579415 game time, 434101 day time
    	Level dimension: 0
    	Level storage version: 0x04ABD - Anvil
    	Level weather: Rain time: 8075 (now: false), thunder time: 85346 (now: false)
    	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
    Stacktrace:
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
    	at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
    
    -- System Details --
    Details:
    	Minecraft Version: 1.7.10
    	Operating System: Windows 10 (x86) version 10.0
    	Java Version: 1.8.0_181, Oracle Corporation
    	Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
    	Memory: 806150952 bytes (768 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: 0, tallocated: 0
    	FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 4 mods loaded, 4 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.1614-1.7.10.jar) 
    	UCHIJAAAA	Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    	UCHIJAAAA	lezinkmod{1.0.0} [lezinkmod] (bin) 
    	GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
    	Profiler Position: N/A (disabled)
    	Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    	Player Count: 0 / 8; []
    	Type: Integrated Server (map_client.txt)
    	Is Modded: Definitely; Client brand changed to 'fml,forge'
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    @lezinkdu07 a dit dans Problème de recette furnace :

    at com.lezink.lezinkmod.common.TileEntityCompactor.canSmelt(TileEntityCompactor.java:191)

    Le problème se trouve à la ligne 191 de la classe TileEntityCompactor, tu as un objet null.



  • Bon mon jeu veut bien se lancer maintenant, mais je suis revenu aux problèmes du début :/, j'ai remis le code que j'ai mis dans le pastbin...



  • Bon j'ai toujours les mêmes problèmes qu'auparavant mais je pense que cela peut venir du TileEntity, et j'ai aussi modifié mes codes par rapport au début du coup je les remets
    TileEntityCompactor : https://pastebin.com/Cui9VgFt
    CompactorRecipes : https://pastebin.com/skSdaYYM
    Ici le craft ne se lance pas ( la j'ai 1 slot input et 1 slot output )

    TransformatorRecipes : https://pastebin.com/8pFbER5H
    Ici le craft se lance avec n'importe quel Item. ( la j'ai 3 slot input et 1 slot output
    Je sais que je suis chiant, et que vous avez pas que ça à faire mais ça fait 1j que je cherche les solutions mais j'y arrive pas alors bon 😕



  • Pourtant ce ne sont pas des problèmes compliqués ^^

    private boolean canSmelt()
           {
               if (this.contents[0] == null || this.contents[1] == null)
               {
                   return false;
               }
    [...]
    

    Ici, pour le compactor, la recette ne peut pas se lancer si le slot du résultat est vide.

    Et pour le transformator, c'est toujours le même problème depuis le début :

    @aymericred a dit dans Problème de recette furnace :

    Et pour le second problème, la fonction "isSameKey" n'est pas correcte, tu vérifie la taille des tableaux mais tu ne vérifies pas leur contenu (même problème dans la 1e classe également).



  • J'ai changé ça mais dès que je mets une recette dans le RecipeCompactor ça crash et ça me met dans le rapport que cette ligne n'est pas bonne. Donc je la retire et la je crash plus mais du coup je peux pas faire fonctionner la recette.



  • C'est bon j'ai réussi à régler le problème (enfin)


Log in to reply