diff --git a/.nb-gradle/profiles/private/aux-config b/.nb-gradle/profiles/private/aux-config
index 87245d6c..86847514 100644
--- a/.nb-gradle/profiles/private/aux-config
+++ b/.nb-gradle/profiles/private/aux-config
@@ -2,6 +2,20 @@
+
+
+
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/DimDoors.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/server/DDProxyServer.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/Pocket.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java
+ file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/Location.java
+
+
diff --git a/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java b/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java
index 7f56fb7b..4eca4cc2 100644
--- a/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java
+++ b/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java
@@ -5,11 +5,9 @@
*/
package com.zixiken.dimdoors.shared;
-import com.zixiken.dimdoors.DimDoors;
import java.io.File;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
-import net.minecraftforge.fml.common.FMLCommonHandler;
/**
*
diff --git a/src/main/java/com/zixiken/dimdoors/shared/Location.java b/src/main/java/com/zixiken/dimdoors/shared/Location.java
new file mode 100644
index 00000000..58adecb0
--- /dev/null
+++ b/src/main/java/com/zixiken/dimdoors/shared/Location.java
@@ -0,0 +1,60 @@
+package com.zixiken.dimdoors.shared;
+
+import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.common.DimensionManager;
+
+/**
+ *
+ * @author Robijnvogel
+ */
+public class Location {
+
+ public int dimensionID;
+ public BlockPos pos;
+
+ Location(int dimID, int x, int y, int z) {
+ this.dimensionID = dimID;
+ pos = new BlockPos(x, y, z);
+ }
+
+ Location(int dimID, BlockPos pos) {
+ this.dimensionID = dimID;
+ this.pos = pos.up(0); //copyOf
+ }
+
+ public TileEntity getTileEntity() {
+ World world = DimensionManager.getWorld(dimensionID); //@todo HOW?
+ return world.getTileEntity(pos);
+ }
+
+ static Location getLocation(TileEntity tileEntity) {
+ World world = tileEntity.getWorld();
+ int dimID = world.provider.getDimension();
+ BlockPos blockPos = tileEntity.getPos();
+ return new Location(dimID, blockPos);
+ }
+
+ static NBTBase writeToNBT(Location location) {
+ NBTTagCompound locationNBT = new NBTTagCompound();
+ locationNBT.setInteger("worldID", location.dimensionID);
+ locationNBT.setInteger("x", location.pos.getX());
+ locationNBT.setInteger("y", location.pos.getY());
+ locationNBT.setInteger("z", location.pos.getZ());
+ return locationNBT;
+ }
+
+ static Location readFromNBT(NBTTagCompound locationNBT) {
+ int worldID = locationNBT.getInteger("worldID");
+ int x = locationNBT.getInteger("x");
+ int y = locationNBT.getInteger("y");
+ int z = locationNBT.getInteger("z");
+ BlockPos blockPos = new BlockPos(x, y, z);
+ return new Location(worldID, blockPos);
+ }
+
+}
diff --git a/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java b/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java
index d07afd77..8aca806f 100644
--- a/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java
+++ b/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java
@@ -5,10 +5,12 @@
*/
package com.zixiken.dimdoors.shared;
+import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
/**
@@ -20,30 +22,30 @@ public class RiftRegistry {
public static final RiftRegistry Instance = new RiftRegistry();
// Privates
- private int nextUnusedID;
- private final Map riftList;
+ private int nextRiftID;
+ private final Map riftList;
// Methods
public RiftRegistry() {
- nextUnusedID = 0;
+ nextRiftID = 0;
riftList = new HashMap();
}
public void reset() {
- nextUnusedID = 0;
+ nextRiftID = 0;
riftList.clear();
}
public void readFromNBT(NBTTagCompound nbt) {
- nextUnusedID = nbt.getInteger("nextUnusedID");
+ nextRiftID = nbt.getInteger("nextUnusedID");
if (nbt.hasKey("riftData")) {
NBTTagCompound riftsNBT = nbt.getCompoundTag("riftData");
int i = 1;
String tag = "" + i;
while (riftsNBT.hasKey(tag)) {
NBTTagCompound riftNBT = riftsNBT.getCompoundTag(tag);
- DDTileEntityBase rift = DDTileEntityBase.readFromNBT(i, riftNBT);
- riftList.put(i, rift);
+ Location riftLocation = Location.readFromNBT(riftNBT);
+ riftList.put(i, riftLocation);
i++;
tag = "" + i;
@@ -52,30 +54,48 @@ public class RiftRegistry {
}
public void writeToNBT(NBTTagCompound nbt) {
- nbt.setInteger("nextUnusedID", nextUnusedID);
+ nbt.setInteger("nextUnusedID", nextRiftID);
NBTTagCompound riftsNBT = new NBTTagCompound();
- for (Map.Entry entry : riftList.entrySet()) {
- riftsNBT.setTag("" + entry.getKey(), DDTileEntityBase.writeToNBT(entry.getValue()));
+ for (Map.Entry entry : riftList.entrySet()) {
+ riftsNBT.setTag("" + entry.getKey(), Location.writeToNBT(entry.getValue()));
}
nbt.setTag("riftData", riftsNBT);
}
- public int registerNewRift(DDTileEntityBase rift, World world) {
- riftList.put(nextUnusedID, rift);
+ public int registerNewRift(DDTileEntityBase rift) {
+ riftList.put(nextRiftID, Location.getLocation(rift));
- nextUnusedID++;
- RiftSavedData.get(world).markDirty(); //Notify that this needs to be saved on world save
- return nextUnusedID -1;
+ nextRiftID++;
+ RiftSavedData.get(DimDoors.getDefWorld()).markDirty(); //Notify that this needs to be saved on world save
+ return nextRiftID -1;
}
public void removeRift(int riftID, World world) {
if (riftList.containsKey(riftID)) {
riftList.remove(riftID);
- RiftSavedData.get(world).markDirty(); //Notify that this needs to be saved on world save
+ RiftSavedData.get(DimDoors.getDefWorld()).markDirty(); //Notify that this needs to be saved on world save
}
}
- public DDTileEntityBase getRift(int ID) {
+ public Location getRiftLocation(int ID) {
return riftList.get(ID);
}
+
+ public void pair(int riftID, int riftID2) {
+ Location location = riftList.get(riftID);
+ TileEntity tileEntity = location.getTileEntity(); //@todo this method might need to be in another class?
+ if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
+ DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
+ rift.pair(riftID2);
+ }
+ }
+
+ public void unpair(int riftID) {
+ Location location = riftList.get(riftID);
+ TileEntity tileEntity = location.getTileEntity();
+ if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
+ DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
+ rift.unpair();
+ }
+ }
}
diff --git a/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java b/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java
index 34ffbeca..84060c73 100644
--- a/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java
+++ b/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java
@@ -5,7 +5,6 @@
*/
package com.zixiken.dimdoors.shared;
-import com.zixiken.dimdoors.DimDoors;
import java.io.File;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java
index 10321252..e2b90dae 100644
--- a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java
+++ b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java
@@ -1,10 +1,8 @@
package com.zixiken.dimdoors.tileentities;
-import com.zixiken.dimdoors.world.RiftHandler;
+import com.zixiken.dimdoors.shared.RiftRegistry;
import java.util.Random;
-
import net.minecraft.block.state.IBlockState;
-import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
@@ -27,36 +25,30 @@ public abstract class DDTileEntityBase extends TileEntity
}
public void pair(int otherRiftID) {
- RiftHandler rifthandler;
if (isPaired) {
if (otherRiftID == pairedRiftID) {
return;
}
else {
- rifthandler.unpair(pairedRiftID);
+ RiftRegistry.Instance.unpair(pairedRiftID);
}
}
pairedRiftID = otherRiftID;
- rifthandler.pair(pairedRiftID, riftID);
+ RiftRegistry.Instance.pair(pairedRiftID, riftID);
isPaired = true;
}
public void unpair() {
- RiftHandler rifthandler;
if (!isPaired) {
return;
}
else {
isPaired = false;
- rifthandler.unpair(pairedRiftID);
+ RiftRegistry.Instance.unpair(pairedRiftID);
}
}
- public static NBTTagCompound writeToNBT(DDTileEntityBase rift) {
-
- }
-
- public static DDTileEntityBase readFromNBT(int dim, NBTTagCompound riftNBT) {
-
+ private void register() {
+ riftID = RiftRegistry.Instance.registerNewRift(this);
}
}
diff --git a/src/main/java/com/zixiken/dimdoors/world/Location.java b/src/main/java/com/zixiken/dimdoors/world/Location.java
deleted file mode 100644
index 10fa2a72..00000000
--- a/src/main/java/com/zixiken/dimdoors/world/Location.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.zixiken.dimdoors.world;
-
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-
-/**
- *
- * @author Robijnvogel
- */
-public class Location {
- public String dimensionUID;
- public BlockPos pos;
-
- Location(String dimUID, int x, int y, int z) {
- this.dimensionUID = dimUID;
- pos = new BlockPos(x, y, z);
- }
-
- Location(String dimUID, BlockPos pos) {
- this.dimensionUID = dimUID;
- this.pos = pos.up(0); //copyOf
- }
-
- TileEntity getTileEntity() {
- World world = getWorld(dimensionUID); //@todo HOW?
- return world.getTileEntity(pos);
- }
-
-}
diff --git a/src/main/java/com/zixiken/dimdoors/world/RiftHandler.java b/src/main/java/com/zixiken/dimdoors/world/RiftHandler.java
deleted file mode 100644
index 735742ff..00000000
--- a/src/main/java/com/zixiken/dimdoors/world/RiftHandler.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.zixiken.dimdoors.world;
-
-import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import net.minecraft.tileentity.TileEntity;
-
-/**
- *
- * @author Robijnvogel
- */
-public class RiftHandler {
- private Map riftLocations; //it needs to be a Map if we want to be able to remove rifts without the IDs shifting (as would happen in a List
- private int nextRiftID;
-
- RiftHandler() { //@todo don't forget to create one object of this class at world-load
- riftLocations = new HashMap<>();
- nextRiftID = 0;
- readfromNBT(); //and also add a method to write to NBT
- }
-
- public int addRift(Location location) {
- int riftID = nextRiftID;
- nextRiftID++;
- riftLocations.put(riftID, location);
- return riftID;
- }
-
- public void removeRift(int riftID, Location location) {
- riftLocations.remove(riftID);
- }
-
- public Location getLocation(int riftID) {
- Location location = riftLocations.get(riftID);
- return location;
- }
-
- public void pair(int riftID, int riftID2) {
- Location location = riftLocations.get(riftID);
- TileEntity tileEntity = location.getTileEntity(); //@todo this method might need to be in another class?
- if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
- DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
- rift.pair(riftID2);
- }
- }
-
- public void unpair(int riftID) {
- Location location = riftLocations.get(riftID);
- TileEntity tileEntity = location.getTileEntity();
- if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
- DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
- rift.unpair();
- }
- }
-}