diff --git a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java index f30f54aa..21a960b2 100644 --- a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java @@ -280,8 +280,7 @@ public class BloodAltar { isActive = false; } - public void update() - { + public void update() { World world = tileAltar.getWorld(); BlockPos pos = tileAltar.getPos(); @@ -387,15 +386,15 @@ public class BloodAltar { if (itemTag == null) return; - String ownerName = itemTag.getString(Constants.NBT.OWNER_NAME); + String ownerUUID = itemTag.getString(Constants.NBT.OWNER_UUID); - if (Strings.isNullOrEmpty(ownerName)) + if (Strings.isNullOrEmpty(ownerUUID)) return; if (fluid != null && fluid.amount >= 1) { int liquidDrained = Math.min((int) (altarTier.ordinal() >= 2 ? consumptionRate * (1 + consumptionMultiplier) : consumptionRate), fluid.amount); - int drain = NetworkHelper.getSoulNetwork(ownerName, world).addLifeEssence(liquidDrained, (int) (item.getMaxEssence(returnedItem.getMetadata()) * this.orbCapacityMultiplier)); + int drain = NetworkHelper.getSoulNetwork(ownerUUID, world).addLifeEssence(liquidDrained, (int) (item.getMaxEssence(returnedItem.getMetadata()) * this.orbCapacityMultiplier)); fluid.amount = fluid.amount - drain; @@ -403,8 +402,8 @@ public class BloodAltar { world.spawnParticle(EnumParticleTypes.REDSTONE, pos.getX() + Math.random() - Math.random(), pos.getY() + Math.random() - Math.random(), pos.getZ() + Math.random() - Math.random(), f1, f2, f3); } } - if (world != null) - world.markBlockForUpdate(pos); + + world.markBlockForUpdate(pos); } public void checkTier() { diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 495d9bc7..e9ab5c37 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -8,7 +8,7 @@ public class Constants { public static class NBT { - public static final String OWNER_NAME = "ownerName"; + public static final String OWNER_UUID = "ownerUUID"; public static final String USES = "uses"; public static final String UNUSABLE = "unusable"; public static final String SACRIFICE = "sacrifice"; diff --git a/src/main/java/WayofTime/bloodmagic/api/network/SoulNetwork.java b/src/main/java/WayofTime/bloodmagic/api/network/SoulNetwork.java index b06cdb46..8ff2cfca 100644 --- a/src/main/java/WayofTime/bloodmagic/api/network/SoulNetwork.java +++ b/src/main/java/WayofTime/bloodmagic/api/network/SoulNetwork.java @@ -75,6 +75,8 @@ public class SoulNetwork extends WorldSavedData { if (event.getResult() != Event.Result.DENY) data.setCurrentEssence(newEss); + markDirty(); + return newEss - currEss; } diff --git a/src/main/java/WayofTime/bloodmagic/api/util/helper/BindableHelper.java b/src/main/java/WayofTime/bloodmagic/api/util/helper/BindableHelper.java index fac04a07..f0fe7289 100644 --- a/src/main/java/WayofTime/bloodmagic/api/util/helper/BindableHelper.java +++ b/src/main/java/WayofTime/bloodmagic/api/util/helper/BindableHelper.java @@ -8,6 +8,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; +import java.util.UUID; + public class BindableHelper { /** @@ -20,7 +22,7 @@ public class BindableHelper { * @return - Whether binding was successful */ public static boolean checkAndSetItemOwner(ItemStack stack, EntityPlayer player) { - return !PlayerHelper.isFakePlayer(player) && checkAndSetItemOwner(stack, player.getGameProfile().getName()); + return !PlayerHelper.isFakePlayer(player) && checkAndSetItemOwner(stack, PlayerHelper.getUUIDFromPlayer(player)); } /** @@ -31,26 +33,33 @@ public class BindableHelper { * Fires {@link ItemBindEvent}. * * @param stack - The ItemStack to bind - * @param ownerName - The username to bind the ItemStack to + * @param uuid - The username to bind the ItemStack to * * @return - Whether the binding was successful */ - public static boolean checkAndSetItemOwner(ItemStack stack, String ownerName) { + public static boolean checkAndSetItemOwner(ItemStack stack, String uuid) { stack = NBTHelper.checkNBT(stack); if (!(stack.getItem() instanceof IBindable)) return false; - if (Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME))) { - MinecraftForge.EVENT_BUS.post(new ItemBindEvent(PlayerHelper.getPlayerFromUsername(ownerName), ownerName, stack)); - ((IBindable) stack.getItem()).onBind(PlayerHelper.getPlayerFromUsername(ownerName), stack); - stack.getTagCompound().setString(Constants.NBT.OWNER_NAME, ownerName); + if (Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID))) { + MinecraftForge.EVENT_BUS.post(new ItemBindEvent(PlayerHelper.getPlayerFromUUID(uuid), uuid, stack)); + ((IBindable) stack.getItem()).onBind(PlayerHelper.getPlayerFromUUID(uuid), stack); + stack.getTagCompound().setString(Constants.NBT.OWNER_UUID, uuid); return true; } return true; } + /** + * @see BindableHelper#checkAndSetItemOwner(ItemStack, String) + */ + public static boolean checkAndSetItemOwner(ItemStack stack, UUID uuid) { + return checkAndSetItemOwner(stack, uuid.toString()); + } + /** * Sets the Owner of the item without checking if it is already bound. * Also bypasses {@link ItemBindEvent}. @@ -61,7 +70,7 @@ public class BindableHelper { public static void setItemOwner(ItemStack stack, String ownerName) { stack = NBTHelper.checkNBT(stack); - stack.getTagCompound().setString(Constants.NBT.OWNER_NAME, ownerName); + stack.getTagCompound().setString(Constants.NBT.OWNER_UUID, ownerName); } /** @@ -74,6 +83,19 @@ public class BindableHelper { public static String getOwnerName(ItemStack stack) { stack = NBTHelper.checkNBT(stack); - return stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + return PlayerHelper.getUsernameFromStack(stack); + } + + /** + * Used to safely obtain the UUID of the ItemStack's owner + * + * @param stack - The ItemStack to check the owner of + * + * @return - The UUID of the ItemStack's owner + */ + public static String getOwnerUUID(ItemStack stack) { + stack = NBTHelper.checkNBT(stack); + + return stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); } } diff --git a/src/main/java/WayofTime/bloodmagic/api/util/helper/NetworkHelper.java b/src/main/java/WayofTime/bloodmagic/api/util/helper/NetworkHelper.java index 99be7a4c..6a730e2a 100644 --- a/src/main/java/WayofTime/bloodmagic/api/util/helper/NetworkHelper.java +++ b/src/main/java/WayofTime/bloodmagic/api/util/helper/NetworkHelper.java @@ -13,6 +13,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.Event; +import java.util.UUID; + public class NetworkHelper { // Get @@ -20,22 +22,36 @@ public class NetworkHelper { /** * Gets the SoulNetwork for the player. * - * @param ownerName - The name of the SoulNetwork owner - * @param world - The world + * @param name - The username of the SoulNetwork owner + * @param world - The world * * @return - The SoulNetwork for the given name. */ - public static SoulNetwork getSoulNetwork(String ownerName, World world) { - SoulNetwork network = (SoulNetwork) world.getMapStorage().loadData(SoulNetwork.class, ownerName); + public static SoulNetwork getSoulNetwork(String name, World world) { + SoulNetwork network = (SoulNetwork) world.getMapStorage().loadData(SoulNetwork.class, name); if (network == null) { - network = new SoulNetwork(ownerName); - world.getMapStorage().setData(ownerName, network); + network = new SoulNetwork(name); + world.getMapStorage().setData(name, network); } return network; } + /** + * @see NetworkHelper#getSoulNetwork(String, World) + */ + public static SoulNetwork getSoulNetwork(UUID uuid, World world) { + return getSoulNetwork(PlayerHelper.getUsernameFromUUID(uuid), world); + } + + /** + * @see NetworkHelper#getSoulNetwork(String, World) + */ + public static SoulNetwork getSoulNetwork(EntityPlayer player, World world) { + return getSoulNetwork(PlayerHelper.getUUIDFromPlayer(player), world); + } + /** * Gets the current orb tier of the SoulNetwork. * @@ -79,7 +95,7 @@ public class NetworkHelper { */ public static boolean syphonFromContainer(ItemStack stack, World world, int toSyphon) { stack = NBTHelper.checkNBT(stack); - String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); if (Strings.isNullOrEmpty(ownerName)) return false; @@ -122,7 +138,7 @@ public class NetworkHelper { return false; stack = NBTHelper.checkNBT(stack); - String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); if (!Strings.isNullOrEmpty(ownerName)) { SoulNetworkEvent.ItemDrainNetworkEvent event = new SoulNetworkEvent.ItemDrainNetworkEvent(player, ownerName, stack, syphon); @@ -149,7 +165,7 @@ public class NetworkHelper { @Deprecated public static boolean syphonFromNetworkWhileInContainer(ItemStack stack, int syphon) { stack = NBTHelper.checkNBT(stack); - String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); if (Strings.isNullOrEmpty(ownerName)) return false; @@ -165,7 +181,7 @@ public class NetworkHelper { @Deprecated public static int syphonFromNetwork(ItemStack stack, int syphon) { stack = NBTHelper.checkNBT(stack); - String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + String ownerName = stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); if (!Strings.isNullOrEmpty(ownerName)) return syphonFromNetwork(ownerName, syphon); diff --git a/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerHelper.java b/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerHelper.java index a4d70322..9c29bdea 100644 --- a/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerHelper.java +++ b/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerHelper.java @@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; +import net.minecraftforge.common.UsernameCache; import net.minecraftforge.common.util.FakePlayer; import java.util.UUID; @@ -17,7 +18,7 @@ public class PlayerHelper { private static final Pattern FAKE_PLAYER_PATTERN = Pattern.compile("^(?:\\[.*\\])|(?:ComputerCraft)$"); public static String getUsernameFromPlayer(EntityPlayer player) { - return player.getGameProfile().getName(); + return UsernameCache.getLastKnownUsername(getUUIDFromPlayer(player)); } public static EntityPlayer getPlayerFromUsername(String username) { @@ -27,10 +28,32 @@ public class PlayerHelper { return MinecraftServer.getServer().getConfigurationManager().getPlayerByUsername(username); } + public static EntityPlayer getPlayerFromUUID(String uuid) { + return getPlayerFromUsername(getUsernameFromUUID(uuid)); + } + + public static EntityPlayer getPlayerFromUUID(UUID uuid) { + return getPlayerFromUsername(getUsernameFromUUID(uuid)); + } + public static UUID getUUIDFromPlayer(EntityPlayer player) { return player.getGameProfile().getId(); } + public static String getUsernameFromUUID(String uuid) { + return UsernameCache.getLastKnownUsername(UUID.fromString(uuid)); + } + + public static String getUsernameFromUUID(UUID uuid) { + return UsernameCache.getLastKnownUsername(uuid); + } + + public static String getUsernameFromStack(ItemStack stack) { + stack = NBTHelper.checkNBT(stack); + + return PlayerHelper.getUsernameFromUUID(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)); + } + public static boolean isFakePlayer(EntityPlayer player) { return player instanceof FakePlayer || FAKE_PLAYER_PATTERN.matcher(getUsernameFromPlayer(player)).matches(); } @@ -38,8 +61,8 @@ public class PlayerHelper { public static void causeNauseaToPlayer(ItemStack stack) { stack = NBTHelper.checkNBT(stack); - if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME))) - causeNauseaToPlayer(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME)); + if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID))) + causeNauseaToPlayer(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)); } public static void causeNauseaToPlayer(String ownerName) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java b/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java index 931fef39..b02fac1b 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.api.iface.IBindable; import WayofTime.bloodmagic.api.util.helper.BindableHelper; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; import net.minecraft.entity.player.EntityPlayer; @@ -35,7 +36,7 @@ public class ItemBindable extends Item implements IBindable { public static boolean syphonBatteries(ItemStack stack, EntityPlayer player, int damageToBeDone) { if (!player.worldObj.isRemote) { - return NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(BindableHelper.getOwnerName(stack), player.worldObj), damageToBeDone); + return NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player, player.worldObj), damageToBeDone); } else { double posX = player.posX; double posY = player.posY; @@ -76,8 +77,8 @@ public class ItemBindable extends Item implements IBindable { public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { NBTHelper.checkNBT(stack); - if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME))) - tooltip.add(TextHelper.getFormattedText(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.currentOwner"), stack.getTagCompound().getString(Constants.NBT.OWNER_NAME)))); + if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID))) + tooltip.add(TextHelper.getFormattedText(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.currentOwner"), PlayerHelper.getUsernameFromStack(stack)))); } @Override @@ -129,7 +130,7 @@ public class ItemBindable extends Item implements IBindable { public String getBindableOwner(ItemStack stack) { stack = NBTHelper.checkNBT(stack); - return stack.getTagCompound().getString(Constants.NBT.OWNER_NAME); + return stack.getTagCompound().getString(Constants.NBT.OWNER_UUID); } // IBindable diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java b/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java index 693fbb09..de6bca87 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java @@ -54,16 +54,16 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable { if (PlayerHelper.isFakePlayer(player)) return stack; - if (Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME))) + if (Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID))) return stack; if (world.isRemote) return stack; - if (stack.getTagCompound().getString(Constants.NBT.OWNER_NAME).equals(PlayerHelper.getUsernameFromPlayer(player))) - NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME), world), getOrbLevel(stack.getItemDamage())); + if (stack.getTagCompound().getString(Constants.NBT.OWNER_UUID).equals(PlayerHelper.getUsernameFromPlayer(player))) + NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID), world), getOrbLevel(stack.getItemDamage())); - NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_NAME), world).addLifeEssence(200, getMaxEssence(stack.getItemDamage())); + NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID), world).addLifeEssence(200, getMaxEssence(stack.getItemDamage())); hurtPlayer(player, 200); return stack; } diff --git a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java index c6eb9a00..3ce13a99 100644 --- a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java @@ -73,7 +73,7 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato boolean shouldSyphon = player.getHealth() / player.getMaxHealth() > HEALTHREQ && getStoredLP(stack) < CAPACITY; if (shouldSyphon & world.getTotalWorldTime() % INTERVAL == 0) { - NetworkHelper.getSoulNetwork(player.getName(), world).hurtPlayer(1.0F); + NetworkHelper.getSoulNetwork(player, world).hurtPlayer(1.0F); addLP(stack, CONVERSION); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java index 8d7eb1bc..41f1bc83 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java @@ -32,7 +32,7 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader { if (!world.isRemote) { MovingObjectPosition position = getMovingObjectPositionFromPlayer(world, player, false); - int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerName(stack), world).getCurrentEssence(); + int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerUUID(stack), world).getCurrentEssence(); if (position == null) { ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence))); diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilSeer.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilSeer.java index d825f991..bf39a8d9 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilSeer.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilSeer.java @@ -32,7 +32,7 @@ public class ItemSigilSeer extends ItemSigilBase implements IAltarReader { if (!world.isRemote) { MovingObjectPosition position = getMovingObjectPositionFromPlayer(world, player, false); - int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerName(stack), world).getCurrentEssence(); + int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerUUID(stack), world).getCurrentEssence(); if (position == null) { ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence))); diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualTest.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualTest.java index 1f641d4f..78ac7a40 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualTest.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualTest.java @@ -22,7 +22,7 @@ public class RitualTest extends Ritual { @Override public void performRitual(IMasterRitualStone masterRitualStone) { - EntityPlayer player = PlayerHelper.getPlayerFromUsername(masterRitualStone.getOwner()); + EntityPlayer player = PlayerHelper.getPlayerFromUUID(masterRitualStone.getOwner()); if (player != null) player.addChatComponentMessage(new ChatComponentText("effect performed")); @@ -30,7 +30,7 @@ public class RitualTest extends Ritual { @Override public void stopRitual(IMasterRitualStone masterRitualStone, BreakType breakType) { - EntityPlayer player = PlayerHelper.getPlayerFromUsername(masterRitualStone.getOwner()); + EntityPlayer player = PlayerHelper.getPlayerFromUUID(masterRitualStone.getOwner()); if (player != null) player.addChatComponentMessage(new ChatComponentText("ritual stopped - " + breakType.name())); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java index ee8792d5..75170134 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java @@ -20,7 +20,7 @@ public class TileImperfectRitualStone extends TileEntity implements IImperfectRi public boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player) { if (imperfectRitual != null && ImperfectRitualRegistry.ritualEnabled(imperfectRitual)) { - NetworkHelper.getSoulNetwork(player.getDisplayNameString(), world).syphonAndDamage(imperfectRitual.getActivationCost()); + NetworkHelper.getSoulNetwork(player, world).syphonAndDamage(imperfectRitual.getActivationCost()); if (imperfectRitual.onActivate(this, player)) if (imperfectRitual.isLightshow()) getWorld().addWeatherEffect(new EntityLightningBolt(getWorld(), getPos().getX(), getPos().getY() + 2, getPos().getZ())); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index bb9dc06e..e6ec3de7 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -53,7 +53,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt @Override public void readFromNBT(NBTTagCompound tag) { - owner = tag.getString(Constants.NBT.OWNER_NAME); + owner = tag.getString(Constants.NBT.OWNER_UUID); currentRitual = RitualRegistry.getRitualForId(tag.getString(Constants.NBT.CURRENT_RITUAL)); active = tag.getBoolean(Constants.NBT.IS_RUNNING); activeTime = tag.getInteger(Constants.NBT.RUNTIME); @@ -62,7 +62,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt @Override public void writeToNBT(NBTTagCompound tag) { String ritualId = RitualRegistry.getIdForRitual(getCurrentRitual()); - tag.setString(Constants.NBT.OWNER_NAME, Strings.isNullOrEmpty(getOwner()) ? "" : getOwner()); + tag.setString(Constants.NBT.OWNER_UUID, Strings.isNullOrEmpty(getOwner()) ? "" : getOwner()); tag.setString(Constants.NBT.CURRENT_RITUAL, Strings.isNullOrEmpty(ritualId) ? "" : ritualId); tag.setBoolean(Constants.NBT.IS_RUNNING, isActive()); tag.setInteger(Constants.NBT.RUNTIME, getActiveTime()); @@ -75,14 +75,14 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt return false; activationCrystal = NBTHelper.checkNBT(activationCrystal); - String crystalOwner = activationCrystal.getTagCompound().getString(Constants.NBT.OWNER_NAME); + String crystalOwner = activationCrystal.getTagCompound().getString(Constants.NBT.OWNER_UUID); if (!Strings.isNullOrEmpty(crystalOwner) && ritual != null) { if (activationCrystal.getItem() instanceof ItemActivationCrystal) { int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal); if (RitualHelper.canCrystalActivate(ritual, crystalLevel)) { - SoulNetwork network = NetworkHelper.getSoulNetwork(activator.getDisplayNameString(), getWorld()); + SoulNetwork network = NetworkHelper.getSoulNetwork(activator, getWorld()); if (network.getCurrentEssence() < ritual.getActivationCost()) { ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.weak"); @@ -103,7 +103,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt network.syphon(ritual.getActivationCost()); this.active = true; - this.owner = activator.getDisplayNameString(); + this.owner = PlayerHelper.getUUIDFromPlayer(activator).toString(); this.currentRitual = ritual; return true;