From 1b2d4ad20ac20b13164d28a0a145356738fe18e2 Mon Sep 17 00:00:00 2001 From: Mathijs Riezebos Date: Thu, 12 Jan 2017 01:11:55 +0100 Subject: [PATCH 1/3] Implementing a way to handle rift-connections 001 Made a start It doesn't compile yet --- .nb-gradle-properties | 1 + .nb-gradle/profiles/private/aux-config | 13 +++++ .../tileentities/DDTileEntityBase.java | 31 ++++++++++ .../dimdoors/tileentities/TileEntityRift.java | 4 +- .../com/zixiken/dimdoors/world/Location.java | 30 ++++++++++ .../zixiken/dimdoors/world/RiftHandler.java | 57 +++++++++++++++++++ 6 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 .nb-gradle/profiles/private/aux-config create mode 100644 src/main/java/com/zixiken/dimdoors/world/Location.java create mode 100644 src/main/java/com/zixiken/dimdoors/world/RiftHandler.java diff --git a/.nb-gradle-properties b/.nb-gradle-properties index e9476996..f19514eb 100644 --- a/.nb-gradle-properties +++ b/.nb-gradle-properties @@ -1,6 +1,7 @@ + 1.8 run diff --git a/.nb-gradle/profiles/private/aux-config b/.nb-gradle/profiles/private/aux-config new file mode 100644 index 00000000..a983afe9 --- /dev/null +++ b/.nb-gradle/profiles/private/aux-config @@ -0,0 +1,13 @@ + + + + + + + + file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/CommonProxy.java + file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/ModelManager.java + + + + diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java index 3bb5e1af..f7c03f9f 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java @@ -1,5 +1,6 @@ package com.zixiken.dimdoors.tileentities; +import com.zixiken.dimdoors.world.RiftHandler; import java.util.Random; import net.minecraft.block.state.IBlockState; @@ -9,6 +10,10 @@ import net.minecraft.world.World; public abstract class DDTileEntityBase extends TileEntity { + public boolean isPaired = false; + public int riftID; + public int pairedRiftID; + /** * * @return an array of floats representing RGBA color where 1.0 = 255. @@ -19,4 +24,30 @@ public abstract class DDTileEntityBase extends TileEntity public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) { return oldState.getBlock() != newSate.getBlock(); } + + public void pair(int otherRiftID) { + RiftHandler rifthandler; + if (isPaired) { + if (otherRiftID == pairedRiftID) { + return; + } + else { + rifthandler.unpair(pairedRiftID); + } + } + pairedRiftID = otherRiftID; + rifthandler.pair(pairedRiftID, riftID); + isPaired = true; + } + + public void unpair() { + RiftHandler rifthandler; + if (!isPaired) { + return; + } + else { + isPaired = false; + rifthandler.unpair(pairedRiftID); + } + } } diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java index 126e773a..5667c2a3 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java @@ -17,7 +17,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable { private static final int MAX_ENDERMAN_SPAWNING_CHANCE = 32; private static final int HOSTILE_ENDERMAN_CHANCE = 1; private static final int MAX_HOSTILE_ENDERMAN_CHANCE = 3; - private static final int UPDATE_PERIOD = 200; + private static final int UPDATE_PERIOD = 200; //10 seconds private static Random random = new Random(); @@ -93,7 +93,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable { private void closeRift() { world.setBlockToAir(pos); - growth--; + growth--; //@todo? } public boolean updateNearestRift() { diff --git a/src/main/java/com/zixiken/dimdoors/world/Location.java b/src/main/java/com/zixiken/dimdoors/world/Location.java new file mode 100644 index 00000000..10fa2a72 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/world/Location.java @@ -0,0 +1,30 @@ +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 new file mode 100644 index 00000000..735742ff --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/world/RiftHandler.java @@ -0,0 +1,57 @@ +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(); + } + } +} From 5c6fd1d1fa4f09c7da40b6393da26b53a3609033 Mon Sep 17 00:00:00 2001 From: Mathijs Riezebos Date: Thu, 12 Jan 2017 16:00:51 +0100 Subject: [PATCH 2/3] Adapted Save system to WIP changes --- .nb-gradle/profiles/private/aux-config | 6 ----- .../com/zixiken/dimdoors/shared/Rift.java | 25 ------------------- .../zixiken/dimdoors/shared/RiftRegistry.java | 13 +++++----- .../tileentities/DDTileEntityBase.java | 9 +++++++ 4 files changed, 16 insertions(+), 37 deletions(-) delete mode 100644 src/main/java/com/zixiken/dimdoors/shared/Rift.java diff --git a/.nb-gradle/profiles/private/aux-config b/.nb-gradle/profiles/private/aux-config index a983afe9..87245d6c 100644 --- a/.nb-gradle/profiles/private/aux-config +++ b/.nb-gradle/profiles/private/aux-config @@ -3,11 +3,5 @@ - - - file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/CommonProxy.java - file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/ModelManager.java - - diff --git a/src/main/java/com/zixiken/dimdoors/shared/Rift.java b/src/main/java/com/zixiken/dimdoors/shared/Rift.java deleted file mode 100644 index a7e8281d..00000000 --- a/src/main/java/com/zixiken/dimdoors/shared/Rift.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package com.zixiken.dimdoors.shared; - -import net.minecraft.nbt.NBTBase; -import net.minecraft.nbt.NBTTagCompound; - -/** - * - * @author Robijnvogel - */ -class Rift { - - static Rift readFromNBT(int i, NBTTagCompound riftNBT) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - static NBTBase writeToNBT(Rift value) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - -} diff --git a/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java b/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java index 86e436b5..d07afd77 100644 --- a/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java +++ b/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java @@ -5,6 +5,7 @@ */ package com.zixiken.dimdoors.shared; +import com.zixiken.dimdoors.tileentities.DDTileEntityBase; import java.util.HashMap; import java.util.Map; import net.minecraft.nbt.NBTTagCompound; @@ -20,7 +21,7 @@ public class RiftRegistry { // Privates private int nextUnusedID; - private final Map riftList; + private final Map riftList; // Methods public RiftRegistry() { @@ -41,7 +42,7 @@ public class RiftRegistry { String tag = "" + i; while (riftsNBT.hasKey(tag)) { NBTTagCompound riftNBT = riftsNBT.getCompoundTag(tag); - Rift rift = Rift.readFromNBT(i, riftNBT); + DDTileEntityBase rift = DDTileEntityBase.readFromNBT(i, riftNBT); riftList.put(i, rift); i++; @@ -53,13 +54,13 @@ public class RiftRegistry { public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("nextUnusedID", nextUnusedID); NBTTagCompound riftsNBT = new NBTTagCompound(); - for (Map.Entry entry : riftList.entrySet()) { - riftsNBT.setTag("" + entry.getKey(), Rift.writeToNBT(entry.getValue())); + for (Map.Entry entry : riftList.entrySet()) { + riftsNBT.setTag("" + entry.getKey(), DDTileEntityBase.writeToNBT(entry.getValue())); } nbt.setTag("riftData", riftsNBT); } - public int registerNewRift(Rift rift, World world) { + public int registerNewRift(DDTileEntityBase rift, World world) { riftList.put(nextUnusedID, rift); nextUnusedID++; @@ -74,7 +75,7 @@ public class RiftRegistry { } } - public Rift getRift(int ID) { + public DDTileEntityBase getRift(int ID) { return riftList.get(ID); } } diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java index f7c03f9f..10321252 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java @@ -4,6 +4,7 @@ import com.zixiken.dimdoors.world.RiftHandler; 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; @@ -50,4 +51,12 @@ public abstract class DDTileEntityBase extends TileEntity rifthandler.unpair(pairedRiftID); } } + + public static NBTTagCompound writeToNBT(DDTileEntityBase rift) { + + } + + public static DDTileEntityBase readFromNBT(int dim, NBTTagCompound riftNBT) { + + } } From f68c9ec4a2c7fa136ed11390883b13401d92c497 Mon Sep 17 00:00:00 2001 From: Mathijs Riezebos Date: Fri, 13 Jan 2017 01:08:21 +0100 Subject: [PATCH 3/3] Connected Rift-Link system to rift registry- and saving- system Merged functionality of "RiftHandler" class into "RiftRegistry" class Moved the "Location" class Why the RiftRegistry couples the Rift ID to the Rift **location** and the PocketRegistry couples the Pocket ID to the actual Pocket **instance**: -Each Rift is a Tile-Entity, which means that it has its infromation can be stored using the Tile-Entitiy's information saving system. -Each Pocket is barely more than an information storage container, which depends on having an external information saving system, which the PocketRegistry provides for it. --- .nb-gradle/profiles/private/aux-config | 14 +++++ .../zixiken/dimdoors/shared/DDSavedData.java | 2 - .../com/zixiken/dimdoors/shared/Location.java | 60 +++++++++++++++++++ .../zixiken/dimdoors/shared/RiftRegistry.java | 54 +++++++++++------ .../dimdoors/shared/RiftSavedData.java | 1 - .../tileentities/DDTileEntityBase.java | 20 ++----- .../com/zixiken/dimdoors/world/Location.java | 30 ---------- .../zixiken/dimdoors/world/RiftHandler.java | 57 ------------------ 8 files changed, 117 insertions(+), 121 deletions(-) create mode 100644 src/main/java/com/zixiken/dimdoors/shared/Location.java delete mode 100644 src/main/java/com/zixiken/dimdoors/world/Location.java delete mode 100644 src/main/java/com/zixiken/dimdoors/world/RiftHandler.java 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(); - } - } -}