MFF

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

    Fonction de Packet Server non Appelée

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    2 Messages 1 Publieurs 178 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.
    • FeedBackF Hors-ligne
      FeedBack
      dernière édition par

      Bonjour,
      je fais un packet pour vérifier des fichiers côté client vers le serveur.
      La partie client est bien chargée (vérifié via sysout) mais la parties server-side, elle,
      n’est pas appelée.

      public class SyncMods implements IMessage, IMessageHandler<SyncMods, IMessage>
      {
          private List<String> files;
      
          public SyncMods()
          {
              List<String> fileNames = new ArrayList<String>();
      
              File[] filesIn = new File("./mods").listFiles();
      
              for(File file : filesIn)
              {
                  if(file.isFile() && file.getName().endsWith(".txt"))
                      fileNames.add(file.getName());
              }
      
              System.out.println(fileNames);
              
              files = fileNames;
          }
      
          @Override
          public void fromBytes(ByteBuf buf)
          {
              // TODO Auto-generated method stub
              
          }
      
          @Override
          public void toBytes(ByteBuf buf)
          {
              // TODO Auto-generated method stub
              
          }
      
          
          @Override
          public IMessage onMessage(SyncMods message, MessageContext ctx)
          {
              EntityPlayerMP player = ctx.getServerHandler().player;
              
              WorldServer worldServer = player.getServerWorld();
              
              worldServer.addScheduledTask(() -> handle(message, ctx));
              return null;
          }
          
          private void handle(SyncMods message, MessageContext ctx)
          {
              File file = new File(DimensionManager.getCurrentSaveRootDirectory() + "/allowedMods.json");
      
              // Loader.instance().getConfigDir().getParentFile().getPath() + "mods/allowedMods.json";
      
              EntityPlayerMP serverPlayer = ctx.getServerHandler().player;
      
              System.out.println(file.exists());
              if(file.exists())
              {
                  List<String> clientMods = message.files;
      
                  try
                  {
                      FileReader reader = new FileReader(file);
      
                      JSONParser parser = new JSONParser();
      
                      JSONObject fileContent = (JSONObject)parser.parse(reader);
      
                      HashMap<String, Boolean> files = new HashMap<String, Boolean>();
      
                      for(String name : clientMods)
                      {
                          if(fileContent.containsKey(name))
                          {
                              files.put(name, (boolean)((JSONObject)fileContent.get(name)).get("enabled"));
                          }
                          else
                          {
                              files.put(name, false);
                          }
                      }
      
                      if(files.containsValue(false))
                      {
                          int count = 0;
      
                          for(Boolean b : files.values())
                          {
                              if(!b)
                                  count++;
                          }
      
                          System.out.println(serverPlayer.getName() + " tried to connect with " + count + " unauthorized mod(s)");
                      }
                      else
                      {
                          System.out.println(serverPlayer.getName() + " connected without any unauthorized mod(s)");
                      }
                  }
                  catch(IOException e)
                  {
      
                  }
                  catch(ParseException e)
                  {
      
                  }
              }
          }
      
      }
      
      @SideOnly(Side.CLIENT)
          @SubscribeEvent
          public static void checkForMods(ClientConnectedToServerEvent e)
          {                     
              Main.network.sendToServer(new SyncMods());
          }
      
      @Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION)
      public class Main
      {
          @Instance
          public static Main instance;
      
          public static CreativeTabs REDSKYLL_TAB = new TabRedskyll("redskyll");
      
          @SidedProxy(clientSide = Reference.CLIENT, serverSide = Reference.COMMON)
          public static CommonProxy proxy;
      
          public static Logger logger;
      
          public static SimpleNetworkWrapper network;
      
          static
          {
              FluidRegistry.enableUniversalBucket();
          }
      
          @EventHandler
          public static void preInit(FMLPreInitializationEvent e)
          {
              proxy.load();
      
              logger = e.getModLog();
      
              proxy.preInit();
      
              RegistryHandler.preInitRegistries(e);
      
              network = NetworkRegistry.INSTANCE.newSimpleChannel(Reference.MODID);
              network.registerMessage(SyncManaData.Handler.class, SyncManaData.class, 0, Side.CLIENT);
              network.registerMessage(SyncMoneyData.Handler.class, SyncMoneyData.class, 1, Side.CLIENT);
              network.registerMessage(SyncMods.class, SyncMods.class, 2, Side.SERVER);
              network.registerMessage(SyncKeybind.Handler.class, SyncKeybind.class, 3, Side.SERVER);
          }
      
          @EventHandler
          public static void init(FMLInitializationEvent e)
          {
              RegistryHandler.initRegistries(e);
              proxy.registerHandler();
          }
      
          @EventHandler
          public static void postInit(FMLPostInitializationEvent e)
          {
              proxy.postInit();
          }
      
          @EventHandler
          public static void serverInit(FMLServerStartingEvent e)
          {
              /*
               * String dir = DimensionManager.getCurrentSaveRootDirectory() + "/DIM1/";
               * File file = new File(dir);
               * file.deleteOnExit();
               * String dir2 = DimensionManager.getCurrentSaveRootDirectory() + "/DIM2/";
               * File file2 = new File(dir2);
               * file2.deleteOnExit();
               */
      
              e.registerServerCommand(new CommandMoneyGive());
              e.registerServerCommand(new CommandPay());
              e.registerServerCommand(new CommandBuy());
              e.registerServerCommand(new CommandSell());
              e.registerServerCommand(new CommandMoney());
              e.registerServerCommand(new CommandSpawn());
              e.registerServerCommand(new CommandInvsee());
              e.registerServerCommand(new CommandSetHome());
              e.registerServerCommand(new CommandDelHome());
              e.registerServerCommand(new CommandHomeTeleport());
              e.registerServerCommand(new CommandSetWarp());
              e.registerServerCommand(new CommandDelWarp());
              e.registerServerCommand(new CommandWarpTeleport());
              e.registerServerCommand(new CommandEcAdmin());
              e.registerServerCommand(new CommandEc());
              e.registerServerCommand(new CommandTpDim());
              e.registerServerCommand(new CommandNv());
              e.registerServerCommand(new CommandManaGive());
              e.registerServerCommand(new CommandTps());
          }
      }
      
      FeedBackF 1 réponse Dernière réponse Répondre Citer 0
      • FeedBackF Hors-ligne
        FeedBack @FeedBack
        dernière édition par

        @feedback bon, ce problème n’est pas réglable donc j’ai fait un systeme uniquement client side basé sur un fichier sur internet (oui c’est trash).
        Le problème venait que le server n’a pas l’air de pouvoir récupérer le joueur à ce moment là car il n’est pas encore connecté (enfin je crois) ce qui rend impossible l’envoi de packet

        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