Résolu PlayerInteractEvent
-
Salut tout le monde,
comme annoncé dans la section bla-bla je fais un mod DayZ, et pour cela je me sers de playerInteractEvent, cependant je me heurte à un problème:@ForgeSubscribe public void BlackListBlockPlacer(PlayerInteractEvent event) { ArrayList BlackListPlace = new ArrayList(); BlackListPlace.add(Block.anvil.blockID); BlackListPlace.add(Block.beacon.blockID); BlackListPlace.add(Block.bookShelf.blockID); BlackListPlace.add(Block.cake.blockID); BlackListPlace.add(Block.cocoaPlant.blockID); BlackListPlace.add(Block.cactus.blockID); BlackListPlace.add(Block.enchantmentTable.blockID); BlackListPlace.add(Block.furnaceIdle.blockID); BlackListPlace.add(Block.jukebox.blockID); BlackListPlace.add(Block.ladder.blockID); BlackListPlace.add(Block.workbench.blockID); BlackListPlace.add(Item.dyePowder.itemID); BlackListPlace.add(Item.hoeDiamond.itemID); BlackListPlace.add(Item.hoeGold.itemID); BlackListPlace.add(Item.hoeIron.itemID); BlackListPlace.add(Item.hoeStone.itemID); BlackListPlace.add(Item.hoeWood.itemID); BlackListPlace.add(Item.shears.itemID); BlackListPlace.add(SurvivalZ.groundChest.blockID); System.out.println(event.entityPlayer.worldObj.getBlockId(event.x, event.y, event.z)); if(!BlackListPlace.contains(event.entityPlayer.worldObj.getBlockId(event.x, event.y, event.z))) { if(event.action == Action.RIGHT_CLICK_AIR || event.action == Action.RIGHT_CLICK_BLOCK) { if(event.entityPlayer.inventory.getCurrentItem() != null && !(BlackListPlace.contains(event.entityPlayer.inventory.getCurrentItem().getItem().itemID))) { event.setCanceled(true); } } } }
quand je clic droit pour poser un bloc par exemple, j’obtient ça en console:
2014-08-19 18:00:59 [INFOS] [STDOUT] 0
2014-08-19 18:01:00 [INFOS] [STDOUT] 2
2014-08-19 18:01:00 [INFOS] [STDOUT] 0et non pas seulement 2… ce qui fait que ma condition ne marche pas correctement.
-
L’event PlayerInteractEvent c’est pour savoir quand tu clique sur un bloc, pas pour savoir quand tu en poses un
-
j’ai pas vu d’event pour la pose de bloc, y’en a pour quand on en casse mais pour quand on en pose ya que celui la.
-
Oui … Exact Sur MC Forum, les personnes disaient de faire avec un “event.action == Action.RIGHT_CLICK_BLOCK”, dommage que forge n’a pas autant d’events que bukkit
-
le truc c’est que si j’ai un bloc dans la main qui ne soit pas un bloc de la liste et que je clic droit sur un coffres avec bah le coffre s’ouvre pas, pareillement je peux pas équiper d’armure avec clic droit ou utiliser la hoe
Edit: J’ai remarqué que même ainsi un sneak + right clik permet de poser des blocs, une solution?
-
Pour récupérer l’item dans ta main ta aussi getCurrentEquippedItem dans EntityPlayer, c’est plus simple.
Pour le sneak+clic droit t’as sans doute une Action “RIGHT_CLICK_SNEAK” un truc comme ça ou sinon tu checks si le joueur ne s’accroupi pas.