Détecter le nombres de cliques/seconde
-
Minecraft.getMinecraft().setRenderViewEntity(La personne à espionner); -
Essaie de tester avec tes joueurs dans des zones assez éloignées, voir si les chunks se chargent bien quand tu change de vue.
-
De toute façon c’est un GUI s’ouvre au clic droit sur un joueur donc le chunk sera chargé vu qu’il sera à côté
-
Pas très pratique niveau discrétion!
-
Alors pour pouvoir remplacer le NetHandler d’un joueur sur le serveur, ce qui permet d’intercepter/modifier tout comportement du joueur :
Il faut d’abord utiliser l’event de connection d’un joueur sur le serveur :@SubscribeEvent public void onPlayerLoginOnServer(PlayerEvent.PlayerLoggedInEvent event) { CustomNetHandlerServer.applyPatches((EntityPlayerMP) event.player); //On va remplacer le NetHandlerPlayServer vanilla dans cette fonction }Donc dans une nouvelle classe CustomNetHandlerServer (ou un autre nom) extends NetHandlerPlayServer :
private final MinecraftServer serverController; //Cette variable est en private dans le NetHandlerPlayServer on doit donc la mettre ici public CustomNetHandlerServer(MinecraftServer server, NetworkManager networkManagerIn, EntityPlayerMP playerIn) { super(server, networkManagerIn, playerIn); this.serverController = server; } public static void applyPatches(EntityPlayerMP player) { NetHandlerPlayServer old= player.playerNetServerHandler; CustomNetHandlerServer newHandler = fromNetHandlerPlayServer(old); //Va permettre d'obtenir un net handler à partir des informations de l'ancien player.playerNetServerHandler = newHandler; //On l'attribue au joueur } private static CustomNetHandlerServer fromNetHandlerPlayServer(NetHandlerPlayServer play) { CustomNetHandlerServer handler= new CustomNetHandlerServer(MinecraftServer.getServer(), play.netManager, play.playerEntity); //On créée notre handler handler.setPlayerLocation(play.playerEntity.posX, play.playerEntity.posY, play.playerEntity.posZ, play.playerEntity.cameraYaw, play.playerEntity.cameraPitch); //Et on lui donne les informations de l'ancien return handler; }Puis après, il suffit de faire ctrl+space dans cette nouvelle classe et de prendre la fonction qui correspond à ce qu’on veut modifier et la réécrire.
Et aussi, ne pas oublier de register l’event (event Forge). -
techniquement je peux definir en tant que test player1 et player2 ?
Broken gui quand je fais ‘u’ et je marque dans textbox pseudo et je le surveille -
Définir quoi en tant que test player 1 et 2 ?
-
sur eclipse deux java appli joueurnanana et joueurninini et faire dans le code que quand playernanana fais ‘u’ je vois playerninini
-
Il faut que tu récupères le EntityPlayer de playerninini et que tu fasses Minecraft.getMinecraft().setRenderViewEntity(playerninini);
Je regarde comment get le EntityPlayerSP d’un autre joueur du côté client.EDIT : Alors il faut que tu obtiennes le entityID du joueur sur le serveur ```java
MinecraftServer.getServer().getConfigurationManager().getPlayerByUsername(“un nom”).getEntityId();
Puis tu dois envoyer un [packet](https://www.minecraftforgefrance.fr/showthread.php?tid=1118) au joueur qui veut avoir la vue d'un autre avec cet entity id, à la réception du packet, tu fais ```java Minecraft.getMinecraft().setRenderViewEntity(Minecraft.getMinecraft().theWorld.getEntityById(l'id reçu));Pas besoin de faire un null check, Minecraft le fait pour toi mais par contre tu peux vérifier que l’entité qui correspond à l’id est bien instanceof EntityOtherPlayerMP pour être sur que ce soit l’id du joueur et pas d’un poulet.
Il est possible/probable qu’il y ait une autre méthode mais celle là marchera très bien.
-
PAS LES PACKETS NONNNNNNNNNNNNN
Aymeric j’ai suvis ton truc j’y comprend rien mais bon xD
Juste j’ai
Executes a container/inventory slot manipulation as indicated by the packet. Sends the serverside result if they didn’t match the indicated result and prevents further manipulation by the player until he confirms that it has the same open container/inventoryC’est ça qu’il faut prendre =p?
-
package fr.Mosca421.Arthania.View; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import fr.Mosca421.Arthania.Arthania; import io.netty.buffer.ByteBuf; public class View implements IMessage { private String text; public View() { } public View(String text) { this.text = text; } @Override public void fromBytes(ByteBuf buf) { text = ByteBufUtils.readUTF8String(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf, text); } public static class Handler implements IMessageHandler <view, imessage="">{ @Override public IMessage onMessage(View message, MessageContext ctx) { System.out.println(String.format("Received %s from %s", message.text, ctx.getServerHandler().playerEntity.getDisplayName())); Arthania.networkWrapper.sendToServer(new View("View")); Arthania.networkWrapper.sendTo(new SomeMessage(), somePlayer); return null; // no response in this case } } }Alors la je vais pas vous mentir je vois plus quoi faire quand j’ai ça pour vous dire j’ai une erreur que je sais meme pas comment régler
J’aime pas du tout se systeme de packets =/</view,> -
Ou est le problème ?
-
Partout ou que j’aille ya des problème
Je ne vois pas ou mettre le code de aymeric qui est avant je bloque la -
Lequel ?
-
voir se que vois un joueur
-
C’est à dire ? Quel est le but ?
-
Le joueurs espion espionne un autre joueur (permet de surveiller un joueur sans avoir a bouger (que les admin ça se fait quand tu apuille sur la touche u ouvre gui tu met le pseudo du gars a voir et ça te met dans lui en gros
-
Pour ça il faut être côté client et avoir un accès à une interface ICamera et appeler la fonction isBoundingBoxInFrustum avec comme paramètre la bounding box du joueur
-
Ok bon je vois ça demain mais faudrait que des personnes patiente m’aide

-
Demain aprem ou soir j’explique clairement ou chaque code va, si quelqu’un le fait pas avant.
Mais déjà un indice, dans ton packet il ne te faut pas un String à envoyer mais un int qui contiendra lid du joueur dans le monde.EDIT : pas besoin de packet, le code dans mon post suivant.
Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk