MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    PlayerInteractEvent appelé que en client ?!

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    4 Messages 2 Publieurs 905 Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • RedRelayR Hors-ligne
      RedRelay Moddeurs confirmés
      dernière édition par

      Hey 🙂

      Mon event PlayerInteractEvent ne s’éxécute que dans la partie client, c’est assez étrange, je vous envoie le code en question :

      public abstract class Handler {
      public Handler() {
      registerEvent();
      }
      
      public abstract void registerEvent();
      }
      
      
      public class CommonSettlementHandler extends Handler{
      
      @Override
      public void registerEvent() {
      MinecraftForge.EVENT_BUS.register(this);
      }
      
      …
      
      @SubscribeEvent
      public void onPlayerInterract(PlayerInteractEvent event) {
      if(event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
      if(event.entityPlayer.getHeldItem() != null && event.entityPlayer.getHeldItem().getItem() == Item.getItemFromBlock(SettlementsModBlocks.settlementBlock)) {
      event.setCanceled(!playerUseSettlementBlock(event));
      }
      }
      }
      
      protected boolean playerUseSettlementBlock(PlayerInteractEvent event) {
      SettlementZone zone = settlementsManager.getSettlementZone(event.world.provider.dimensionId, event.x/16, event.z/16);
      
      if(zone == null) return false;
      
      Settlement s = settlementsManager.getSettlement(zone);
      
      if(s.isOutflow() && s.isLeader(event.entityPlayer)) {
      s.setOutflow(false);
      return true;
      }
      
      event.entityPlayer.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chat.player.event.createSettlement.tooNear")));
      return false;
      }
      }
      
      public class ClientSettlementHandler extends CommonSettlementHandler {
      
      @Override
      protected boolean playerUseSettlementBlock(PlayerInteractEvent event) {
      if(event.world.isRemote) {
      System.out.println("[CLIENT] : playerUseSettlementBlock");
      return false;
      }else {
      System.out.println("[SERVER] : playerUseSettlementBlock");
      return super.playerUseSettlementBlock(event);
      }
      }
      }
      

      Voila ça ne m’affiche que “[CLIENT] : playerUseSettlementBlock” alors que normalement ça devrait aussi m’afficher “[SERVER] : playerUseSettlementBlock”. Avez vous une idée du pourquoi du comment ? Merci 🙂

      J’ai essayé de mettre le moins de code possible, si il en faut plus pas de soucis.

      –------------------------------------------------------------------------------------
      Si tu trouves mon intervention pertinente, n'hésite pas a m…

      1 réponse Dernière réponse Répondre Citer 0
      • JustPingoJ Hors-ligne
        JustPingo
        dernière édition par

        Je n’ai pas vraiment d’explication, mais essaye peut-être de séparer ta condition finale en deux, histoire de voir si ton isRemote raconte pas de la merde. Et essaye aussi de mettre un log hors de la condition pour être sûr que le serveur passe bien par playerUseSettlementBlock.


        Über Networking Antennas

        1 réponse Dernière réponse Répondre Citer 0
        • RedRelayR Hors-ligne
          RedRelay Moddeurs confirmés
          dernière édition par

          j’ai placer un syso(event.world.isRemote) juste après :
          if(event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK)

          Pareil, il n’y a que true qui s’affiche 😕

          –------------------------------------------------------------------------------------
          Si tu trouves mon intervention pertinente, n'hésite pas a m…

          1 réponse Dernière réponse Répondre Citer 0
          • RedRelayR Hors-ligne
            RedRelay Moddeurs confirmés
            dernière édition par

            J’ai du nouveau :
            Lorsqu’on fait un event.setCancelled(true), les syso (même précédents) ne s’affichent pas coté serveur. En revanche les packets sont bel et bien envoyés. Etrange …

            –------------------------------------------------------------------------------------
            Si tu trouves mon intervention pertinente, n'hésite pas a m…

            1 réponse Dernière réponse Répondre Citer 0
            • 1 / 1
            • Premier message
              Dernier message
            Design by Woryk
            ContactMentions Légales

            MINECRAFT FORGE FRANCE © 2024

            Powered by NodeBB