Advertisement
HeroChannel

Nemtom

Feb 20th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. package me.michael566.main;
  2.  
  3.  
  4. import net.minecraft.server.v1_7_R3.EntityVillager;
  5. import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.World;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandExecutor;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.craftbukkit.v1_7_R3.entity.CraftVillager;
  13. import org.bukkit.entity.EntityType;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.entity.Villager;
  16. import org.bukkit.event.EventHandler;
  17. import org.bukkit.event.Listener;
  18. import org.bukkit.event.entity.EntityDamageEvent;
  19. import org.bukkit.potion.PotionEffect;
  20. import org.bukkit.potion.PotionEffectType;
  21.  
  22. import java.lang.reflect.Field;
  23. import java.lang.reflect.Modifier;
  24.  
  25. public class VillagerSpawn implements CommandExecutor, Listener {
  26.     private Main plugin;
  27.     public VillagerSpawn(Main plugin) {
  28.         this.plugin = plugin;
  29.     }
  30.     @Override
  31.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  32.         Player p = (Player) sender;
  33.         if (cmd.getName().equalsIgnoreCase("villager")) {
  34.             if (p.isOp()) {
  35.                 World w = Bukkit.getWorld("world");
  36.                 EntityType shopkeeper = EntityType.VILLAGER;
  37.                 Villager v = (Villager) w.spawnEntity(p.getLocation(), shopkeeper);
  38.                 v.setCustomName(ChatColor.GOLD + "Gold Shopkeeper");
  39.                 v.setProfession(Villager.Profession.FARMER);
  40.                 v.setCustomNameVisible(true);
  41.                 //v.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 128));
  42.                 EntityVillager nmsVillager = ((CraftVillager) v).getHandle();
  43.  
  44.                 try {
  45.                     Field goal = nmsVillager.getClass().getSuperclass().getSuperclass().getDeclaredField("goalSelector");
  46.                     goal.setAccessible(true);
  47.                     Field modifiersField = Field.class.getDeclaredField("modifiers");
  48.                     modifiersField.setAccessible(true);
  49.                     modifiersField.setInt(goal, goal.getModifiers() & ~Modifier.FINAL);
  50.                     PathfinderGoalSelector goalSelector = new PathfinderGoalSelector(nmsVillager.world != null && nmsVillager.world.methodProfiler != null ? nmsVillager.world.methodProfiler : null);
  51.                     goal.set(nmsVillager, goalSelector);
  52.                 } catch (NoSuchFieldException e) {
  53.                     e.printStackTrace();
  54.                 } catch (IllegalAccessException e) {
  55.                     e.printStackTrace();
  56.                 }
  57.  
  58.  
  59.  
  60.  
  61.  
  62.             }
  63.         }
  64.  
  65.         return false;
  66.     }
  67.  
  68.     @EventHandler
  69.     public void onEntityDamage(EntityDamageEvent e) {
  70.         if (e.getEntityType().equals(EntityType.VILLAGER)) {
  71.             e.setCancelled(true);
  72.         }
  73.  
  74.     }
  75.  
  76.  
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement