Skip to content

Commit 485d772

Browse files
committed
Change dimension ids into strings (eg: minecraft:overworld)
1 parent 9cd732f commit 485d772

15 files changed

Lines changed: 102 additions & 71 deletions

File tree

chunky/src/java/se/llbit/chunky/map/WorldMapLoader.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class WorldMapLoader implements ChunkTopographyListener, ChunkViewListene
4646
private final ChunkTopographyUpdater topographyUpdater = new ChunkTopographyUpdater();
4747

4848
/** The dimension to load in the current world. */
49-
private int currentDimensionId = PersistentSettings.getDimension();
49+
private String currentDimensionId = PersistentSettings.getDimension();
5050

5151
private List<BiConsumer<World, Boolean>> worldLoadListeners = new ArrayList<>();
5252

@@ -174,10 +174,11 @@ private void updateRegionChangeWatcher(Dimension dimension) {
174174
/**
175175
* Set the current dimension.
176176
*
177-
* @param value Must be a valid dimension index (0, -1, 1)
177+
* @param value Must be a valid dimension see {@link World#listDimensions()}
178178
*/
179-
public void setDimension(int value) {
180-
if (value != currentDimensionId) {
179+
// TODO: change this to show the available dimensions in the UI.
180+
public void setDimension(String value) {
181+
if (!value.equals(currentDimensionId)) {
181182
currentDimensionId = value;
182183
PersistentSettings.setDimension(currentDimensionId);
183184

@@ -187,7 +188,7 @@ public void setDimension(int value) {
187188
}
188189

189190
/** Get the currently loaded dimension. */
190-
public int getDimension() {
191+
public String getDimension() {
191192
return currentDimensionId;
192193
}
193194
}

chunky/src/java/se/llbit/chunky/renderer/scene/Scene.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ public class Scene implements JsonSerializable, Refreshable {
190190
*/
191191
protected int rayDepth = PersistentSettings.getRayDepthDefault();
192192
protected String worldPath = "";
193-
protected int worldDimension = 0;
193+
protected String worldDimension = PersistentSettings.DEFAULT_DIMENSION;
194194
protected RenderMode mode = RenderMode.PREVIEW;
195195
protected int dumpFrequency = DEFAULT_DUMP_FREQUENCY;
196196
protected boolean saveSnapshots = false;
@@ -761,7 +761,7 @@ public synchronized void reloadChunks(TaskTracker taskTracker) {
761761
Log.warn("Can not reload chunks for scene - world directory not found!");
762762
return;
763763
}
764-
loadedWorld = World.loadWorld(loadedWorld.getWorldDirectory(), worldDimension, World.LoggedWarnings.NORMAL);
764+
loadedWorld.loadDimension(worldDimension);
765765
loadChunks(taskTracker, loadedWorld, chunks);
766766
refresh();
767767
}
@@ -794,7 +794,7 @@ public synchronized void loadChunks(TaskTracker taskTracker, World world, Collec
794794

795795
loadedWorld = world;
796796
worldPath = loadedWorld.getWorldDirectory().getAbsolutePath();
797-
worldDimension = world.currentDimensionId();
797+
worldDimension = world.currentDimension().id();
798798

799799
if (chunksToLoad.isEmpty()) {
800800
return;
@@ -2908,7 +2908,14 @@ else if(waterShader.equals("SIMPLEX"))
29082908
if (json.get("world").isObject()) {
29092909
JsonObject world = json.get("world").object();
29102910
worldPath = world.get("path").stringValue(worldPath);
2911-
worldDimension = world.get("dimension").intValue(worldDimension);
2911+
2912+
String dimensionString = world.get("dimension").stringValue("");
2913+
if (dimensionString.isEmpty()) {
2914+
// legacy int-based dimension indices
2915+
worldDimension = JavaWorld.VANILLA_DIMENSION_IDX_TO_ID.get(world.get("dimension").intValue(0));
2916+
} else {
2917+
worldDimension = dimensionString;
2918+
}
29122919
}
29132920

29142921
if (json.get("camera").isObject()) {

chunky/src/java/se/llbit/chunky/ui/ChunkMap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ private void drawPlayers(GraphicsContext gc) {
585585
World world = mapLoader.getWorld();
586586
double blockScale = mapView.scale / 16.;
587587
for (PlayerEntityData player : world.currentDimension().getPlayerPositions()) {
588-
if (player.dimension == world.currentDimensionId()) {
588+
if (player.dimension.equals(world.currentDimension().id())) {
589589
int px = (int) QuickMath.floor(player.x * blockScale);
590590
int py = (int) QuickMath.floor(player.y);
591591
int pz = (int) QuickMath.floor(player.z * blockScale);

chunky/src/java/se/llbit/chunky/world/CubicDimension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class CubicDimension extends JavaDimension {
2323
* @param dimensionDirectory Minecraft world directory.
2424
* @param timestamp
2525
*/
26-
protected CubicDimension(JavaWorld world, int dimensionId, File dimensionDirectory, Set<PlayerEntityData> playerEntities, long timestamp) {
26+
protected CubicDimension(JavaWorld world, String dimensionId, File dimensionDirectory, Set<PlayerEntityData> playerEntities, long timestamp) {
2727
super(world, dimensionId, dimensionDirectory, playerEntities, timestamp);
2828
}
2929

chunky/src/java/se/llbit/chunky/world/Dimension.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public abstract class Dimension {
2727

2828
private final Heightmap heightmap = new Heightmap();
2929

30-
private final int dimensionId;
30+
private final String dimensionId;
3131

3232
private final Collection<ChunkDeletionListener> chunkDeletionListeners = new LinkedList<>();
3333
private final Collection<ChunkTopographyListener> chunkTopographyListeners = new LinkedList<>();
@@ -41,14 +41,14 @@ public abstract class Dimension {
4141
/**
4242
* @param timestamp
4343
*/
44-
protected Dimension(World world, int dimensionId, Set<PlayerEntityData> playerEntities, long timestamp) {
44+
protected Dimension(World world, String dimensionId, Set<PlayerEntityData> playerEntities, long timestamp) {
4545
this.world = world;
4646
this.dimensionId = dimensionId;
4747
this.playerEntities = playerEntities;
4848
this.timestamp = timestamp;
4949
}
5050

51-
public int getDimensionId() {
51+
public String id() {
5252
return dimensionId;
5353
}
5454

chunky/src/java/se/llbit/chunky/world/EmptyDimension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class EmptyDimension extends Dimension {
1515
public static final EmptyDimension INSTANCE = new EmptyDimension();
1616

1717
private EmptyDimension() {
18-
super(EmptyWorld.INSTANCE, 0, Collections.emptySet(), -1);
18+
super(EmptyWorld.INSTANCE, World.OVERWORLD_DIMENSION_ID, Collections.emptySet(), -1);
1919
}
2020

2121
@Override

chunky/src/java/se/llbit/chunky/world/EmptyWorld.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.File;
2222
import java.util.Collection;
2323
import java.util.Collections;
24+
import java.util.Optional;
2425
import java.util.Set;
2526

2627
/**
@@ -39,12 +40,13 @@ private EmptyWorld() {
3940
}
4041

4142
@Override
42-
public Set<Integer> listDimensions() {
43+
public Set<String> listDimensions() {
4344
return Collections.emptySet();
4445
}
4546

4647
@Override
47-
public Dimension loadDimension(int dimensionId) {
48+
@Override
49+
public EmptyDimension loadDimension(String dimension) {
4850
return EmptyDimension.INSTANCE;
4951
}
5052

chunky/src/java/se/llbit/chunky/world/ImposterCubicChunk.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private void loadSurfaceCubic(Map<Integer, Map<String, Tag>> data, ChunkData chu
113113

114114
int[] heightmapData = extractHeightmapDataCubic(null, chunkData);
115115
updateHeightmap(heightmap, position, chunkData, heightmapData, palette, yMax);
116-
surface = new SurfaceLayer(dimension.getDimensionId(), chunkData, palette, biomePalette, yMin, yMax, heightmapData);
116+
surface = new SurfaceLayer(JavaWorld.VANILLA_DIMENSION_ID_TO_IDX.get(dimension.id()), chunkData, palette, biomePalette, yMin, yMax, heightmapData);
117117
}
118118

119119
private int[] extractHeightmapDataCubic(Map<String, Tag> cubeData, ChunkData chunkData) {

chunky/src/java/se/llbit/chunky/world/JavaChunk.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ private void loadSurface(@NotNull Tag data, ChunkData chunkData, int yMin, int y
133133
int[] heightmapData = extractHeightmapData(data, chunkData);
134134
updateHeightmap(heightmap, position, chunkData, heightmapData, palette, yMax);
135135

136-
surface = new SurfaceLayer(dimension.getDimensionId(), chunkData, palette, biomePalette, yMin, yMax, heightmapData);
136+
surface = new SurfaceLayer(JavaWorld.VANILLA_DIMENSION_ID_TO_IDX.get(dimension.id()), chunkData, palette, biomePalette, yMin, yMax, heightmapData);
137137
queueTopography();
138138
}
139139
} else {

chunky/src/java/se/llbit/chunky/world/JavaDimension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class JavaDimension extends Dimension {
1919
* @param dimensionDirectory Minecraft world directory.
2020
* @param timestamp
2121
*/
22-
protected JavaDimension(JavaWorld world, int dimensionId, File dimensionDirectory, Set<PlayerEntityData> playerEntities, long timestamp) {
22+
protected JavaDimension(JavaWorld world, String dimensionId, File dimensionDirectory, Set<PlayerEntityData> playerEntities, long timestamp) {
2323
super(world, dimensionId, playerEntities, timestamp);
2424
this.dimensionDirectory = dimensionDirectory;
2525
}

0 commit comments

Comments
 (0)