diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index cbbbcc9898..28580323c9 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -56,6 +56,7 @@ object Versions { object Bukkit { const val minecraft = "1.21.4" + const val paperBuild = "$minecraft-R0.1-20250317.101324-208" const val paper = paperBuild const val paperLib = "1.0.8" @@ -83,6 +84,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 78ac5ff181..c63378a28b 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.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 boolean reload() { 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 boolean reload() { return succeed; } + @Override public @NotNull WorldHandle getWorldHandle() { return worldHandle; @@ -83,11 +88,10 @@ public boolean reload() { 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 9cb3eb960e..edaf49a506 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.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 01bad55faf..d26470daee 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 MinestomBlockState(Block block) { 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 BlockType getBlockType() { @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 Object getHandle() { 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 60fbac5d90..825fde33e5 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 0ef720b31a..69411571a1 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 @@ 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 boolean canEnchantItem(ItemStack itemStack) { @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 int getMaxLevel() { 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 6bd0a19089..77aa8777db 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 net.minestom.server.item.Material; - public class MinestomMaterial implements Item { private final Material delegate; @@ -14,7 +13,7 @@ public MinestomMaterial(Material delegate) { } public MinestomMaterial(String id) { - this.delegate = Material.fromNamespaceId(id); + this.delegate = Material.fromId(Integer.parseInt(id)); } @Override @@ -31,4 +30,4 @@ public double getMaxDurability() { public Material getHandle() { return delegate; } -} +} \ No newline at end of file