Résolu Minecraft Frame Undecorated
-
J’avais justement cherché pour PlayerEvent mais je n’avais pas importé le bon, fait attention d’importer celui de fml.
@SubscribeEvent public void onPlayerDisconnect(PlayerEvent.PlayerLoggedOutEvent event) {}
-
toujours pas mon print ne s affiche pas =(
code:package virusz.event; import net.minecraft.entity.player.EntityPlayer; import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent; public class DisconnectEvent { @SubscribeEvent public void onPlayerDisconnect(PlayerEvent.PlayerLoggedOutEvent e) { System.out.println("jfgdlkjgkdhghdiusnuhgfihsdiuhghdfhdfgihiufgdsquighui"); } }
-
Renvoi ton code
-
Il faut enregistrer l’event avec fml. De plus PlayerLoggedOutEvent est un event serveur seulement.
-
player.sendChatMessage((new StringBuilder()).append(“/tacommande”).toString());
par contre ca ca fonctionne pas pour exécuter ma commande de banle serveur plante quad il exécute cette ligne
-
Crash-report ?
-
:::
–-- Minecraft Crash Report ---- // I feel sad now :( Time: 20/09/15 21:51 Description: Exception in server tick loop java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft at virusz.event.DisconnectEvent.onPlayerDisconnect(DisconnectEvent.java:19) at cpw.mods.fml.common.eventhandler.ASMEventHandler_44_DisconnectEvent_onPlayerDisconnect_PlayerLoggedOutEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) at cpw.mods.fml.common.FMLCommonHandler.firePlayerLoggedOut(FMLCommonHandler.java:555) at net.minecraft.server.management.ServerConfigurationManager.playerLoggedOut(ServerConfigurationManager.java:332) at net.minecraft.network.NetHandlerPlayServer.onDisconnect(NetHandlerPlayServer.java:673) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:175) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) Caused by: java.lang.ClassNotFoundException: net.minecraft.client.Minecraft at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 13 more Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/Minecraft for invalid side SERVER at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:50) at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ... 15 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.8.0_45, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 952838680 bytes (908 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 7, tcache: 0, allocated: 13, tallocated: 95 FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 7 mods loaded, 7 mods active mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available flansmod{@VERSION@} [Flan's Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available MapWriter{2.1.1} [MapWriter] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available craftguide{@MOD_VERSION@} [CraftGuide] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available VirusZ{beta-0.1} [VirusZ] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 2 / 20; [EntityPlayerMP['Devils44'/15, l='world', x=48,06, y=64,00, z=-202,67], EntityPlayerMP['KeYriN'/16, l='world', x=48,02, y=64,00, z=-200,36]] Is Modded: Definitely; Server brand changed to 'fml,forge' Type: Dedicated Server (map_server.txt)
:::
code:
package virusz.event; import virusz.core.ExtendedPlayer; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent; public class DisconnectEvent { @SubscribeEvent public void onPlayerDisconnect(PlayerEvent.PlayerLoggedOutEvent e) { EntityPlayer player =(EntityPlayer)e.player; if (ExtendedPlayer.get(player).getCombatState() == true){ Minecraft.getMinecraft().thePlayer.sendChatMessage(((new StringBuilder()).append("/ban " + Minecraft.getMinecraft().getSession().getUsername())).toString())); } } }
-
Il faut vérifier si le Side est bien Client, sinon il t’indiquera que le serveur n’a pas trouvé la classe Minecraft, ce qui est logique
@SubscribeEvent public void onPlayerDisconnect(PlayerEvent.PlayerLoggedOutEvent e) { EntityPlayer player =(EntityPlayer)e.player; if (ExtendedPlayer.get(player).getCombatState() == true && world.isRemote){ Minecraft.getMinecraft().thePlayer.sendChatMessage(((new StringBuilder()).append("/ban " + Minecraft.getMinecraft().getSession().getUsername())).toString())); } }
-
Ouais mais il faut exécuter la commande en tant qu’op sinon…
-
Ouep ou alors ne passe pas par des commandes, et crées toi même ta méthode ban
-
world.isRemote peut pas fonctionner ici ou est-ce que je chope mon instance de world?
pour la commande en op je vois pas comment faire -
C’est pourtant évident…
player.worldObj -
la commande ne s’execute pas et aucun message d’erreur
-
Débug
System.out.println(player.worldObj.isRemote);Si la console te renvoie que des false, c’est que l’event n’est appelé que côté Server, et ça ne m’étonnerait pas. La déconnexion et connexion d’un joueur m’aurait étonné si le Client avait à voir là-dedans. Dans ce cas tu vas devoir envoyer des packets
-
Les packet c’est ma hantise et apparemment va falloir que j’utilise des packet……
-
C’est ce que je pensais un début et maintenant je trouve ça vraiment simple. Va voir le tuto de Blackout sur le sujet.
-
Perso j ai une préférence pour celui de robin sur Youtube =p
-
j’ai déjà lu les 2 tuto et ça me refile toujours des boutons je vais essayer mais je doit avouer que je m’arrange a chaque fois pour contourner l’utilisation de packet mais la même en réfléchissant je vais être obliger de galérer comme quand j’ai créé mon extendPlayerProperties souhaitez moi bonne chance vais en avoir besoins
-
Celui de robin est bien mais j’ai mieux compris avec celui de Blackout mais bon chacun apprend à sa manière.
-
@‘robin4002’:
Il faut enregistrer l’event avec fml. De plus PlayerLoggedOutEvent est un event serveur seulement.
Heureusement que je l’ai dit …
De plus ce que tu fais n’est pas du tout bon. Comme tu es déjà côté serveur pas besoin de commande ou de paquet, tu peux directement faire d’action … Et même comme ça ce n’est toujours pas bon, PlayerLoggedOutEvent est déclenché lorsque le joueur déconnecte. Par contre lorsqu’on coupe de force ou perd la connexion il me semble qu’il n’est pas déclenché. Donc là tu vas bannir ceux qui coupent le jeu normalement x).
Il faudrait plutôt avoir une liste de joueur et vérifier à chaque tick le nombre de joueur co en prenant en compte PlayerLoggedOutEvent et PlayerLoggedInEvent (pas mal de chose à prendre en compte du-coup, il faudrait un event de tick + PlayerLoggedOutEvent + PlayerLoggedInEvent).
Et puis même avec ça tu vas bannir les joueurs qui ont perdu la connexion. Le pauvre, sanctionné car sa box internet a planté ou que le wifi a rencontré un petit problème … (ou même une coupure de courant).Il faudrait donc imaginer un autre moyen pour éviter que les joueurs déco en pleins pvp.
Quelque chose de complexe à mettre en place mais qui pourrait fonctionner : lorsqu’un joueur prend des dégâts tu l’ajoutes à une liste. Au bout de 5 secondes tu le retires de cette liste. Si avant ces 5 secondes le joueur n’est plus sur le serveur, (il faudrait vérifier toutes les secondes pour que cela soit efficace sans être trop lourd), tu l’ajoutes dans une liste. À sa reconnexion (PlayerLoggedInEvent) si le joueur est dans cette liste tu le kill directement.
Ça reste un peu injuste pour un joueur qui perd la connexion, mais moins qu’un bann ^^