aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2017-08-04 13:37:35 +1000
committerAlkalus <draknyte1@hotmail.com>2017-08-04 13:37:35 +1000
commit6f5e00874b30e2dd01438dc4ada6dfff6ae4b2ce (patch)
tree1ba4f44eae1511c16c242e5e8358bdac77bba62b /src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation
parent16f9a9cb59f5059a65b276bf780a74ac8aec4d6d (diff)
downloadGT5-Unofficial-6f5e00874b30e2dd01438dc4ada6dfff6ae4b2ce.tar.gz
GT5-Unofficial-6f5e00874b30e2dd01438dc4ada6dfff6ae4b2ce.tar.bz2
GT5-Unofficial-6f5e00874b30e2dd01438dc4ada6dfff6ae4b2ce.zip
% Rewrote how tesseracts handle players, now frequencies are player unique.
+ Adding some debug logging for dev testing.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation')
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractGenerator.java68
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/automation/GT_MetaTileEntity_TesseractTerminal.java50
2 files changed, 82 insertions, 36 deletions
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();
+ }
+
}