MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Ajouter un gui et un container à un bloc

    Planifier Épinglé Verrouillé Déplacé Les interfaces (GUI) et les container
    1.7.x
    129 Messages 21 Publieurs 31.6k Vues 8 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • _ Hors-ligne
      ___Freezer___
      dernière édition par

      Mon bloc :

      package Package1.common.FourTotal;
      
      import Package1.common.CompleatCraft;
      import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockContainer;
      import net.minecraft.block.material.Material;
      import net.minecraft.entity.item.EntityItem;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.inventory.IInventory;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.world.World;
      
      public class BlockFour extends BlockContainer {
      public BlockFour(Material material) {
        super(Material.rock);
        this.setResistance(8.0F);
        this.setHarvestLevel("pickaxe", 2);
        this.setBlockTextureName(CompleatCraft.MODID + ":BlockFour");
      }
      @Override
         public TileEntity createNewTileEntity(World world, int metadata)
         {
             return new TileEntityFour();
         }
      
         @Override
         public boolean hasTileEntity(int metadata)
         {
             return true;
         }
         public void breakBlock(World world, int x, int y, int z, Block block, int metadata)
         {
             TileEntity tileentity = world.getTileEntity(x, y, z);
      
             if (tileentity instanceof IInventory)
             {
              IInventory inv = (IInventory)tileentity;
                 for (int i1 = 0; i1 < inv.getSizeInventory(); ++i1)
                 {
                     ItemStack itemstack = inv.getStackInSlot(i1);
      
                     if (itemstack != null)
                     {
                         float f = world.rand.nextFloat() * 0.8F + 0.1F;
                         float f1 = world.rand.nextFloat() * 0.8F + 0.1F;
                         EntityItem entityitem;
      
                         for (float f2 = world.rand.nextFloat() * 0.8F + 0.1F; itemstack.stackSize > 0; world.spawnEntityInWorld(entityitem))
                         {
                             int j1 = world.rand.nextInt(21) + 10;
      
                             if (j1 > itemstack.stackSize)
                             {
                                 j1 = itemstack.stackSize;
                             }
      
                             itemstack.stackSize -= j1;
                             entityitem = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
                             float f3 = 0.05F;
                             entityitem.motionX = (double)((float)world.rand.nextGaussian() * f3);
                             entityitem.motionY = (double)((float)world.rand.nextGaussian() * f3 + 0.2F);
                             entityitem.motionZ = (double)((float)world.rand.nextGaussian() * f3);
      
                             if (itemstack.hasTagCompound())
                             {
                                 entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
                             }
                         }
                     }
                 }
      
                 world.func_147453_f(x, y, z, block);
             }
      
             super.breakBlock(world, x, y, z, block, metadata);
         }
         public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitx, float hity, float hitz)
         {
             if (world.isRemote)
             {
                 return true;
             }
             else
             {
              player.openGui(CompleatCraft.instance, 0, world, x, y, z);
                 return true;
             }
         }
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Ajoutes System.out.println(“test”); au dessus de player.openGui(CompleatCraft.instance, 0, world, x, y, z); dans le bloc, puis System.out.println(“test 2”); au dessus de return new GuiBlockFour((TileEntityFour)tile, player.inventory); dans le GuiHandler.
        Vas en jeu, fais un clic sur ton bloc et regardes ce que tu as dans la console.

        1 réponse Dernière réponse Répondre Citer 0
        • _ Hors-ligne
          ___Freezer___
          dernière édition par

          Il ne se passe rien dans la console.

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Ajoutes @Override au dessus de la fonction onBlockActivated ?

            1 réponse Dernière réponse Répondre Citer 0
            • _ Hors-ligne
              ___Freezer___
              dernière édition par

              Toujours rien ^^

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Pas d’erreur lorsque tu ajoutes le override ?

                1 réponse Dernière réponse Répondre Citer 0
                • _ Hors-ligne
                  ___Freezer___
                  dernière édition par

                  Non 😕

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Je ne vois pas comment c’est possible o_O

                    1 réponse Dernière réponse Répondre Citer 0
                    • AymericRedA Hors-ligne
                      AymericRed
                      dernière édition par

                      Bizarrre, montres la classe de ton block avec le system.out et le @Override, voir si ils sont bien placés.

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                      1 réponse Dernière réponse Répondre Citer 0
                      • _ Hors-ligne
                        ___Freezer___
                        dernière édition par

                        http://www.noelshack.com/2017-29-1-1500281971-capture3.png

                        1 réponse Dernière réponse Répondre Citer 0
                        • AymericRedA Hors-ligne
                          AymericRed
                          dernière édition par

                          Et le “test” apparaît vraiment aucune fois dans la console quand tu cliques droit sur ton bloc ?

                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                          1 réponse Dernière réponse Répondre Citer 0
                          • _ Hors-ligne
                            ___Freezer___
                            dernière édition par

                            Non, il n’y a rien

                            1 réponse Dernière réponse Répondre Citer 0
                            • DeletedD Hors-ligne
                              Deleted
                              dernière édition par

                              Dans ta classe principale, à la déclaration de ton block, tu fais un new BlocksMod, alors que depuis le début tu nous montres ta classe BlockFour, donc erreur très bête.

                              1 réponse Dernière réponse Répondre Citer 0
                              • _ Hors-ligne
                                ___Freezer___
                                dernière édition par

                                Ok merci c’est bon mais après l’avoir ouvert mon jeu  crash et maintenant, je ne peux plus lancer mon monde.

                                Crash report :

                                [16:35:37] [Server thread/INFO]: Starting integrated minecraft server version 1.7.10
                                [16:35:37] [Server thread/INFO]: Generating keypair
                                [16:35:37] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance
                                [16:35:37] [Server thread/INFO] [FML]: Applying holder lookups
                                [16:35:37] [Server thread/INFO] [FML]: Holder lookups applied
                                [16:35:37] [Server thread/INFO] [FML]: Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@6034c282)
                                [16:35:37] [Server thread/INFO] [FML]: Loading dimension 1 (New World) (net.minecraft.server.integrated.IntegratedServer@6034c282)
                                [16:35:37] [Server thread/INFO] [FML]: Loading dimension -1 (New World) (net.minecraft.server.integrated.IntegratedServer@6034c282)
                                [16:35:37] [Server thread/INFO]: Preparing start region for level 0
                                [16:35:38] [Server thread/INFO]: Changing view distance to 12, from 10
                                [16:35:38] [Server thread/ERROR]: Encountered an unexpected exception
                                net.minecraft.util.ReportedException: Ticking block entity
                                at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:709) ~[MinecraftServer.class:?]
                                at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
                                at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
                                at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
                                at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
                                Caused by: java.lang.NullPointerException
                                at Package1.common.FourTotal.BlockFourRecipes.isSameKey(BlockFourRecipes.java:73) ~[BlockFourRecipes.class:?]
                                at Package1.common.FourTotal.BlockFourRecipes.getSmeltingResult(BlockFourRecipes.java:63) ~[BlockFourRecipes.class:?]
                                at Package1.common.FourTotal.TileEntityFour.smeltItem(TileEntityFour.java:213) ~[TileEntityFour.class:?]
                                at Package1.common.FourTotal.TileEntityFour.updateEntity(TileEntityFour.java:200) ~[TileEntityFour.class:?]
                                at net.minecraft.world.World.updateEntities(World.java:2160) ~[World.class:?]
                                at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515) ~[WorldServer.class:?]
                                at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703) ~[MinecraftServer.class:?]
                                … 4 more
                                [16:35:38] [Server thread/ERROR]: This crash report has been saved to: D:\BUREAU\FREEZER-regroupement de dossiers\Codage\Mods\Forge 1.7.10\eclipse\.\crash-reports\crash-2017-07-17_16.35.38-server.txt
                                [16:35:38] [Server thread/INFO]: Stopping server
                                [16:35:38] [Server thread/INFO]: Saving players
                                [16:35:38] [Server thread/INFO]: Saving worlds
                                [16:35:38] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld
                                [16:35:38] [Server thread/INFO]: Saving chunks for level 'New World'/Nether
                                [16:35:38] [Server thread/INFO]: Saving chunks for level 'New World'/The End
                                [16:35:38] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: –-- Minecraft Crash Report ----
                                // On the bright side, I bought you a teddy bear!
                                
                                Time: 17/07/17 16:35
                                Description: Ticking block entity
                                
                                java.lang.NullPointerException: Ticking block entity
                                at Package1.common.FourTotal.BlockFourRecipes.isSameKey(BlockFourRecipes.java:73)
                                at Package1.common.FourTotal.BlockFourRecipes.getSmeltingResult(BlockFourRecipes.java:63)
                                at Package1.common.FourTotal.TileEntityFour.smeltItem(TileEntityFour.java:213)
                                at Package1.common.FourTotal.TileEntityFour.updateEntity(TileEntityFour.java:200)
                                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 Package1.common.FourTotal.BlockFourRecipes.isSameKey(BlockFourRecipes.java:73)
                                at Package1.common.FourTotal.BlockFourRecipes.getSmeltingResult(BlockFourRecipes.java:63)
                                at Package1.common.FourTotal.TileEntityFour.smeltItem(TileEntityFour.java:213)
                                at Package1.common.FourTotal.TileEntityFour.updateEntity(TileEntityFour.java:200)
                                
                                -- Block entity being ticked --
                                Details:
                                Name: compleatcraft:FourTileEntity // Package1.common.FourTotal.TileEntityFour
                                Block type: ID #177 (tile.BlockFour // Package1.common.FourTotal.BlockFour)
                                Block data value: 0 / 0x0 / 0b0000
                                Block location: World: (-206,67,152), Chunk: (at 2,4,8 in -13,9; contains blocks -208,0,144 to -193,255,159), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
                                Actual block type: ID #177 (tile.BlockFour // Package1.common.FourTotal.BlockFour)
                                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: New World
                                All players: 0 total; []
                                Chunk stats: ServerChunkCache: 625 Drop: 0
                                Level seed: -8957039999929459700
                                Level generator: ID 00 - default, ver 1\. Features enabled: true
                                Level generator options:
                                Level spawn location: World: (-196,64,148), Chunk: (at 12,4,4 in -13,9; contains blocks -208,0,144 to -193,255,159), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
                                Level time: 221841 game time, 18584 day time
                                Level dimension: 0
                                Level storage version: 0x04ABD - Anvil
                                Level weather: Rain time: 21306 (now: true), thunder time: 153946 (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 (amd64) version 10.0
                                Java Version: 1.8.0_131, Oracle Corporation
                                Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
                                Memory: 919065176 bytes (876 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: 12, tallocated: 94
                                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 compleatcraft{1.0.0} [Compleat Craft] (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'
                                [16:35:38] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:393]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2017-07-17_16.35.38-server.txt
                                [16:35:38] [Client thread/INFO] [FML]: Waiting for the server to terminate/save.
                                [16:35:39] [Server thread/INFO] [FML]: Unloading dimension 0
                                [16:35:39] [Server thread/INFO] [FML]: Unloading dimension -1
                                [16:35:39] [Server thread/INFO] [FML]: Unloading dimension 1
                                [16:35:39] [Server thread/INFO] [FML]: Applying holder lookups
                                [16:35:39] [Server thread/INFO] [FML]: Holder lookups applied
                                [16:35:39] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded.
                                [16:35:39] [Client thread/INFO] [FML]: Server terminated.
                                AL lib: (EE) alc_cleanup: 1 device not closed
                                Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
                                
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • DeletedD Hors-ligne
                                  Deleted
                                  dernière édition par

                                  BlockFourRecipes.java:73 ?

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • _ Hors-ligne
                                    ___Freezer___
                                    dernière édition par

                                    pour l’erreur 1 :
                                    http://www.noelshack.com/2017-29-1-1500302613-capture.png

                                    pour l’erreur 2 :
                                    http://www.noelshack.com/2017-29-1-1500302621-capture1.png

                                    pour l’erreur 3 :
                                    http://www.noelshack.com/2017-29-1-1500302625-capture2.png

                                    et pour l’erreur 4 :
                                    http://www.noelshack.com/2017-29-1-1500302627-capture3.png

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • DeletedD Hors-ligne
                                      Deleted
                                      dernière édition par

                                      File ta classe entièrement, on gagnera en efficacité/compréhension.
                                      Tu devrais sûrement rajouter un null-check de stackList*, avant d’appeler dessus un .getItem()

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • _ Hors-ligne
                                        ___Freezer___
                                        dernière édition par

                                        BlockFourRecipes :

                                        package Package1.common.FourTotal;
                                        
                                        import java.util.HashMap;
                                        import java.util.Iterator;
                                        import java.util.Map;
                                        import java.util.Map.Entry;
                                        
                                        import net.minecraft.block.Block;
                                        import net.minecraft.init.Blocks;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.Item;
                                        import net.minecraft.item.ItemStack;
                                        
                                        public class BlockFourRecipes {
                                        
                                        private static final BlockFourRecipes smeltingBase = new BlockFourRecipes();
                                        private Map smeltingList = new HashMap();
                                        
                                        public BlockFourRecipes()
                                        {
                                        this.addRecipe(Items.apple, Items.apple, Items.arrow, new ItemStack(Blocks.diamond_block));
                                        }
                                        
                                        public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4)
                                        {
                                        ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3};
                                        this.smeltingList.put(stackList, stack4);
                                        }
                                        
                                               public void addRecipe(Item item1, Item item2, Item item3, ItemStack stack) //1er cas
                                        {
                                        this.addRecipe(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), stack);
                                        }
                                        
                                        public void addRecipe(Block block1, Item item2, Item item3, ItemStack stack) //2nd cas
                                        {
                                        this.addRecipe(Item.getItemFromBlock(block1), item2, item3, stack);
                                        }
                                        
                                        public void addRecipe(Block block1, Block block2, Item item3, ItemStack stack) //3ème cas
                                        {
                                        this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), item3, stack);
                                        }
                                        
                                        public void addRecipe(Block block1, Block block2, Block block3, ItemStack stack) //4ème cas
                                        {
                                        this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), Item.getItemFromBlock(block3), stack);
                                        }
                                        
                                        public ItemStack getSmeltingResult(ItemStack[] stack)
                                        {
                                            Iterator iterator = this.smeltingList.entrySet().iterator();
                                            Entry entry;
                                        
                                            do
                                            {
                                                if (!iterator.hasNext())
                                                {
                                                    return null;
                                                }
                                                  entry = (Entry)iterator.next();
                                              }
                                              while (!this.isSameKey(stack, (ItemStack[])entry.getKey()));
                                        
                                              return (ItemStack)entry.getValue();
                                         }
                                        
                                        private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
                                        {
                                        boolean isSame = false;
                                        for(int i=0; i<=2; i++)
                                        {
                                        if(stackList*.getItem() == stackList2*.getItem())
                                        {
                                        isSame = true;
                                        }
                                        else
                                        {
                                        return false;
                                        }
                                        }
                                        return isSame;
                                        }
                                        
                                        public Map getSmeltingList()
                                        {
                                              return this.smeltingList;
                                           }
                                        
                                        public static BlockFourRecipes smelting()
                                        {
                                        return smeltingBase;
                                        }
                                        }
                                        
                                        

                                        TileEntityFour:

                                        package Package1.common.FourTotal;
                                        
                                        import cpw.mods.fml.relauncher.Side;
                                        import cpw.mods.fml.relauncher.SideOnly;
                                        import net.minecraft.entity.player.EntityPlayer;
                                        import net.minecraft.inventory.IInventory;
                                        import net.minecraft.item.ItemStack;
                                        import net.minecraft.nbt.NBTTagCompound;
                                        import net.minecraft.nbt.NBTTagList;
                                        import net.minecraft.tileentity.TileEntity;
                                        
                                        public class TileEntityFour extends TileEntity implements IInventory{
                                        
                                        private ItemStack[] contents = new ItemStack[4];
                                        private int workingTime = 0;
                                        private int workingTimeNeeded = 200;
                                        
                                        @Override
                                           public void writeToNBT(NBTTagCompound compound)
                                           {
                                               super.writeToNBT(compound);
                                               NBTTagList nbttaglist = new NBTTagList();
                                        
                                               for (int i = 0; i < this.contents.length; ++i) //pour les slots
                                               {
                                                   if (this.contents* != null)
                                                   {
                                                       NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                                                       nbttagcompound1.setByte("Slot", (byte)i);
                                                       this.contents*.writeToNBT(nbttagcompound1);
                                                       nbttaglist.appendTag(nbttagcompound1);
                                                   }
                                               }
                                        
                                               compound.setTag("Items", nbttaglist);
                                               compound.setShort("workingTime",(short)this.workingTime); //On les enregistrent en short
                                               compound.setShort("workingTimeNeeded", (short)this.workingTimeNeeded);
                                           }
                                        
                                        @Override
                                           public void readFromNBT(NBTTagCompound compound)
                                           {
                                               super.readFromNBT(compound);
                                        
                                               NBTTagList nbttaglist = compound.getTagList("Items", 10);
                                               this.contents = new ItemStack[this.getSizeInventory()];
                                        
                                               for (int i = 0; i < nbttaglist.tagCount(); ++i) //Encore une fois pour les slots
                                               {
                                                   NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                                                   int j = nbttagcompound1.getByte("Slot") & 255;
                                        
                                                   if (j >= 0 && j < this.contents.length)
                                                   {
                                                       this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                                                   }
                                               }
                                        
                                               this.workingTime = compound.getShort("workingTime"); //On lit nos valeurs
                                               this.workingTimeNeeded = compound.getShort("workingTimeNeeded");
                                           }
                                        
                                        @Override
                                        public int getSizeInventory() {
                                        return this.contents.length;
                                        }
                                        
                                        @Override
                                        public ItemStack getStackInSlot(int slotIndex) {
                                        return this.contents[slotIndex];
                                        }
                                        
                                        @Override
                                        public ItemStack decrStackSize(int slotIndex, int amount) {
                                        if (this.contents[slotIndex] != null)
                                               {
                                                   ItemStack itemstack;
                                        
                                                   if (this.contents[slotIndex].stackSize <= amount)
                                                   {
                                                       itemstack = this.contents[slotIndex];
                                                       this.contents[slotIndex] = null;
                                                       this.markDirty();
                                                       return itemstack;
                                                   }
                                                   else
                                                   {
                                                       itemstack = this.contents[slotIndex].splitStack(amount);
                                        
                                                       if (this.contents[slotIndex].stackSize == 0)
                                                       {
                                                           this.contents[slotIndex] = null;
                                                       }
                                        
                                                       this.markDirty();
                                                       return itemstack;
                                                   }
                                               }
                                               else
                                               {
                                                   return null;
                                               }
                                        }
                                        
                                        @Override
                                        public ItemStack getStackInSlotOnClosing(int slotIndex) {
                                        if (this.contents[slotIndex] != null)
                                               {
                                                   ItemStack itemstack = this.contents[slotIndex];
                                                   this.contents[slotIndex] = null;
                                                   return itemstack;
                                               }
                                               else
                                               {
                                                   return null;
                                               }
                                        }
                                        
                                        @Override
                                        public void setInventorySlotContents(int slotIndex, ItemStack stack) {
                                        this.contents[slotIndex] = stack;
                                        
                                               if (stack != null && stack.stackSize > this.getInventoryStackLimit())
                                               {
                                                   stack.stackSize = this.getInventoryStackLimit();
                                               }
                                        
                                               this.markDirty();
                                        }
                                        
                                        @Override
                                        public String getInventoryName() {
                                        return "tile.BlockFour";
                                        }
                                        
                                        @Override
                                        public boolean hasCustomInventoryName() {
                                        return false;
                                        }
                                        
                                        @Override
                                        public int getInventoryStackLimit() {
                                        return 64;
                                        }
                                        
                                        @Override
                                        public boolean isUseableByPlayer(EntityPlayer player) {
                                        return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
                                        }
                                        
                                        @Override
                                        public void openInventory() {
                                        
                                        }
                                        
                                        @Override
                                        public void closeInventory() {
                                        
                                        }
                                        
                                        @Override
                                        public boolean isItemValidForSlot(int slot, ItemStack stack) {
                                        return slot == 3 ? false : true;
                                        }
                                        
                                        public boolean isBurning()
                                           {
                                               return this.workingTime > 0;
                                           }
                                        
                                        private boolean canSmelt()
                                           {
                                               if (this.contents[0] == null || this.contents[1] == null || this.contents[2] == null)
                                               {
                                                   return true;
                                               }
                                               else
                                               {
                                                   ItemStack itemstack = BlockFourRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]}); //Il y a une erreur ici, c'est normal, on y vient après (c'est pour les recettes)
                                                   if (itemstack == null) return false;
                                                   if (this.contents[3] == null) return true;
                                                   if (!this.contents[3].isItemEqual(itemstack)) return false;
                                                   int result = contents[3].stackSize + itemstack.stackSize;
                                                   return result <= getInventoryStackLimit() && result <= this.contents[3].getMaxStackSize();
                                               }
                                           }
                                        
                                        public void updateEntity()
                                           {
                                            if(this.isBurning() && this.canSmelt())
                                            {
                                            ++this.workingTime;
                                            }
                                            if(this.canSmelt() && !this.isBurning())
                                            {
                                            this.workingTime = 1;
                                            }
                                            if(this.canSmelt() && this.workingTime == this.workingTimeNeeded)
                                            {
                                            this.smeltItem();
                                            this.workingTime = 0;
                                            }
                                               if(!this.canSmelt())
                                               {
                                                      this.workingTime= 0;
                                               }
                                           }
                                        
                                        public void smeltItem()
                                           {
                                               if (this.canSmelt())
                                               {
                                                   ItemStack itemstack = BlockFourRecipes.smelting().getSmeltingResult(new ItemStack[]{this.contents[0], this.contents[1], this.contents[2]});
                                                    if (this.contents[3] == null)
                                                    {
                                                         this.contents[3] = itemstack.copy();
                                                    }
                                                    else if (this.contents[3].getItem() == itemstack.getItem())
                                                    {
                                                         this.contents[3].stackSize += itemstack.stackSize;
                                                    }
                                        
                                                    –this.contents[0].stackSize;
                                                    –this.contents[1].stackSize;
                                                    –this.contents[2].stackSize;
                                        
                                                    if (this.contents[0].stackSize <= 0)
                                                    {
                                                        this.contents[0] = null;
                                                    }
                                                    if (this.contents[1].stackSize <= 0)
                                                    {
                                                        this.contents[1] = null;
                                                    }
                                                    if (this.contents[2].stackSize <= 0)
                                                    {
                                                        this.contents[2] = null;
                                                    }
                                               }
                                           }
                                        @SideOnly(Side.CLIENT)
                                        public int getCookProgress()
                                        {
                                        return this.workingTime * 41 / this.workingTimeNeeded; //41 correspond à la hauteur de la barre de progression car notre barre de progression se déroule de haut en bas
                                        }
                                        }
                                        
                                        1 réponse Dernière réponse Répondre Citer 0
                                        • _ Hors-ligne
                                          ___Freezer___
                                          dernière édition par

                                          ???

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • G Hors-ligne
                                            Games2bk
                                            dernière édition par

                                            Salut juste j’ai un problème j’ai suivi ce tuto (mon mc est en 1.8) en éspérant pouvoir réussir mais j’ai rencontré des erreurs.
                                            J’ai réussi à régler la plupart mais… yen a une qui me bloque.
                                            au niveau de la classe du container j’ai une erreur. :@

                                            Voici mon container et merci de votre réponse.

                                            package com.mod.mod2bk.init;
                                            
                                            import java.util.List;
                                            
                                            import Blocks.TileEntityGeneticMachine;
                                            import net.minecraft.entity.player.EntityPlayer;
                                            import net.minecraft.entity.player.InventoryPlayer;
                                            import net.minecraft.inventory.Container;
                                            import net.minecraft.inventory.Slot;
                                            import net.minecraft.world.World;
                                            
                                            public class ContainerGeneticMachine extends Container
                                            {
                                            
                                               private final TileEntityGeneticMachine tileGM;
                                            
                                               public ContainerGeneticMachine(TileEntityGeneticMachine tile, InventoryPlayer inventory)
                                               {
                                                   this.tileGM = tile;
                                            
                                                   tile.openInventory(); // c'est à ce niveau là que ya l'erreur.
                                            
                                                  for(int i = 0; i < 3; ++i)
                                                  {
                                                      for(int j = 0; j < 9; ++j)
                                                      {
                                                          this.addSlotToContainer(new Slot(tile, j + i * 9, 8 + j * 18, 18 + i * 18));
                                            
                                                      }
                                                  }
                                                  this.bindPlayerInventory(inventory);
                                               }
                                            
                                               @Override
                                               public boolean canInteractWith(EntityPlayer playerIn)
                                               {
                                                   return false;
                                               }
                                            }
                                            
                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 5 / 7
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB