Advertisement
Guest User

V10Name

a guest
Apr 25th, 2012
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.35 KB | None | 0 0
  1. package de.V10lator.V10Name;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map.Entry;
  5.  
  6. import net.minecraft.server.Entity;
  7. import net.minecraft.server.EntityHuman;
  8. import net.minecraft.server.EntityTracker;
  9. import net.minecraft.server.MinecraftServer;
  10. import net.minecraft.server.NetServerHandler;
  11. import net.minecraft.server.Packet20NamedEntitySpawn;
  12. import net.minecraft.server.Packet29DestroyEntity;
  13. import net.minecraft.server.WorldServer;
  14.  
  15. import org.bukkit.ChatColor;
  16. import org.bukkit.Location;
  17. import org.bukkit.Server;
  18. import org.bukkit.World;
  19. import org.bukkit.command.Command;
  20. import org.bukkit.command.CommandSender;
  21. import org.bukkit.configuration.Configuration;
  22. import org.bukkit.craftbukkit.CraftServer;
  23. import org.bukkit.craftbukkit.CraftWorld;
  24. import org.bukkit.craftbukkit.entity.CraftPlayer;
  25. import org.bukkit.entity.Player;
  26. import org.bukkit.plugin.java.JavaPlugin;
  27.  
  28. public class V10Name extends JavaPlugin
  29. {
  30.   final HashMap<String, String> changedNames = new HashMap<String, String>();
  31.  
  32.   public void onEnable()
  33.   {
  34.     Server s = getServer();
  35.     MinecraftServer ms = ((CraftServer)s).getServer();
  36.     WorldServer ws;
  37.     for(World world: s.getWorlds())
  38.     {
  39.       ws = ((CraftWorld)world).getHandle();
  40.       ws.tracker = new V10Tracker(ms, ws, this);
  41.       for(Object o: ws.entityList)
  42.         ws.tracker.track((Entity)o);
  43.     }
  44.     Configuration config = getConfig();
  45.     Player p;
  46.     for(String key: config.getKeys(false))
  47.     {
  48.       String newName = config.getString(key);
  49.       changedNames.put(key, newName);
  50.       p = s.getPlayerExact(key);
  51.       if(p != null)
  52.         changeName(p, p.getName(), newName);
  53.     }
  54.     s.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){public void run(){save();}}, 12000L, 12000L);
  55.   }
  56.  
  57.   public void onDisable()
  58.   {
  59.     MinecraftServer ms = ((CraftServer)getServer()).getServer();
  60.     WorldServer ws;
  61.     for(World world: getServer().getWorlds())
  62.     {
  63.       ws = ((CraftWorld)world).getHandle();
  64.       ws.tracker = new EntityTracker(ms, ws);
  65.       for(Object o: ws.entityList)
  66.         ws.tracker.track((Entity)o);
  67.     }
  68.     getServer().getScheduler().cancelTasks(this);
  69.     save();
  70.   }
  71.  
  72.   private void save()
  73.   {
  74.     Configuration config = getConfig();
  75.     for(String key: config.getKeys(false))
  76.       config.set(key, null);
  77.     for(Entry<String, String> e: changedNames.entrySet())
  78.       config.set(e.getKey(), e.getValue());
  79.     saveConfig();
  80.   }
  81.  
  82.   public boolean onCommand(CommandSender sender, Command command,
  83.           String label, String[] args)
  84.   {
  85.     if(!(sender instanceof Player))
  86.       return true;
  87.     if(!sender.hasPermission("v10name.change"))
  88.     {
  89.       sender.sendMessage(ChatColor.RED+"You are not allowed to do that!");
  90.       return true;
  91.     }
  92.     if(args.length < 1)
  93.       return false;
  94.     StringBuilder sb = new StringBuilder(args[0]);
  95.     for(int i = 1; i < args.length; i++)
  96.       sb.append(' ').append(args[i]);
  97.     if(sb.length() > 16)
  98.       sb.delete(16, sb.length());
  99.     Player p = (Player)sender;
  100.     String origName = p.getName();
  101.     String newName = sb.toString().replace('&', 'ยง').trim();
  102.    
  103.     if(origName.equals(newName))
  104.     {
  105.       if(changedNames.containsKey(origName))
  106.       {
  107.         String tmpName = changedNames.get(origName);
  108.         changedNames.remove(origName);
  109.         if(!origName.equals(tmpName))
  110.           changeName(p, origName, newName);
  111.       }
  112.     }
  113.     else
  114.     {
  115.       changedNames.put(origName, newName);
  116.       changeName(p, origName, newName);
  117.     }
  118.     sender.sendMessage(ChatColor.GREEN+"Name changed!");
  119.     return true;
  120.   }
  121.  
  122.   private void changeName(Player p, String origName, String newName)
  123.   {
  124.     Location loc;
  125.     Location myLoc = p.getLocation();
  126.     double myX = myLoc.getX();
  127.     double myZ = myLoc.getZ();
  128.     String myWorld = myLoc.getWorld().getName();
  129.     double d0;
  130.     double d1;
  131.    
  132.     EntityHuman e = ((CraftPlayer)p).getHandle();
  133.    
  134.     Packet29DestroyEntity packet29 = new Packet29DestroyEntity(e.id);
  135.     Packet20NamedEntitySpawn packet20 = new Packet20NamedEntitySpawn(e);
  136.     packet20.b = newName;
  137.    
  138.     NetServerHandler ns;
  139.    
  140.     for(Player pl: getServer().getOnlinePlayers())
  141.     {
  142.       if(pl.getName().equals(origName))
  143.         continue;
  144.       loc = pl.getLocation();
  145.       if(!myWorld.equals(loc.getWorld().getName()))
  146.         continue;
  147.       d0 = loc.getX() - (double) (myX / 32);
  148.       d1 = loc.getZ() - (double) (myZ / 32);
  149.       if(d0 >= -512.0D && d0 <= 512.0D && d1 >= -512.0D && d1 <= 512.0D)
  150.       {
  151.         ns = ((CraftPlayer)pl).getHandle().netServerHandler;
  152.         ns.sendPacket(packet29);
  153.         ns.sendPacket(packet20);
  154.       }
  155.     }
  156.   }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement