[Développement] NMS: Convertir CraftZombie en EntityZombie

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 135
162
463
247
21
Mìlhüsa
Bonjour,
Je viens à vous car je n'arrive pas à convertir un CraftZombie (de org.bukkit) en EntityZombie (de net.minecraft.server). Voici mes codes :
Code:
@EventHandler(priority = EventPriority.HIGHEST)
   public void onEntitySpawn(CreatureSpawnEvent e) {
     LivingEntity entity = e.getEntity();
     if(entity.getType().equals(EntityType.ZOMBIE)) new CustomZombie(entity, UltraLifeList.getCustomWorld(e.getLocation().getWorld()));
   }

Le listener est appelé est la classe est étendu de Listener


Code:
package fr.she3py.plugins.ultralife.entity;

import java.util.List;

import org.bukkit.entity.Entity;

import fr.she3py.plugins.ultralife.CustomWorld;
import fr.she3py.plugins.utils.deobfuscated.DeobfuscatedGenericAttributes;
import net.minecraft.server.v1_9_R1.EntityZombie;

public class CustomZombie {
   private EntityZombie zb;
   private CustomWorld cw;
   private List<Double> stats;
   
   public CustomZombie(Entity zb, CustomWorld cw) {
     this.zb = (EntityZombie) zb;
     this.cw = cw;
     this.stats = EntityStats.getStats(this.zb, this.cw);
     
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.ARMOR).setValue(stats.get(0));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.ATTACK_DAMAGE).setValue(stats.get(1));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.FOLLOW_RANGE).setValue(stats.get(2));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.KNOCKBACK_RESISTANCE).setValue(stats.get(3));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.MAX_HEALTH).setValue(stats.get(4));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.MOVEMENT_SPEED).setValue(stats.get(5));
     this.zb.getAttributeInstance(DeobfuscatedGenericAttributes.ZOMBIE_SPAWN_REINFORCEMENTS_CHANCE).setValue(stats.get(6));
     zb.setCustomName("cc");
   }
}

