From e79ea4ab825e56777023915e6a0101700af041ea Mon Sep 17 00:00:00 2001 From: kyuri <94974428+ckyuri@users.noreply.github.com> Date: Thu, 5 Jun 2025 06:38:42 +0100 Subject: [PATCH] Minestom Latest - Update (#499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bukkit Build Fix * remove comments * remove papermc repo from gradle settings * add back gradle shasum * fix formatting, update gradle hash * Minestom Updated to latest version as of now 4/12/2025 Updated method names to new documentation and changed minestom versioning. - Paper Build version was changed as I had issues building at all with the snapshot version. So it was changed to a generic version but everything still builds fine. * Bug Fix - Entity Type was parsing a value that was incorrect and causing issues to load the world. EntityType.fromId(Integer.parseInt(id)); to delegate = EntityType.fromKey(id); * Reverted changes to comply with build version requirements and avoiding pulling functionality out of a common existing function --------- Co-authored-by: Peter Pan Co-authored-by: Zoƫ Gidiere --- buildSrc/src/main/kotlin/Versions.kt | 2 +- .../terra/minestom/MinestomPlatform.java | 10 +++++--- .../minestom/biome/MinestomBiomeLoader.java | 9 +++---- .../minestom/block/MinestomBlockState.java | 8 +++--- .../minestom/entity/MinestomEntityType.java | 6 ++--- .../minestom/item/MinestomEnchantment.java | 25 +++++++++++++++---- .../terra/minestom/item/MinestomMaterial.java | 5 ++-- 7 files changed, 40 insertions(+), 25 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 2ad818b61..90dfbd92d 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -87,6 +87,6 @@ object Versions { } object Minestom { - const val minestom = "187931e50b" + const val minestom = "fb895cb899" } } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java index 78ac5ff18..c63378a28 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java @@ -14,12 +14,16 @@ import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; +import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + import net.minestom.server.MinecraftServer; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; + public final class MinestomPlatform extends AbstractPlatform { @@ -51,7 +55,7 @@ public final class MinestomPlatform extends AbstractPlatform { if(world.generator() instanceof MinestomChunkGeneratorWrapper wrapper) { getConfigRegistry().get(wrapper.getPack().getRegistryKey()).ifPresent(pack -> { wrapper.setPack(pack); - LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUniqueId()); + LOGGER.info("Replaced pack in chunk generator for instance {}", world.getUuid()); }); } }); @@ -59,6 +63,7 @@ public final class MinestomPlatform extends AbstractPlatform { return succeed; } + @Override public @NotNull WorldHandle getWorldHandle() { return worldHandle; @@ -83,11 +88,10 @@ public final class MinestomPlatform extends AbstractPlatform { return file; } - public static MinestomPlatform getInstance() { if(INSTANCE == null) { INSTANCE = new MinestomPlatform(); } return INSTANCE; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java index 9cb3eb960..edaf49a50 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/biome/MinestomBiomeLoader.java @@ -7,15 +7,14 @@ import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.terra.api.world.biome.PlatformBiome; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.world.biome.Biome; import org.jetbrains.annotations.NotNull; import java.lang.reflect.AnnotatedType; - public class MinestomBiomeLoader implements TypeLoader { private final DynamicRegistry biomeRegistry = MinecraftServer.getBiomeRegistry(); @@ -23,9 +22,9 @@ public class MinestomBiomeLoader implements TypeLoader { public PlatformBiome load(@NotNull AnnotatedType annotatedType, @NotNull Object o, @NotNull ConfigLoader configLoader, DepthTracker depthTracker) throws LoadException { String id = (String) o; - NamespaceID biomeID = NamespaceID.from(id); - Biome biome = biomeRegistry.get(biomeID); + Key key = Key.key(id); + Biome biome = biomeRegistry.get(key); if(biome == null) throw new LoadException("Biome %s does not exist in registry".formatted(id), depthTracker); return new MinestomBiome(biome); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java index 01bad55fa..d26470dae 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/block/MinestomBlockState.java @@ -24,14 +24,14 @@ public class MinestomBlockState implements BlockState { public MinestomBlockState(String data) { if(!data.contains("[")) { - block = Block.fromNamespaceId(data); + block = Block.fromKey(data); return; } String[] split = data.split("\\["); String namespaceId = split[0]; String properties = split[1].substring(0, split[1].length() - 1); - Block block = Block.fromNamespaceId(namespaceId); + Block block = Block.fromKey(namespaceId); HashMap propertiesMap = new HashMap<>(); for(String property : properties.split(",")) { @@ -70,7 +70,7 @@ public class MinestomBlockState implements BlockState { @Override public String getAsString(boolean properties) { - String name = block.namespace().asString(); + String name = block.key().asString(); if(!properties || block.properties().isEmpty()) { return name; } @@ -95,4 +95,4 @@ public class MinestomBlockState implements BlockState { public int hashCode() { return Objects.hashCode(block.id()); } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java index 60fbac5d9..825fde33e 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/entity/MinestomEntityType.java @@ -1,18 +1,16 @@ package com.dfsek.terra.minestom.entity; - import net.minestom.server.entity.EntityType; - public class MinestomEntityType implements com.dfsek.terra.api.entity.EntityType { private final EntityType delegate; public MinestomEntityType(String id) { - delegate = EntityType.fromNamespaceId(id); + delegate = EntityType.fromKey(id); } @Override public EntityType getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java index 0ef720b31..69411571a 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomEnchantment.java @@ -3,9 +3,10 @@ package com.dfsek.terra.minestom.item; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.inventory.item.Enchantment; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.item.Material; -import net.minestom.server.utils.NamespaceID; +import net.minestom.server.registry.DynamicRegistry; import java.util.Objects; @@ -16,11 +17,13 @@ public class MinestomEnchantment implements Enchantment { public MinestomEnchantment(net.minestom.server.item.enchant.Enchantment delegate) { this.delegate = delegate; - id = Objects.requireNonNull(delegate.registry()).raw(); + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + this.id = Objects.requireNonNull(registry.getKey(delegate)).toString(); } public MinestomEnchantment(String id) { - this.delegate = MinecraftServer.getEnchantmentRegistry().get(NamespaceID.from(id)); + Key key = Key.key(id); + this.delegate = MinecraftServer.getEnchantmentRegistry().get(key); this.id = id; } @@ -31,7 +34,19 @@ public class MinestomEnchantment implements Enchantment { @Override public boolean conflictsWith(Enchantment other) { - return delegate.exclusiveSet().contains(NamespaceID.from(((MinestomEnchantment) other).id)); + var otherDelegate = ((MinestomEnchantment) other).delegate; + delegate.exclusiveSet(); + + // Get the registry key for the other enchantment to use in contains + try { + DynamicRegistry registry = MinecraftServer.getEnchantmentRegistry(); + DynamicRegistry.Key otherKey = registry.getKey(otherDelegate); + return delegate.exclusiveSet().contains(otherKey); + } catch (Exception e) { + // If the key approach fails, fall back to a more basic implementation + String otherId = ((MinestomEnchantment) other).id; + return otherId.equals(this.id); + } } @Override @@ -48,4 +63,4 @@ public class MinestomEnchantment implements Enchantment { public net.minestom.server.item.enchant.Enchantment getHandle() { return delegate; } -} +} \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java index 6bd0a1908..77aa8777d 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/item/MinestomMaterial.java @@ -5,7 +5,6 @@ import com.dfsek.terra.api.inventory.ItemStack; import net.minestom.server.item.Material; - public class MinestomMaterial implements Item { private final Material delegate; @@ -14,7 +13,7 @@ public class MinestomMaterial implements Item { } public MinestomMaterial(String id) { - this.delegate = Material.fromNamespaceId(id); + this.delegate = Material.fromId(Integer.parseInt(id)); } @Override @@ -31,4 +30,4 @@ public class MinestomMaterial implements Item { public Material getHandle() { return delegate; } -} +} \ No newline at end of file