Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.V10lator.V10Name;
- import java.util.HashMap;
- import java.util.Map.Entry;
- import net.minecraft.server.Entity;
- import net.minecraft.server.EntityHuman;
- import net.minecraft.server.EntityTracker;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.server.NetServerHandler;
- import net.minecraft.server.Packet20NamedEntitySpawn;
- import net.minecraft.server.Packet29DestroyEntity;
- import net.minecraft.server.WorldServer;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Server;
- import org.bukkit.World;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.configuration.Configuration;
- import org.bukkit.craftbukkit.CraftServer;
- import org.bukkit.craftbukkit.CraftWorld;
- import org.bukkit.craftbukkit.entity.CraftPlayer;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class V10Name extends JavaPlugin
- {
- final HashMap<String, String> changedNames = new HashMap<String, String>();
- public void onEnable()
- {
- Server s = getServer();
- MinecraftServer ms = ((CraftServer)s).getServer();
- WorldServer ws;
- for(World world: s.getWorlds())
- {
- ws = ((CraftWorld)world).getHandle();
- ws.tracker = new V10Tracker(ms, ws, this);
- for(Object o: ws.entityList)
- ws.tracker.track((Entity)o);
- }
- Configuration config = getConfig();
- Player p;
- for(String key: config.getKeys(false))
- {
- String newName = config.getString(key);
- changedNames.put(key, newName);
- p = s.getPlayerExact(key);
- if(p != null)
- changeName(p, p.getName(), newName);
- }
- s.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){public void run(){save();}}, 12000L, 12000L);
- }
- public void onDisable()
- {
- MinecraftServer ms = ((CraftServer)getServer()).getServer();
- WorldServer ws;
- for(World world: getServer().getWorlds())
- {
- ws = ((CraftWorld)world).getHandle();
- ws.tracker = new EntityTracker(ms, ws);
- for(Object o: ws.entityList)
- ws.tracker.track((Entity)o);
- }
- getServer().getScheduler().cancelTasks(this);
- save();
- }
- private void save()
- {
- Configuration config = getConfig();
- for(String key: config.getKeys(false))
- config.set(key, null);
- for(Entry<String, String> e: changedNames.entrySet())
- config.set(e.getKey(), e.getValue());
- saveConfig();
- }
- public boolean onCommand(CommandSender sender, Command command,
- String label, String[] args)
- {
- if(!(sender instanceof Player))
- return true;
- if(!sender.hasPermission("v10name.change"))
- {
- sender.sendMessage(ChatColor.RED+"You are not allowed to do that!");
- return true;
- }
- if(args.length < 1)
- return false;
- StringBuilder sb = new StringBuilder(args[0]);
- for(int i = 1; i < args.length; i++)
- sb.append(' ').append(args[i]);
- if(sb.length() > 16)
- sb.delete(16, sb.length());
- Player p = (Player)sender;
- String origName = p.getName();
- String newName = sb.toString().replace('&', 'ยง').trim();
- if(origName.equals(newName))
- {
- if(changedNames.containsKey(origName))
- {
- String tmpName = changedNames.get(origName);
- changedNames.remove(origName);
- if(!origName.equals(tmpName))
- changeName(p, origName, newName);
- }
- }
- else
- {
- changedNames.put(origName, newName);
- changeName(p, origName, newName);
- }
- sender.sendMessage(ChatColor.GREEN+"Name changed!");
- return true;
- }
- private void changeName(Player p, String origName, String newName)
- {
- Location loc;
- Location myLoc = p.getLocation();
- double myX = myLoc.getX();
- double myZ = myLoc.getZ();
- String myWorld = myLoc.getWorld().getName();
- double d0;
- double d1;
- EntityHuman e = ((CraftPlayer)p).getHandle();
- Packet29DestroyEntity packet29 = new Packet29DestroyEntity(e.id);
- Packet20NamedEntitySpawn packet20 = new Packet20NamedEntitySpawn(e);
- packet20.b = newName;
- NetServerHandler ns;
- for(Player pl: getServer().getOnlinePlayers())
- {
- if(pl.getName().equals(origName))
- continue;
- loc = pl.getLocation();
- if(!myWorld.equals(loc.getWorld().getName()))
- continue;
- d0 = loc.getX() - (double) (myX / 32);
- d1 = loc.getZ() - (double) (myZ / 32);
- if(d0 >= -512.0D && d0 <= 512.0D && d1 >= -512.0D && d1 <= 512.0D)
- {
- ns = ((CraftPlayer)pl).getHandle().netServerHandler;
- ns.sendPacket(packet29);
- ns.sendPacket(packet20);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement