Problème avec un item sous spongeforge



  • Bonjours j'ai actuellement un problème avec un item qui permet d’ouvrir des coffre il fonctionne très bien mais le petit hic
    sais que sous serveur spongeforge 1.11.2 l'item fonctionne mais le gui lui ce ferme automatiquement des que je Click sur le coffre que je veux ouvrir avec mon item.
    la classe de l'item en question

    
    import com.fury.tts.test;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityChest;
    import net.minecraft.util.ActionResult;
    import net.minecraft.util.EnumActionResult;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.util.EnumHand;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    public class ChestOpen extends Item {
    
    public ChestOpen() {
    setMaxStackSize(1);
    }
    /*@Override
        public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
        {
    if (!world.isRemote) {
    TileEntity tile = world.getTileEntity(pos);
    System.out.println(tile); //renvoie toujours null
    
    if (tile == null) {
    return EnumActionResult.PASS;
    }
    if(tile instanceof TileEntityChest) {
    System.out.println("on lance le gui");
    player.openGui(Main.instance, 0, world, pos.getX(), pos.getY(), pos.getZ());
    return EnumActionResult.FAIL;
    }
    }
    return EnumActionResult.PASS;
        }*/
    }
    
    

    ma class EventPlayerUseItem

    
    import com.fury.tts.test;
    import com.fury.tts.init.ModItems;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.inventory.GuiChest;
    import net.minecraft.client.gui.inventory.GuiContainer;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.inventory.EntityEquipmentSlot;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    import net.minecraftforge.client.event.GuiOpenEvent;
    import net.minecraftforge.event.entity.player.PlayerInteractEvent;
    import net.minecraftforge.fml.common.eventhandler.EventPriority;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    public class EventPlayerUseItem {
    
    @SubscribeEvent
    public void onRightClick(PlayerInteractEvent.RightClickBlock event) {
    
        if (event.getEntityPlayer().getItemStackFromSlot(EntityEquipmentSlot.MAINHAND).getItem() == ModItems.chestOpen) {
            if (event.getWorld().getTileEntity(event.getPos()) != null) {
                event.setCanceled(true);
                event.getEntityPlayer().openGui(eminent57pvpmods.instance, 0, event.getWorld(), event.getPos().getX(), event.getPos().getY(), event.getPos().getZ());
            }
        }
    }}
    
    

    je sais pas comment régler ce pépin avec sponge.



  • Bonjour,

    Pourquoi tu as commenté le code que tu as fait dans ton Item ? A part deux problèmes il était bon ^^
    Evites d'utiliser une event pour un item dont tu peux modifier le code.
    Voici ce que ta fonction onItemUse devrait être :

    @Override
    public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
    if (!world.isRemote) {
    TileEntity tile = world.getTileEntity(pos);
    
    if(tile instanceof TileEntityChest) {
    System.out.println("on lance le gui");
    player.openGui(Main.instance, 0, world, pos.getX(), pos.getY(), pos.getZ());
    return EnumActionResult.SUCCESS;
    }
    }
    return EnumActionResult.PASS;
    }
    


  • Ça fait encore et ce passe avec spongeforge seulement .