From fa361043c5c5b3026927a05f861208d3489d81c0 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Wed, 3 Aug 2022 03:15:55 -0700 Subject: [PATCH] Get world by resource location (#316) --- .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 5 +++++ .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/fabric/FabricMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../main/java/de/bluecolored/bluemap/forge/ForgeMod.java | 7 +++++++ .../java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java | 6 ++++++ .../java/de/bluecolored/bluemap/sponge/SpongePlugin.java | 5 +++++ .../java/de/bluecolored/bluemap/sponge/SpongePlugin.java | 5 +++++ 16 files changed, 105 insertions(+) diff --git a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 543abb78..314098ef 100644 --- a/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -149,6 +149,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = identifier; + } + if (world instanceof Identifier) { DimensionType dimensionType = DimensionType.byId((Identifier) world); if (dimensionType != null) world = dimensionType; diff --git a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 40be19fd..e23142dc 100644 --- a/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -43,6 +43,8 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.apache.logging.log4j.LogManager; @@ -150,6 +152,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(Registry.DIMENSION, identifier)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 7046301a..b3196e58 100644 --- a/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -43,6 +43,8 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.apache.logging.log4j.LogManager; @@ -150,6 +152,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(Registry.DIMENSION, identifier)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/fabric-1.17/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.17/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index d4b95bb2..94038bd2 100644 --- a/implementations/fabric-1.17/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.17/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -43,6 +43,8 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.apache.logging.log4j.LogManager; @@ -150,6 +152,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(Registry.WORLD_KEY, identifier)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/fabric-1.18/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.18/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index c55c8f01..249f11e9 100644 --- a/implementations/fabric-1.18/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.18/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -43,6 +43,8 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.apache.logging.log4j.LogManager; @@ -150,6 +152,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(Registry.WORLD_KEY, identifier)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/fabric-1.19/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java b/implementations/fabric-1.19/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java index 143d153e..eacb5795 100644 --- a/implementations/fabric-1.19/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java +++ b/implementations/fabric-1.19/src/main/java/de/bluecolored/bluemap/fabric/FabricMod.java @@ -43,6 +43,8 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; import org.apache.logging.log4j.LogManager; @@ -150,6 +152,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + Identifier identifier = Identifier.tryParse((String) world); + if (identifier != null) world = serverInstance.getWorld(RegistryKey.of(Registry.WORLD_KEY, identifier)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 64641a69..bd694cec 100644 --- a/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.14.4/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -162,6 +162,13 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryCreate((String) world); + DimensionType dimensionType = null; + if (resourceLocation != null) dimensionType = DimensionType.byName(resourceLocation); + if (dimensionType != null) world = serverInstance.getWorld(dimensionType); + } + if (world instanceof ResourceLocation) { DimensionType dimensionType = DimensionType.byName((ResourceLocation) world); if (dimensionType != null) world = dimensionType; diff --git a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index da901971..c41ea7a4 100644 --- a/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.15.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -162,6 +162,13 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryCreate((String) world); + DimensionType dimensionType = null; + if (resourceLocation != null) dimensionType = DimensionType.byName(resourceLocation); + if (dimensionType != null) world = serverInstance.getWorld(dimensionType); + } + if (world instanceof ResourceLocation) { DimensionType dimensionType = DimensionType.byName((ResourceLocation) world); if (dimensionType != null) world = dimensionType; diff --git a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 812146a3..ba5ae327 100644 --- a/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.16.2/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -39,6 +39,8 @@ import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.TickEvent.ServerTickEvent; @@ -163,6 +165,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryCreate((String) world); + if (resourceLocation != null) world = serverInstance.getWorld(RegistryKey.func_240903_a_(Registry.field_239699_ae_, resourceLocation)); + } + if (world instanceof RegistryKey) { try { world = serverInstance.getWorld((RegistryKey) world); diff --git a/implementations/forge-1.17.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.17.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 7204cf33..b157b422 100644 --- a/implementations/forge-1.17.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.17.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -35,7 +35,9 @@ import de.bluecolored.bluemap.core.BlueMap; import de.bluecolored.bluemap.core.MinecraftVersion; import de.bluecolored.bluemap.core.logger.Logger; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -162,6 +164,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryParse((String) world); + if (resourceLocation != null) world = serverInstance.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, resourceLocation)); + } + if (world instanceof ResourceKey) { try { world = serverInstance.getLevel((ResourceKey) world); diff --git a/implementations/forge-1.18.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.18.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index e26d66b8..dfa28786 100644 --- a/implementations/forge-1.18.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.18.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -35,7 +35,9 @@ import de.bluecolored.bluemap.core.BlueMap; import de.bluecolored.bluemap.core.MinecraftVersion; import de.bluecolored.bluemap.core.logger.Logger; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -162,6 +164,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryParse((String) world); + if (resourceLocation != null) world = serverInstance.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, resourceLocation)); + } + if (world instanceof ResourceKey) { try { world = serverInstance.getLevel((ResourceKey) world); diff --git a/implementations/forge-1.19.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.19.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index e77314f2..04e3c698 100644 --- a/implementations/forge-1.19.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.19.1/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -35,7 +35,9 @@ import de.bluecolored.bluemap.core.BlueMap; import de.bluecolored.bluemap.core.MinecraftVersion; import de.bluecolored.bluemap.core.logger.Logger; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -162,6 +164,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryParse((String) world); + if (resourceLocation != null) world = serverInstance.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, resourceLocation)); + } + if (world instanceof ResourceKey) { try { world = serverInstance.getLevel((ResourceKey) world); diff --git a/implementations/forge-1.19/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java b/implementations/forge-1.19/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java index 17c74ac6..daa1a6b3 100644 --- a/implementations/forge-1.19/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java +++ b/implementations/forge-1.19/src/main/java/de/bluecolored/bluemap/forge/ForgeMod.java @@ -35,7 +35,9 @@ import de.bluecolored.bluemap.core.BlueMap; import de.bluecolored.bluemap.core.MinecraftVersion; import de.bluecolored.bluemap.core.logger.Logger; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -162,6 +164,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceLocation resourceLocation = ResourceLocation.tryParse((String) world); + if (resourceLocation != null) world = serverInstance.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, resourceLocation)); + } + if (world instanceof ResourceKey) { try { world = serverInstance.getLevel((ResourceKey) world); diff --git a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java index f10394b7..d551b85c 100644 --- a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java +++ b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java @@ -34,6 +34,7 @@ import de.bluecolored.bluemap.core.BlueMap; import de.bluecolored.bluemap.core.MinecraftVersion; import de.bluecolored.bluemap.core.logger.Logger; +import de.bluecolored.bluemap.core.util.Key; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; import org.bukkit.World; @@ -200,6 +201,11 @@ public Optional getWorld(Object world) { if (serverWorld != null) world = serverWorld; } + if (world instanceof String) { + var serverWorld = Bukkit.getWorld(new Key((String) world).getValue()); + if (serverWorld != null) world = serverWorld; + } + if (world instanceof UUID) { var serverWorld = Bukkit.getWorld((UUID) world); if (serverWorld != null) world = serverWorld; diff --git a/implementations/sponge-8.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java b/implementations/sponge-8.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java index 74cf78f8..658b6ef2 100644 --- a/implementations/sponge-8.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java +++ b/implementations/sponge-8.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java @@ -232,6 +232,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceKey resourceKey = ResourceKey.resolve((String) world); + if (resourceKey != null) world = resourceKey; + } + if (world instanceof ResourceKey) { var serverWorld = Sponge.server().worldManager().world((ResourceKey) world).orElse(null); if (serverWorld != null) world = serverWorld; diff --git a/implementations/sponge-9.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java b/implementations/sponge-9.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java index 74cf78f8..658b6ef2 100644 --- a/implementations/sponge-9.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java +++ b/implementations/sponge-9.0.0/src/main/java/de/bluecolored/bluemap/sponge/SpongePlugin.java @@ -232,6 +232,11 @@ public Optional getWorld(Object world) { if (world instanceof Path) return getWorld((Path) world); + if (world instanceof String) { + ResourceKey resourceKey = ResourceKey.resolve((String) world); + if (resourceKey != null) world = resourceKey; + } + if (world instanceof ResourceKey) { var serverWorld = Sponge.server().worldManager().world((ResourceKey) world).orElse(null); if (serverWorld != null) world = serverWorld;