Solved NMS need help

Discussion in 'Plugin Development' started by spiroulis, May 18, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    spiroulis

    so i followed a nms tutorial i found and everything is fine and dadny but when i try to spawn the custom entity i made i get this error :
    Code:
    [11:50:50] [Server thread/WARN]: java.lang.IllegalArgumentException: Can not set final java.util.Set field net.minecraft.server.v1_11_R1.PathfinderGoalSelector.b to org.bukkit.craftbukkit.v1_11_R1.util.UnsafeList
    [11:50:50] [Server thread/WARN]:     at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at java.lang.reflect.Field.set(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at me.spiroulis.rpg.villager.<init>(villager.java:28)
    [11:50:50] [Server thread/WARN]:     at me.spiroulis.rpg.main.onCreatureSpawn(main.java:36)
    [11:50:50] [Server thread/WARN]:     at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at java.lang.reflect.Method.invoke(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296)
    [11:50:50] [Server thread/WARN]:     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [11:50:50] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501)
    [11:50:50] [Server thread/WARN]:     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486)
    [11:50:50] [Server thread/WARN]:     at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:283)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.World.addEntity(World.java:994)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.WorldServer.addEntity(WorldServer.java:1045)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.BlockPumpkin.c(BlockPumpkin.java:66)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.BlockPumpkin.onPlace(BlockPumpkin.java:37)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.ItemStack.placeItem(ItemStack.java:234)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.PlayerInteractManager.a(PlayerInteractManager.java:495)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:880)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(SourceFile:55)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(SourceFile:11)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13)
    [11:50:50] [Server thread/WARN]:     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at java.util.concurrent.FutureTask.run(Unknown Source)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:695)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:360)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:650)
    [11:50:50] [Server thread/WARN]:     at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:554)
    [11:50:50] [Server thread/WARN]:     at java.lang.Thread.run(Unknown Source)
    My custom entity code :
    HTML:
    public class villager extends EntityVillager{
    
        public villager(World world) {
           
            super(world);
            try {
                Field bField = PathfinderGoalSelector.class.getDeclaredField("b");
                bField.setAccessible(true);
                Field cField = PathfinderGoalSelector.class.getDeclaredField("c");
                cField.setAccessible(true);
      
                bField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
                bField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
                cField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
                cField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
        } catch (Exception e) {
                e.printStackTrace();
        }   
    
        this.goalSelector.a(0, new PathfinderGoalFloat(this));
        this.goalSelector.a(1, new PathfinderGoalLookAtTradingPlayer(this));
        this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 0.6D));
        this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityHuman.class, 3.0F, 1.0F));
        this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityVillager.class, 5.0F, 0.02F));
        this.goalSelector.a(9, new PathfinderGoalRandomStroll(this, 0.6D));
        this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
        }
    
    }
    
    and the summoning part:
    HTML:
     @EventHandler
        public void onCreatureSpawn(CreatureSpawnEvent event){
            Entity p = event.getEntity();
            event.setCancelled(true);
            if(event.getSpawnReason() == SpawnReason.BUILD_SNOWMAN){
                System.out.print("spawning da beast");
                Location loc = event.getLocation();
                  CraftWorld world = (CraftWorld) event.getLocation().getWorld();
                villager superZombie = new villager(((CraftWorld)world).getHandle());
                  superZombie.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
                  ((CraftWorld)loc.getWorld()).getHandle().addEntity(superZombie, SpawnReason.CUSTOM);
                System.out.println("DE BEAST HAS BEEN SPAWNED");
           
           
            }
        }
    also i do register the entity onEnable(). thanks in advance
     
  2. Offline

    Zombie_Striker

    @spiroulis
    Can you post the link to this tutorial?

    What exactly are you trying to do? Are you trying to make the villager move to specific locations?
     
  3. Offline

    spiroulis

    @Zombie_Striker basically what i wanted to do was find a way to make mobs with custom attributes. So i realised i didnt need to override the pathfinders to do that and just simply used the initAttributes() method found in nms. Sadly i could not find the link of the tutorial i had read but my problem is fixed the custom mob spawns and has the attributes i assigned to it. Thank you very much for trying to help tho :D
     
Thread Status:
Not open for further replies.

Share This Page