Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.michael566.main;
- import net.minecraft.server.v1_7_R3.EntityVillager;
- import net.minecraft.server.v1_7_R3.PathfinderGoalSelector;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.World;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.craftbukkit.v1_7_R3.entity.CraftVillager;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Villager;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import java.lang.reflect.Field;
- import java.lang.reflect.Modifier;
- public class VillagerSpawn implements CommandExecutor, Listener {
- private Main plugin;
- public VillagerSpawn(Main plugin) {
- this.plugin = plugin;
- }
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- Player p = (Player) sender;
- if (cmd.getName().equalsIgnoreCase("villager")) {
- if (p.isOp()) {
- World w = Bukkit.getWorld("world");
- EntityType shopkeeper = EntityType.VILLAGER;
- Villager v = (Villager) w.spawnEntity(p.getLocation(), shopkeeper);
- v.setCustomName(ChatColor.GOLD + "Gold Shopkeeper");
- v.setProfession(Villager.Profession.FARMER);
- v.setCustomNameVisible(true);
- //v.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 128));
- EntityVillager nmsVillager = ((CraftVillager) v).getHandle();
- try {
- Field goal = nmsVillager.getClass().getSuperclass().getSuperclass().getDeclaredField("goalSelector");
- goal.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(goal, goal.getModifiers() & ~Modifier.FINAL);
- PathfinderGoalSelector goalSelector = new PathfinderGoalSelector(nmsVillager.world != null && nmsVillager.world.methodProfiler != null ? nmsVillager.world.methodProfiler : null);
- goal.set(nmsVillager, goalSelector);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- return false;
- }
- @EventHandler
- public void onEntityDamage(EntityDamageEvent e) {
- if (e.getEntityType().equals(EntityType.VILLAGER)) {
- e.setCancelled(true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement