diff --git a/src/main/java/com/tiedup/remake/worldgen/HangingCagePiece.java b/src/main/java/com/tiedup/remake/worldgen/HangingCagePiece.java index 80635db..dfea7b0 100644 --- a/src/main/java/com/tiedup/remake/worldgen/HangingCagePiece.java +++ b/src/main/java/com/tiedup/remake/worldgen/HangingCagePiece.java @@ -637,6 +637,8 @@ public class HangingCagePiece extends StructurePiece { int[][] corners = layout.innerCorners(); // Corner decorations (e.g. cobwebs low+high, soul fire, snow layers) + // Note: only y_offset is used here — x/z offsets are ignored because corners + // are placed at all 4 inner corners and direction logic would differ per corner. for (DecorationConfig.PositionedBlock pb : deco.cornerDecorations()) { for (int[] c : corners) { if (layout.isInShape(c[0], c[1]) && !layout.isWall(c[0], c[1])) { diff --git a/src/main/java/com/tiedup/remake/worldgen/RoomThemeReloadListener.java b/src/main/java/com/tiedup/remake/worldgen/RoomThemeReloadListener.java index 6a39ea4..9beb894 100644 --- a/src/main/java/com/tiedup/remake/worldgen/RoomThemeReloadListener.java +++ b/src/main/java/com/tiedup/remake/worldgen/RoomThemeReloadListener.java @@ -60,9 +60,11 @@ public class RoomThemeReloadListener Resource resource = entry.getValue(); // Derive clean ID from file path: "tiedup:tiedup_room_themes/oubliette.json" -> "tiedup:oubliette" - String cleanPath = fileId.getPath() - .replace(DIRECTORY + "/", "") - .replace(".json", ""); + String rawPath = fileId.getPath(); + String cleanPath = rawPath.substring(rawPath.indexOf(DIRECTORY + "/") + DIRECTORY.length() + 1); + if (cleanPath.endsWith(".json")) { + cleanPath = cleanPath.substring(0, cleanPath.length() - 5); + } ResourceLocation cleanId = new ResourceLocation(fileId.getNamespace(), cleanPath); try (InputStream input = resource.open()) {