Voici les logs :
Code:
[19:49:44] [Server thread/INFO]: Starting minecraft server version 1.9
[19:49:44] [Server thread/INFO]: Loading properties
[19:49:44] [Server thread/INFO]: Default game type: SURVIVAL
[19:49:45] [Server thread/INFO]: This server is running CraftBukkit version git-Spigot-b39373b-73eff0d (MC: 1.9) (Implementing API version 1.9-R0.1-SNAPSHOT)
[19:49:45] [Server thread/INFO]: Debug logging is disabled
[19:49:45] [Server thread/INFO]: Server Ping Player Sample Count: 12
[19:49:45] [Server thread/INFO]: Using 4 threads for Netty based IO
[19:49:45] [Server thread/INFO]: Generating keypair
[19:49:45] [Server thread/INFO]: Starting Minecraft server on *:25565
[19:49:45] [Server thread/INFO]: Using default channel type
[19:49:45] [Server thread/INFO]: Set PluginClassLoader as parallel capable
[19:49:45] [Server thread/INFO]: [UltraLife] Loading UltraLife v1.0
[19:49:45] [Server thread/INFO]: **** Beginning UUID conversion, this may take A LONG time ****
[19:49:45] [Server thread/INFO]: Preparing level "world"
[19:49:46] [Server thread/INFO]: -------- World Settings For [world] --------
[19:49:46] [Server thread/INFO]: Item Despawn Rate: 6000
[19:49:46] [Server thread/INFO]: Item Merge Radius: 2.5
[19:49:46] [Server thread/INFO]: Arrow Despawn Rate: 1200
[19:49:46] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[19:49:46] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[19:49:46] [Server thread/INFO]: Max Entity Collisions: 8
[19:49:46] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Feature: 14357617
[19:49:46] [Server thread/INFO]: View Distance: 10
[19:49:46] [Server thread/INFO]: Experience Merge Radius: 3.0
[19:49:46] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
[19:49:46] [Server thread/INFO]: Cactus Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Cane Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Melon Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Mushroom Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Pumpkin Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Sapling Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Wheat Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: NetherWart Growth Modifier: 100%
[19:49:46] [Server thread/INFO]: Mob Spawn Range: 4
[19:49:46] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 8 Hopper Amount: 1
[19:49:46] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[19:49:46] [Server thread/INFO]: Entity Activation Range: An 32 / Mo 32 / Mi 16
[19:49:46] [Server thread/INFO]: Random Lighting Updates: false
[19:49:46] [Server thread/INFO]: Max TNT Explosions: 100
[19:49:46] [Server thread/INFO]: Structure Info Saving: true
[19:49:46] [Server thread/INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64
[19:49:46] [Server thread/INFO]: Preparing start region for level 0 (Seed: 1226040014182795394)
[19:49:47] [Server thread/INFO]: Preparing spawn area: 0%
[19:49:48] [Server thread/INFO]: Preparing spawn area: 42%
[19:49:48] [Server thread/INFO]: [UltraLife] Enabling UltraLife v1.0
[19:49:48] [Server thread/INFO]: [UltraLife] Initialization...
[19:49:48] [Server thread/INFO]: [UltraLife] Adding event listener...
[19:49:48] [Server thread/INFO]: [UltraLife] Initializing Mobs Stats...
[19:49:48] [Server thread/INFO]: [UltraLife] Plugin enable.
[19:49:48] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[19:49:48] [Server thread/INFO]: Done (3,031s)! For help, type "help" or "?"
[19:49:54] [User Authenticator #1/INFO]: UUID of player ShE3py is f380933a-d0e1-4460-aee4-dba12ef3fee4
[19:49:55] [Server thread/INFO]: ShE3py[/192.168.1.19:57825] logged in with entity id 198 at ([world]-341.748004602973, 71.0, 113.26453218815202)
[19:50:02] [Server thread/ERROR]: Could not pass event CreatureSpawnEvent to UltraLife v1.0
org.bukkit.event.EventException
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:276) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.World.addEntity(World.java:938) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.ItemMonsterEgg.spawnCreature(ItemMonsterEgg.java:152) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.ItemMonsterEgg.a(ItemMonsterEgg.java:135) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.ItemMonsterEgg.a(ItemMonsterEgg.java:54) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.ItemStack.placeItem(ItemStack.java:118) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.PlayerInteractManager.a(PlayerInteractManager.java:522) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:852) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.PacketPlayInUseItem.a(SourceFile:55) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.PacketPlayInUseItem.a(SourceFile:11) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73]
   at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73]
   at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:721) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_9_R1.entity.CraftZombie cannot be cast to net.minecraft.server.v1_9_R1.EntityZombie
   at fr.she3py.plugins.ultralife.entity.CustomZombie.<init>(CustomZombie.java:17) ~[?:?]
   at fr.she3py.plugins.ultralife.events.UltraLifeEventListener.onEntitySpawn(UltraLifeEventListener.java:20) ~[?:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
   at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.9.jar:git-Spigot-b39373b-73eff0d]
   ... 22 more
[19:50:03] [Server thread/INFO]: ShE3py lost connection: Disconnected
[19:50:03] [Server thread/INFO]: ShE3py left the game.
[19:50:15] [Server thread/INFO]: Stopping the server
[19:50:15] [Server thread/INFO]: Stopping server
[19:50:15] [Server thread/INFO]: [UltraLife] Disabling UltraLife v1.0
[19:50:15] [Server thread/INFO]: [UltraLife] Plugin disable.
[19:50:15] [Server thread/INFO]: Saving players
[19:50:15] [Server thread/INFO]: Saving worlds
[19:50:15] [Server thread/INFO]: Saving chunks for level 'world'/Overworld

Erreur: Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_9_R1.entity.CraftZombie cannot be cast to net.minecraft.server.v1_9_R1.EntityZombie