Résolu Fonction de Packet Server non Appelée
-
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()); } }
-
@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 -
@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