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 questionimport 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 .