f7b4abb259
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 15ba9ae7 SPIGOT-6357: Add World#getMinHeight CraftBukkit Changes: e9ad7cba9 SPIGOT-6357: Add World#getMinHeight
111 Zeilen
6.5 KiB
Diff
111 Zeilen
6.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 6 Jan 2021 00:34:04 -0800
|
|
Subject: [PATCH] Implement Keyed on World
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/core/IRegistry.java b/src/main/java/net/minecraft/core/IRegistry.java
|
|
index 3e9ebeffdf66f8a959630b344149d17137c6901c..4f04d8081912e0fe771f0db9e086c789328f246f 100644
|
|
--- a/src/main/java/net/minecraft/core/IRegistry.java
|
|
+++ b/src/main/java/net/minecraft/core/IRegistry.java
|
|
@@ -130,7 +130,7 @@ public abstract class IRegistry<T> implements Codec<T>, Keyable, Registry<T> {
|
|
public static final ResourceKey<IRegistry<LootItemFunctionType>> I = a("loot_function_type");
|
|
public static final ResourceKey<IRegistry<LootItemConditionType>> J = a("loot_condition_type");
|
|
public static final ResourceKey<IRegistry<DimensionManager>> K = a("dimension_type");
|
|
- public static final ResourceKey<IRegistry<World>> L = a("dimension");
|
|
+ public static final ResourceKey<IRegistry<World>> L = a("dimension"); public static final ResourceKey<IRegistry<World>> getWorldRegistry() { return L; } // Paper - OBFHELPER
|
|
public static final ResourceKey<IRegistry<WorldDimension>> M = a("dimension");
|
|
public static final IRegistry<SoundEffect> SOUND_EVENT = a(IRegistry.g, () -> {
|
|
return SoundEffects.ENTITY_ITEM_PICKUP;
|
|
@@ -339,9 +339,9 @@ public abstract class IRegistry<T> implements Codec<T>, Keyable, Registry<T> {
|
|
MinecraftKey minecraftkey = resourcekey.a();
|
|
|
|
IRegistry.a.put(minecraftkey, supplier);
|
|
- IRegistryWritable<R> iregistrywritable = IRegistry.e;
|
|
+ IRegistryWritable iregistrywritable = IRegistry.e; // Paper - decompile fix
|
|
|
|
- return (IRegistryWritable) iregistrywritable.a(resourcekey, (Object) r0, lifecycle);
|
|
+ return (R) iregistrywritable.a(resourcekey, (Object) r0, lifecycle); // Paper - decompile fix
|
|
}
|
|
|
|
protected IRegistry(ResourceKey<? extends IRegistry<T>> resourcekey, Lifecycle lifecycle) {
|
|
@@ -428,11 +428,11 @@ public abstract class IRegistry<T> implements Codec<T>, Keyable, Registry<T> {
|
|
}
|
|
|
|
public static <V, T extends V> T a(IRegistry<V> iregistry, MinecraftKey minecraftkey, T t0) {
|
|
- return ((IRegistryWritable) iregistry).a(ResourceKey.a(iregistry.b, minecraftkey), t0, Lifecycle.stable());
|
|
+ return ((IRegistryWritable<V>) iregistry).a(ResourceKey.a(iregistry.b, minecraftkey), t0, Lifecycle.stable()); // Paper - decompile fix
|
|
}
|
|
|
|
public static <V, T extends V> T a(IRegistry<V> iregistry, int i, String s, T t0) {
|
|
- return ((IRegistryWritable) iregistry).a(i, ResourceKey.a(iregistry.b, new MinecraftKey(s)), t0, Lifecycle.stable());
|
|
+ return ((IRegistryWritable<V>) iregistry).a(i, ResourceKey.a(iregistry.b, new MinecraftKey(s)), t0, Lifecycle.stable()); // Paper - decompile fix
|
|
}
|
|
|
|
static {
|
|
diff --git a/src/main/java/net/minecraft/resources/ResourceKey.java b/src/main/java/net/minecraft/resources/ResourceKey.java
|
|
index 760579921927b4c8b0f20b2611b95fd626e4b27f..3075700dfa992da81b10246fcf7c7ad1115c4ba3 100644
|
|
--- a/src/main/java/net/minecraft/resources/ResourceKey.java
|
|
+++ b/src/main/java/net/minecraft/resources/ResourceKey.java
|
|
@@ -12,6 +12,7 @@ public class ResourceKey<T> {
|
|
private final MinecraftKey b;
|
|
private final MinecraftKey c;
|
|
|
|
+ public static <T> ResourceKey<T> newResourceKey(ResourceKey<? extends IRegistry<T>> registryKey, MinecraftKey minecraftKey) { return a(registryKey, minecraftKey); } // Paper - OBFHELPER
|
|
public static <T> ResourceKey<T> a(ResourceKey<? extends IRegistry<T>> resourcekey, MinecraftKey minecraftkey) {
|
|
return a(resourcekey.c, minecraftkey);
|
|
}
|
|
@@ -41,6 +42,7 @@ public class ResourceKey<T> {
|
|
return this.b.equals(resourcekey.a());
|
|
}
|
|
|
|
+ public MinecraftKey getLocation() { return a(); } // Paper - OBFHELPER
|
|
public MinecraftKey a() {
|
|
return this.c;
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index cbac3c96c5d3c1551912f5769bfc50d690519495..03b8d67a5f0088c0254b2099f27e8dcae32a6221 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1154,7 +1154,7 @@ public final class CraftServer implements Server {
|
|
chunkgenerator = worlddimension.c();
|
|
}
|
|
|
|
- ResourceKey<net.minecraft.world.level.World> worldKey = ResourceKey.a(IRegistry.L, new MinecraftKey(name.toLowerCase(java.util.Locale.ENGLISH)));
|
|
+ ResourceKey<net.minecraft.world.level.World> worldKey = ResourceKey.newResourceKey(IRegistry.getWorldRegistry(), new MinecraftKey(creator.key().getNamespace().toLowerCase(java.util.Locale.ENGLISH), creator.key().getKey().toLowerCase(java.util.Locale.ENGLISH))); // Paper
|
|
|
|
WorldServer internal = (WorldServer) new WorldServer(console, console.executorService, worldSession, worlddata, worldKey, dimensionmanager, getServer().worldLoadListenerFactory.create(11),
|
|
chunkgenerator, worlddata.getGeneratorSettings().isDebugWorld(), j, creator.environment() == Environment.NORMAL ? list : ImmutableList.of(), true, creator.environment(), generator);
|
|
@@ -1245,6 +1245,15 @@ public final class CraftServer implements Server {
|
|
return null;
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public World getWorld(NamespacedKey worldKey) {
|
|
+ WorldServer worldServer = console.getWorldServer(ResourceKey.newResourceKey(IRegistry.getWorldRegistry(), CraftNamespacedKey.toMinecraft(worldKey)));
|
|
+ if (worldServer == null) return null;
|
|
+ return worldServer.getWorld();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
public void addWorld(World world) {
|
|
// Check if a World already exists with the UID.
|
|
if (getWorld(world.getUID()) != null) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index e75d321a32a47312b2f087ca41280e68dfd9fe85..e739b4f8a7b8785ceb11c553bd27e2fe0e64a4bb 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -2590,6 +2590,11 @@ public class CraftWorld implements World {
|
|
return CompletableFuture.completedFuture(chunk == null ? null : chunk.getBukkitChunk());
|
|
}, net.minecraft.server.MinecraftServer.getServer());
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public org.bukkit.NamespacedKey getKey() {
|
|
+ return org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(world.getDimensionKey().getLocation());
|
|
+ }
|
|
// Paper end
|
|
|
|
// Spigot start
|