Skip to content

Commit dc24454

Browse files
author
yitzy299
committed
Remove portals from registry after deletion
1 parent 6e36d27 commit dc24454

3 files changed

Lines changed: 17 additions & 13 deletions

File tree

portals-api/src/main/java/net/quiltservertools/interdimensional/portals/CustomPortalApiRegistry.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package net.quiltservertools.interdimensional.portals;
22

33
import net.minecraft.block.BlockState;
4-
import net.quiltservertools.interdimensional.portals.portal.PortalIgnitionSource;
54
import net.quiltservertools.interdimensional.portals.portal.frame.PortalFrameTester;
6-
import net.quiltservertools.interdimensional.portals.util.ColorUtil;
75
import net.quiltservertools.interdimensional.portals.util.PortalLink;
86
import net.minecraft.block.Block;
97
import net.minecraft.block.Blocks;
10-
import net.minecraft.fluid.Fluids;
118
import net.minecraft.util.Identifier;
12-
import net.minecraft.util.registry.Registry;
139

1410
import java.util.Collection;
1511
import java.util.concurrent.ConcurrentHashMap;
@@ -18,7 +14,7 @@
1814
public class CustomPortalApiRegistry {
1915
protected static ConcurrentHashMap<Block, PortalLink> portals = new ConcurrentHashMap<>();
2016

21-
private static final ConcurrentHashMap<Identifier, PortalFrameTester.PortalFrameTesterFactory> PortalFrameTesters = new ConcurrentHashMap<>();
17+
private static final ConcurrentHashMap<Identifier, PortalFrameTester.PortalFrameTesterFactory> PORTAL_FRAME_TESTERS = new ConcurrentHashMap<>();
2218

2319
public static PortalLink getPortalLinkFromBase(Block baseBlock) {
2420
if (baseBlock == null) return null;
@@ -32,29 +28,30 @@ public static Collection<PortalLink> getAllPortalLinks() {
3228

3329

3430
public static void registerPortalFrameTester(Identifier frameTesterID, PortalFrameTester.PortalFrameTesterFactory createPortalFrameTester) {
35-
PortalFrameTesters.put(frameTesterID, createPortalFrameTester);
31+
PORTAL_FRAME_TESTERS.put(frameTesterID, createPortalFrameTester);
3632
}
3733

3834
public static PortalFrameTester.PortalFrameTesterFactory getPortalFrameTester(Identifier frameTesterID) {
39-
return PortalFrameTesters.getOrDefault(frameTesterID, null);
35+
return PORTAL_FRAME_TESTERS.getOrDefault(frameTesterID, null);
4036
}
4137

4238
public static void addPortal(Block frameBlock, PortalLink link) {
43-
if (frameBlock == null) InterdimensionalPortals.logError("Frameblock is null");
44-
if (link.getPortalBlock() == null) InterdimensionalPortals.logError("Portal block is null");
45-
if (link.portalIgnitionSource == null) InterdimensionalPortals.logError("Portal ignition source is null");
46-
if (link.dimID == null) InterdimensionalPortals.logError("Dimension is null");
4739
if (InterdimensionalPortals.dims.size() > 0 && !InterdimensionalPortals.dims.containsKey(link.dimID))
4840
InterdimensionalPortals.logError("Dimension not found");
4941
if (InterdimensionalPortals.getDefaultPortalBlock() == null)
50-
InterdimensionalPortals.logError("Built in CustomPortalBlock is null");
42+
InterdimensionalPortals.logError("Built in PortalBlock is null");
5143

5244
if (portals.containsKey(frameBlock) || frameBlock.equals(Blocks.OBSIDIAN)) {
5345
InterdimensionalPortals.logError("A portal(or the nether portal) is already registered with a frame of: " + frameBlock);
5446
} else {
5547
portals.put(frameBlock, link);
5648
}
5749
}
50+
51+
public static boolean removePortal(Block frameBlock) {
52+
return portals.remove(frameBlock) == null;
53+
}
54+
5855
public static boolean isRegisteredFrameBlock(BlockState state) {
5956
return portals.containsKey(state.getBlock());
6057
}

src/main/kotlin/net/quiltservertools/interdimensional/command/PortalCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ object PortalCommand : Command {
125125
}
126126

127127
private fun remove(source: ServerCommandSource, name: String): Int {
128-
PortalManager.portals.removeIf { it.name == name }
128+
PortalManager.removePortal(name)
129129
source.sendFeedback("Removed portal $name".success(), false)
130130
return 1
131131
}

src/main/kotlin/net/quiltservertools/interdimensional/world/PortalManager.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import net.quiltservertools.interdimensional.portals.api.CustomPortalBuilder
66
import net.quiltservertools.interdimensional.portals.portal.PortalIgnitionSource
77
import net.minecraft.util.Identifier
88
import net.minecraft.util.registry.Registry
9+
import net.quiltservertools.interdimensional.portals.CustomPortalApiRegistry
910
import net.quiltservertools.interdimensional.portals.portal.PortalIgnitionSource.ItemUseSource
1011

1112
object PortalManager {
@@ -95,4 +96,10 @@ object PortalManager {
9596
builder.registerPortal()
9697
portals.add(portal)
9798
}
99+
100+
fun removePortal(name: String) {
101+
val portal = this.portals.first { it.name == name }
102+
this.portals.remove(portal)
103+
CustomPortalApiRegistry.removePortal(portal.frameBlock)
104+
}
98105
}

0 commit comments

Comments
 (0)