diff --git a/client/render/items/ToolBiometricCardRender.java b/client/render/items/ToolBiometricCardRender.java index de93446fd..faff6a28b 100644 --- a/client/render/items/ToolBiometricCardRender.java +++ b/client/render/items/ToolBiometricCardRender.java @@ -3,15 +3,16 @@ package appeng.client.render.items; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; +import com.mojang.authlib.GameProfile; + +import appeng.api.implementations.items.IBiometricCard; import appeng.api.util.AEColor; import appeng.client.texture.ExtraItemTextures; -import appeng.util.Platform; public class ToolBiometricCardRender implements IItemRenderer { @@ -74,8 +75,13 @@ public class ToolBiometricCardRender implements IItemRenderer float u = ExtraItemTextures.White.getIcon().getInterpolatedU( 8.1 ); float v = ExtraItemTextures.White.getIcon().getInterpolatedV( 8.1 ); - NBTTagCompound myTag = Platform.openNbtData( item ); - String username = myTag.getString( "username" ); + String username = ""; + if ( item.getItem() instanceof IBiometricCard ) + { + GameProfile gp = (( IBiometricCard) item.getItem() ).getProfile(item); + if ( gp != null ) + username = gp.getName(); + } int hash = username.length() > 0 ? username.hashCode() : 0; GL11.glScalef( 1F / 16F, 1F / 16F, 1F ); diff --git a/core/WorldSettings.java b/core/WorldSettings.java index 46268f4a1..9d541d6da 100644 --- a/core/WorldSettings.java +++ b/core/WorldSettings.java @@ -8,6 +8,8 @@ import java.util.List; import java.util.Map.Entry; import java.util.WeakHashMap; +import com.mojang.authlib.GameProfile; + import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.config.ConfigCategory; @@ -227,17 +229,6 @@ public class WorldSettings extends Configuration return r; } - public String getUsername(int id) - { - ConfigCategory playerList = this.getCategory( "players" ); - for (Entry fish : playerList.entrySet()) - { - if ( fish.getValue().isIntValue() && fish.getValue().getInt() == id ) - return fish.getKey(); - } - return null; - } - public int getNextOrderedValue(String name) { Property p = this.get( "orderedValues", name, 0 ); @@ -246,18 +237,21 @@ public class WorldSettings extends Configuration return myValue; } - public int getPlayerID(String username) + public int getPlayerID(GameProfile profile) { ConfigCategory playerList = this.getCategory( "players" ); - if ( playerList == null || username == null || username.length() == 0 ) + + if ( playerList == null || profile == null || !profile.isComplete() ) return -1; - Property prop = playerList.get( username ); + String uuid = profile.getId().toString(); + + Property prop = playerList.get( uuid ); if ( prop != null && prop.isIntValue() ) return prop.getInt(); else { - playerList.put( username, prop = new Property( username, "" + nextPlayer(), Property.Type.INTEGER ) ); + playerList.put( uuid, prop = new Property( uuid, "" + nextPlayer(), Property.Type.INTEGER ) ); save(); return prop.getInt(); } diff --git a/core/features/registries/PlayerRegistry.java b/core/features/registries/PlayerRegistry.java index 0104439d1..78405ef09 100644 --- a/core/features/registries/PlayerRegistry.java +++ b/core/features/registries/PlayerRegistry.java @@ -1,5 +1,7 @@ package appeng.core.features.registries; +import com.mojang.authlib.GameProfile; + import net.minecraft.entity.player.EntityPlayer; import appeng.api.features.IPlayerRegistry; import appeng.core.WorldSettings; @@ -8,7 +10,7 @@ public class PlayerRegistry implements IPlayerRegistry { @Override - public int getID(String username) + public int getID(GameProfile username) { return WorldSettings.getInstance().getPlayerID( username ); } @@ -16,13 +18,7 @@ public class PlayerRegistry implements IPlayerRegistry @Override public int getID(EntityPlayer player) { - return WorldSettings.getInstance().getPlayerID( player.getCommandSenderName() ); - } - - @Override - public String getUsername(int id) - { - return WorldSettings.getInstance().getUsername( id ); + return WorldSettings.getInstance().getPlayerID( player.getGameProfile() ); } } diff --git a/items/tools/ToolBiometricCard.java b/items/tools/ToolBiometricCard.java index 3690e71aa..5daf5fe11 100644 --- a/items/tools/ToolBiometricCard.java +++ b/items/tools/ToolBiometricCard.java @@ -3,10 +3,13 @@ package appeng.items.tools; import java.util.EnumSet; import java.util.List; +import com.mojang.authlib.GameProfile; + import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTUtil; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; import appeng.api.config.SecurityPermissions; @@ -33,8 +36,8 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public String getItemStackDisplayName(ItemStack is) { - String username = getUsername( is ); - return username.length() > 0 ? super.getItemStackDisplayName( is ) + " - " + username : super.getItemStackDisplayName( is ); + GameProfile username = getProfile( is ); + return username != null ? super.getItemStackDisplayName( is ) + " - " + username.getName() : super.getItemStackDisplayName( is ); } @Override @@ -66,20 +69,17 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard private void encode(ItemStack is, EntityPlayer p) { - String username = getUsername( is ); - if ( p.getCommandSenderName().equals( username ) ) - setUsername( is, "" ); + GameProfile username = getProfile( is ); + + if (username != null && username.equals(p.getGameProfile())) + setProfile( is, null ); else - setUsername( is, p.getCommandSenderName() ); + setProfile( is, p.getGameProfile() ); } @Override public void addInformation(ItemStack is, EntityPlayer p, List l, boolean b) { - // String username = getUsername( is ); - // if ( username.length() > 0 ) - // l.add( username ); - EnumSet perms = getPermissions( is ); if ( perms.isEmpty() ) l.add( GuiText.NoPermissions.getLocal() ); @@ -100,10 +100,12 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard } @Override - public String getUsername(ItemStack is) + public GameProfile getProfile(ItemStack is) { NBTTagCompound tag = Platform.openNbtData( is ); - return tag.getString( "username" ); + if ( tag.hasKey("profile") ) + return NBTUtil.func_152459_a(tag.getCompoundTag("profile") ); + return null; } @Override @@ -129,10 +131,18 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard } @Override - public void setUsername(ItemStack itemStack, String username) + public void setProfile(ItemStack itemStack, GameProfile profile) { NBTTagCompound tag = Platform.openNbtData( itemStack ); - tag.setString( "username", username ); + + if ( profile!= null ) + { + NBTTagCompound pNBT = new NBTTagCompound(); + NBTUtil.func_152460_a( pNBT, profile ); + tag.setTag( "profile", pNBT ); + } + else + tag.removeTag("profile"); } @Override @@ -153,6 +163,6 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public void registerPermissions(ISecurityRegister register, IPlayerRegistry pr, ItemStack is) { - register.addPlayer( pr.getID( getUsername( is ) ), getPermissions( is ) ); + register.addPlayer( pr.getID( getProfile( is ) ), getPermissions( is ) ); } } diff --git a/me/cache/SecurityCache.java b/me/cache/SecurityCache.java index ffa3e079e..3ef0d9912 100644 --- a/me/cache/SecurityCache.java +++ b/me/cache/SecurityCache.java @@ -56,7 +56,7 @@ public class SecurityCache implements IGridCache, ISecurityGrid @Override public boolean hasPermission(EntityPlayer player, SecurityPermissions perm) { - return hasPermission( player == null ? -1 : WorldSettings.getInstance().getPlayerID( player.getCommandSenderName() ), perm ); + return hasPermission( player == null ? -1 : WorldSettings.getInstance().getPlayerID( player.getGameProfile() ), perm ); } @Override diff --git a/me/helpers/AENetworkProxy.java b/me/helpers/AENetworkProxy.java index e7b3f692c..7dcf94d8f 100644 --- a/me/helpers/AENetworkProxy.java +++ b/me/helpers/AENetworkProxy.java @@ -88,7 +88,7 @@ public class AENetworkProxy implements IGridBlock } else if ( node != null && owner != null ) { - node.setPlayerID( WorldSettings.getInstance().getPlayerID( owner.getCommandSenderName() ) ); + node.setPlayerID( WorldSettings.getInstance().getPlayerID( owner.getGameProfile() ) ); owner = null; } } diff --git a/me/storage/SecurityInventory.java b/me/storage/SecurityInventory.java index 7673b0b5a..70a045f4c 100644 --- a/me/storage/SecurityInventory.java +++ b/me/storage/SecurityInventory.java @@ -1,5 +1,7 @@ package appeng.me.storage; +import com.mojang.authlib.GameProfile; + import appeng.api.AEApi; import appeng.api.config.AccessRestriction; import appeng.api.config.Actionable; @@ -113,7 +115,7 @@ public class SecurityInventory implements IMEInventoryHandler if ( input.getItem() instanceof IBiometricCard ) { IBiometricCard tbc = (IBiometricCard) input.getItem(); - String newUser = tbc.getUsername( input.getItemStack() ); + GameProfile newUser = tbc.getProfile( input.getItemStack() ); int PlayerID = AEApi.instance().registries().players().getID( newUser ); if ( securityTile.getOwner() == PlayerID ) @@ -123,7 +125,7 @@ public class SecurityInventory implements IMEInventoryHandler { if ( ais.isMeaninful() ) { - String thisUser = tbc.getUsername( ais.getItemStack() ); + GameProfile thisUser = tbc.getProfile( ais.getItemStack() ); if ( thisUser.equals( newUser ) ) return false; }