Génération d'item dans un chest



  • Bonjours a tous , je suis entrain de créer un mod , et j'ai coder une structure qui ce génère dans la map , sur cette structure il y à un coffre , et j aimerais que dans sa coffre a chaque structure dans la map il y a du diamants dans le coffre , comment puis-je faire ?

    Le code :

    package com.mod.voltonia.structures;
    
    import com.mod.voltonia.init.BlockMod;
    
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    
    public class StructureTuto1
    {
        public static void init(World world, int x, int y, int z)
        {
            if(world.getBlock(x, y-1, z) == Blocks.grass && world.getBlock(x, y+7, z) == Blocks.air)
            {
        world.setBlock(x + 18, y + 1, z + 7, Blocks.clay, 0, 3);
        world.setBlock(x + 19, y + 1, z + 7, Blocks.clay, 0, 3);
        world.setBlock(x + 11, y + 1, z + 11, Blocks.chest, 2, 3);
        world.setBlock(x + 3, y + 1, z + 15, Blocks.clay, 0, 3);
        world.setBlock(x + 4, y + 1, z + 15, Blocks.clay, 0, 3);
        world.setBlock(x + 18, y + 1, z + 15, Blocks.clay, 0, 3);
        world.setBlock(x + 19, y + 1, z + 15, Blocks.clay, 0, 3);
        world.setBlock(x + 3, y + 1, z + 16, Blocks.clay, 0, 3);
    
            }
        }
    }
    

    Merci !


  • Administrateurs

    Salut,
    Comme ceci :
    TileEntityChest chest = (TileEntityChest)world.getTileEntity(x + 11, y + 1, z + 11);
    chest.setInventoryContents(0, Items.diamond);



  • @'robin4002':

    Salut,
    Comme ceci :
    TileEntityChest chest = (TileEntityChest)world.getTileEntity(x + 11, y + 1, z + 11);
    chest.setInventoryContents(0, Items.diamond);

    Merci pour ta réponse , mais j'ai une erreur :


  • Administrateurs

    Ah, visiblement c'est new ItemStack(Items.diamond) au lieu de directement Items.diamond comme il veut un itemstack et non un item.



  • @'robin4002':

    Ah, visiblement c'est new ItemStack(Items.diamond) au lieu de directement Items.diamond comme il veut un itemstack et non un item.

    Du coups le code que vous m'avais donner plus haut ce transforme en quoi ? ^^



  • TileEntityChest chest = (TileEntityChest)world.getTileEntity(x + 11, y + 1, z + 11);
    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));
    


  • @'AymericRed':

    TileEntityChest chest = (TileEntityChest)world.getTileEntity(x + 11, y + 1, z + 11);
    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));
    

    Salut , le code fonctionne bien , mais quand je veux créer une map solo , le minecraft se ferme instant , et quand j’enlève le code il fonctionne niquel


  • Administrateurs

    Je suppose qu'il y a un rapport de crash dans les logs, non ?
    Tu peux envoyer un copier/coller de ce dernier ?



  • @'robin4002':

    Je suppose qu'il y a un rapport de crash dans les logs, non ?
    Tu peux envoyer un copier/coller de ce dernier ?

    –-- Minecraft Crash Report ----
    // This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]
    
    Time: 21/03/17 13:24
    Description: Exception in server tick loop
    
    java.lang.NullPointerException: Exception in server tick loop
    at com.mod.voltonia.structures.StructureTuto1.init(StructureTuto1.java:1237)
    at com.mod.voltonia.init.StructureGenMod.generate(StructureGenMod.java:18)
    at com.mod.voltonia.world.WorldGenVolto.addStructure(WorldGenVolto.java:56)
    at com.mod.voltonia.world.WorldGenVolto.GenerateOverWorld(WorldGenVolto.java:71)
    at com.mod.voltonia.world.WorldGenVolto.generate(WorldGenVolto.java:27)
    at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
    at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:314)
    at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1157)
    at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:208)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119)
    at net.minecraft.server.MinecraftServer.initialWorldChunkLoad(MinecraftServer.java:305)
    at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:79)
    at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
    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:
    –-------------------------------------------------------------------------------------
    
    -- System Details --
    Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 8.1 (amd64) version 6.3
    Java Version: 1.8.0_121, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 830381496 bytes (791 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.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
    UCHIJAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJAA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    UCHIJAA Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    UCHIJAA voltonia{1.0.0} [Voltonia Mod] (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'
    

  • Administrateurs

    Tu as quoi à la ligne 1237 de StructureTuto1 ?
    ça ?
    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));

    Si oui, il faut bien mettre les deux lignes après le world.setBlock,sinon ça ne peut pas fonctionner.



  • @'robin4002':

    Tu as quoi à la ligne 1237 de StructureTuto1 ?
    ça ?
    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));

    Si oui, il faut bien mettre les deux lignes après le world.setBlock,sinon ça ne peut pas fonctionner.

    oui c bien sa , comment ça les deux lignes ?



  • @'robin4002':

    Tu as quoi à la ligne 1237 de StructureTuto1 ?
    ça ?
    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));

    Si oui, il faut bien mettre les deux lignes après le world.setBlock,sinon ça ne peut pas fonctionner.

    Ha oui merci sa fonctionne , mais pourquoi sur les structure a coter du coffre au sol il a deux diamants ? et aussi , comment puis-je mettre deux item ? exemple le diamants et l'autre items 1 fer ?



  • Ta fonction est bien appelée que côté serveur ? Si t'es pas sur mets un if(!world.isRemote) autour de ton code.

    Essayes au moins un peu de comprendre le code qu'on te donne…..

    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));
    

    Je suppose que tu peux remplacer diamond par ce que tu veux, et le 0 correspond au slot du coffre (sachant que dans un coffre y'en a 27).



  • @'AymericRed':

    Ta fonction est bien appelée que côté serveur ? Si t'es pas sur mets un if(!world.isRemote) autour de ton code.

    Essayes au moins un peu de comprendre le code qu'on te donne…..

    chest.setInventoryContents(0, new ItemStack(Items.diamond, laQuatitéDeDiamandsQueTuVeux));
    

    Je suppose que tu peux remplacer diamond par ce que tu veux, et le 0 correspond au slot du coffre (sachant que dans un coffre y'en a 27).

    Ha oui pour ajouter un item j'ai reussi , mais le if(!world.isRemote) je le mais ou dans mon code ?



  • Autour des world.setBlock, en les encadrant par des accolades.