Skip to content

Commit f5b3799

Browse files
committed
Use default dimension data for defaulted registry entry
1 parent 00fedc7 commit f5b3799

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryEntry.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
import com.viaversion.nbt.tag.Tag;
2626
import org.checkerframework.checker.nullness.qual.Nullable;
2727

28+
/**
29+
* Represents an entry in a registry.
30+
*
31+
* @param key key of the registry entry
32+
* @param tag data of the registry entry, or null if the client should use its default
33+
*/
2834
public record RegistryEntry(String key, @Nullable Tag tag) {
2935

3036
public RegistryEntry withKey(final String key) {

common/src/main/java/com/viaversion/viaversion/data/entity/DimensionDataImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ public DimensionDataImpl(final int id, final CompoundTag dimensionData) {
4848
this.minY = minY.asInt();
4949
}
5050

51+
public static DimensionData withDefaultsFor(final String key, final int id) {
52+
return switch (key) {
53+
case "overworld", "overworld_caves" -> new DimensionDataImpl(id, -64, 384);
54+
case "the_nether", "the_end" -> new DimensionDataImpl(id, 0, 256);
55+
default -> throw new IllegalArgumentException("Missing registry data for unknown dimension: " + key);
56+
};
57+
}
58+
5159
@Override
5260
public int id() {
5361
return id;

common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,11 @@ public void handleRegistryData1_20_5(final UserConnection connection, final Stri
527527
final Map<String, DimensionData> dimensionDataMap = new HashMap<>(entries.length);
528528
for (int i = 0; i < entries.length; i++) {
529529
final RegistryEntry entry = entries[i];
530-
dimensionDataMap.put(Key.stripMinecraftNamespace(entry.key()), new DimensionDataImpl(i, (CompoundTag) entry.tag()));
530+
final String key = Key.stripMinecraftNamespace(entry.key());
531+
final DimensionData dimensionData = entry.tag() != null
532+
? new DimensionDataImpl(i, (CompoundTag) entry.tag())
533+
: DimensionDataImpl.withDefaultsFor(key, i);
534+
dimensionDataMap.put(key, dimensionData);
531535
}
532536
tracker(connection).setDimensions(dimensionDataMap);
533537
}

0 commit comments

Comments
 (0)