How do I spawn this in....

Discussion in 'Plugin Development' started by mrgreen33gamer, Oct 4, 2014.

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

    mrgreen33gamer

    Hello, I have developed a code and I am trying to spawn a mob in. I got the code and pathfinders ready but I haven't figured out how to spawn it in. Help would be nice :D or a guide.

    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. import java.lang.reflect.Field;
    5.  
    6. import org.bukkit.craftbukkit.v1_7_R3.util.UnsafeList;
    7.  
    8. import net.minecraft.server.v1_7_R3.EntityHuman;
    9. import net.minecraft.server.v1_7_R3.EntityVillager;
    10. import net.minecraft.server.v1_7_R3.GenericAttributes;
    11. import net.minecraft.server.v1_7_R3.PathfinderGoalLookAtPlayer;
    12. import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
    13. import net.minecraft.server.v1_7_R3.World;
    14.  
    15. public class CustomVillager extends EntityVillager {
    16.  
    17. public CustomVillager(World world, int i) {
    18. super(world);
    19.  
    20. this.setProfession(i);
    21. try {
    22. Field bField = PathfinderGoalSelector.class.getDeclaredField("b");
    23. bField.setAccessible(true);
    24. Field cField = PathfinderGoalSelector.class.getDeclaredField("c");
    25. cField.setAccessible(true);
    26.  
    27. bField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    28. bField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    29. cField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    30. cField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    31.  
    32. } catch (Exception e) {
    33. e.printStackTrace();
    34. }
    35. setUp();
    36. }
    37.  
    38. public void setUp(){
    39. this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
    40. }
    41.  
    42. @Override
    43. protected void aC(){
    44. super.aC();
    45. this.getAttributeInstance(GenericAttributes.d).setValue(0.0D);
    46. this.getAttributeInstance(GenericAttributes.a).setValue(Double.MAX_VALUE);
    47. this.getAttributeInstance(GenericAttributes.c).setValue(Double.MAX_VALUE);
    48. }
    49. }
    50.  



    Use this code if it's useful for you :D!
     
  2. Offline

    Gater12

  3. Offline

    mrgreen33gamer

    Gater12
    Yes but I cannot spawn the mob in at my location, example:
    Code:
    Villager villager = (Villager)player.getWorld().spawnCreature(player.getLocation(), CreatureType.VILLAGER);
    But using the custom class I made.
    Thanks for the post :D!
     
  4. Offline

    Gater12

  5. Offline

    mrgreen33gamer

    Gater12

    Umm, I get an error code:
    Code:
    [19:45:35 ERROR]: Could not load 'plugins\Test.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: net/mi
    necraft/server/v1_7_R3/World
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:137) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:308) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:231) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugins(CraftServer.ja
    va:257) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:63
    0) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.Bukkit.reload(Bukkit.java:279) [craftbukkit.jar:git-Bukkit
    -1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
    9) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServe
    r.java:544) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(Craf
    tServer.java:531) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:
    286) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    51) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    Caused by: java.lang.NoClassDefFoundError: net/minecraft/server/v1_7_R3/World
            at java.lang.Class.forName0(Native Method) ~[?:1.8.0_05]
            at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_05]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
    a:40) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:133) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            ... 14 more
    Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_7_R3.World
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:67) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
            at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
            at java.lang.Class.forName0(Native Method) ~[?:1.8.0_05]
            at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_05]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
    a:40) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:133) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            ... 14 more
    And I registered my entities and everything. Here are ALL of my classes:

    Main:
    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. import java.lang.reflect.Field;
    5. import java.util.Map;
    6.  
    7. import net.minecraft.server.v1_7_R3.WorldServer;
    8.  
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.craftbukkit.v1_7_R3.CraftWorld;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.plugin.java.JavaPlugin;
    14.  
    15. public class Main extends JavaPlugin{
    16.  
    17. @Override
    18. public void onEnable(){
    19. addCustomEntity(CustomVillager.class, "CustomVillager", 1);
    20. }
    21.  
    22. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    23.  
    24. if(label.equalsIgnoreCase("spawn")){
    25. if(sender instanceof Player){
    26. Player player = (Player)sender;
    27. if(args.length == 0){
    28.  
    29. net.minecraft.server.v1_7_R3.World mcWorld = ((CraftWorld) player.getWorld()).getHandle();
    30. CustomVillager villager = new CustomVillager(mcWorld, 0);
    31. villager.setPosition(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ());
    32. mcWorld.addEntity(villager);
    33.  
    34.  
    35. }else{
    36. }
    37. }else{
    38. sender.sendMessage("NO");
    39. }
    40. }
    41.  
    42. return false;
    43. }
    44.  
    45. protected static Field mapStringToClassField, mapClassToStringField, mapClassToIdField, mapStringToIdField;
    46. //protected static Field mapIdToClassField;
    47.  
    48. static
    49. {
    50. try
    51. {
    52. mapStringToClassField = net.minecraft.server.v1_7_R3.EntityTypes.class.getDeclaredField("c");
    53. mapClassToStringField = net.minecraft.server.v1_7_R3.EntityTypes.class.getDeclaredField("d");
    54. //mapIdtoClassField = net.minecraft.server.v1_7_R1.EntityTypes.class.getDeclaredField("e");
    55. mapClassToIdField = net.minecraft.server.v1_7_R3.EntityTypes.class.getDeclaredField("f");
    56. mapStringToIdField = net.minecraft.server.v1_7_R3.EntityTypes.class.getDeclaredField("g");
    57.  
    58. mapStringToClassField.setAccessible(true);
    59. mapClassToStringField.setAccessible(true);
    60. //mapIdToClassField.setAccessible(true);
    61. mapClassToIdField.setAccessible(true);
    62. mapStringToIdField.setAccessible(true);
    63. }
    64. catch(Exception e) {e.printStackTrace();}
    65. }
    66.  
    67. @SuppressWarnings({ "rawtypes", "unchecked" })
    68. protected static void addCustomEntity(Class entityClass, String name, int id)
    69. {
    70. if (mapStringToClassField == null || mapStringToIdField == null || mapClassToStringField == null || mapClassToIdField == null)
    71. {
    72. return;
    73. }
    74. else
    75. {
    76. try
    77. {
    78. Map mapStringToClass = (Map) mapStringToClassField.get(null);
    79. Map mapStringToId = (Map) mapStringToIdField.get(null);
    80. Map mapClasstoString = (Map) mapClassToStringField.get(null);
    81. Map mapClassToId = (Map) mapClassToIdField.get(null);
    82.  
    83. mapStringToClass.put(name, entityClass);
    84. mapStringToId.put(name, Integer.valueOf(id));
    85. mapClasstoString.put(entityClass, name);
    86. mapClassToId.put(entityClass, Integer.valueOf(id));
    87.  
    88. mapStringToClassField.set(null, mapStringToClass);
    89. mapStringToIdField.set(null, mapStringToId);
    90. mapClassToStringField.set(null, mapClasstoString);
    91. mapClassToIdField.set(null, mapClassToId);
    92. }
    93. catch (Exception e)
    94. {
    95. e.printStackTrace();
    96. }
    97. }
    98. }
    99.  
    100. }
    101.  


    CustomVillager:
    Code:java
    1.  
    2. package com.mrgreen33gamer.test;
    3.  
    4. import java.lang.reflect.Field;
    5.  
    6. import org.bukkit.craftbukkit.v1_7_R3.util.UnsafeList;
    7.  
    8. import net.minecraft.server.v1_7_R3.EntityHuman;
    9. import net.minecraft.server.v1_7_R3.EntityVillager;
    10. import net.minecraft.server.v1_7_R3.GenericAttributes;
    11. import net.minecraft.server.v1_7_R3.PathfinderGoalLookAtPlayer;
    12. import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
    13. import net.minecraft.server.v1_7_R3.World;
    14.  
    15. public class CustomVillager extends EntityVillager {
    16.  
    17. public CustomVillager(World world, int i) {
    18. super(world);
    19.  
    20. this.setProfession(i);
    21. try {
    22. Field bField = PathfinderGoalSelector.class.getDeclaredField("b");
    23. bField.setAccessible(true);
    24. Field cField = PathfinderGoalSelector.class.getDeclaredField("c");
    25. cField.setAccessible(true);
    26.  
    27. bField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    28. bField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    29. cField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    30. cField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    31.  
    32. } catch (Exception e) {
    33. e.printStackTrace();
    34. }
    35. setUp();
    36. }
    37.  
    38. public void setUp(){
    39. this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
    40. }
    41.  
    42. @Override
    43. protected void aC(){
    44. super.aC();
    45. this.getAttributeInstance(GenericAttributes.d).setValue(0.0D);
    46. this.getAttributeInstance(GenericAttributes.a).setValue(Double.MAX_VALUE);
    47. this.getAttributeInstance(GenericAttributes.c).setValue(Double.MAX_VALUE);
    48. }
    49.  
    50. }
    51.  
    52.  
     
Thread Status:
Not open for further replies.

Share This Page