Java tutorial
package buildcraftAdditions.utils; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.regex.Pattern; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.common.FMLCommonHandler; import net.minecraftforge.common.UsernameCache; import net.minecraftforge.common.util.Constants; import buildcraftAdditions.BuildcraftAdditions; import buildcraftAdditions.tileEntities.interfaces.IOwnableMachine; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ public class PlayerUtils { private static final String hex = "[0-9a-fA-F]"; private static final Pattern uuidPattern = Pattern .compile("^" + hex + "{8}-" + hex + "{4}-" + hex + "{4}-" + hex + "{4}-" + hex + "{12}$"); public static UUID getPlayerUUID(EntityPlayer player) { return player != null && player.getGameProfile() != null ? getPlayerUUID(player.getGameProfile().getName()) : null; } public static String getPlayerUUIDString(EntityPlayer player) { return player != null && player.getGameProfile() != null ? getUUIDString(getPlayerUUID(player.getGameProfile().getName())) : null; } public static UUID getPlayerUUID(String name) { if (name != null && !name.isEmpty()) { for (Map.Entry<UUID, String> entry : UsernameCache.getMap().entrySet()) if (entry != null && entry.getValue() != null && entry.getValue().equalsIgnoreCase(name)) return entry.getKey(); } return null; } public static String getPlayerName(UUID uuid) { String name = null; if (uuid != null) name = UsernameCache.getLastKnownUsername(uuid); return name != null ? name : ""; } public static String getUUIDString(UUID uuid) { return uuid != null ? uuid.toString() : ""; } public static UUID getUUID(String uuid) { return isUUIDString(uuid) ? UUID.fromString(uuid) : null; } public static boolean playerMatches(UUID uuid, String name) { UUID playerUUID = getPlayerUUID(name); return playerUUID != null && playerUUID.equals(uuid); } public static boolean playerMatches(IOwnableMachine tile, String name) { UUID playerUUID = getPlayerUUID(name); return playerUUID != null && playerUUID.equals(tile.getOwner()); } public static boolean playerMatches(UUID uuid, EntityPlayer player) { UUID playerUUID = getPlayerUUID(player); return playerUUID != null && playerUUID.equals(uuid); } public static boolean playerMatches(IOwnableMachine tile, EntityPlayer player) { UUID playerUUID = getPlayerUUID(player); return playerUUID != null && playerUUID.equals(tile.getOwner()); } public static boolean playerMatches(String uuid, String name) { UUID playerUUID = getPlayerUUID(name); return playerUUID != null && playerUUID.equals(getUUID(uuid)); } public static boolean playerMatches(String uuid, EntityPlayer player) { UUID playerUUID = getPlayerUUID(player); return playerUUID != null && playerUUID.equals(getUUID(uuid)); } public static EntityPlayer getPlayer(String name) { return getPlayer(getPlayerUUID(name)); } public static EntityPlayer getPlayer(UUID uuid) { if (uuid != null) { if (playerMatches(uuid, BuildcraftAdditions.proxy.getClientPlayer())) return BuildcraftAdditions.proxy.getClientPlayer(); List list = (FMLCommonHandler.instance().getMinecraftServerInstance() != null && FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager() != null && FMLCommonHandler.instance().getMinecraftServerInstance() .getConfigurationManager().playerEntityList != null) ? FMLCommonHandler.instance().getMinecraftServerInstance() .getConfigurationManager().playerEntityList : ((BuildcraftAdditions.proxy.getClientWorld() != null && BuildcraftAdditions.proxy.getClientWorld() .getLoadedEntityList() != null) ? BuildcraftAdditions.proxy.getClientWorld() .getLoadedEntityList() : null); if (list != null) { for (Object object : list) { if (object != null && object instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) object; if (playerMatches(uuid, player)) return player; } } } } return null; } public static boolean isUUIDString(String uuid) { return uuid != null && uuidPattern.matcher(uuid).matches(); } public static void writeToNBT(NBTTagCompound nbt, UUID uuid) { nbt.setString("owner", getUUIDString(uuid)); } public static UUID readFromNBT(NBTTagCompound nbt) { if (nbt.hasKey("owner", Constants.NBT.TAG_STRING)) { String owner = nbt.getString("owner"); if (isUUIDString(owner)) return getUUID(owner); return getPlayerUUID(owner); } return null; } public static void writeToByteBuff(ByteBuf buf, UUID uuid) { String s = getUUIDString(uuid); buf.writeInt(s.length()); for (int i = 0; i < s.length(); i++) buf.writeChar(s.charAt(i)); } public static UUID readFromByteBuff(ByteBuf buf) { String s = ""; int length = buf.readInt(); for (int i = 0; i < length; i++) s += buf.readChar(); return getUUID(s); } }