Modifier la rotation de la tête
-
Bonjour, j’aimerais suite à une commande, orienter la tête d’un NPC joueur (donc de type biped). J’ai pensé à utiliser GLRotate mais setRotationYawHead semble beaucoup plus convenu. Bref, je l’utilise server-side dans l’exécution de ma commande et voilà :
:::
[17:14:29] [Server thread/ERROR] [net.minecraft.command.CommandHandler]: Couldn’t process command: ‘npc create Magasin 100’
java.lang.NoSuchMethodError: net.minecraft.entity.EntityCreature.setRotationYawHead(F)V
at com.lycoon.lemnoslife.commands.CommandeNPC.spawnNPC(CommandeNPC.java:93) ~[CommandeNPC.class:?]
at com.lycoon.lemnoslife.commands.CommandeNPC.processCommand(CommandeNPC.java:80) ~[CommandeNPC.class:?]
at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:96) [CommandHandler.class:?]
at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:788) [NetHandlerPlayServer.class:?]
at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:764) [NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:47) [C01PacketChatMessage.class:?]
at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:68) [C01PacketChatMessage.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) [DedicatedServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
:::Puis voici comment je fais spawn mon EntityCreature :
if(type.matches("Magasin")){ EntityNPCMagasin npc = new EntityNPCMagasin(world); spawnNPC(npc); }
public void spawnNPC(EntityCreature npc){ npc.setPositionAndRotation(player.posX, player.posY, player.posZ, 0, 0); npc.setRotationYawHead(rotation); npc.setCustomNameTag(type); world.spawnEntityInWorld(npc); player.addChatMessage(new ChatComponentText("NPC " +type+ " créé avec succès !").setChatStyle(vert)); }
-
Salut, c’est une méthode cliente only donc tu dois obligatoirement l’utiliser côté client, ou alors la recréer toi-même dans ton entité et synchroniser la valeur de cette variable pour la rotation.
-
@‘AymericRed’:
Salut, c’est une méthode cliente only donc tu dois obligatoirement l’utiliser côté client, ou alors la recréer toi-même dans ton entité et synchroniser la valeur de cette variable pour la rotation.
Donc je la c/c dans ma classe d´entité custom je vois, mais pour la sync ? Comment configures-tu le packet, je dois faire un sendToAll ? Seuls les joueurs connectés auront le NPC dans le bon sens…
-
Non il faudrait plutôt utiliser les DataWatcher (fais une recherche ou regarde les classes vanilla), tu set une valeur (côté serveur) et le jeu s’occupera de sync avec tout le monde.