1.12.2 Problèmes compatibilité ? avec 2 TileEntities [1.12.2]


  • Moddeurs confirmés

    Bonjour à tous et à toutes,

    J'ai un soucis assez embêtant :
    Quand j'essaye d'ouvrir mon coffre custom, tout se passe bien, mais quand je veux ouvrir mon four custom, j'ai le droit à une jolie erreur :

    [19:48:41] [Server thread/FATAL] [minecraft/MinecraftServer]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.ClassCastException: fr.flowarg.gunsofchickens.blocks.tileentities.TileEntityChickenFurnace cannot be cast to fr.flowarg.gunsofchickens.blocks.tileentities.TileEntityChickenChest
    	at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_221]
    	at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_221]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?]
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_221]
    Caused by: java.lang.ClassCastException: fr.flowarg.gunsofchickens.blocks.tileentities.TileEntityChickenFurnace cannot be cast to fr.flowarg.gunsofchickens.blocks.tileentities.TileEntityChickenChest
    	at fr.flowarg.gunsofchickens.utils.handlers.GUIHandler.getServerGuiElement(GUIHandler.java:20) ~[GUIHandler.class:?]
    	at net.minecraftforge.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:253) ~[NetworkRegistry.class:?]
    	at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?]
    	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2809) ~[EntityPlayer.class:?]
    	at fr.flowarg.gunsofchickens.blocks.machines.chickenfurnace.ChickenFurnace.onBlockActivated(ChickenFurnace.java:59) ~[ChickenFurnace.class:?]
    	at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:475) ~[PlayerInteractionManager.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:769) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?]
    	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_221]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_221]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    

    (j'avais regardé un topic sur ce forum mais le soucis ne venait pas de la et était un peu différent).

    Mais, quand j'échange je passe de :

    public class GUIHandler implements IGuiHandler
    {
        @Override
        public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
        {
            if (ID == ConfigHandler.GUI_CHICKEN_CHEST) return new ContainerChickenChest(player.inventory, (TileEntityChickenChest)world.getTileEntity(new BlockPos(x, y, z)));
            if (ID == ConfigHandler.GUI_CHICKEN_FURNACE) return new ContainerChickenFurnace(player.inventory, (TileEntityChickenFurnace)world.getTileEntity(new BlockPos(x, y, z)));
            return null;
        }
    
        @Override
        public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
        {
            if (ID == ConfigHandler.GUI_CHICKEN_CHEST) return new GUIChickenChest(player.inventory, (TileEntityChickenChest)world.getTileEntity(new BlockPos(x, y, z)));
            if (ID == ConfigHandler.GUI_CHICKEN_FURNACE) return new GUIChickenFurnace(player.inventory, (TileEntityChickenFurnace)world.getTileEntity(new BlockPos(x, y, z)));
            return null;
        }
    }
    

    à :

    public class GUIHandler implements IGuiHandler
    {
        @Override
        public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
        {
            if (ID == ConfigHandler.GUI_CHICKEN_FURNACE) return new ContainerChickenFurnace(player.inventory, (TileEntityChickenFurnace)world.getTileEntity(new BlockPos(x, y, z)));
            if (ID == ConfigHandler.GUI_CHICKEN_CHEST) return new ContainerChickenChest(player.inventory, (TileEntityChickenChest)world.getTileEntity(new BlockPos(x, y, z)));
            return null;
        }
    
        @Override
        public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
        {
            if (ID == ConfigHandler.GUI_CHICKEN_FURNACE) return new GUIChickenFurnace(player.inventory, (TileEntityChickenFurnace)world.getTileEntity(new BlockPos(x, y, z)));
            if (ID == ConfigHandler.GUI_CHICKEN_CHEST) return new GUIChickenChest(player.inventory, (TileEntityChickenChest)world.getTileEntity(new BlockPos(x, y, z)));
            return null;
        }
    }
    

    L'erreur s'inverse, c'est maintenant le coffre qui ne fonctionne plus et le four qui fonctionne !!! Je ne sais que penser, voici tout de même les classes des 2 te.
    https://pastebin.com/CJZr2Zbm
    https://pastebin.com/gEiwsXsF

    En espérant qu'il y est une solution, merci d'avance 🙂 !

    Flow


  • Moddeurs confirmés

    En fait, je suis un gros débile, dans mon fichier de configuration, les ids sont modifibales, et les id par défauts... étaient les mêmes 🤦 !

    Merci tout de même pour tes réponses ! A l'avenir, je ferais plus attention 😉 !

    Flow


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonsoir,

    Tu as surement mis le même id dans les fonctions openGui des blocs.
    Après l'idéal c'est de vérifier par rapport au tile entity.


  • Moddeurs confirmés

    @robin4002 Salut, merci pour cette réponse rapide 😉

    Tu parles de ceci :

        @Override
        public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
        {
            if (!worldIn.isRemote)
            {
                playerIn.openGui(Main.instance, ConfigHandler.GUI_CHICKEN_FURNACE, worldIn, pos.getX(), pos.getY(), pos.getZ());
            }
    
            return true;
        }
    

    ?
    Si c'est ça, elles sont bien différentes et les ID sont de 1 et 2.

    Flow 🙂


  • Moddeurs confirmés

    En fait, je suis un gros débile, dans mon fichier de configuration, les ids sont modifibales, et les id par défauts... étaient les mêmes 🤦 !

    Merci tout de même pour tes réponses ! A l'avenir, je ferais plus attention 😉 !

    Flow


Log in to reply