Skip to content

Commit 011ca15

Browse files
committed
So. Much. Tunnel graph. Testing.
1 parent c070ccd commit 011ca15

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1025
-525
lines changed
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package dev.compactmods.machines.api.room;
22

3-
import javax.annotation.Nonnull;
4-
import dev.compactmods.machines.api.tunnels.connection.IRoomTunnels;
53
import net.minecraft.server.level.ServerLevel;
64
import net.minecraft.world.level.ChunkPos;
75

6+
import javax.annotation.Nonnull;
7+
88
public interface IMachineRoom {
99

1010
@Nonnull
@@ -13,9 +13,6 @@ public interface IMachineRoom {
1313
@Nonnull
1414
ServerLevel getLevel();
1515

16-
@Nonnull
17-
IRoomTunnels getTunnels();
18-
1916
@Nonnull
2017
IRoomCapabilities getCapabilityManager();
2118
}

src/api/java/dev/compactmods/machines/api/room/MachineRoomConnections.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ public interface MachineRoomConnections {
1717
void registerRoom(ChunkPos roomChunk);
1818

1919
void connectMachineToRoom(int machine, ChunkPos room);
20+
21+
void disconnect(int machine);
2022
}

src/api/java/dev/compactmods/machines/api/tunnels/connection/IRoomTunnels.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/main/java/dev/compactmods/machines/codec/CodecExtensions.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package dev.compactmods.machines.codec;
22

3-
import java.util.UUID;
4-
import java.util.stream.DoubleStream;
5-
import java.util.stream.IntStream;
63
import com.mojang.serialization.Codec;
74
import com.mojang.serialization.DataResult;
85
import net.minecraft.Util;
96
import net.minecraft.world.level.ChunkPos;
107
import net.minecraft.world.phys.Vec3;
118

9+
import java.util.UUID;
10+
import java.util.stream.DoubleStream;
11+
import java.util.stream.IntStream;
12+
1213
public abstract class CodecExtensions {
1314
public static final Codec<UUID> UUID_CODEC = Codec.STRING
1415
.comapFlatMap((s) -> {
@@ -26,4 +27,5 @@ public abstract class CodecExtensions {
2627
public static final Codec<ChunkPos> CHUNKPOS = Codec.INT_STREAM
2728
.comapFlatMap(i -> Util.fixedSize(i, 2)
2829
.map(arr -> new ChunkPos(arr[0], arr[1])), pos -> IntStream.of(pos.x, pos.z));
30+
2931
}

src/main/java/dev/compactmods/machines/command/CMTunnelDataExportCommand.java

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
import com.mojang.brigadier.exceptions.CommandSyntaxException;
77
import dev.compactmods.machines.CompactMachines;
88
import dev.compactmods.machines.api.core.Messages;
9-
import dev.compactmods.machines.core.Capabilities;
109
import dev.compactmods.machines.core.MissingDimensionException;
1110
import dev.compactmods.machines.core.Registration;
1211
import dev.compactmods.machines.i18n.TranslationUtil;
1312
import dev.compactmods.machines.room.data.CompactRoomData;
14-
import dev.compactmods.machines.tunnel.TunnelWallEntity;
1513
import net.minecraft.commands.CommandSourceStack;
1614
import net.minecraft.commands.Commands;
1715
import net.minecraft.server.level.ServerPlayer;
@@ -118,24 +116,25 @@ private static CsvOutput makeTunnelCsvOut(BufferedWriter writer) throws IOExcept
118116
}
119117

120118
private static void writeRoomTunnels(LevelChunk chunk1, CsvOutput builder) {
121-
chunk1.getCapability(Capabilities.ROOM_TUNNELS).ifPresent(tunnels -> {
122-
tunnels.streamLocations().forEach(pos -> {
123-
tunnels.locatedAt(pos).ifPresent(conn -> {
124-
try {
125-
if(chunk1.getBlockEntity(pos) instanceof TunnelWallEntity tun) {
126-
builder.writeRow(
127-
conn.type().getRegistryName().toString(),
128-
conn.side().getSerializedName(),
129-
pos.getX(), pos.getY(), pos.getZ(),
130-
tun.getMachine()
131-
);
132-
}
133-
} catch (IOException e) {
134-
CompactMachines.LOGGER.error(e);
135-
}
136-
});
137-
});
138-
139-
});
119+
// TODO Reimplement
120+
// chunk1.getCapability(Capabilities.ROOM_TUNNELS).ifPresent(tunnels -> {
121+
// tunnels.streamLocations().forEach(pos -> {
122+
// tunnels.locatedAt(pos).ifPresent(conn -> {
123+
// try {
124+
// if(chunk1.getBlockEntity(pos) instanceof TunnelWallEntity tun) {
125+
// builder.writeRow(
126+
// conn.type().getRegistryName().toString(),
127+
// conn.side().getSerializedName(),
128+
// pos.getX(), pos.getY(), pos.getZ(),
129+
// tun.getMachine()
130+
// );
131+
// }
132+
// } catch (IOException e) {
133+
// CompactMachines.LOGGER.error(e);
134+
// }
135+
// });
136+
// });
137+
//
138+
// });
140139
}
141140
}

src/main/java/dev/compactmods/machines/core/Capabilities.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import dev.compactmods.machines.CompactMachines;
44
import dev.compactmods.machines.api.room.IMachineRoom;
55
import dev.compactmods.machines.api.room.IRoomCapabilities;
6-
import dev.compactmods.machines.api.tunnels.connection.IRoomTunnels;
76
import dev.compactmods.machines.api.tunnels.connection.ITunnelConnection;
87
import dev.compactmods.machines.room.capability.IRoomHistory;
98
import net.minecraftforge.common.capabilities.Capability;
@@ -22,9 +21,6 @@ public class Capabilities {
2221
public static final Capability<IRoomCapabilities> ROOM_CAPS = CapabilityManager.get(new CapabilityToken<IRoomCapabilities>() {
2322
});
2423

25-
public static final Capability<IRoomTunnels> ROOM_TUNNELS = CapabilityManager.get(new CapabilityToken<IRoomTunnels>() {
26-
});
27-
2824
public static final Capability<ITunnelConnection> TUNNEL_CONNECTION = CapabilityManager.get(new CapabilityToken<ITunnelConnection>() {
2925
});
3026

@@ -35,7 +31,6 @@ public class Capabilities {
3531
void onCapRegistration(final RegisterCapabilitiesEvent evt) {
3632
evt.register(IMachineRoom.class);
3733
evt.register(IRoomCapabilities.class);
38-
evt.register(IRoomTunnels.class);
3934
evt.register(ITunnelConnection.class);
4035
evt.register(IRoomHistory.class);
4136
}

src/main/java/dev/compactmods/machines/core/Tunnels.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package dev.compactmods.machines.core;
22

3-
import java.util.function.Supplier;
4-
import static dev.compactmods.machines.CompactMachines.MOD_ID;
53
import dev.compactmods.machines.api.tunnels.TunnelDefinition;
64
import dev.compactmods.machines.tunnel.TunnelItem;
75
import dev.compactmods.machines.tunnel.TunnelWallBlock;
86
import dev.compactmods.machines.tunnel.TunnelWallEntity;
97
import dev.compactmods.machines.tunnel.UnknownTunnel;
8+
import dev.compactmods.machines.tunnel.definitions.ItemTunnel;
109
import net.minecraft.resources.ResourceLocation;
1110
import net.minecraft.world.item.Item;
1211
import net.minecraft.world.level.block.Block;
@@ -21,12 +20,16 @@
2120
import net.minecraftforge.registries.RegistryBuilder;
2221
import net.minecraftforge.registries.RegistryObject;
2322

23+
import java.util.function.Supplier;
24+
25+
import static dev.compactmods.machines.CompactMachines.MOD_ID;
26+
2427
public class Tunnels {
2528

2629
// region Setup
2730

2831
@SuppressWarnings("unchecked")
29-
public static final DeferredRegister<TunnelDefinition> DEFINITIONS = DeferredRegister.create((Class) TunnelDefinition.class, MOD_ID);
32+
public static final DeferredRegister<TunnelDefinition> DEFINITIONS = DeferredRegister.create(TunnelDefinition.class, MOD_ID);
3033

3134
@SuppressWarnings("unchecked")
3235
public static final Supplier<IForgeRegistry<TunnelDefinition>> TUNNEL_DEF_REGISTRY = DEFINITIONS.makeRegistry("tunnel_types",
@@ -58,7 +61,7 @@ public static TunnelDefinition getDefinition(ResourceLocation id) {
5861
// ================================================================================================================
5962
// TUNNEL TYPE DEFINITIONS
6063
// ================================================================================================================
61-
// public static final RegistryObject<TunnelDefinition> ITEM_IN_DEF = DEFINITIONS.register("item_in", ItemTunnel::new);
64+
public static final RegistryObject<TunnelDefinition> ITEM_IN_DEF = DEFINITIONS.register("item_in", ItemTunnel::new);
6265

6366
// ================================================================================================================
6467
// TUNNEL BLOCKS / TILES
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package dev.compactmods.machines.graph;
2+
3+
import com.mojang.serialization.Codec;
4+
import dev.compactmods.machines.machine.graph.CompactMachineNode;
5+
import dev.compactmods.machines.tunnel.graph.TunnelMachineEdge;
6+
import dev.compactmods.machines.tunnel.graph.TunnelNode;
7+
import dev.compactmods.machines.tunnel.graph.TunnelTypeEdge;
8+
import dev.compactmods.machines.tunnel.graph.TunnelTypeNode;
9+
import net.minecraft.resources.ResourceLocation;
10+
11+
import javax.annotation.Nullable;
12+
import java.util.Locale;
13+
14+
public class CompactGraphs {
15+
16+
@Nullable
17+
@SuppressWarnings("unchecked")
18+
public static Codec<IGraphNode> getCodecForNode(ResourceLocation nodeType) {
19+
Codec<? extends IGraphNode> codec = switch (nodeType.getPath().toLowerCase(Locale.ROOT)) {
20+
case "machine" -> CompactMachineNode.CODEC;
21+
case "tunnel" -> TunnelNode.CODEC;
22+
case "tunnel_type" -> TunnelTypeNode.CODEC;
23+
default -> null;
24+
};
25+
26+
if (codec == null)
27+
return null;
28+
29+
return (Codec<IGraphNode>) codec;
30+
}
31+
32+
@Nullable
33+
@SuppressWarnings("unchecked")
34+
public static Codec<IGraphEdge> getCodecForEdge(ResourceLocation edgeType) {
35+
Codec<? extends IGraphEdge> codec = switch (edgeType.getPath().toLowerCase(Locale.ROOT)) {
36+
case "tunnel_machine" -> TunnelMachineEdge.CODEC;
37+
case "tunnel_type" -> TunnelTypeEdge.CODEC;
38+
default -> null;
39+
};
40+
41+
if (codec == null)
42+
return null;
43+
44+
return (Codec<IGraphEdge>) codec;
45+
}
46+
}

src/main/java/dev/compactmods/machines/graph/CompactMachineConnectionGraph.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package dev.compactmods.machines.graph;
22

3-
import java.util.*;
4-
import java.util.stream.Collectors;
5-
import java.util.stream.Stream;
63
import com.google.common.collect.ImmutableList;
74
import com.google.common.graph.MutableValueGraph;
85
import com.google.common.graph.ValueGraphBuilder;
@@ -13,6 +10,10 @@
1310
import dev.compactmods.machines.room.graph.CompactMachineRoomNode;
1411
import net.minecraft.world.level.ChunkPos;
1512

13+
import java.util.*;
14+
import java.util.stream.Collectors;
15+
import java.util.stream.Stream;
16+
1617
/**
1718
* Stores information on how external machines connect to the rooms in the compact machine
1819
* dimension.
@@ -124,6 +125,15 @@ public Stream<CompactMachineNode> getMachines() {
124125
return this.machines.values().stream();
125126
}
126127

128+
public void disconnectAndUnregister(int machine) {
129+
if(!machines.containsKey(machine))
130+
return;
131+
132+
final var node = machines.get(machine);
133+
graph.removeNode(node);
134+
machines.remove(machine);
135+
}
136+
127137
/**
128138
* Data structure for serialization. Do not use directly.
129139
*/
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
package dev.compactmods.machines.graph;
22

3+
import com.mojang.serialization.Codec;
4+
35
public interface IGraphEdge {
6+
<T extends IGraphEdge> Codec<T> codec();
47
}

0 commit comments

Comments
 (0)