diff options
Diffstat (limited to 'src')
4 files changed, 243 insertions, 106 deletions
diff --git a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java index 6a2253ab54..9c43b39f92 100644 --- a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java +++ b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java @@ -122,5 +122,21 @@ public class PlayerUtils { return null; } + + public final static EntityPlayer getPlayerEntityByName(String aPlayerName){ + EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); + if (player != null){ + return player; + } + return null; + } + + public final static UUID getPlayersUUIDByName(String aPlayerName){ + EntityPlayer player = PlayerUtils.getPlayer(aPlayerName); + if (player != null){ + return player.getUniqueID(); + } + return null; + } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/tesseract/TesseractHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/tesseract/TesseractHelper.java index 2204400261..cab4b2de0b 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/tesseract/TesseractHelper.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/tesseract/TesseractHelper.java @@ -10,145 +10,220 @@ import java.util.Map.Entry; import static gtPlusPlus.core.lib.CORE.sTesseractGeneratorOwnershipMap; import static gtPlusPlus.core.lib.CORE.sTesseractTerminalOwnershipMap; +import gtPlusPlus.core.util.Utils; import gtPlusPlus.xmod.gregtech.common.tileentities.automation.GT_MetaTileEntity_TesseractGenerator; import gtPlusPlus.xmod.gregtech.common.tileentities.automation.GT_MetaTileEntity_TesseractTerminal; import net.minecraft.entity.player.EntityPlayer; public class TesseractHelper { - + /** * Tesseract Generator Helpers * * @param player * @return */ - - public final boolean isGeneratorOwnedByPlayer(EntityPlayer player, GT_MetaTileEntity_TesseractGenerator generator){ + + //Checks if a Generator is owned by a player. + public final static boolean isGeneratorOwnedByPlayer(EntityPlayer player, + GT_MetaTileEntity_TesseractGenerator generator) { UUID playerIdentifier = player.getUniqueID(); - if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null){ + if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null) { Map<Integer, GT_MetaTileEntity_TesseractGenerator> generators = getGeneratorOwnershipByPlayer(player); Set<Entry<Integer, GT_MetaTileEntity_TesseractGenerator>> players = generators.entrySet(); Iterator<Entry<Integer, GT_MetaTileEntity_TesseractGenerator>> i = players.iterator(); - while(i.hasNext()) { + while (i.hasNext()) { Entry<Integer, GT_MetaTileEntity_TesseractGenerator> current = i.next(); - if (current.getValue().equals(generator)){ + if (current.getValue().equals(generator)) { return true; - } - } - } - return false; + } + } + } + return false; } - - public final boolean setGeneratorOwnershipByPlayer(EntityPlayer player, int freq, GT_MetaTileEntity_TesseractGenerator generator){ + + //Saves A Generator to the Players UUID map along with the Freq. + public final static boolean setGeneratorOwnershipByPlayer(EntityPlayer player, int freq, + GT_MetaTileEntity_TesseractGenerator generator) { UUID playerIdentifier = player.getUniqueID(); - if (playerIdentifier != null){ - Map<Integer, GT_MetaTileEntity_TesseractGenerator> playerOwned = sTesseractGeneratorOwnershipMap.get(playerIdentifier); - if (playerOwned == null || playerOwned.isEmpty()){ + Utils.LOG_INFO("Setting Generator on "+freq+" for "+player.getDisplayName()+"."); + if (playerIdentifier != null) { + Map<Integer, GT_MetaTileEntity_TesseractGenerator> playerOwned = sTesseractGeneratorOwnershipMap + .get(playerIdentifier); + if (playerOwned == null || playerOwned.isEmpty()) { Map<Integer, GT_MetaTileEntity_TesseractGenerator> newOwnershipMap = new HashMap<Integer, GT_MetaTileEntity_TesseractGenerator>(); newOwnershipMap.put(freq, generator); sTesseractGeneratorOwnershipMap.put(playerIdentifier, newOwnershipMap); + Utils.LOG_INFO("Success! [Empty Map]"); return true; - } - else if (sTesseractGeneratorOwnershipMap.containsKey(playerIdentifier)){ - Map<Integer, GT_MetaTileEntity_TesseractGenerator> ownershipMap = sTesseractGeneratorOwnershipMap.get(playerIdentifier); + } else if (sTesseractGeneratorOwnershipMap.containsKey(playerIdentifier)) { + Map<Integer, GT_MetaTileEntity_TesseractGenerator> ownershipMap = sTesseractGeneratorOwnershipMap + .get(playerIdentifier); ownershipMap.put(freq, generator); sTesseractGeneratorOwnershipMap.put(playerIdentifier, ownershipMap); + Utils.LOG_INFO("Success!"); return true; } - } + } + Utils.LOG_INFO("Failed."); return false; } - - - + + //Gets Generator based on Frequency. + public final static GT_MetaTileEntity_TesseractGenerator getGeneratorByFrequency(EntityPlayer player, + int freq) { + UUID playerIdentifier = player.getUniqueID(); + Utils.LOG_INFO("Getting Generator on "+freq+" for "+player.getDisplayName()+"."); + if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null) { + Map<Integer, GT_MetaTileEntity_TesseractGenerator> generators = getGeneratorOwnershipByPlayer(player); + Set<Entry<Integer, GT_MetaTileEntity_TesseractGenerator>> players = generators.entrySet(); + Iterator<Entry<Integer, GT_MetaTileEntity_TesseractGenerator>> i = players.iterator(); + while (i.hasNext()) { + Entry<Integer, GT_MetaTileEntity_TesseractGenerator> current = i.next(); + if (current.getKey().equals(freq)) { + Utils.LOG_INFO("Success!"); + return current.getValue(); + } + } + } + Utils.LOG_INFO("Failed."); + return null; + } + + //Remove Tesseract Generator + public final static boolean removeGenerator(EntityPlayer player, int frequency) { + UUID playerIdentifier = player.getUniqueID(); + if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null) { + sTesseractGeneratorOwnershipMap.get(playerIdentifier).remove(frequency); + return true; + } + return false; + } + /** * * Tesseract Terminal Helpers * * @param player * @return - */ - - - public final boolean isTerminalOwnedByPlayer(EntityPlayer player, GT_MetaTileEntity_TesseractTerminal generator){ + */ + + //Checks if a Terminal is owned by a player. + public final static boolean isTerminalOwnedByPlayer(EntityPlayer player, + GT_MetaTileEntity_TesseractTerminal generator) { UUID playerIdentifier = player.getUniqueID(); - if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null){ + if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null) { Map<Integer, GT_MetaTileEntity_TesseractTerminal> generators = getTerminalOwnershipByPlayer(player); Set<Entry<Integer, GT_MetaTileEntity_TesseractTerminal>> players = generators.entrySet(); Iterator<Entry<Integer, GT_MetaTileEntity_TesseractTerminal>> i = players.iterator(); - while(i.hasNext()) { + while (i.hasNext()) { Entry<Integer, GT_MetaTileEntity_TesseractTerminal> current = i.next(); - if (current.getValue().equals(generator)){ + if (current.getValue().equals(generator)) { return true; - } - } - } - return false; + } + } + } + return false; } - - public final boolean setTerminalOwnershipByPlayer(EntityPlayer player, int freq, GT_MetaTileEntity_TesseractTerminal generator){ + + //Saves A Terminal to the Players UUID map along with the Freq. + public final static boolean setTerminalOwnershipByPlayer(EntityPlayer player, int freq, + GT_MetaTileEntity_TesseractTerminal generator) { UUID playerIdentifier = player.getUniqueID(); - if (playerIdentifier != null){ - Map<Integer, GT_MetaTileEntity_TesseractTerminal> playerOwned = sTesseractTerminalOwnershipMap.get(playerIdentifier); - if (playerOwned == null || playerOwned.isEmpty()){ + if (playerIdentifier != null) { + Utils.LOG_INFO("Setting Terminal on "+freq+" for "+player.getDisplayName()+"."); + Map<Integer, GT_MetaTileEntity_TesseractTerminal> playerOwned = sTesseractTerminalOwnershipMap + .get(playerIdentifier); + if (playerOwned == null || playerOwned.isEmpty()) { Map<Integer, GT_MetaTileEntity_TesseractTerminal> newOwnershipMap = new HashMap<Integer, GT_MetaTileEntity_TesseractTerminal>(); newOwnershipMap.put(freq, generator); sTesseractTerminalOwnershipMap.put(playerIdentifier, newOwnershipMap); + Utils.LOG_INFO("Success! [Empty Map]"); return true; - } - else if (sTesseractTerminalOwnershipMap.containsKey(playerIdentifier)){ - Map<Integer, GT_MetaTileEntity_TesseractTerminal> ownershipMap = sTesseractTerminalOwnershipMap.get(playerIdentifier); + } else if (sTesseractTerminalOwnershipMap.containsKey(playerIdentifier)) { + Map<Integer, GT_MetaTileEntity_TesseractTerminal> ownershipMap = sTesseractTerminalOwnershipMap + .get(playerIdentifier); ownershipMap.put(freq, generator); sTesseractTerminalOwnershipMap.put(playerIdentifier, ownershipMap); + Utils.LOG_INFO("Success!"); return true; } - } + } + Utils.LOG_INFO("Failed."); return false; } - - - - - - - + + //Gets Terminal based on Frequency. + public final static GT_MetaTileEntity_TesseractTerminal getTerminalByFrequency(EntityPlayer player, + int freq) { + UUID playerIdentifier = player.getUniqueID(); + Utils.LOG_INFO("Getting Terminal on "+freq+" for "+player.getDisplayName()+"."); + if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null) { + Map<Integer, GT_MetaTileEntity_TesseractTerminal> generators = getTerminalOwnershipByPlayer(player); + Set<Entry<Integer, GT_MetaTileEntity_TesseractTerminal>> players = generators.entrySet(); + Iterator<Entry<Integer, GT_MetaTileEntity_TesseractTerminal>> i = players.iterator(); + while (i.hasNext()) { + Entry<Integer, GT_MetaTileEntity_TesseractTerminal> current = i.next(); + if (current.getKey().equals(freq)) { + Utils.LOG_INFO("Success!"); + return current.getValue(); + } + } + } + Utils.LOG_INFO("Failed."); + return null; + } + + //Remove Tesseract Terminal + public final static boolean removeTerminal(EntityPlayer player, int frequency) { + UUID playerIdentifier = player.getUniqueID(); + if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null) { + sTesseractTerminalOwnershipMap.get(playerIdentifier).remove(frequency); + return true; + } + return false; + } + /** * * Internal Methods - * + * */ - - private final Map<Integer, GT_MetaTileEntity_TesseractGenerator> getGeneratorOwnershipByPlayer(EntityPlayer player){ + + private final static Map<Integer, GT_MetaTileEntity_TesseractGenerator> getGeneratorOwnershipByPlayer( + EntityPlayer player) { UUID playerIdentifier = player.getUniqueID(); - if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null){ - Set<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>>> players = sTesseractGeneratorOwnershipMap.entrySet(); + if (!sTesseractGeneratorOwnershipMap.isEmpty() && playerIdentifier != null) { + Set<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>>> players = sTesseractGeneratorOwnershipMap + .entrySet(); Iterator<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>>> i = players.iterator(); - while(i.hasNext()) { + while (i.hasNext()) { Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractGenerator>> current = i.next(); - if (current.getKey().compareTo(playerIdentifier) == 0){ + if (current.getKey().compareTo(playerIdentifier) == 0) { return current.getValue(); } - - } - } + + } + } return null; } - - private final Map<Integer, GT_MetaTileEntity_TesseractTerminal> getTerminalOwnershipByPlayer(EntityPlayer player){ + + private final static Map<Integer, GT_MetaTileEntity_TesseractTerminal> getTerminalOwnershipByPlayer( + EntityPlayer player) { UUID playerIdentifier = player.getUniqueID(); - if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null){ - Set<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>>> players = sTesseractTerminalOwnershipMap.entrySet(); + if (!sTesseractTerminalOwnershipMap.isEmpty() && playerIdentifier != null) { + Set<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>>> players = sTesseractTerminalOwnershipMap + .entrySet(); Iterator<Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>>> i = players.iterator(); - while(i.hasNext()) { + while (i.hasNext()) { Entry<UUID, Map<Integer, GT_MetaTileEntity_TesseractTerminal>> current = i.next(); - if (current.getKey().compareTo(playerIdentifier) == 0){ + if (current.getKey().compareTo(playerIdentifier) == 0) { return current.getValue(); } - - } - } + + } + } return null; } - - + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractGenerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractGenerator.java index ece61fa04d..313b7049e3 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractGenerator.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractGenerator.java @@ -1,6 +1,9 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.automation; -import static gtPlusPlus.core.lib.CORE.sTesseractGenerators; +import static gtPlusPlus.core.lib.CORE.sTesseractGeneratorOwnershipMap; +import static gtPlusPlus.core.lib.CORE.sTesseractTerminalOwnershipMap; + +import java.util.UUID; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; @@ -14,6 +17,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; +import gtPlusPlus.xmod.gregtech.common.helpers.tesseract.TesseractHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; @@ -21,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.*; @@ -33,6 +38,7 @@ extends GT_MetaTileEntity_BasicTank public int oFrequency = 0; public int mNeededEnergy = 0; public int mFrequency = 0; + public UUID mOwner; public GT_MetaTileEntity_TesseractGenerator(final int aID, final String aName, final String aNameRegional, final int aTier) { super(aID, aName, aNameRegional, aTier, 3, ""); @@ -145,7 +151,7 @@ extends GT_MetaTileEntity_BasicTank @Override public int getProgresstime() { - return (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) == this) && (this.isWorking >= 20) ? 999 : 0; + return (TesseractHelper.getGeneratorByFrequency(PlayerUtils.getPlayerOnServerFromUUID(mOwner), this.mFrequency) == this) && (this.isWorking >= 20) ? 999 : 0; } @Override @@ -158,12 +164,14 @@ extends GT_MetaTileEntity_BasicTank public void saveNBTData(final NBTTagCompound aNBT) { aNBT.setInteger("mFrequency", this.mFrequency); + aNBT.setString("mOwner", mOwner.toString()); } @Override public void loadNBTData(final NBTTagCompound aNBT) { this.mFrequency = aNBT.getInteger("mFrequency"); + this.mOwner = UUID.fromString(aNBT.getString("mOnwer")); } @Override @@ -176,12 +184,14 @@ extends GT_MetaTileEntity_BasicTank @Override public void onServerStart() { - sTesseractGenerators.clear(); + sTesseractGeneratorOwnershipMap.clear(); + sTesseractTerminalOwnershipMap.clear(); } public void onServerStop() { - sTesseractGenerators.clear(); + sTesseractGeneratorOwnershipMap.clear(); + sTesseractTerminalOwnershipMap.clear(); } @Override @@ -201,7 +211,7 @@ extends GT_MetaTileEntity_BasicTank break; } PlayerUtils.messagePlayer(aPlayer, "Frequency: " + this.mFrequency); - PlayerUtils.messagePlayer(aPlayer, ((sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) != null) && (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) != this) ? EnumChatFormatting.RED + " (Occupied)" : "")); + PlayerUtils.messagePlayer(aPlayer, ((getGeneratorEntity() != null) && (getGeneratorEntity() != this)) ? EnumChatFormatting.RED + " (Occupied)" : ""); } return true; } @@ -226,7 +236,7 @@ extends GT_MetaTileEntity_BasicTank case 3: this.mFrequency += 512; } - GT_Utility.sendChatToPlayer(aPlayer, "Frequency: " + this.mFrequency + ((sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) != null) && (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) != this) ? EnumChatFormatting.RED + " (Occupied)" : "")); + GT_Utility.sendChatToPlayer(aPlayer, "Frequency: " + this.mFrequency + ((getGeneratorEntity() != null && getGeneratorEntity() != this) ? EnumChatFormatting.RED + " (Occupied)" : "")); } } @@ -242,7 +252,7 @@ extends GT_MetaTileEntity_BasicTank if ((tTileEntity != null) && (this.getBaseMetaTileEntity().isAllowedToWork()) && ((tTileEntity instanceof IGregTechDeviceInformation)) && (((IGregTechDeviceInformation)tTileEntity).isGivingInformation())) { return ((IGregTechDeviceInformation)tTileEntity).getInfoData(); } - return new String[] { "Tesseract Generator", "Freqency:", "" + this.mFrequency, (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) == this) && (this.isWorking >= 20) ? "Active" : "Inactive" }; + return new String[] { "Tesseract Generator", "Freqency:", "" + this.mFrequency, (getGeneratorEntity() == this) && (this.isWorking >= 20) ? "Active" : "Inactive" }; } @Override @@ -493,9 +503,9 @@ extends GT_MetaTileEntity_BasicTank Utils.LOG_INFO("mFreq != oFreq"); - if (sTesseractGenerators.get(Integer.valueOf(this.oFrequency)) == this) + if (getGeneratorEntity() == this) { - sTesseractGenerators.remove(Integer.valueOf(this.oFrequency)); + getGeneratorEntity(this.oFrequency); this.getBaseMetaTileEntity().issueBlockUpdate(); Utils.LOG_INFO("this Gen == oFreq on map - do block update"); } @@ -505,22 +515,22 @@ extends GT_MetaTileEntity_BasicTank if ((this.getBaseMetaTileEntity().isAllowedToWork()) && (this.getBaseMetaTileEntity().decreaseStoredEnergyUnits(this.mNeededEnergy, false))) { Utils.LOG_INFO("Can Work & Has Energy"); - if ((sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) == null) || (!sTesseractGenerators.get(Integer.valueOf(this.mFrequency)).isValidTesseractGenerator(null, true))) { + if ((getGeneratorEntity(Integer.valueOf(this.mFrequency)) == null) || (!getGeneratorEntity(Integer.valueOf(this.mFrequency)).isValidTesseractGenerator(null, true))) { Utils.LOG_INFO("storing TE I think to mFreq map?"); - sTesseractGenerators.put(Integer.valueOf(this.mFrequency), this); + TesseractHelper.setGeneratorOwnershipByPlayer(PlayerUtils.getPlayerOnServerFromUUID(mOwner), this.mFrequency, this); } } else { - if (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) == this) + if (getGeneratorEntity(Integer.valueOf(this.mFrequency)) == this) { Utils.LOG_INFO("this gen == mFreq on map - do block update"); - sTesseractGenerators.remove(Integer.valueOf(this.mFrequency)); + TesseractHelper.removeGenerator(PlayerUtils.getPlayerOnServerFromUUID(mOwner), this.mFrequency); this.getBaseMetaTileEntity().issueBlockUpdate(); } this.isWorking = 0; } - if (sTesseractGenerators.get(Integer.valueOf(this.mFrequency)) == this) + if (getGeneratorEntity(Integer.valueOf(this.mFrequency)) == this) { Utils.LOG_INFO("mFreq == this - do work related things"); if (this.isWorking < 20) { @@ -596,4 +606,34 @@ extends GT_MetaTileEntity_BasicTank public boolean displaysStackSize() { return false; } + + private GT_MetaTileEntity_TesseractGenerator getGeneratorEntity(){ + GT_MetaTileEntity_TesseractGenerator thisGenerator = TesseractHelper.getGeneratorByFrequency(PlayerUtils.getPlayerOnServerFromUUID(mOwner), this.mFrequency); + if (thisGenerator != null){ + return thisGenerator; + } + return null; + } + + private GT_MetaTileEntity_TesseractGenerator getGeneratorEntity(int frequency){ + GT_MetaTileEntity_TesseractGenerator thisGenerator = TesseractHelper.getGeneratorByFrequency(PlayerUtils.getPlayerOnServerFromUUID(mOwner), frequency); + if (thisGenerator != null){ + return thisGenerator; + } + return null; + } + + @Override + public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + mOwner = aPlayer.getUniqueID(); + super.onCreated(aStack, aWorld, aPlayer); + } + + @Override + public void onRemoval() { + try { + CORE.sTesseractGeneratorOwnershipMap.get(mOwner).remove(this.mFrequency); + } catch (Throwable t){} + super.onRemoval(); + } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractTerminal.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractTerminal.java index e4dd51500e..b378654fd5 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractTerminal.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractTerminal.java @@ -1,5 +1,7 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.automation; +import java.util.UUID; + import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -12,10 +14,12 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.player.PlayerUtils; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; +import gtPlusPlus.xmod.gregtech.common.helpers.tesseract.TesseractHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.*; @@ -23,6 +27,7 @@ public class GT_MetaTileEntity_TesseractTerminal extends GT_MetaTileEntity_BasicTank { public int mFrequency = 0; + public UUID mOwner; public boolean mDidWork = false; public static boolean sInterDimensionalTesseractAllowed = true; @@ -126,12 +131,14 @@ extends GT_MetaTileEntity_BasicTank public void saveNBTData(final NBTTagCompound aNBT) { aNBT.setInteger("mFrequency", this.mFrequency); + aNBT.setString("mOwner", mOwner.toString()); } @Override public void loadNBTData(final NBTTagCompound aNBT) { this.mFrequency = aNBT.getInteger("mFrequency"); + this.mOwner = UUID.fromString(aNBT.getString("mOnwer")); } @Override @@ -140,24 +147,6 @@ extends GT_MetaTileEntity_BasicTank sInterDimensionalTesseractAllowed = true; } - /*public boolean onRightclick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) - { - if (aSide == getBaseMetaTileEntity().getFrontFacing()) - { - float[] tCoords = GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ); - switch ((byte)((byte)(int)(tCoords[0] * 2.0F) + 2 * (byte)(int)(tCoords[1] * 2.0F))) - { - case 0: - this.mFrequency -= 1; - break; - case 1: - this.mFrequency += 1; - } - GT_Utility.sendChatToPlayer(aPlayer, "Frequency: " + this.mFrequency + (getTesseract(this.mFrequency, false) == null ? "" : new StringBuilder().append(EnumChatFormatting.GREEN).append(" (Connected)").toString())); - } - return true; - }*/ - @Override public boolean onRightclick(final IGregTechTileEntity aBaseMetaTileEntity, final EntityPlayer aPlayer, final byte aSide, final float aX, final float aY, final float aZ){ if (aSide == this.getBaseMetaTileEntity().getFrontFacing()){ @@ -211,13 +200,16 @@ extends GT_MetaTileEntity_BasicTank public GT_MetaTileEntity_TesseractGenerator getTesseract(final int aFrequency, final boolean aWorkIrrelevant) { - final GT_MetaTileEntity_TesseractGenerator rTesseract = CORE.sTesseractGenerators.get(Integer.valueOf(aFrequency)); + final GT_MetaTileEntity_TesseractGenerator rTesseract = TesseractHelper.getGeneratorByFrequency(PlayerUtils.getPlayerOnServerFromUUID(mOwner), aFrequency); if (rTesseract == null) { return null; } + if (!TesseractHelper.isGeneratorOwnedByPlayer(PlayerUtils.getPlayerOnServerFromUUID(mOwner), rTesseract)){ + return null; + } if (rTesseract.mFrequency != aFrequency) { - CORE.sTesseractGenerators.put(Integer.valueOf(aFrequency), null);return null; + TesseractHelper.setTerminalOwnershipByPlayer(PlayerUtils.getPlayerOnServerFromUUID(mOwner), Integer.valueOf(aFrequency), null);return null; } if (!rTesseract.isValidTesseractGenerator(this.getBaseMetaTileEntity().getOwnerName(), aWorkIrrelevant)) { return null; @@ -465,10 +457,10 @@ extends GT_MetaTileEntity_BasicTank } } } - + @Override public String[] getDescription() { - return new String[]{this.mDescription, "Accesses Tesseracts remotely", CORE.GT_Tooltip}; + return new String[]{this.mDescription, "Accesses Tesseract Generators remotely", CORE.GT_Tooltip}; } @Override @@ -522,4 +514,18 @@ extends GT_MetaTileEntity_BasicTank return false; } + @Override + public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + mOwner = aPlayer.getUniqueID(); + super.onCreated(aStack, aWorld, aPlayer); + } + + @Override + public void onRemoval() { + try { + CORE.sTesseractTerminalOwnershipMap.get(mOwner).remove(this.mFrequency); + } catch (Throwable t){} + super.onRemoval(); + } + } |