From 27bd64eafc3cd7b23f1148e90e50bcebddb23d20 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 4 Feb 2025 16:54:02 +0100 Subject: [PATCH] a botched nosejob --- src/main/java/com/hbm/uninos/GenNode.java | 39 +++++++++++++++++++ .../java/com/hbm/uninos/GenNodeWorld.java | 29 ++++++++++++++ .../java/com/hbm/uninos/GenNodespace.java | 34 ++++++++++++++++ .../java/com/hbm/uninos/INetworkProvider.java | 5 +++ src/main/java/com/hbm/uninos/INodeNet.java | 7 ++++ .../java/com/hbm/uninos/UniNodespace.java | 8 ++++ 6 files changed, 122 insertions(+) create mode 100644 src/main/java/com/hbm/uninos/GenNode.java create mode 100644 src/main/java/com/hbm/uninos/GenNodeWorld.java create mode 100644 src/main/java/com/hbm/uninos/GenNodespace.java create mode 100644 src/main/java/com/hbm/uninos/INetworkProvider.java create mode 100644 src/main/java/com/hbm/uninos/INodeNet.java create mode 100644 src/main/java/com/hbm/uninos/UniNodespace.java diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java new file mode 100644 index 000000000..8be4641b3 --- /dev/null +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -0,0 +1,39 @@ +package com.hbm.uninos; + +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +public class GenNode { + + public BlockPos[] positions; + public DirPos[] connections; + public INodeNet net; + public boolean expired = false; + public boolean recentlyChanged = true; + + public GenNode(BlockPos... positions) { + this.positions = positions; + } + + public GenNode setConnections(DirPos... connections) { + this.connections = connections; + return this; + } + + public GenNode addConnection(DirPos connection) { + DirPos[] newCons = new DirPos[this.connections.length + 1]; + for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; + newCons[newCons.length - 1] = connection; + this.connections = newCons; + return this; + } + + public boolean hasValidNet() { + return this.net != null && this.net.isValid(); + } + + public void setNet(INodeNet net) { + this.net = net; + this.recentlyChanged = true; + } +} diff --git a/src/main/java/com/hbm/uninos/GenNodeWorld.java b/src/main/java/com/hbm/uninos/GenNodeWorld.java new file mode 100644 index 000000000..82c2fcb81 --- /dev/null +++ b/src/main/java/com/hbm/uninos/GenNodeWorld.java @@ -0,0 +1,29 @@ +package com.hbm.uninos; + +import java.util.HashMap; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +public class GenNodeWorld { + + public HashMap> nodes = new HashMap(); + + public void pushNode(GenNode node) { + for(BlockPos pos : node.positions) { + nodes.put(pos, node); + } + } + + public void popNode(GenNode node) { + if(node.net != null) node.net.destroy(); + for(BlockPos pos : node.positions) { + nodes.remove(pos); + node.expired = true; + } + } + + public void popNode(BlockPos pos) { + GenNode node = nodes.get(pos); + if(node != null) popNode(node); + } +} diff --git a/src/main/java/com/hbm/uninos/GenNodespace.java b/src/main/java/com/hbm/uninos/GenNodespace.java new file mode 100644 index 000000000..8785df0b1 --- /dev/null +++ b/src/main/java/com/hbm/uninos/GenNodespace.java @@ -0,0 +1,34 @@ +package com.hbm.uninos; + +import java.util.HashMap; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.world.World; + +public class GenNodespace { + + public HashMap> worlds = new HashMap<>(); + + public GenNode getNode(World world, int x, int y, int z) { + GenNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld != null) return (GenNode) nodeWorld.nodes.get(new BlockPos(x, y, z)); + return null; + } + + public void createNode(World world, GenNode node) { + GenNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld == null) { + nodeWorld = new GenNodeWorld(); + worlds.put(world, nodeWorld); + } + nodeWorld.pushNode(node); + } + + public void destroyNode(World world, int x, int y, int z) { + GenNode node = getNode(world, x, y, z); + if(node != null) { + worlds.get(world).popNode(node); + } + } +} diff --git a/src/main/java/com/hbm/uninos/INetworkProvider.java b/src/main/java/com/hbm/uninos/INetworkProvider.java new file mode 100644 index 000000000..c3b7893be --- /dev/null +++ b/src/main/java/com/hbm/uninos/INetworkProvider.java @@ -0,0 +1,5 @@ +package com.hbm.uninos; + +public interface INetworkProvider { + +} diff --git a/src/main/java/com/hbm/uninos/INodeNet.java b/src/main/java/com/hbm/uninos/INodeNet.java new file mode 100644 index 000000000..79efab063 --- /dev/null +++ b/src/main/java/com/hbm/uninos/INodeNet.java @@ -0,0 +1,7 @@ +package com.hbm.uninos; + +public interface INodeNet { + + public boolean isValid(); + public void destroy(); +} diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java new file mode 100644 index 000000000..e56468b3c --- /dev/null +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -0,0 +1,8 @@ +package com.hbm.uninos; + +import java.util.HashMap; + +public class UniNodespace { + + public static HashMap nodespaces = new HashMap(); +}