16 déc. 2016, 17:02

Bonsoir,

J’ai fais en sorte que quand le joueur casse une porte en fer ça lui supprime un item et lui re give juste après.

J’ai un soucis c’est que event.getPlayer().inventory.getSlotFor(new ItemStack(CSCItems.clef)) pour récupére le slot ou se situe l’item me return tout le temps -1 meme quand je déplace l’item de mon inventaire il me r’envoie tout le temps -1 et donc une érreur dans la console.

J’ai essayer deleteStack ça marche pas…

Je vous passe mon code et le crash qui va avec:


    @SubscribeEvent
    public void onBlockBreak(BlockEvent.BreakEvent event)
    {
    System.out.println(event.getWorld().isRemote);
        if(event.getState().getBlock() == Blocks.IRON_DOOR)
        {
            if(event.getPlayer().inventory.hasItemStack(new ItemStack(CSCItems.clef)))
            {
            System.out.println("");
            event.getPlayer().inventory.removeStackFromSlot(event.getPlayer().inventory.getSlotFor(new ItemStack(CSCItems.clef)));
            event.getPlayer().inventory.addItemStackToInventory(new ItemStack(CSCItems.clef));
            }
        }
    }


false
[18:02:00] [Server thread/INFO] [STDOUT]: [com.CSC.net.Events.Events:onBlockBreak:222]: 
[18:02:00] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.event.world.BlockEvent$BreakEvent@5a7a26:
java.lang.ArrayIndexOutOfBoundsException: -1
at net.minecraft.entity.player.InventoryPlayer.removeStackFromSlot(InventoryPlayer.java:537) ~[InventoryPlayer.class:?]
at com.CSC.net.Events.Events.onBlockBreak(Events.java:223) ~[Events.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_11_Events_onBlockBreak_BreakEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:68) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:159) [EventBus.class:?]
at net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(ForgeHooks.java:708) [ForgeHooks.class:?]
at net.minecraft.server.management.PlayerInteractionManager.tryHarvestBlock(PlayerInteractionManager.java:313) [PlayerInteractionManager.class:?]
at net.minecraft.server.management.PlayerInteractionManager.onBlockClicked(PlayerInteractionManager.java:175) [PlayerInteractionManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:658) [NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.CPacketPlayerDigging.processPacket(CPacketPlayerDigging.java:56) [CPacketPlayerDigging.class:?]
at net.minecraft.network.play.client.CPacketPlayerDigging.processPacket(CPacketPlayerDigging.java:12) [CPacketPlayerDigging.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) [PacketThreadUtil$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_45]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
at net.minecraft.util.Util.runTask(Util.java:25) [Util.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:742) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:687) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:536) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
[18:02:00] [Server thread/ERROR] [FML]: Index: 1 Listeners:
[18:02:00] [Server thread/ERROR] [FML]: 0: NORMAL
[18:02:00] [Server thread/ERROR] [FML]: 1: ASM: com.CSC.net.Events.Events@855523 onBlockBreak(Lnet/minecraftforge/event/world/BlockEvent$BreakEvent;)V
[18:02:00] [Server thread/FATAL]: Error executing task

Merci d’avance.