diff --git a/code-generators/build.gradle.kts b/code-generators/build.gradle.kts index d403cfbbadb..1ec31b4ac72 100644 --- a/code-generators/build.gradle.kts +++ b/code-generators/build.gradle.kts @@ -5,12 +5,15 @@ plugins { repositories { mavenLocal() mavenCentral() + maven("https://s01.oss.sonatype.org/content/repositories/releases/") } dependencies { // Provides the input JSON to generate from implementation(libs.minestomData) + implementation(libs.bundles.adventure) + // Common implementation(libs.jetbrainsAnnotations) implementation(libs.slf4j) diff --git a/code-generators/src/main/java/net/minestom/codegen/CodeGenerator.java b/code-generators/src/main/java/net/minestom/codegen/CodeGenerator.java index 72da0b8e567..8ea2a0266fa 100644 --- a/code-generators/src/main/java/net/minestom/codegen/CodeGenerator.java +++ b/code-generators/src/main/java/net/minestom/codegen/CodeGenerator.java @@ -3,7 +3,12 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; -import com.squareup.javapoet.*; +import com.squareup.javapoet.AnnotationSpec; +import com.squareup.javapoet.ClassName; +import com.squareup.javapoet.FieldSpec; +import com.squareup.javapoet.JavaFile; +import com.squareup.javapoet.TypeSpec; +import net.kyori.adventure.key.Key; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,8 +80,7 @@ public void generateKeys(InputStream resourceFile, String packageName, String ty } ClassName typeClass = ClassName.bestGuess(packageName + "." + typeName); // Use bestGuess to handle nested class - ClassName registryKeyClass = ClassName.get("net.minestom.server.registry", "DynamicRegistry", "Key"); - ParameterizedTypeName typedRegistryKeyClass = ParameterizedTypeName.get(registryKeyClass, typeClass); + ClassName registryKeyClass = ClassName.get(Key.class); JsonObject json; json = GSON.fromJson(new InputStreamReader(resourceFile), JsonObject.class); @@ -97,11 +101,11 @@ public void generateKeys(InputStream resourceFile, String packageName, String ty constantName = "_" + constantName; } blockConstantsClass.addField( - FieldSpec.builder(typedRegistryKeyClass, constantName) + FieldSpec.builder(registryKeyClass, constantName) .addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) .initializer( - // TypeClass.STONE = NamespaceID.from("minecraft:stone") - "$T.of($S)", + // TypeClass.STONE = Key.key("minecraft:stone") + "$T.key($S)", registryKeyClass, namespace ) diff --git a/code-generators/src/main/java/net/minestom/codegen/recipe/RecipeTypeGenerator.java b/code-generators/src/main/java/net/minestom/codegen/recipe/RecipeTypeGenerator.java index ca7f3a440f8..8e1da89c5b5 100644 --- a/code-generators/src/main/java/net/minestom/codegen/recipe/RecipeTypeGenerator.java +++ b/code-generators/src/main/java/net/minestom/codegen/recipe/RecipeTypeGenerator.java @@ -4,6 +4,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.squareup.javapoet.*; +import net.kyori.adventure.key.Key; import net.minestom.codegen.MinestomCodeGenerator; import net.minestom.codegen.util.GenerationHelper; import org.jetbrains.annotations.NotNull; @@ -50,7 +51,7 @@ public void generate() { TypeSpec.Builder recipeTypeEnum = TypeSpec.enumBuilder(recipeTypeCN) .addSuperinterface(ClassName.get("net.minestom.server.registry", "StaticProtocolObject")) .addModifiers(Modifier.PUBLIC).addJavadoc("AUTOGENERATED by " + getClass().getSimpleName()); - ClassName namespaceIdCN = ClassName.get("net.minestom.server.utils", "NamespaceID"); + ClassName namespaceIdCN = ClassName.get(Key.class); ClassName networkBufferCN = ClassName.get("net.minestom.server.network", "NetworkBuffer"); ParameterizedTypeName networkBufferTypeCN = ParameterizedTypeName.get(networkBufferCN.nestedClass("Type"), recipeTypeCN); @@ -93,7 +94,7 @@ public void generate() { for (JsonObject recipeTypeObject : StreamSupport.stream(recipeTypes.spliterator(), true).map(JsonElement::getAsJsonObject).sorted(Comparator.comparingInt(o -> o.get("id").getAsInt())).toList()) { String recipeTypeName = recipeTypeObject.get("name").getAsString(); recipeTypeEnum.addEnumConstant(recipeTypeConstantName(recipeTypeName), TypeSpec.anonymousClassBuilder( - "$T.from($S)", + "$T.key($S)", namespaceIdCN, recipeTypeName ).build() ); diff --git a/demo/src/main/java/net/minestom/demo/PlayerInit.java b/demo/src/main/java/net/minestom/demo/PlayerInit.java index 9311673fd6b..182d9ae6a69 100644 --- a/demo/src/main/java/net/minestom/demo/PlayerInit.java +++ b/demo/src/main/java/net/minestom/demo/PlayerInit.java @@ -1,5 +1,6 @@ package net.minestom.demo; +import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; import net.minestom.server.FeatureFlag; @@ -60,7 +61,6 @@ import net.minestom.server.sound.SoundEvent; import net.minestom.server.notifications.Notification; import net.minestom.server.utils.MathUtils; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.time.TimeUnit; import java.time.Duration; @@ -130,9 +130,9 @@ class A { static boolean b = false; } if (A.b) { - event.getPlayer().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).removeModifier(NamespaceID.from("test")); + event.getPlayer().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).removeModifier(Key.key("test")); } else { - event.getPlayer().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).addModifier(new AttributeModifier(NamespaceID.from("test"), 0.5, AttributeOperation.ADD_VALUE)); + event.getPlayer().getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).addModifier(new AttributeModifier(Key.key("test"), 0.5, AttributeOperation.ADD_VALUE)); } A.b = !A.b; }) @@ -167,7 +167,7 @@ class A { player.getInventory().addItemStack(bundle); player.getInventory().addItemStack(ItemStack.builder(Material.COMPASS) - .set(ItemComponent.LODESTONE_TRACKER, new LodestoneTracker(player.getInstance().getDimensionName(), new Vec(10, 10, 10), true)) + .set(ItemComponent.LODESTONE_TRACKER, new LodestoneTracker(player.getInstance().getDimensionType(), new Vec(10, 10, 10), true)) .build()); player.getInventory().addItemStack(ItemStack.builder(Material.STONE_SWORD) diff --git a/demo/src/main/java/net/minestom/demo/block/CampfireHandler.java b/demo/src/main/java/net/minestom/demo/block/CampfireHandler.java index 663c10914f6..0088b9762d3 100644 --- a/demo/src/main/java/net/minestom/demo/block/CampfireHandler.java +++ b/demo/src/main/java/net/minestom/demo/block/CampfireHandler.java @@ -1,5 +1,6 @@ package net.minestom.demo.block; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.BinaryTagTypes; import net.kyori.adventure.nbt.CompoundBinaryTag; @@ -11,7 +12,6 @@ import net.minestom.server.tag.TagReadable; import net.minestom.server.tag.TagSerializer; import net.minestom.server.tag.TagWritable; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -65,7 +65,7 @@ public void write(@NotNull TagWritable writer, @Nullable List value) } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } } diff --git a/demo/src/main/java/net/minestom/demo/block/TestBlockHandler.java b/demo/src/main/java/net/minestom/demo/block/TestBlockHandler.java index 1f7f6f3ee8a..4e363789da1 100644 --- a/demo/src/main/java/net/minestom/demo/block/TestBlockHandler.java +++ b/demo/src/main/java/net/minestom/demo/block/TestBlockHandler.java @@ -1,15 +1,15 @@ package net.minestom.demo.block; +import net.kyori.adventure.key.Key; import net.minestom.server.instance.block.BlockHandler; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; public class TestBlockHandler implements BlockHandler { public static final BlockHandler INSTANCE = new TestBlockHandler(); @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom", "test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom", "test"); } @Override diff --git a/settings.gradle.kts b/settings.gradle.kts index 7d1ade8d08b..862e8f31a55 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,6 +1,7 @@ dependencyResolutionManagement { repositories { maven("https://s01.oss.sonatype.org/content/repositories/snapshots") + maven("https://s01.oss.sonatype.org/content/repositories/releases/") maven("https://jitpack.io") mavenCentral() } diff --git a/src/autogenerated/java/net/minestom/server/entity/damage/DamageTypes.java b/src/autogenerated/java/net/minestom/server/entity/damage/DamageTypes.java index 806d7a3004f..af445d6894b 100644 --- a/src/autogenerated/java/net/minestom/server/entity/damage/DamageTypes.java +++ b/src/autogenerated/java/net/minestom/server/entity/damage/DamageTypes.java @@ -1,103 +1,103 @@ package net.minestom.server.entity.damage; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface DamageTypes { - DynamicRegistry.Key WITHER = DynamicRegistry.Key.of("minecraft:wither"); + Key WITHER = Key.key("minecraft:wither"); - DynamicRegistry.Key SONIC_BOOM = DynamicRegistry.Key.of("minecraft:sonic_boom"); + Key SONIC_BOOM = Key.key("minecraft:sonic_boom"); - DynamicRegistry.Key WITHER_SKULL = DynamicRegistry.Key.of("minecraft:wither_skull"); + Key WITHER_SKULL = Key.key("minecraft:wither_skull"); - DynamicRegistry.Key DRY_OUT = DynamicRegistry.Key.of("minecraft:dry_out"); + Key DRY_OUT = Key.key("minecraft:dry_out"); - DynamicRegistry.Key TRIDENT = DynamicRegistry.Key.of("minecraft:trident"); + Key TRIDENT = Key.key("minecraft:trident"); - DynamicRegistry.Key ON_FIRE = DynamicRegistry.Key.of("minecraft:on_fire"); + Key ON_FIRE = Key.key("minecraft:on_fire"); - DynamicRegistry.Key FALL = DynamicRegistry.Key.of("minecraft:fall"); + Key FALL = Key.key("minecraft:fall"); - DynamicRegistry.Key MOB_ATTACK = DynamicRegistry.Key.of("minecraft:mob_attack"); + Key MOB_ATTACK = Key.key("minecraft:mob_attack"); - DynamicRegistry.Key MOB_PROJECTILE = DynamicRegistry.Key.of("minecraft:mob_projectile"); + Key MOB_PROJECTILE = Key.key("minecraft:mob_projectile"); - DynamicRegistry.Key CAMPFIRE = DynamicRegistry.Key.of("minecraft:campfire"); + Key CAMPFIRE = Key.key("minecraft:campfire"); - DynamicRegistry.Key THROWN = DynamicRegistry.Key.of("minecraft:thrown"); + Key THROWN = Key.key("minecraft:thrown"); - DynamicRegistry.Key FALLING_STALACTITE = DynamicRegistry.Key.of("minecraft:falling_stalactite"); + Key FALLING_STALACTITE = Key.key("minecraft:falling_stalactite"); - DynamicRegistry.Key FIREBALL = DynamicRegistry.Key.of("minecraft:fireball"); + Key FIREBALL = Key.key("minecraft:fireball"); - DynamicRegistry.Key FALLING_BLOCK = DynamicRegistry.Key.of("minecraft:falling_block"); + Key FALLING_BLOCK = Key.key("minecraft:falling_block"); - DynamicRegistry.Key WIND_CHARGE = DynamicRegistry.Key.of("minecraft:wind_charge"); + Key WIND_CHARGE = Key.key("minecraft:wind_charge"); - DynamicRegistry.Key PLAYER_EXPLOSION = DynamicRegistry.Key.of("minecraft:player_explosion"); + Key PLAYER_EXPLOSION = Key.key("minecraft:player_explosion"); - DynamicRegistry.Key SPIT = DynamicRegistry.Key.of("minecraft:spit"); + Key SPIT = Key.key("minecraft:spit"); - DynamicRegistry.Key STING = DynamicRegistry.Key.of("minecraft:sting"); + Key STING = Key.key("minecraft:sting"); - DynamicRegistry.Key UNATTRIBUTED_FIREBALL = DynamicRegistry.Key.of("minecraft:unattributed_fireball"); + Key UNATTRIBUTED_FIREBALL = Key.key("minecraft:unattributed_fireball"); - DynamicRegistry.Key IN_WALL = DynamicRegistry.Key.of("minecraft:in_wall"); + Key IN_WALL = Key.key("minecraft:in_wall"); - DynamicRegistry.Key IN_FIRE = DynamicRegistry.Key.of("minecraft:in_fire"); + Key IN_FIRE = Key.key("minecraft:in_fire"); - DynamicRegistry.Key ARROW = DynamicRegistry.Key.of("minecraft:arrow"); + Key ARROW = Key.key("minecraft:arrow"); - DynamicRegistry.Key HOT_FLOOR = DynamicRegistry.Key.of("minecraft:hot_floor"); + Key HOT_FLOOR = Key.key("minecraft:hot_floor"); - DynamicRegistry.Key DROWN = DynamicRegistry.Key.of("minecraft:drown"); + Key DROWN = Key.key("minecraft:drown"); - DynamicRegistry.Key STARVE = DynamicRegistry.Key.of("minecraft:starve"); + Key STARVE = Key.key("minecraft:starve"); - DynamicRegistry.Key GENERIC_KILL = DynamicRegistry.Key.of("minecraft:generic_kill"); + Key GENERIC_KILL = Key.key("minecraft:generic_kill"); - DynamicRegistry.Key DRAGON_BREATH = DynamicRegistry.Key.of("minecraft:dragon_breath"); + Key DRAGON_BREATH = Key.key("minecraft:dragon_breath"); - DynamicRegistry.Key MOB_ATTACK_NO_AGGRO = DynamicRegistry.Key.of("minecraft:mob_attack_no_aggro"); + Key MOB_ATTACK_NO_AGGRO = Key.key("minecraft:mob_attack_no_aggro"); - DynamicRegistry.Key LAVA = DynamicRegistry.Key.of("minecraft:lava"); + Key LAVA = Key.key("minecraft:lava"); - DynamicRegistry.Key OUTSIDE_BORDER = DynamicRegistry.Key.of("minecraft:outside_border"); + Key OUTSIDE_BORDER = Key.key("minecraft:outside_border"); - DynamicRegistry.Key FLY_INTO_WALL = DynamicRegistry.Key.of("minecraft:fly_into_wall"); + Key FLY_INTO_WALL = Key.key("minecraft:fly_into_wall"); - DynamicRegistry.Key LIGHTNING_BOLT = DynamicRegistry.Key.of("minecraft:lightning_bolt"); + Key LIGHTNING_BOLT = Key.key("minecraft:lightning_bolt"); - DynamicRegistry.Key PLAYER_ATTACK = DynamicRegistry.Key.of("minecraft:player_attack"); + Key PLAYER_ATTACK = Key.key("minecraft:player_attack"); - DynamicRegistry.Key FREEZE = DynamicRegistry.Key.of("minecraft:freeze"); + Key FREEZE = Key.key("minecraft:freeze"); - DynamicRegistry.Key FALLING_ANVIL = DynamicRegistry.Key.of("minecraft:falling_anvil"); + Key FALLING_ANVIL = Key.key("minecraft:falling_anvil"); - DynamicRegistry.Key OUT_OF_WORLD = DynamicRegistry.Key.of("minecraft:out_of_world"); + Key OUT_OF_WORLD = Key.key("minecraft:out_of_world"); - DynamicRegistry.Key MAGIC = DynamicRegistry.Key.of("minecraft:magic"); + Key MAGIC = Key.key("minecraft:magic"); - DynamicRegistry.Key SWEET_BERRY_BUSH = DynamicRegistry.Key.of("minecraft:sweet_berry_bush"); + Key SWEET_BERRY_BUSH = Key.key("minecraft:sweet_berry_bush"); - DynamicRegistry.Key FIREWORKS = DynamicRegistry.Key.of("minecraft:fireworks"); + Key FIREWORKS = Key.key("minecraft:fireworks"); - DynamicRegistry.Key EXPLOSION = DynamicRegistry.Key.of("minecraft:explosion"); + Key EXPLOSION = Key.key("minecraft:explosion"); - DynamicRegistry.Key BAD_RESPAWN_POINT = DynamicRegistry.Key.of("minecraft:bad_respawn_point"); + Key BAD_RESPAWN_POINT = Key.key("minecraft:bad_respawn_point"); - DynamicRegistry.Key STALAGMITE = DynamicRegistry.Key.of("minecraft:stalagmite"); + Key STALAGMITE = Key.key("minecraft:stalagmite"); - DynamicRegistry.Key THORNS = DynamicRegistry.Key.of("minecraft:thorns"); + Key THORNS = Key.key("minecraft:thorns"); - DynamicRegistry.Key INDIRECT_MAGIC = DynamicRegistry.Key.of("minecraft:indirect_magic"); + Key INDIRECT_MAGIC = Key.key("minecraft:indirect_magic"); - DynamicRegistry.Key CRAMMING = DynamicRegistry.Key.of("minecraft:cramming"); + Key CRAMMING = Key.key("minecraft:cramming"); - DynamicRegistry.Key CACTUS = DynamicRegistry.Key.of("minecraft:cactus"); + Key CACTUS = Key.key("minecraft:cactus"); - DynamicRegistry.Key GENERIC = DynamicRegistry.Key.of("minecraft:generic"); + Key GENERIC = Key.key("minecraft:generic"); } diff --git a/src/autogenerated/java/net/minestom/server/entity/metadata/animal/tameable/WolfVariants.java b/src/autogenerated/java/net/minestom/server/entity/metadata/animal/tameable/WolfVariants.java index 63ee18b225a..c86af97cd81 100644 --- a/src/autogenerated/java/net/minestom/server/entity/metadata/animal/tameable/WolfVariants.java +++ b/src/autogenerated/java/net/minestom/server/entity/metadata/animal/tameable/WolfVariants.java @@ -1,27 +1,27 @@ package net.minestom.server.entity.metadata.animal.tameable; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface WolfVariants { - DynamicRegistry.Key BLACK = DynamicRegistry.Key.of("minecraft:black"); + Key BLACK = Key.key("minecraft:black"); - DynamicRegistry.Key CHESTNUT = DynamicRegistry.Key.of("minecraft:chestnut"); + Key CHESTNUT = Key.key("minecraft:chestnut"); - DynamicRegistry.Key SNOWY = DynamicRegistry.Key.of("minecraft:snowy"); + Key SNOWY = Key.key("minecraft:snowy"); - DynamicRegistry.Key STRIPED = DynamicRegistry.Key.of("minecraft:striped"); + Key STRIPED = Key.key("minecraft:striped"); - DynamicRegistry.Key ASHEN = DynamicRegistry.Key.of("minecraft:ashen"); + Key ASHEN = Key.key("minecraft:ashen"); - DynamicRegistry.Key SPOTTED = DynamicRegistry.Key.of("minecraft:spotted"); + Key SPOTTED = Key.key("minecraft:spotted"); - DynamicRegistry.Key RUSTY = DynamicRegistry.Key.of("minecraft:rusty"); + Key RUSTY = Key.key("minecraft:rusty"); - DynamicRegistry.Key WOODS = DynamicRegistry.Key.of("minecraft:woods"); + Key WOODS = Key.key("minecraft:woods"); - DynamicRegistry.Key PALE = DynamicRegistry.Key.of("minecraft:pale"); + Key PALE = Key.key("minecraft:pale"); } diff --git a/src/autogenerated/java/net/minestom/server/entity/metadata/other/PaintingVariants.java b/src/autogenerated/java/net/minestom/server/entity/metadata/other/PaintingVariants.java index 80ceffc3da9..deb27b45e66 100644 --- a/src/autogenerated/java/net/minestom/server/entity/metadata/other/PaintingVariants.java +++ b/src/autogenerated/java/net/minestom/server/entity/metadata/other/PaintingVariants.java @@ -1,109 +1,109 @@ package net.minestom.server.entity.metadata.other; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface PaintingVariants { - DynamicRegistry.Key BOUQUET = DynamicRegistry.Key.of("minecraft:bouquet"); + Key BOUQUET = Key.key("minecraft:bouquet"); - DynamicRegistry.Key WITHER = DynamicRegistry.Key.of("minecraft:wither"); + Key WITHER = Key.key("minecraft:wither"); - DynamicRegistry.Key ALBAN = DynamicRegistry.Key.of("minecraft:alban"); + Key ALBAN = Key.key("minecraft:alban"); - DynamicRegistry.Key UNPACKED = DynamicRegistry.Key.of("minecraft:unpacked"); + Key UNPACKED = Key.key("minecraft:unpacked"); - DynamicRegistry.Key AZTEC = DynamicRegistry.Key.of("minecraft:aztec"); + Key AZTEC = Key.key("minecraft:aztec"); - DynamicRegistry.Key MATCH = DynamicRegistry.Key.of("minecraft:match"); + Key MATCH = Key.key("minecraft:match"); - DynamicRegistry.Key FINDING = DynamicRegistry.Key.of("minecraft:finding"); + Key FINDING = Key.key("minecraft:finding"); - DynamicRegistry.Key BAROQUE = DynamicRegistry.Key.of("minecraft:baroque"); + Key BAROQUE = Key.key("minecraft:baroque"); - DynamicRegistry.Key ENDBOSS = DynamicRegistry.Key.of("minecraft:endboss"); + Key ENDBOSS = Key.key("minecraft:endboss"); - DynamicRegistry.Key ORB = DynamicRegistry.Key.of("minecraft:orb"); + Key ORB = Key.key("minecraft:orb"); - DynamicRegistry.Key AZTEC2 = DynamicRegistry.Key.of("minecraft:aztec2"); + Key AZTEC2 = Key.key("minecraft:aztec2"); - DynamicRegistry.Key SUNFLOWERS = DynamicRegistry.Key.of("minecraft:sunflowers"); + Key SUNFLOWERS = Key.key("minecraft:sunflowers"); - DynamicRegistry.Key CHANGING = DynamicRegistry.Key.of("minecraft:changing"); + Key CHANGING = Key.key("minecraft:changing"); - DynamicRegistry.Key WASTELAND = DynamicRegistry.Key.of("minecraft:wasteland"); + Key WASTELAND = Key.key("minecraft:wasteland"); - DynamicRegistry.Key DONKEY_KONG = DynamicRegistry.Key.of("minecraft:donkey_kong"); + Key DONKEY_KONG = Key.key("minecraft:donkey_kong"); - DynamicRegistry.Key BUST = DynamicRegistry.Key.of("minecraft:bust"); + Key BUST = Key.key("minecraft:bust"); - DynamicRegistry.Key POOL = DynamicRegistry.Key.of("minecraft:pool"); + Key POOL = Key.key("minecraft:pool"); - DynamicRegistry.Key PIGSCENE = DynamicRegistry.Key.of("minecraft:pigscene"); + Key PIGSCENE = Key.key("minecraft:pigscene"); - DynamicRegistry.Key BURNING_SKULL = DynamicRegistry.Key.of("minecraft:burning_skull"); + Key BURNING_SKULL = Key.key("minecraft:burning_skull"); - DynamicRegistry.Key FIRE = DynamicRegistry.Key.of("minecraft:fire"); + Key FIRE = Key.key("minecraft:fire"); - DynamicRegistry.Key SEA = DynamicRegistry.Key.of("minecraft:sea"); + Key SEA = Key.key("minecraft:sea"); - DynamicRegistry.Key SUNSET = DynamicRegistry.Key.of("minecraft:sunset"); + Key SUNSET = Key.key("minecraft:sunset"); - DynamicRegistry.Key POND = DynamicRegistry.Key.of("minecraft:pond"); + Key POND = Key.key("minecraft:pond"); - DynamicRegistry.Key HUMBLE = DynamicRegistry.Key.of("minecraft:humble"); + Key HUMBLE = Key.key("minecraft:humble"); - DynamicRegistry.Key TIDES = DynamicRegistry.Key.of("minecraft:tides"); + Key TIDES = Key.key("minecraft:tides"); - DynamicRegistry.Key PRAIRIE_RIDE = DynamicRegistry.Key.of("minecraft:prairie_ride"); + Key PRAIRIE_RIDE = Key.key("minecraft:prairie_ride"); - DynamicRegistry.Key FERN = DynamicRegistry.Key.of("minecraft:fern"); + Key FERN = Key.key("minecraft:fern"); - DynamicRegistry.Key PASSAGE = DynamicRegistry.Key.of("minecraft:passage"); + Key PASSAGE = Key.key("minecraft:passage"); - DynamicRegistry.Key LOWMIST = DynamicRegistry.Key.of("minecraft:lowmist"); + Key LOWMIST = Key.key("minecraft:lowmist"); - DynamicRegistry.Key COURBET = DynamicRegistry.Key.of("minecraft:courbet"); + Key COURBET = Key.key("minecraft:courbet"); - DynamicRegistry.Key WANDERER = DynamicRegistry.Key.of("minecraft:wanderer"); + Key WANDERER = Key.key("minecraft:wanderer"); - DynamicRegistry.Key BACKYARD = DynamicRegistry.Key.of("minecraft:backyard"); + Key BACKYARD = Key.key("minecraft:backyard"); - DynamicRegistry.Key EARTH = DynamicRegistry.Key.of("minecraft:earth"); + Key EARTH = Key.key("minecraft:earth"); - DynamicRegistry.Key SKULL_AND_ROSES = DynamicRegistry.Key.of("minecraft:skull_and_roses"); + Key SKULL_AND_ROSES = Key.key("minecraft:skull_and_roses"); - DynamicRegistry.Key CAVEBIRD = DynamicRegistry.Key.of("minecraft:cavebird"); + Key CAVEBIRD = Key.key("minecraft:cavebird"); - DynamicRegistry.Key FIGHTERS = DynamicRegistry.Key.of("minecraft:fighters"); + Key FIGHTERS = Key.key("minecraft:fighters"); - DynamicRegistry.Key COTAN = DynamicRegistry.Key.of("minecraft:cotan"); + Key COTAN = Key.key("minecraft:cotan"); - DynamicRegistry.Key CREEBET = DynamicRegistry.Key.of("minecraft:creebet"); + Key CREEBET = Key.key("minecraft:creebet"); - DynamicRegistry.Key OWLEMONS = DynamicRegistry.Key.of("minecraft:owlemons"); + Key OWLEMONS = Key.key("minecraft:owlemons"); - DynamicRegistry.Key GRAHAM = DynamicRegistry.Key.of("minecraft:graham"); + Key GRAHAM = Key.key("minecraft:graham"); - DynamicRegistry.Key MEDITATIVE = DynamicRegistry.Key.of("minecraft:meditative"); + Key MEDITATIVE = Key.key("minecraft:meditative"); - DynamicRegistry.Key KEBAB = DynamicRegistry.Key.of("minecraft:kebab"); + Key KEBAB = Key.key("minecraft:kebab"); - DynamicRegistry.Key STAGE = DynamicRegistry.Key.of("minecraft:stage"); + Key STAGE = Key.key("minecraft:stage"); - DynamicRegistry.Key BOMB = DynamicRegistry.Key.of("minecraft:bomb"); + Key BOMB = Key.key("minecraft:bomb"); - DynamicRegistry.Key PLANT = DynamicRegistry.Key.of("minecraft:plant"); + Key PLANT = Key.key("minecraft:plant"); - DynamicRegistry.Key WATER = DynamicRegistry.Key.of("minecraft:water"); + Key WATER = Key.key("minecraft:water"); - DynamicRegistry.Key POINTER = DynamicRegistry.Key.of("minecraft:pointer"); + Key POINTER = Key.key("minecraft:pointer"); - DynamicRegistry.Key SKELETON = DynamicRegistry.Key.of("minecraft:skeleton"); + Key SKELETON = Key.key("minecraft:skeleton"); - DynamicRegistry.Key VOID = DynamicRegistry.Key.of("minecraft:void"); + Key VOID = Key.key("minecraft:void"); - DynamicRegistry.Key WIND = DynamicRegistry.Key.of("minecraft:wind"); + Key WIND = Key.key("minecraft:wind"); } diff --git a/src/autogenerated/java/net/minestom/server/feature/FeatureFlags.java b/src/autogenerated/java/net/minestom/server/feature/FeatureFlags.java deleted file mode 100644 index 983bd307419..00000000000 --- a/src/autogenerated/java/net/minestom/server/feature/FeatureFlags.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.minestom.server.feature; - -import net.minestom.server.utils.NamespaceID; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * AUTOGENERATED by FeatureFlagGenerator - */ -public enum FeatureFlags { - UPDATE_1_21(NamespaceID.from("minecraft:update_1_21")), - - BUNDLE(NamespaceID.from("minecraft:bundle")), - - VANILLA(NamespaceID.from("minecraft:vanilla")), - - TRADE_REBALANCE(NamespaceID.from("minecraft:trade_rebalance")); - - private static final FeatureFlags[] VALUES = FeatureFlags.values(); - - private final NamespaceID feature; - - FeatureFlags(@NotNull NamespaceID feature) { - this.feature = feature; - } - - public @NotNull NamespaceID feature() { - return this.feature; - } - - @Nullable - public static FeatureFlags getValue(int id) { - return VALUES[id]; - } -} diff --git a/src/autogenerated/java/net/minestom/server/instance/block/banner/BannerPatterns.java b/src/autogenerated/java/net/minestom/server/instance/block/banner/BannerPatterns.java index 2a4a509944c..dd5ff50c281 100644 --- a/src/autogenerated/java/net/minestom/server/instance/block/banner/BannerPatterns.java +++ b/src/autogenerated/java/net/minestom/server/instance/block/banner/BannerPatterns.java @@ -1,95 +1,95 @@ package net.minestom.server.instance.block.banner; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface BannerPatterns { - DynamicRegistry.Key BORDER = DynamicRegistry.Key.of("minecraft:border"); + Key BORDER = Key.key("minecraft:border"); - DynamicRegistry.Key SQUARE_BOTTOM_RIGHT = DynamicRegistry.Key.of("minecraft:square_bottom_right"); + Key SQUARE_BOTTOM_RIGHT = Key.key("minecraft:square_bottom_right"); - DynamicRegistry.Key STRIPE_RIGHT = DynamicRegistry.Key.of("minecraft:stripe_right"); + Key STRIPE_RIGHT = Key.key("minecraft:stripe_right"); - DynamicRegistry.Key FLOW = DynamicRegistry.Key.of("minecraft:flow"); + Key FLOW = Key.key("minecraft:flow"); - DynamicRegistry.Key RHOMBUS = DynamicRegistry.Key.of("minecraft:rhombus"); + Key RHOMBUS = Key.key("minecraft:rhombus"); - DynamicRegistry.Key TRIANGLES_TOP = DynamicRegistry.Key.of("minecraft:triangles_top"); + Key TRIANGLES_TOP = Key.key("minecraft:triangles_top"); - DynamicRegistry.Key GRADIENT = DynamicRegistry.Key.of("minecraft:gradient"); + Key GRADIENT = Key.key("minecraft:gradient"); - DynamicRegistry.Key GLOBE = DynamicRegistry.Key.of("minecraft:globe"); + Key GLOBE = Key.key("minecraft:globe"); - DynamicRegistry.Key MOJANG = DynamicRegistry.Key.of("minecraft:mojang"); + Key MOJANG = Key.key("minecraft:mojang"); - DynamicRegistry.Key STRIPE_BOTTOM = DynamicRegistry.Key.of("minecraft:stripe_bottom"); + Key STRIPE_BOTTOM = Key.key("minecraft:stripe_bottom"); - DynamicRegistry.Key STRIPE_MIDDLE = DynamicRegistry.Key.of("minecraft:stripe_middle"); + Key STRIPE_MIDDLE = Key.key("minecraft:stripe_middle"); - DynamicRegistry.Key FLOWER = DynamicRegistry.Key.of("minecraft:flower"); + Key FLOWER = Key.key("minecraft:flower"); - DynamicRegistry.Key DIAGONAL_UP_RIGHT = DynamicRegistry.Key.of("minecraft:diagonal_up_right"); + Key DIAGONAL_UP_RIGHT = Key.key("minecraft:diagonal_up_right"); - DynamicRegistry.Key CIRCLE = DynamicRegistry.Key.of("minecraft:circle"); + Key CIRCLE = Key.key("minecraft:circle"); - DynamicRegistry.Key HALF_HORIZONTAL = DynamicRegistry.Key.of("minecraft:half_horizontal"); + Key HALF_HORIZONTAL = Key.key("minecraft:half_horizontal"); - DynamicRegistry.Key BRICKS = DynamicRegistry.Key.of("minecraft:bricks"); + Key BRICKS = Key.key("minecraft:bricks"); - DynamicRegistry.Key TRIANGLE_BOTTOM = DynamicRegistry.Key.of("minecraft:triangle_bottom"); + Key TRIANGLE_BOTTOM = Key.key("minecraft:triangle_bottom"); - DynamicRegistry.Key CURLY_BORDER = DynamicRegistry.Key.of("minecraft:curly_border"); + Key CURLY_BORDER = Key.key("minecraft:curly_border"); - DynamicRegistry.Key BASE = DynamicRegistry.Key.of("minecraft:base"); + Key BASE = Key.key("minecraft:base"); - DynamicRegistry.Key PIGLIN = DynamicRegistry.Key.of("minecraft:piglin"); + Key PIGLIN = Key.key("minecraft:piglin"); - DynamicRegistry.Key STRIPE_CENTER = DynamicRegistry.Key.of("minecraft:stripe_center"); + Key STRIPE_CENTER = Key.key("minecraft:stripe_center"); - DynamicRegistry.Key SQUARE_BOTTOM_LEFT = DynamicRegistry.Key.of("minecraft:square_bottom_left"); + Key SQUARE_BOTTOM_LEFT = Key.key("minecraft:square_bottom_left"); - DynamicRegistry.Key SQUARE_TOP_RIGHT = DynamicRegistry.Key.of("minecraft:square_top_right"); + Key SQUARE_TOP_RIGHT = Key.key("minecraft:square_top_right"); - DynamicRegistry.Key STRIPE_DOWNRIGHT = DynamicRegistry.Key.of("minecraft:stripe_downright"); + Key STRIPE_DOWNRIGHT = Key.key("minecraft:stripe_downright"); - DynamicRegistry.Key GUSTER = DynamicRegistry.Key.of("minecraft:guster"); + Key GUSTER = Key.key("minecraft:guster"); - DynamicRegistry.Key GRADIENT_UP = DynamicRegistry.Key.of("minecraft:gradient_up"); + Key GRADIENT_UP = Key.key("minecraft:gradient_up"); - DynamicRegistry.Key DIAGONAL_RIGHT = DynamicRegistry.Key.of("minecraft:diagonal_right"); + Key DIAGONAL_RIGHT = Key.key("minecraft:diagonal_right"); - DynamicRegistry.Key HALF_VERTICAL_RIGHT = DynamicRegistry.Key.of("minecraft:half_vertical_right"); + Key HALF_VERTICAL_RIGHT = Key.key("minecraft:half_vertical_right"); - DynamicRegistry.Key SMALL_STRIPES = DynamicRegistry.Key.of("minecraft:small_stripes"); + Key SMALL_STRIPES = Key.key("minecraft:small_stripes"); - DynamicRegistry.Key CROSS = DynamicRegistry.Key.of("minecraft:cross"); + Key CROSS = Key.key("minecraft:cross"); - DynamicRegistry.Key DIAGONAL_LEFT = DynamicRegistry.Key.of("minecraft:diagonal_left"); + Key DIAGONAL_LEFT = Key.key("minecraft:diagonal_left"); - DynamicRegistry.Key SKULL = DynamicRegistry.Key.of("minecraft:skull"); + Key SKULL = Key.key("minecraft:skull"); - DynamicRegistry.Key STRIPE_DOWNLEFT = DynamicRegistry.Key.of("minecraft:stripe_downleft"); + Key STRIPE_DOWNLEFT = Key.key("minecraft:stripe_downleft"); - DynamicRegistry.Key DIAGONAL_UP_LEFT = DynamicRegistry.Key.of("minecraft:diagonal_up_left"); + Key DIAGONAL_UP_LEFT = Key.key("minecraft:diagonal_up_left"); - DynamicRegistry.Key HALF_VERTICAL = DynamicRegistry.Key.of("minecraft:half_vertical"); + Key HALF_VERTICAL = Key.key("minecraft:half_vertical"); - DynamicRegistry.Key TRIANGLE_TOP = DynamicRegistry.Key.of("minecraft:triangle_top"); + Key TRIANGLE_TOP = Key.key("minecraft:triangle_top"); - DynamicRegistry.Key HALF_HORIZONTAL_BOTTOM = DynamicRegistry.Key.of("minecraft:half_horizontal_bottom"); + Key HALF_HORIZONTAL_BOTTOM = Key.key("minecraft:half_horizontal_bottom"); - DynamicRegistry.Key SQUARE_TOP_LEFT = DynamicRegistry.Key.of("minecraft:square_top_left"); + Key SQUARE_TOP_LEFT = Key.key("minecraft:square_top_left"); - DynamicRegistry.Key STRIPE_TOP = DynamicRegistry.Key.of("minecraft:stripe_top"); + Key STRIPE_TOP = Key.key("minecraft:stripe_top"); - DynamicRegistry.Key CREEPER = DynamicRegistry.Key.of("minecraft:creeper"); + Key CREEPER = Key.key("minecraft:creeper"); - DynamicRegistry.Key STRIPE_LEFT = DynamicRegistry.Key.of("minecraft:stripe_left"); + Key STRIPE_LEFT = Key.key("minecraft:stripe_left"); - DynamicRegistry.Key TRIANGLES_BOTTOM = DynamicRegistry.Key.of("minecraft:triangles_bottom"); + Key TRIANGLES_BOTTOM = Key.key("minecraft:triangles_bottom"); - DynamicRegistry.Key STRAIGHT_CROSS = DynamicRegistry.Key.of("minecraft:straight_cross"); + Key STRAIGHT_CROSS = Key.key("minecraft:straight_cross"); } diff --git a/src/autogenerated/java/net/minestom/server/instance/block/jukebox/JukeboxSongs.java b/src/autogenerated/java/net/minestom/server/instance/block/jukebox/JukeboxSongs.java index 3b18fbfd0c7..d8af398a451 100644 --- a/src/autogenerated/java/net/minestom/server/instance/block/jukebox/JukeboxSongs.java +++ b/src/autogenerated/java/net/minestom/server/instance/block/jukebox/JukeboxSongs.java @@ -1,47 +1,47 @@ package net.minestom.server.instance.block.jukebox; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface JukeboxSongs { - DynamicRegistry.Key PRECIPICE = DynamicRegistry.Key.of("minecraft:precipice"); + Key PRECIPICE = Key.key("minecraft:precipice"); - DynamicRegistry.Key STAL = DynamicRegistry.Key.of("minecraft:stal"); + Key STAL = Key.key("minecraft:stal"); - DynamicRegistry.Key STRAD = DynamicRegistry.Key.of("minecraft:strad"); + Key STRAD = Key.key("minecraft:strad"); - DynamicRegistry.Key CREATOR_MUSIC_BOX = DynamicRegistry.Key.of("minecraft:creator_music_box"); + Key CREATOR_MUSIC_BOX = Key.key("minecraft:creator_music_box"); - DynamicRegistry.Key _13 = DynamicRegistry.Key.of("minecraft:13"); + Key _13 = Key.key("minecraft:13"); - DynamicRegistry.Key RELIC = DynamicRegistry.Key.of("minecraft:relic"); + Key RELIC = Key.key("minecraft:relic"); - DynamicRegistry.Key FAR = DynamicRegistry.Key.of("minecraft:far"); + Key FAR = Key.key("minecraft:far"); - DynamicRegistry.Key BLOCKS = DynamicRegistry.Key.of("minecraft:blocks"); + Key BLOCKS = Key.key("minecraft:blocks"); - DynamicRegistry.Key _5 = DynamicRegistry.Key.of("minecraft:5"); + Key _5 = Key.key("minecraft:5"); - DynamicRegistry.Key OTHERSIDE = DynamicRegistry.Key.of("minecraft:otherside"); + Key OTHERSIDE = Key.key("minecraft:otherside"); - DynamicRegistry.Key MELLOHI = DynamicRegistry.Key.of("minecraft:mellohi"); + Key MELLOHI = Key.key("minecraft:mellohi"); - DynamicRegistry.Key MALL = DynamicRegistry.Key.of("minecraft:mall"); + Key MALL = Key.key("minecraft:mall"); - DynamicRegistry.Key CHIRP = DynamicRegistry.Key.of("minecraft:chirp"); + Key CHIRP = Key.key("minecraft:chirp"); - DynamicRegistry.Key CREATOR = DynamicRegistry.Key.of("minecraft:creator"); + Key CREATOR = Key.key("minecraft:creator"); - DynamicRegistry.Key PIGSTEP = DynamicRegistry.Key.of("minecraft:pigstep"); + Key PIGSTEP = Key.key("minecraft:pigstep"); - DynamicRegistry.Key WARD = DynamicRegistry.Key.of("minecraft:ward"); + Key WARD = Key.key("minecraft:ward"); - DynamicRegistry.Key CAT = DynamicRegistry.Key.of("minecraft:cat"); + Key CAT = Key.key("minecraft:cat"); - DynamicRegistry.Key WAIT = DynamicRegistry.Key.of("minecraft:wait"); + Key WAIT = Key.key("minecraft:wait"); - DynamicRegistry.Key _11 = DynamicRegistry.Key.of("minecraft:11"); + Key _11 = Key.key("minecraft:11"); } diff --git a/src/autogenerated/java/net/minestom/server/item/armor/TrimMaterials.java b/src/autogenerated/java/net/minestom/server/item/armor/TrimMaterials.java index 015d2a50e41..eaec876cbb8 100644 --- a/src/autogenerated/java/net/minestom/server/item/armor/TrimMaterials.java +++ b/src/autogenerated/java/net/minestom/server/item/armor/TrimMaterials.java @@ -1,29 +1,29 @@ package net.minestom.server.item.armor; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface TrimMaterials { - DynamicRegistry.Key LAPIS = DynamicRegistry.Key.of("minecraft:lapis"); + Key LAPIS = Key.key("minecraft:lapis"); - DynamicRegistry.Key IRON = DynamicRegistry.Key.of("minecraft:iron"); + Key IRON = Key.key("minecraft:iron"); - DynamicRegistry.Key DIAMOND = DynamicRegistry.Key.of("minecraft:diamond"); + Key DIAMOND = Key.key("minecraft:diamond"); - DynamicRegistry.Key AMETHYST = DynamicRegistry.Key.of("minecraft:amethyst"); + Key AMETHYST = Key.key("minecraft:amethyst"); - DynamicRegistry.Key COPPER = DynamicRegistry.Key.of("minecraft:copper"); + Key COPPER = Key.key("minecraft:copper"); - DynamicRegistry.Key QUARTZ = DynamicRegistry.Key.of("minecraft:quartz"); + Key QUARTZ = Key.key("minecraft:quartz"); - DynamicRegistry.Key EMERALD = DynamicRegistry.Key.of("minecraft:emerald"); + Key EMERALD = Key.key("minecraft:emerald"); - DynamicRegistry.Key REDSTONE = DynamicRegistry.Key.of("minecraft:redstone"); + Key REDSTONE = Key.key("minecraft:redstone"); - DynamicRegistry.Key GOLD = DynamicRegistry.Key.of("minecraft:gold"); + Key GOLD = Key.key("minecraft:gold"); - DynamicRegistry.Key NETHERITE = DynamicRegistry.Key.of("minecraft:netherite"); + Key NETHERITE = Key.key("minecraft:netherite"); } diff --git a/src/autogenerated/java/net/minestom/server/item/armor/TrimPatterns.java b/src/autogenerated/java/net/minestom/server/item/armor/TrimPatterns.java index a11a09285bd..485b1f47692 100644 --- a/src/autogenerated/java/net/minestom/server/item/armor/TrimPatterns.java +++ b/src/autogenerated/java/net/minestom/server/item/armor/TrimPatterns.java @@ -1,45 +1,45 @@ package net.minestom.server.item.armor; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface TrimPatterns { - DynamicRegistry.Key TIDE = DynamicRegistry.Key.of("minecraft:tide"); + Key TIDE = Key.key("minecraft:tide"); - DynamicRegistry.Key RIB = DynamicRegistry.Key.of("minecraft:rib"); + Key RIB = Key.key("minecraft:rib"); - DynamicRegistry.Key BOLT = DynamicRegistry.Key.of("minecraft:bolt"); + Key BOLT = Key.key("minecraft:bolt"); - DynamicRegistry.Key HOST = DynamicRegistry.Key.of("minecraft:host"); + Key HOST = Key.key("minecraft:host"); - DynamicRegistry.Key SILENCE = DynamicRegistry.Key.of("minecraft:silence"); + Key SILENCE = Key.key("minecraft:silence"); - DynamicRegistry.Key WILD = DynamicRegistry.Key.of("minecraft:wild"); + Key WILD = Key.key("minecraft:wild"); - DynamicRegistry.Key WAYFINDER = DynamicRegistry.Key.of("minecraft:wayfinder"); + Key WAYFINDER = Key.key("minecraft:wayfinder"); - DynamicRegistry.Key FLOW = DynamicRegistry.Key.of("minecraft:flow"); + Key FLOW = Key.key("minecraft:flow"); - DynamicRegistry.Key DUNE = DynamicRegistry.Key.of("minecraft:dune"); + Key DUNE = Key.key("minecraft:dune"); - DynamicRegistry.Key RAISER = DynamicRegistry.Key.of("minecraft:raiser"); + Key RAISER = Key.key("minecraft:raiser"); - DynamicRegistry.Key SNOUT = DynamicRegistry.Key.of("minecraft:snout"); + Key SNOUT = Key.key("minecraft:snout"); - DynamicRegistry.Key VEX = DynamicRegistry.Key.of("minecraft:vex"); + Key VEX = Key.key("minecraft:vex"); - DynamicRegistry.Key SPIRE = DynamicRegistry.Key.of("minecraft:spire"); + Key SPIRE = Key.key("minecraft:spire"); - DynamicRegistry.Key SENTRY = DynamicRegistry.Key.of("minecraft:sentry"); + Key SENTRY = Key.key("minecraft:sentry"); - DynamicRegistry.Key EYE = DynamicRegistry.Key.of("minecraft:eye"); + Key EYE = Key.key("minecraft:eye"); - DynamicRegistry.Key WARD = DynamicRegistry.Key.of("minecraft:ward"); + Key WARD = Key.key("minecraft:ward"); - DynamicRegistry.Key COAST = DynamicRegistry.Key.of("minecraft:coast"); + Key COAST = Key.key("minecraft:coast"); - DynamicRegistry.Key SHAPER = DynamicRegistry.Key.of("minecraft:shaper"); + Key SHAPER = Key.key("minecraft:shaper"); } diff --git a/src/autogenerated/java/net/minestom/server/item/enchant/Enchantments.java b/src/autogenerated/java/net/minestom/server/item/enchant/Enchantments.java index 03f8dad26ae..13bfe962958 100644 --- a/src/autogenerated/java/net/minestom/server/item/enchant/Enchantments.java +++ b/src/autogenerated/java/net/minestom/server/item/enchant/Enchantments.java @@ -1,93 +1,93 @@ package net.minestom.server.item.enchant; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface Enchantments { - DynamicRegistry.Key DEPTH_STRIDER = DynamicRegistry.Key.of("minecraft:depth_strider"); + Key DEPTH_STRIDER = Key.key("minecraft:depth_strider"); - DynamicRegistry.Key VANISHING_CURSE = DynamicRegistry.Key.of("minecraft:vanishing_curse"); + Key VANISHING_CURSE = Key.key("minecraft:vanishing_curse"); - DynamicRegistry.Key EFFICIENCY = DynamicRegistry.Key.of("minecraft:efficiency"); + Key EFFICIENCY = Key.key("minecraft:efficiency"); - DynamicRegistry.Key IMPALING = DynamicRegistry.Key.of("minecraft:impaling"); + Key IMPALING = Key.key("minecraft:impaling"); - DynamicRegistry.Key WIND_BURST = DynamicRegistry.Key.of("minecraft:wind_burst"); + Key WIND_BURST = Key.key("minecraft:wind_burst"); - DynamicRegistry.Key BANE_OF_ARTHROPODS = DynamicRegistry.Key.of("minecraft:bane_of_arthropods"); + Key BANE_OF_ARTHROPODS = Key.key("minecraft:bane_of_arthropods"); - DynamicRegistry.Key BINDING_CURSE = DynamicRegistry.Key.of("minecraft:binding_curse"); + Key BINDING_CURSE = Key.key("minecraft:binding_curse"); - DynamicRegistry.Key PUNCH = DynamicRegistry.Key.of("minecraft:punch"); + Key PUNCH = Key.key("minecraft:punch"); - DynamicRegistry.Key FLAME = DynamicRegistry.Key.of("minecraft:flame"); + Key FLAME = Key.key("minecraft:flame"); - DynamicRegistry.Key RIPTIDE = DynamicRegistry.Key.of("minecraft:riptide"); + Key RIPTIDE = Key.key("minecraft:riptide"); - DynamicRegistry.Key BLAST_PROTECTION = DynamicRegistry.Key.of("minecraft:blast_protection"); + Key BLAST_PROTECTION = Key.key("minecraft:blast_protection"); - DynamicRegistry.Key FROST_WALKER = DynamicRegistry.Key.of("minecraft:frost_walker"); + Key FROST_WALKER = Key.key("minecraft:frost_walker"); - DynamicRegistry.Key PROTECTION = DynamicRegistry.Key.of("minecraft:protection"); + Key PROTECTION = Key.key("minecraft:protection"); - DynamicRegistry.Key FIRE_ASPECT = DynamicRegistry.Key.of("minecraft:fire_aspect"); + Key FIRE_ASPECT = Key.key("minecraft:fire_aspect"); - DynamicRegistry.Key LOYALTY = DynamicRegistry.Key.of("minecraft:loyalty"); + Key LOYALTY = Key.key("minecraft:loyalty"); - DynamicRegistry.Key SWEEPING_EDGE = DynamicRegistry.Key.of("minecraft:sweeping_edge"); + Key SWEEPING_EDGE = Key.key("minecraft:sweeping_edge"); - DynamicRegistry.Key FIRE_PROTECTION = DynamicRegistry.Key.of("minecraft:fire_protection"); + Key FIRE_PROTECTION = Key.key("minecraft:fire_protection"); - DynamicRegistry.Key QUICK_CHARGE = DynamicRegistry.Key.of("minecraft:quick_charge"); + Key QUICK_CHARGE = Key.key("minecraft:quick_charge"); - DynamicRegistry.Key RESPIRATION = DynamicRegistry.Key.of("minecraft:respiration"); + Key RESPIRATION = Key.key("minecraft:respiration"); - DynamicRegistry.Key LUCK_OF_THE_SEA = DynamicRegistry.Key.of("minecraft:luck_of_the_sea"); + Key LUCK_OF_THE_SEA = Key.key("minecraft:luck_of_the_sea"); - DynamicRegistry.Key SOUL_SPEED = DynamicRegistry.Key.of("minecraft:soul_speed"); + Key SOUL_SPEED = Key.key("minecraft:soul_speed"); - DynamicRegistry.Key DENSITY = DynamicRegistry.Key.of("minecraft:density"); + Key DENSITY = Key.key("minecraft:density"); - DynamicRegistry.Key POWER = DynamicRegistry.Key.of("minecraft:power"); + Key POWER = Key.key("minecraft:power"); - DynamicRegistry.Key SILK_TOUCH = DynamicRegistry.Key.of("minecraft:silk_touch"); + Key SILK_TOUCH = Key.key("minecraft:silk_touch"); - DynamicRegistry.Key CHANNELING = DynamicRegistry.Key.of("minecraft:channeling"); + Key CHANNELING = Key.key("minecraft:channeling"); - DynamicRegistry.Key FORTUNE = DynamicRegistry.Key.of("minecraft:fortune"); + Key FORTUNE = Key.key("minecraft:fortune"); - DynamicRegistry.Key LOOTING = DynamicRegistry.Key.of("minecraft:looting"); + Key LOOTING = Key.key("minecraft:looting"); - DynamicRegistry.Key BREACH = DynamicRegistry.Key.of("minecraft:breach"); + Key BREACH = Key.key("minecraft:breach"); - DynamicRegistry.Key PIERCING = DynamicRegistry.Key.of("minecraft:piercing"); + Key PIERCING = Key.key("minecraft:piercing"); - DynamicRegistry.Key MENDING = DynamicRegistry.Key.of("minecraft:mending"); + Key MENDING = Key.key("minecraft:mending"); - DynamicRegistry.Key FEATHER_FALLING = DynamicRegistry.Key.of("minecraft:feather_falling"); + Key FEATHER_FALLING = Key.key("minecraft:feather_falling"); - DynamicRegistry.Key SHARPNESS = DynamicRegistry.Key.of("minecraft:sharpness"); + Key SHARPNESS = Key.key("minecraft:sharpness"); - DynamicRegistry.Key KNOCKBACK = DynamicRegistry.Key.of("minecraft:knockback"); + Key KNOCKBACK = Key.key("minecraft:knockback"); - DynamicRegistry.Key SMITE = DynamicRegistry.Key.of("minecraft:smite"); + Key SMITE = Key.key("minecraft:smite"); - DynamicRegistry.Key INFINITY = DynamicRegistry.Key.of("minecraft:infinity"); + Key INFINITY = Key.key("minecraft:infinity"); - DynamicRegistry.Key PROJECTILE_PROTECTION = DynamicRegistry.Key.of("minecraft:projectile_protection"); + Key PROJECTILE_PROTECTION = Key.key("minecraft:projectile_protection"); - DynamicRegistry.Key THORNS = DynamicRegistry.Key.of("minecraft:thorns"); + Key THORNS = Key.key("minecraft:thorns"); - DynamicRegistry.Key AQUA_AFFINITY = DynamicRegistry.Key.of("minecraft:aqua_affinity"); + Key AQUA_AFFINITY = Key.key("minecraft:aqua_affinity"); - DynamicRegistry.Key LURE = DynamicRegistry.Key.of("minecraft:lure"); + Key LURE = Key.key("minecraft:lure"); - DynamicRegistry.Key MULTISHOT = DynamicRegistry.Key.of("minecraft:multishot"); + Key MULTISHOT = Key.key("minecraft:multishot"); - DynamicRegistry.Key SWIFT_SNEAK = DynamicRegistry.Key.of("minecraft:swift_sneak"); + Key SWIFT_SNEAK = Key.key("minecraft:swift_sneak"); - DynamicRegistry.Key UNBREAKING = DynamicRegistry.Key.of("minecraft:unbreaking"); + Key UNBREAKING = Key.key("minecraft:unbreaking"); } diff --git a/src/autogenerated/java/net/minestom/server/message/ChatTypes.java b/src/autogenerated/java/net/minestom/server/message/ChatTypes.java index c2b2ad41c06..baca48852bb 100644 --- a/src/autogenerated/java/net/minestom/server/message/ChatTypes.java +++ b/src/autogenerated/java/net/minestom/server/message/ChatTypes.java @@ -1,23 +1,23 @@ package net.minestom.server.message; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface ChatTypes { - DynamicRegistry.Key EMOTE_COMMAND = DynamicRegistry.Key.of("minecraft:emote_command"); + Key EMOTE_COMMAND = Key.key("minecraft:emote_command"); - DynamicRegistry.Key TEAM_MSG_COMMAND_INCOMING = DynamicRegistry.Key.of("minecraft:team_msg_command_incoming"); + Key TEAM_MSG_COMMAND_INCOMING = Key.key("minecraft:team_msg_command_incoming"); - DynamicRegistry.Key TEAM_MSG_COMMAND_OUTGOING = DynamicRegistry.Key.of("minecraft:team_msg_command_outgoing"); + Key TEAM_MSG_COMMAND_OUTGOING = Key.key("minecraft:team_msg_command_outgoing"); - DynamicRegistry.Key CHAT = DynamicRegistry.Key.of("minecraft:chat"); + Key CHAT = Key.key("minecraft:chat"); - DynamicRegistry.Key MSG_COMMAND_INCOMING = DynamicRegistry.Key.of("minecraft:msg_command_incoming"); + Key MSG_COMMAND_INCOMING = Key.key("minecraft:msg_command_incoming"); - DynamicRegistry.Key MSG_COMMAND_OUTGOING = DynamicRegistry.Key.of("minecraft:msg_command_outgoing"); + Key MSG_COMMAND_OUTGOING = Key.key("minecraft:msg_command_outgoing"); - DynamicRegistry.Key SAY_COMMAND = DynamicRegistry.Key.of("minecraft:say_command"); + Key SAY_COMMAND = Key.key("minecraft:say_command"); } diff --git a/src/autogenerated/java/net/minestom/server/recipe/RecipeType.java b/src/autogenerated/java/net/minestom/server/recipe/RecipeType.java index 16735c2d46c..ecbf5d79056 100644 --- a/src/autogenerated/java/net/minestom/server/recipe/RecipeType.java +++ b/src/autogenerated/java/net/minestom/server/recipe/RecipeType.java @@ -1,71 +1,71 @@ package net.minestom.server.recipe; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; /** * AUTOGENERATED by RecipeTypeGenerator */ public enum RecipeType implements StaticProtocolObject { - SHAPED(NamespaceID.from("minecraft:crafting_shaped")), + SHAPED(Key.key("minecraft:crafting_shaped")), - SHAPELESS(NamespaceID.from("minecraft:crafting_shapeless")), + SHAPELESS(Key.key("minecraft:crafting_shapeless")), - SPECIAL_ARMORDYE(NamespaceID.from("minecraft:crafting_special_armordye")), + SPECIAL_ARMORDYE(Key.key("minecraft:crafting_special_armordye")), - SPECIAL_BOOKCLONING(NamespaceID.from("minecraft:crafting_special_bookcloning")), + SPECIAL_BOOKCLONING(Key.key("minecraft:crafting_special_bookcloning")), - SPECIAL_MAPCLONING(NamespaceID.from("minecraft:crafting_special_mapcloning")), + SPECIAL_MAPCLONING(Key.key("minecraft:crafting_special_mapcloning")), - SPECIAL_MAPEXTENDING(NamespaceID.from("minecraft:crafting_special_mapextending")), + SPECIAL_MAPEXTENDING(Key.key("minecraft:crafting_special_mapextending")), - SPECIAL_FIREWORK_ROCKET(NamespaceID.from("minecraft:crafting_special_firework_rocket")), + SPECIAL_FIREWORK_ROCKET(Key.key("minecraft:crafting_special_firework_rocket")), - SPECIAL_FIREWORK_STAR(NamespaceID.from("minecraft:crafting_special_firework_star")), + SPECIAL_FIREWORK_STAR(Key.key("minecraft:crafting_special_firework_star")), - SPECIAL_FIREWORK_STAR_FADE(NamespaceID.from("minecraft:crafting_special_firework_star_fade")), + SPECIAL_FIREWORK_STAR_FADE(Key.key("minecraft:crafting_special_firework_star_fade")), - SPECIAL_TIPPEDARROW(NamespaceID.from("minecraft:crafting_special_tippedarrow")), + SPECIAL_TIPPEDARROW(Key.key("minecraft:crafting_special_tippedarrow")), - SPECIAL_BANNERDUPLICATE(NamespaceID.from("minecraft:crafting_special_bannerduplicate")), + SPECIAL_BANNERDUPLICATE(Key.key("minecraft:crafting_special_bannerduplicate")), - SPECIAL_SHIELDDECORATION(NamespaceID.from("minecraft:crafting_special_shielddecoration")), + SPECIAL_SHIELDDECORATION(Key.key("minecraft:crafting_special_shielddecoration")), - SPECIAL_SHULKERBOXCOLORING(NamespaceID.from("minecraft:crafting_special_shulkerboxcoloring")), + SPECIAL_SHULKERBOXCOLORING(Key.key("minecraft:crafting_special_shulkerboxcoloring")), - SPECIAL_SUSPICIOUSSTEW(NamespaceID.from("minecraft:crafting_special_suspiciousstew")), + SPECIAL_SUSPICIOUSSTEW(Key.key("minecraft:crafting_special_suspiciousstew")), - SPECIAL_REPAIRITEM(NamespaceID.from("minecraft:crafting_special_repairitem")), + SPECIAL_REPAIRITEM(Key.key("minecraft:crafting_special_repairitem")), - SMELTING(NamespaceID.from("minecraft:smelting")), + SMELTING(Key.key("minecraft:smelting")), - BLASTING(NamespaceID.from("minecraft:blasting")), + BLASTING(Key.key("minecraft:blasting")), - SMOKING(NamespaceID.from("minecraft:smoking")), + SMOKING(Key.key("minecraft:smoking")), - CAMPFIRE_COOKING(NamespaceID.from("minecraft:campfire_cooking")), + CAMPFIRE_COOKING(Key.key("minecraft:campfire_cooking")), - STONECUTTING(NamespaceID.from("minecraft:stonecutting")), + STONECUTTING(Key.key("minecraft:stonecutting")), - SMITHING_TRANSFORM(NamespaceID.from("minecraft:smithing_transform")), + SMITHING_TRANSFORM(Key.key("minecraft:smithing_transform")), - SMITHING_TRIM(NamespaceID.from("minecraft:smithing_trim")), + SMITHING_TRIM(Key.key("minecraft:smithing_trim")), - DECORATED_POT(NamespaceID.from("minecraft:crafting_decorated_pot")); + DECORATED_POT(Key.key("minecraft:crafting_decorated_pot")); public static final NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.Enum(RecipeType.class); - private final NamespaceID namespace; + private final Key namespace; - RecipeType(@NotNull NamespaceID namespace) { + RecipeType(@NotNull Key namespace) { this.namespace = namespace; } @NotNull @Override - public NamespaceID namespace() { + public Key namespace() { return this.namespace; } diff --git a/src/autogenerated/java/net/minestom/server/world/DimensionTypes.java b/src/autogenerated/java/net/minestom/server/world/DimensionTypes.java index 578a366186b..490d1617a31 100644 --- a/src/autogenerated/java/net/minestom/server/world/DimensionTypes.java +++ b/src/autogenerated/java/net/minestom/server/world/DimensionTypes.java @@ -1,17 +1,17 @@ package net.minestom.server.world; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface DimensionTypes { - DynamicRegistry.Key THE_END = DynamicRegistry.Key.of("minecraft:the_end"); + Key THE_END = Key.key("minecraft:the_end"); - DynamicRegistry.Key OVERWORLD_CAVES = DynamicRegistry.Key.of("minecraft:overworld_caves"); + Key OVERWORLD_CAVES = Key.key("minecraft:overworld_caves"); - DynamicRegistry.Key THE_NETHER = DynamicRegistry.Key.of("minecraft:the_nether"); + Key THE_NETHER = Key.key("minecraft:the_nether"); - DynamicRegistry.Key OVERWORLD = DynamicRegistry.Key.of("minecraft:overworld"); + Key OVERWORLD = Key.key("minecraft:overworld"); } diff --git a/src/autogenerated/java/net/minestom/server/world/biome/Biomes.java b/src/autogenerated/java/net/minestom/server/world/biome/Biomes.java index 5d6459608df..9c9cd0d65e6 100644 --- a/src/autogenerated/java/net/minestom/server/world/biome/Biomes.java +++ b/src/autogenerated/java/net/minestom/server/world/biome/Biomes.java @@ -1,137 +1,137 @@ package net.minestom.server.world.biome; -import net.minestom.server.registry.DynamicRegistry; +import net.kyori.adventure.key.Key; /** * Code autogenerated, do not edit! */ @SuppressWarnings("unused") interface Biomes { - DynamicRegistry.Key SNOWY_SLOPES = DynamicRegistry.Key.of("minecraft:snowy_slopes"); + Key SNOWY_SLOPES = Key.key("minecraft:snowy_slopes"); - DynamicRegistry.Key OLD_GROWTH_PINE_TAIGA = DynamicRegistry.Key.of("minecraft:old_growth_pine_taiga"); + Key OLD_GROWTH_PINE_TAIGA = Key.key("minecraft:old_growth_pine_taiga"); - DynamicRegistry.Key MUSHROOM_FIELDS = DynamicRegistry.Key.of("minecraft:mushroom_fields"); + Key MUSHROOM_FIELDS = Key.key("minecraft:mushroom_fields"); - DynamicRegistry.Key TAIGA = DynamicRegistry.Key.of("minecraft:taiga"); + Key TAIGA = Key.key("minecraft:taiga"); - DynamicRegistry.Key DEEP_OCEAN = DynamicRegistry.Key.of("minecraft:deep_ocean"); + Key DEEP_OCEAN = Key.key("minecraft:deep_ocean"); - DynamicRegistry.Key ERODED_BADLANDS = DynamicRegistry.Key.of("minecraft:eroded_badlands"); + Key ERODED_BADLANDS = Key.key("minecraft:eroded_badlands"); - DynamicRegistry.Key FROZEN_RIVER = DynamicRegistry.Key.of("minecraft:frozen_river"); + Key FROZEN_RIVER = Key.key("minecraft:frozen_river"); - DynamicRegistry.Key END_HIGHLANDS = DynamicRegistry.Key.of("minecraft:end_highlands"); + Key END_HIGHLANDS = Key.key("minecraft:end_highlands"); - DynamicRegistry.Key CHERRY_GROVE = DynamicRegistry.Key.of("minecraft:cherry_grove"); + Key CHERRY_GROVE = Key.key("minecraft:cherry_grove"); - DynamicRegistry.Key SUNFLOWER_PLAINS = DynamicRegistry.Key.of("minecraft:sunflower_plains"); + Key SUNFLOWER_PLAINS = Key.key("minecraft:sunflower_plains"); - DynamicRegistry.Key BIRCH_FOREST = DynamicRegistry.Key.of("minecraft:birch_forest"); + Key BIRCH_FOREST = Key.key("minecraft:birch_forest"); - DynamicRegistry.Key WINDSWEPT_HILLS = DynamicRegistry.Key.of("minecraft:windswept_hills"); + Key WINDSWEPT_HILLS = Key.key("minecraft:windswept_hills"); - DynamicRegistry.Key BAMBOO_JUNGLE = DynamicRegistry.Key.of("minecraft:bamboo_jungle"); + Key BAMBOO_JUNGLE = Key.key("minecraft:bamboo_jungle"); - DynamicRegistry.Key WOODED_BADLANDS = DynamicRegistry.Key.of("minecraft:wooded_badlands"); + Key WOODED_BADLANDS = Key.key("minecraft:wooded_badlands"); - DynamicRegistry.Key BADLANDS = DynamicRegistry.Key.of("minecraft:badlands"); + Key BADLANDS = Key.key("minecraft:badlands"); - DynamicRegistry.Key SAVANNA_PLATEAU = DynamicRegistry.Key.of("minecraft:savanna_plateau"); + Key SAVANNA_PLATEAU = Key.key("minecraft:savanna_plateau"); - DynamicRegistry.Key BEACH = DynamicRegistry.Key.of("minecraft:beach"); + Key BEACH = Key.key("minecraft:beach"); - DynamicRegistry.Key DARK_FOREST = DynamicRegistry.Key.of("minecraft:dark_forest"); + Key DARK_FOREST = Key.key("minecraft:dark_forest"); - DynamicRegistry.Key STONY_PEAKS = DynamicRegistry.Key.of("minecraft:stony_peaks"); + Key STONY_PEAKS = Key.key("minecraft:stony_peaks"); - DynamicRegistry.Key MANGROVE_SWAMP = DynamicRegistry.Key.of("minecraft:mangrove_swamp"); + Key MANGROVE_SWAMP = Key.key("minecraft:mangrove_swamp"); - DynamicRegistry.Key SPARSE_JUNGLE = DynamicRegistry.Key.of("minecraft:sparse_jungle"); + Key SPARSE_JUNGLE = Key.key("minecraft:sparse_jungle"); - DynamicRegistry.Key LUKEWARM_OCEAN = DynamicRegistry.Key.of("minecraft:lukewarm_ocean"); + Key LUKEWARM_OCEAN = Key.key("minecraft:lukewarm_ocean"); - DynamicRegistry.Key RIVER = DynamicRegistry.Key.of("minecraft:river"); + Key RIVER = Key.key("minecraft:river"); - DynamicRegistry.Key STONY_SHORE = DynamicRegistry.Key.of("minecraft:stony_shore"); + Key STONY_SHORE = Key.key("minecraft:stony_shore"); - DynamicRegistry.Key WARPED_FOREST = DynamicRegistry.Key.of("minecraft:warped_forest"); + Key WARPED_FOREST = Key.key("minecraft:warped_forest"); - DynamicRegistry.Key SNOWY_PLAINS = DynamicRegistry.Key.of("minecraft:snowy_plains"); + Key SNOWY_PLAINS = Key.key("minecraft:snowy_plains"); - DynamicRegistry.Key DRIPSTONE_CAVES = DynamicRegistry.Key.of("minecraft:dripstone_caves"); + Key DRIPSTONE_CAVES = Key.key("minecraft:dripstone_caves"); - DynamicRegistry.Key SNOWY_TAIGA = DynamicRegistry.Key.of("minecraft:snowy_taiga"); + Key SNOWY_TAIGA = Key.key("minecraft:snowy_taiga"); - DynamicRegistry.Key GROVE = DynamicRegistry.Key.of("minecraft:grove"); + Key GROVE = Key.key("minecraft:grove"); - DynamicRegistry.Key SWAMP = DynamicRegistry.Key.of("minecraft:swamp"); + Key SWAMP = Key.key("minecraft:swamp"); - DynamicRegistry.Key JAGGED_PEAKS = DynamicRegistry.Key.of("minecraft:jagged_peaks"); + Key JAGGED_PEAKS = Key.key("minecraft:jagged_peaks"); - DynamicRegistry.Key COLD_OCEAN = DynamicRegistry.Key.of("minecraft:cold_ocean"); + Key COLD_OCEAN = Key.key("minecraft:cold_ocean"); - DynamicRegistry.Key FOREST = DynamicRegistry.Key.of("minecraft:forest"); + Key FOREST = Key.key("minecraft:forest"); - DynamicRegistry.Key LUSH_CAVES = DynamicRegistry.Key.of("minecraft:lush_caves"); + Key LUSH_CAVES = Key.key("minecraft:lush_caves"); - DynamicRegistry.Key BASALT_DELTAS = DynamicRegistry.Key.of("minecraft:basalt_deltas"); + Key BASALT_DELTAS = Key.key("minecraft:basalt_deltas"); - DynamicRegistry.Key DEEP_COLD_OCEAN = DynamicRegistry.Key.of("minecraft:deep_cold_ocean"); + Key DEEP_COLD_OCEAN = Key.key("minecraft:deep_cold_ocean"); - DynamicRegistry.Key ICE_SPIKES = DynamicRegistry.Key.of("minecraft:ice_spikes"); + Key ICE_SPIKES = Key.key("minecraft:ice_spikes"); - DynamicRegistry.Key END_MIDLANDS = DynamicRegistry.Key.of("minecraft:end_midlands"); + Key END_MIDLANDS = Key.key("minecraft:end_midlands"); - DynamicRegistry.Key FROZEN_OCEAN = DynamicRegistry.Key.of("minecraft:frozen_ocean"); + Key FROZEN_OCEAN = Key.key("minecraft:frozen_ocean"); - DynamicRegistry.Key DESERT = DynamicRegistry.Key.of("minecraft:desert"); + Key DESERT = Key.key("minecraft:desert"); - DynamicRegistry.Key DEEP_FROZEN_OCEAN = DynamicRegistry.Key.of("minecraft:deep_frozen_ocean"); + Key DEEP_FROZEN_OCEAN = Key.key("minecraft:deep_frozen_ocean"); - DynamicRegistry.Key WINDSWEPT_FOREST = DynamicRegistry.Key.of("minecraft:windswept_forest"); + Key WINDSWEPT_FOREST = Key.key("minecraft:windswept_forest"); - DynamicRegistry.Key JUNGLE = DynamicRegistry.Key.of("minecraft:jungle"); + Key JUNGLE = Key.key("minecraft:jungle"); - DynamicRegistry.Key OCEAN = DynamicRegistry.Key.of("minecraft:ocean"); + Key OCEAN = Key.key("minecraft:ocean"); - DynamicRegistry.Key OLD_GROWTH_SPRUCE_TAIGA = DynamicRegistry.Key.of("minecraft:old_growth_spruce_taiga"); + Key OLD_GROWTH_SPRUCE_TAIGA = Key.key("minecraft:old_growth_spruce_taiga"); - DynamicRegistry.Key SNOWY_BEACH = DynamicRegistry.Key.of("minecraft:snowy_beach"); + Key SNOWY_BEACH = Key.key("minecraft:snowy_beach"); - DynamicRegistry.Key WINDSWEPT_SAVANNA = DynamicRegistry.Key.of("minecraft:windswept_savanna"); + Key WINDSWEPT_SAVANNA = Key.key("minecraft:windswept_savanna"); - DynamicRegistry.Key END_BARRENS = DynamicRegistry.Key.of("minecraft:end_barrens"); + Key END_BARRENS = Key.key("minecraft:end_barrens"); - DynamicRegistry.Key WARM_OCEAN = DynamicRegistry.Key.of("minecraft:warm_ocean"); + Key WARM_OCEAN = Key.key("minecraft:warm_ocean"); - DynamicRegistry.Key DEEP_LUKEWARM_OCEAN = DynamicRegistry.Key.of("minecraft:deep_lukewarm_ocean"); + Key DEEP_LUKEWARM_OCEAN = Key.key("minecraft:deep_lukewarm_ocean"); - DynamicRegistry.Key FLOWER_FOREST = DynamicRegistry.Key.of("minecraft:flower_forest"); + Key FLOWER_FOREST = Key.key("minecraft:flower_forest"); - DynamicRegistry.Key SOUL_SAND_VALLEY = DynamicRegistry.Key.of("minecraft:soul_sand_valley"); + Key SOUL_SAND_VALLEY = Key.key("minecraft:soul_sand_valley"); - DynamicRegistry.Key NETHER_WASTES = DynamicRegistry.Key.of("minecraft:nether_wastes"); + Key NETHER_WASTES = Key.key("minecraft:nether_wastes"); - DynamicRegistry.Key FROZEN_PEAKS = DynamicRegistry.Key.of("minecraft:frozen_peaks"); + Key FROZEN_PEAKS = Key.key("minecraft:frozen_peaks"); - DynamicRegistry.Key THE_END = DynamicRegistry.Key.of("minecraft:the_end"); + Key THE_END = Key.key("minecraft:the_end"); - DynamicRegistry.Key SMALL_END_ISLANDS = DynamicRegistry.Key.of("minecraft:small_end_islands"); + Key SMALL_END_ISLANDS = Key.key("minecraft:small_end_islands"); - DynamicRegistry.Key OLD_GROWTH_BIRCH_FOREST = DynamicRegistry.Key.of("minecraft:old_growth_birch_forest"); + Key OLD_GROWTH_BIRCH_FOREST = Key.key("minecraft:old_growth_birch_forest"); - DynamicRegistry.Key CRIMSON_FOREST = DynamicRegistry.Key.of("minecraft:crimson_forest"); + Key CRIMSON_FOREST = Key.key("minecraft:crimson_forest"); - DynamicRegistry.Key THE_VOID = DynamicRegistry.Key.of("minecraft:the_void"); + Key THE_VOID = Key.key("minecraft:the_void"); - DynamicRegistry.Key DEEP_DARK = DynamicRegistry.Key.of("minecraft:deep_dark"); + Key DEEP_DARK = Key.key("minecraft:deep_dark"); - DynamicRegistry.Key MEADOW = DynamicRegistry.Key.of("minecraft:meadow"); + Key MEADOW = Key.key("minecraft:meadow"); - DynamicRegistry.Key WINDSWEPT_GRAVELLY_HILLS = DynamicRegistry.Key.of("minecraft:windswept_gravelly_hills"); + Key WINDSWEPT_GRAVELLY_HILLS = Key.key("minecraft:windswept_gravelly_hills"); - DynamicRegistry.Key SAVANNA = DynamicRegistry.Key.of("minecraft:savanna"); + Key SAVANNA = Key.key("minecraft:savanna"); - DynamicRegistry.Key PLAINS = DynamicRegistry.Key.of("minecraft:plains"); + Key PLAINS = Key.key("minecraft:plains"); } diff --git a/src/main/java/net/minestom/server/FeatureFlagImpl.java b/src/main/java/net/minestom/server/FeatureFlagImpl.java index 94fa2ac6d19..e8baec4f052 100644 --- a/src/main/java/net/minestom/server/FeatureFlagImpl.java +++ b/src/main/java/net/minestom/server/FeatureFlagImpl.java @@ -1,7 +1,7 @@ package net.minestom.server; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; record FeatureFlagImpl(@NotNull Registry.FeatureFlagEntry registry) implements FeatureFlag { @@ -22,7 +22,7 @@ static FeatureFlag getId(int id) { } @Override - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return registry.namespace(); } diff --git a/src/main/java/net/minestom/server/adventure/AdventurePacketConvertor.java b/src/main/java/net/minestom/server/adventure/AdventurePacketConvertor.java index 4acc71e5ade..e173b7c7940 100644 --- a/src/main/java/net/minestom/server/adventure/AdventurePacketConvertor.java +++ b/src/main/java/net/minestom/server/adventure/AdventurePacketConvertor.java @@ -14,7 +14,6 @@ import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.play.*; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.TickUtils; import org.jetbrains.annotations.NotNull; @@ -113,7 +112,7 @@ public static int getNamedTextColorValue(@NotNull NamedTextColor color) { * @return the sound packet */ public static @NotNull ServerPacket createSoundPacket(@NotNull Sound sound, double x, double y, double z) { - final NamespaceID soundName = NamespaceID.from(sound.name().asString()); + final Key soundName = sound.name(); SoundEvent minestomSound = SoundEvent.fromNamespaceId(soundName); if (minestomSound == null) minestomSound = SoundEvent.of(soundName, null); @@ -135,7 +134,7 @@ public static int getNamedTextColorValue(@NotNull NamedTextColor color) { if (!(emitter instanceof Entity entity)) throw new IllegalArgumentException("you can only call this method with entities"); - final NamespaceID soundName = NamespaceID.from(sound.name().asString()); + final Key soundName = sound.name(); SoundEvent minestomSound = SoundEvent.fromNamespaceId(soundName); if (minestomSound == null) minestomSound = SoundEvent.of(soundName, null); diff --git a/src/main/java/net/minestom/server/command/builder/arguments/Argument.java b/src/main/java/net/minestom/server/command/builder/arguments/Argument.java index f6d705585aa..3f904848434 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/Argument.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/Argument.java @@ -1,5 +1,6 @@ package net.minestom.server.command.builder.arguments; +import net.kyori.adventure.key.Key; import net.minestom.server.command.CommandSender; import net.minestom.server.command.builder.ArgumentCallback; import net.minestom.server.command.builder.Command; @@ -9,7 +10,6 @@ import net.minestom.server.command.builder.suggestion.SuggestionCallback; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -33,10 +33,10 @@ public abstract class Argument { public static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.COMMAND_ARGUMENTS, Argument::createImpl); private static ArgumentImpl createImpl(String namespace, Registry.Properties properties) { - return new ArgumentImpl(NamespaceID.from(namespace), properties.getInt("id")); + return new ArgumentImpl(Key.key(namespace), properties.getInt("id")); } - record ArgumentImpl(NamespaceID namespace, int id) implements StaticProtocolObject { + record ArgumentImpl(Key namespace, int id) implements StaticProtocolObject { @Override public String toString() { return name(); diff --git a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/ArgumentItemStack.java b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/ArgumentItemStack.java index b1ef8fa48ba..74cedfdc365 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/ArgumentItemStack.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/ArgumentItemStack.java @@ -1,5 +1,6 @@ package net.minestom.server.command.builder.arguments.minecraft; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.nbt.TagStringIOExt; @@ -13,7 +14,6 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.item.component.CustomData; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; @@ -68,7 +68,7 @@ public static ItemStack staticParse(@NotNull String input) throws ArgumentSyntax if (reader.peek() == '[') { reader.consume('['); do { - final NamespaceID componentId = reader.readNamespaceId(); + final Key componentId = reader.readNamespaceId(); final DataComponent component = ItemComponent.fromNamespaceId(componentId); if (component == null) throw new ArgumentSyntaxException("Unknown item component", input, INVALID_COMPONENT); @@ -138,13 +138,13 @@ public void consume(char c) { index++; } - public @NotNull NamespaceID readNamespaceId() { + public @NotNull Key readNamespaceId() { char c; int start = index; while (hasMore() && (c = peek()) != '{' && c != '[' && c != '=') { index++; } - return NamespaceID.from(input.substring(start, index)); + return Key.key(input.substring(start, index)); } public @NotNull BinaryTag readTag() { diff --git a/src/main/java/net/minestom/server/component/DataComponent.java b/src/main/java/net/minestom/server/component/DataComponent.java index a3a05ca65d1..f6633e1b83e 100644 --- a/src/main/java/net/minestom/server/component/DataComponent.java +++ b/src/main/java/net/minestom/server/component/DataComponent.java @@ -1,10 +1,10 @@ package net.minestom.server.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.minestom.server.item.enchant.EffectComponent; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -48,7 +48,7 @@ interface Holder { @ApiStatus.Internal static DataComponent createHeadless( - int id, @NotNull NamespaceID namespace, + int id, @NotNull Key namespace, @Nullable NetworkBuffer.Type network, @Nullable BinaryTagSerializer nbt ) { diff --git a/src/main/java/net/minestom/server/component/DataComponentImpl.java b/src/main/java/net/minestom/server/component/DataComponentImpl.java index 3b333249872..fa17ccba332 100644 --- a/src/main/java/net/minestom/server/component/DataComponentImpl.java +++ b/src/main/java/net/minestom/server/component/DataComponentImpl.java @@ -1,8 +1,8 @@ package net.minestom.server.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; @@ -10,7 +10,7 @@ record DataComponentImpl( int id, - @NotNull NamespaceID namespace, + @NotNull Key namespace, @Nullable NetworkBuffer.Type network, @Nullable BinaryTagSerializer nbt ) implements DataComponent { diff --git a/src/main/java/net/minestom/server/entity/EntityType.java b/src/main/java/net/minestom/server/entity/EntityType.java index fef2e66dba1..996f03cdd2a 100644 --- a/src/main/java/net/minestom/server/entity/EntityType.java +++ b/src/main/java/net/minestom/server/entity/EntityType.java @@ -1,8 +1,8 @@ package net.minestom.server.entity; -import net.minestom.server.registry.StaticProtocolObject; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; +import net.minestom.server.registry.StaticProtocolObject; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,7 +19,7 @@ public sealed interface EntityType extends StaticProtocolObject, EntityTypes per @NotNull Registry.EntityEntry registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } @@ -44,7 +44,7 @@ static EntityType fromNamespaceId(@NotNull String namespaceID) { return EntityTypeImpl.getSafe(namespaceID); } - static EntityType fromNamespaceId(@NotNull NamespaceID namespaceID) { + static EntityType fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index d416a32234a..3088ad59f23 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -1,5 +1,6 @@ package net.minestom.server.entity; +import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound.Source; import net.minestom.server.collision.BoundingBox; import net.minestom.server.coordinate.Point; @@ -9,7 +10,6 @@ import net.minestom.server.entity.attribute.AttributeModifier; import net.minestom.server.entity.attribute.AttributeOperation; import net.minestom.server.entity.damage.Damage; -import net.minestom.server.entity.damage.DamageType; import net.minestom.server.entity.metadata.EntityMeta; import net.minestom.server.entity.metadata.LivingEntityMeta; import net.minestom.server.event.EventDispatcher; @@ -26,13 +26,15 @@ import net.minestom.server.item.component.AttributeList; import net.minestom.server.network.ConnectionState; import net.minestom.server.network.packet.server.LazyPacket; -import net.minestom.server.network.packet.server.play.*; +import net.minestom.server.network.packet.server.play.CollectItemPacket; +import net.minestom.server.network.packet.server.play.DamageEventPacket; +import net.minestom.server.network.packet.server.play.EntityAnimationPacket; +import net.minestom.server.network.packet.server.play.EntityAttributesPacket; +import net.minestom.server.network.packet.server.play.SoundEffectPacket; import net.minestom.server.network.player.PlayerConnection; -import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.scoreboard.Team; import net.minestom.server.sound.SoundEvent; import net.minestom.server.thread.Acquirable; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.block.BlockIterator; import net.minestom.server.utils.time.Cooldown; import net.minestom.server.utils.time.TimeUnit; @@ -42,18 +44,25 @@ import org.jetbrains.annotations.UnmodifiableView; import java.time.Duration; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class LivingEntity extends Entity implements EquipmentHandler { - private static final AttributeModifier SPRINTING_SPEED_MODIFIER = new AttributeModifier(NamespaceID.from("minecraft:sprinting"), 0.3, AttributeOperation.MULTIPLY_TOTAL); + private static final AttributeModifier SPRINTING_SPEED_MODIFIER = new AttributeModifier(Key.key("minecraft:sprinting"), 0.3, AttributeOperation.MULTIPLY_TOTAL); /** * IDs of modifiers that are protected from removal by methods like {@link AttributeInstance#clearModifiers()}. */ @ApiStatus.Internal - public static final Set PROTECTED_MODIFIERS = Set.of(SPRINTING_SPEED_MODIFIER.id()); + public static final Set PROTECTED_MODIFIERS = Set.of(SPRINTING_SPEED_MODIFIER.id()); // ItemStack pickup protected boolean canPickupItem; @@ -313,7 +322,7 @@ public void setFireTicks(int ticks) { remainingFireTicks = fireTicks; } - public boolean damage(@NotNull DynamicRegistry.Key type, float amount) { + public boolean damage(@NotNull Key type, float amount) { return damage(new Damage(type, null, null, null, amount)); } @@ -383,7 +392,7 @@ public boolean damage(@NotNull Damage damage) { * @param type the type of damage * @return true if this entity is immune to the given type of damage */ - public boolean isImmune(@NotNull DynamicRegistry.Key type) { + public boolean isImmune(@NotNull Key type) { return false; } diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index 7dd983e6a50..d77960e97d0 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -1,5 +1,6 @@ package net.minestom.server.entity; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.text.Component; import net.minestom.server.coordinate.Point; @@ -145,7 +146,7 @@ public static Entry CatVariant(@NotNull CatMeta.Variant value) return new MetadataImpl.EntryImpl<>(TYPE_CAT_VARIANT, value, CatMeta.Variant.NETWORK_TYPE); } - public static Entry> WolfVariant(@NotNull DynamicRegistry.Key value) { + public static Entry WolfVariant(@NotNull Key value) { return new MetadataImpl.EntryImpl<>(TYPE_WOLF_VARIANT, value, WolfMeta.Variant.NETWORK_TYPE); } @@ -153,7 +154,7 @@ public static Entry FrogVariant(@NotNull FrogMeta.Variant valu return new MetadataImpl.EntryImpl<>(TYPE_FROG_VARIANT, value, FrogMeta.Variant.NETWORK_TYPE); } - public static Entry> PaintingVariant(@NotNull DynamicRegistry.Key value) { + public static Entry PaintingVariant(@NotNull Key value) { return new MetadataImpl.EntryImpl<>(TYPE_PAINTING_VARIANT, value, PaintingMeta.Variant.NETWORK_TYPE); } diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index d834b46270d..8b9465bafc7 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -294,7 +294,7 @@ public CompletableFuture UNSAFE_init() { this.pendingInstance = null; this.removed = false; - this.dimensionTypeId = DIMENSION_TYPE_REGISTRY.getId(spawnInstance.getDimensionType().namespace()); + this.dimensionTypeId = DIMENSION_TYPE_REGISTRY.getId(spawnInstance.getDimensionType()); final JoinGamePacket joinGamePacket = new JoinGamePacket( getEntityId(), this.hardcore, List.of(), 0, @@ -1039,7 +1039,7 @@ public void openBook(@NotNull Book book) { } @Override - public boolean isImmune(@NotNull DynamicRegistry.Key type) { + public boolean isImmune(@NotNull Key type) { if (!getGameMode().canTakeDamage()) { return !DamageType.OUT_OF_WORLD.equals(type); } @@ -1255,7 +1255,7 @@ public void setDeathLocation(@NotNull Pos position) { setDeathLocation(getInstance().getDimensionName(), position); } - public void setDeathLocation(@NotNull String dimension, @NotNull Pos position) { + public void setDeathLocation(@NotNull Key dimension, @NotNull Pos position) { this.deathLocation = new WorldPos(dimension, position); } @@ -1673,7 +1673,7 @@ public boolean setGameMode(@NotNull GameMode gameMode) { * * @param dimensionType the new player dimension */ - protected void sendDimension(@NotNull DynamicRegistry.Key dimensionType, @NotNull String dimensionName) { + protected void sendDimension(@NotNull Key dimensionType, @NotNull Key dimensionName) { Check.argCondition(instance.getDimensionName().equals(dimensionName), "The dimension needs to be different than the current one!"); this.dimensionTypeId = DIMENSION_TYPE_REGISTRY.getId(dimensionType); diff --git a/src/main/java/net/minestom/server/entity/attribute/Attribute.java b/src/main/java/net/minestom/server/entity/attribute/Attribute.java index de52d5156ba..477cee82bf5 100644 --- a/src/main/java/net/minestom/server/entity/attribute/Attribute.java +++ b/src/main/java/net/minestom/server/entity/attribute/Attribute.java @@ -1,9 +1,9 @@ package net.minestom.server.entity.attribute; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -19,7 +19,7 @@ public sealed interface Attribute extends StaticProtocolObject, Attributes permi @NotNull Registry.AttributeEntry registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } @@ -52,7 +52,7 @@ default boolean isSynced() { return AttributeImpl.getSafe(namespaceID); } - static @Nullable Attribute fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable Attribute fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/entity/attribute/AttributeInstance.java b/src/main/java/net/minestom/server/entity/attribute/AttributeInstance.java index 02db0d756e2..464b8ef1232 100644 --- a/src/main/java/net/minestom/server/entity/attribute/AttributeInstance.java +++ b/src/main/java/net/minestom/server/entity/attribute/AttributeInstance.java @@ -1,13 +1,16 @@ package net.minestom.server.entity.attribute; +import net.kyori.adventure.key.Key; import net.minestom.server.entity.LivingEntity; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; @@ -33,7 +36,7 @@ public AttributeInstance read(@NotNull NetworkBuffer buffer) { }; private final Attribute attribute; - private final Map modifiers; + private final Map modifiers; private final Collection unmodifiableModifiers; private final AtomicLong baseValueBits; @@ -136,7 +139,7 @@ public void clearModifiers() { * @param id The namespace id of the modifier to remove * @return the modifier that was removed, or null if none */ - public AttributeModifier removeModifier(@NotNull NamespaceID id) { + public AttributeModifier removeModifier(@NotNull Key id) { final AttributeModifier removed = modifiers.remove(id); if (removed != null) { refreshCachedValue(getBaseValue()); diff --git a/src/main/java/net/minestom/server/entity/attribute/AttributeModifier.java b/src/main/java/net/minestom/server/entity/attribute/AttributeModifier.java index dd2cfba9e12..2a98fe5b66f 100644 --- a/src/main/java/net/minestom/server/entity/attribute/AttributeModifier.java +++ b/src/main/java/net/minestom/server/entity/attribute/AttributeModifier.java @@ -1,15 +1,15 @@ package net.minestom.server.entity.attribute; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; /** * Represent an attribute modifier. */ -public record AttributeModifier(@NotNull NamespaceID id, double amount, @NotNull AttributeOperation operation) { +public record AttributeModifier(@NotNull Key id, double amount, @NotNull AttributeOperation operation) { public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type<>() { @Override public void write(@NotNull NetworkBuffer buffer, AttributeModifier value) { @@ -20,12 +20,12 @@ public void write(@NotNull NetworkBuffer buffer, AttributeModifier value) { @Override public AttributeModifier read(@NotNull NetworkBuffer buffer) { - return new AttributeModifier(NamespaceID.from(buffer.read(NetworkBuffer.STRING)), + return new AttributeModifier(Key.key(buffer.read(NetworkBuffer.STRING)), buffer.read(NetworkBuffer.DOUBLE), buffer.read(AttributeOperation.NETWORK_TYPE)); } }; public static final BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.COMPOUND.map( - tag -> new AttributeModifier(NamespaceID.from(tag.getString("id")), tag.getDouble("amount"), + tag -> new AttributeModifier(Key.key(tag.getString("id")), tag.getDouble("amount"), AttributeOperation.NBT_TYPE.read(tag.get("operation"))), value -> CompoundBinaryTag.builder() .putString("id", value.id.asString()) @@ -42,7 +42,7 @@ public AttributeModifier read(@NotNull NetworkBuffer buffer) { * @param operation the operation to apply this modifier with */ public AttributeModifier(@NotNull String id, double amount, @NotNull AttributeOperation operation) { - this(NamespaceID.from(id), amount, operation); + this(Key.key(id), amount, operation); } } diff --git a/src/main/java/net/minestom/server/entity/damage/Damage.java b/src/main/java/net/minestom/server/entity/damage/Damage.java index 8bdeac0f0fa..8439f6da8e2 100644 --- a/src/main/java/net/minestom/server/entity/damage/Damage.java +++ b/src/main/java/net/minestom/server/entity/damage/Damage.java @@ -1,5 +1,6 @@ package net.minestom.server.entity.damage; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Point; @@ -23,7 +24,7 @@ public class Damage implements Taggable { private static final DynamicRegistry DAMAGE_TYPE_REGISTRY = MinecraftServer.getDamageTypeRegistry(); - private final DynamicRegistry.Key typeKey; + private final Key typeKey; private final DamageType type; private final Entity source; private final Entity attacker; @@ -41,7 +42,7 @@ public class Damage implements Taggable { * @param amount amount of damage * @param sourcePosition The position of the source of damage */ - public Damage(@NotNull DynamicRegistry.Key type, @Nullable Entity source, @Nullable Entity attacker, @Nullable Point sourcePosition, float amount) { + public Damage(@NotNull Key type, @Nullable Entity source, @Nullable Entity attacker, @Nullable Point sourcePosition, float amount) { this.typeKey = type; this.type = DAMAGE_TYPE_REGISTRY.get(type); Check.argCondition(this.type == null, "Damage type is not registered: {0}", type); @@ -58,7 +59,7 @@ public Damage(@NotNull DynamicRegistry.Key type, @Nullable Entity so * * @return the damage type */ - public @NotNull DynamicRegistry.Key getType() { + public @NotNull Key getType() { return typeKey; } @@ -144,7 +145,7 @@ public Damage(@NotNull DynamicRegistry.Key type, @Nullable Entity so return new EntityDamage(entity, amount); } - public static @NotNull PositionalDamage fromPosition(@NotNull DynamicRegistry.Key type, @NotNull Point sourcePosition, float amount) { + public static @NotNull PositionalDamage fromPosition(@NotNull Key type, @NotNull Point sourcePosition, float amount) { return new PositionalDamage(type, sourcePosition, amount); } diff --git a/src/main/java/net/minestom/server/entity/damage/DamageType.java b/src/main/java/net/minestom/server/entity/damage/DamageType.java index 206e41c709b..5f274c0562c 100644 --- a/src/main/java/net/minestom/server/entity/damage/DamageType.java +++ b/src/main/java/net/minestom/server/entity/damage/DamageType.java @@ -1,5 +1,6 @@ package net.minestom.server.entity.damage; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; @@ -11,7 +12,7 @@ public sealed interface DamageType extends ProtocolObject, DamageTypes permits DamageTypeImpl { - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::damageType); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::damageType); static @NotNull DamageType create( float exhaustion, diff --git a/src/main/java/net/minestom/server/entity/damage/PositionalDamage.java b/src/main/java/net/minestom/server/entity/damage/PositionalDamage.java index 8e11f6c4869..8b16f07f616 100644 --- a/src/main/java/net/minestom/server/entity/damage/PositionalDamage.java +++ b/src/main/java/net/minestom/server/entity/damage/PositionalDamage.java @@ -1,7 +1,7 @@ package net.minestom.server.entity.damage; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; -import net.minestom.server.registry.DynamicRegistry; import org.jetbrains.annotations.NotNull; /** @@ -9,7 +9,7 @@ */ public class PositionalDamage extends Damage { - public PositionalDamage(@NotNull DynamicRegistry.Key type, @NotNull Point sourcePosition, float amount) { + public PositionalDamage(@NotNull Key type, @NotNull Point sourcePosition, float amount) { super(type, null, null, sourcePosition, amount); } diff --git a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java index 5c6a6ed0d43..3c3e5af8661 100644 --- a/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/animal/tameable/WolfMeta.java @@ -1,5 +1,6 @@ package net.minestom.server.entity.metadata.animal.tameable; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.nbt.StringBinaryTag; @@ -11,7 +12,6 @@ import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; @@ -54,22 +54,22 @@ public void setAngerTime(int value) { super.metadata.setIndex(OFFSET + 2, Metadata.VarInt(value)); } - public @NotNull DynamicRegistry.Key getVariant() { + public @NotNull Key getVariant() { return super.metadata.getIndex(OFFSET + 3, Variant.PALE); } - public void setVariant(@NotNull DynamicRegistry.Key value) { + public void setVariant(@NotNull Key value) { super.metadata.setIndex(OFFSET + 3, Metadata.WolfVariant(value)); } public sealed interface Variant extends ProtocolObject, WolfVariants permits VariantImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::wolfVariant); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::wolfVariant); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::wolfVariant); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::wolfVariant); static @NotNull Variant create( - @NotNull NamespaceID wildTexture, - @NotNull NamespaceID tameTexture, - @NotNull NamespaceID angryTexture, + @NotNull Key wildTexture, + @NotNull Key tameTexture, + @NotNull Key angryTexture, @NotNull String biome ) { return new VariantImpl(wildTexture, tameTexture, angryTexture, List.of(biome), null); @@ -92,11 +92,11 @@ public sealed interface Variant extends ProtocolObject, WolfVariants permits Var ); } - @NotNull NamespaceID wildTexture(); + @NotNull Key wildTexture(); - @NotNull NamespaceID tameTexture(); + @NotNull Key tameTexture(); - @NotNull NamespaceID angryTexture(); + @NotNull Key angryTexture(); @NotNull List biomes(); @@ -104,25 +104,25 @@ public sealed interface Variant extends ProtocolObject, WolfVariants permits Var @Nullable Registry.WolfVariantEntry registry(); final class Builder { - private NamespaceID wildTexture; - private NamespaceID tameTexture; - private NamespaceID angryTexture; + private Key wildTexture; + private Key tameTexture; + private Key angryTexture; private List biomes; private Builder() { } - public @NotNull Builder wildTexture(@NotNull NamespaceID wildTexture) { + public @NotNull Builder wildTexture(@NotNull Key wildTexture) { this.wildTexture = wildTexture; return this; } - public @NotNull Builder tameTexture(@NotNull NamespaceID tameTexture) { + public @NotNull Builder tameTexture(@NotNull Key tameTexture) { this.tameTexture = tameTexture; return this; } - public @NotNull Builder angryTexture(@NotNull NamespaceID angryTexture) { + public @NotNull Builder angryTexture(@NotNull Key angryTexture) { this.angryTexture = angryTexture; return this; } @@ -144,9 +144,9 @@ private Builder() { } record VariantImpl( - @NotNull NamespaceID wildTexture, - @NotNull NamespaceID tameTexture, - @NotNull NamespaceID angryTexture, + @NotNull Key wildTexture, + @NotNull Key tameTexture, + @NotNull Key angryTexture, @NotNull List biomes, @Nullable Registry.WolfVariantEntry registry ) implements Variant { diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java index 8922bd5103a..497abd368b5 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java @@ -1,5 +1,6 @@ package net.minestom.server.entity.metadata.other; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; @@ -11,7 +12,6 @@ import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; @@ -29,11 +29,11 @@ public PaintingMeta(@NotNull Entity entity, @NotNull MetadataHolder metadata) { super(entity, metadata); } - public @NotNull DynamicRegistry.Key getVariant() { + public @NotNull Key getVariant() { return super.metadata.getIndex(OFFSET, Variant.KEBAB); } - public void setVariant(@NotNull DynamicRegistry.Key value) { + public void setVariant(@NotNull Key value) { super.metadata.setIndex(OFFSET, Metadata.PaintingVariant(value)); } @@ -81,11 +81,11 @@ public int id() { } public sealed interface Variant extends ProtocolObject, PaintingVariants permits VariantImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::paintingVariant); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::paintingVariant); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::paintingVariant); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::paintingVariant); static @NotNull Variant create( - @NotNull NamespaceID assetId, + @NotNull Key assetId, int width, int height ) { return new VariantImpl(assetId, width, height, null); @@ -108,7 +108,7 @@ public sealed interface Variant extends ProtocolObject, PaintingVariants permits ); } - @NotNull NamespaceID assetId(); + @NotNull Key assetId(); int width(); @@ -118,7 +118,7 @@ public sealed interface Variant extends ProtocolObject, PaintingVariants permits @Nullable Registry.PaintingVariantEntry registry(); class Builder { - private NamespaceID assetId; + private Key assetId; private int width; private int height; @@ -126,7 +126,7 @@ private Builder() { } @Contract(value = "_ -> this", pure = true) - public @NotNull Builder assetId(@NotNull NamespaceID assetId) { + public @NotNull Builder assetId(@NotNull Key assetId) { this.assetId = assetId; return this; } @@ -150,7 +150,7 @@ private Builder() { } record VariantImpl( - @NotNull NamespaceID assetId, + @NotNull Key assetId, int width, int height, @Nullable Registry.PaintingVariantEntry registry diff --git a/src/main/java/net/minestom/server/entity/villager/VillagerProfession.java b/src/main/java/net/minestom/server/entity/villager/VillagerProfession.java index faf65662f88..6c6273d740a 100644 --- a/src/main/java/net/minestom/server/entity/villager/VillagerProfession.java +++ b/src/main/java/net/minestom/server/entity/villager/VillagerProfession.java @@ -3,7 +3,6 @@ import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,7 +18,7 @@ public interface VillagerProfession extends StaticProtocolObject, VillagerProfes return VillagerProfessionImpl.getSafe(namespaceID); } - static @Nullable VillagerProfession fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable VillagerProfession fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } @@ -36,7 +35,7 @@ public interface VillagerProfession extends StaticProtocolObject, VillagerProfes Registry.VillagerProfession registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } } diff --git a/src/main/java/net/minestom/server/entity/villager/VillagerType.java b/src/main/java/net/minestom/server/entity/villager/VillagerType.java index ac8fcfd4f21..547d56398ca 100644 --- a/src/main/java/net/minestom/server/entity/villager/VillagerType.java +++ b/src/main/java/net/minestom/server/entity/villager/VillagerType.java @@ -3,7 +3,6 @@ import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +19,7 @@ public sealed interface VillagerType extends StaticProtocolObject, VillagerTypes return VillagerTypeImpl.getSafe(namespaceID); } - static @Nullable VillagerType fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable VillagerType fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } @@ -37,7 +36,7 @@ public sealed interface VillagerType extends StaticProtocolObject, VillagerTypes Registry.VillagerType registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } } diff --git a/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java b/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java index 685bba25926..44970d8b04b 100644 --- a/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java +++ b/src/main/java/net/minestom/server/event/entity/EntityDamageEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable; /** - * Called with {@link LivingEntity#damage(net.minestom.server.registry.DynamicRegistry.Key, float)}. + * Called with {@link LivingEntity#damage(net.kyori.adventure.key.Key, float)}. */ public class EntityDamageEvent implements EntityInstanceEvent, CancellableEvent { diff --git a/src/main/java/net/minestom/server/extensions/ExtensionManager.java b/src/main/java/net/minestom/server/extensions/ExtensionManager.java index 6a7863e2834..1aab72ea46b 100644 --- a/src/main/java/net/minestom/server/extensions/ExtensionManager.java +++ b/src/main/java/net/minestom/server/extensions/ExtensionManager.java @@ -449,6 +449,7 @@ private Extension loadExtension(@NotNull DiscoveredExtension discoveredExtension private List generateLoadOrder(@NotNull List discoveredExtensions) { // Extension --> Extensions it depends on. Map> dependencyMap = new HashMap<>(); + Map> softDependencyMap = new HashMap<>(); // Put dependencies in dependency map { diff --git a/src/main/java/net/minestom/server/fluid/Fluid.java b/src/main/java/net/minestom/server/fluid/Fluid.java index c9e6bedf370..980cc35aba0 100644 --- a/src/main/java/net/minestom/server/fluid/Fluid.java +++ b/src/main/java/net/minestom/server/fluid/Fluid.java @@ -1,8 +1,8 @@ package net.minestom.server.fluid; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,7 +21,7 @@ public sealed interface Fluid extends StaticProtocolObject, Fluids permits Fluid @Override @NotNull - NamespaceID namespace(); + Key namespace(); static @NotNull Collection<@NotNull Fluid> values() { return FluidImpl.values(); @@ -31,7 +31,7 @@ public sealed interface Fluid extends StaticProtocolObject, Fluids permits Fluid return FluidImpl.getSafe(namespaceID); } - static @Nullable Fluid fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable Fluid fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } } diff --git a/src/main/java/net/minestom/server/fluid/FluidImpl.java b/src/main/java/net/minestom/server/fluid/FluidImpl.java index 330108fefc3..b329c60ba97 100644 --- a/src/main/java/net/minestom/server/fluid/FluidImpl.java +++ b/src/main/java/net/minestom/server/fluid/FluidImpl.java @@ -1,13 +1,13 @@ package net.minestom.server.fluid; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.concurrent.atomic.AtomicInteger; -public record FluidImpl(Registry.FluidEntry registry, NamespaceID namespace, int id) implements Fluid { +public record FluidImpl(Registry.FluidEntry registry, Key namespace, int id) implements Fluid { private static final AtomicInteger INDEX = new AtomicInteger(); private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.FLUIDS, FluidImpl::createImpl); diff --git a/src/main/java/net/minestom/server/game/GameEvent.java b/src/main/java/net/minestom/server/game/GameEvent.java index 86ddb2a8d35..022d86ec59a 100644 --- a/src/main/java/net/minestom/server/game/GameEvent.java +++ b/src/main/java/net/minestom/server/game/GameEvent.java @@ -1,8 +1,8 @@ package net.minestom.server.game; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,7 +35,7 @@ public sealed interface GameEvent extends StaticProtocolObject permits GameEvent */ @Override @NotNull - NamespaceID namespace(); + Key namespace(); /** * Gets the game events from the registry. @@ -62,7 +62,7 @@ public sealed interface GameEvent extends StaticProtocolObject permits GameEvent * @param namespaceID the namespace ID * @return the game event or null if not found */ - static @Nullable GameEvent fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable GameEvent fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/game/GameEventImpl.java b/src/main/java/net/minestom/server/game/GameEventImpl.java index 2bddfd28f13..e9c71190f93 100644 --- a/src/main/java/net/minestom/server/game/GameEventImpl.java +++ b/src/main/java/net/minestom/server/game/GameEventImpl.java @@ -1,7 +1,7 @@ package net.minestom.server.game; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +15,7 @@ * @since 1.6.0 * @author themeinerlp */ -record GameEventImpl(Registry.GameEventEntry registry, NamespaceID namespace, int id) implements GameEvent { +record GameEventImpl(Registry.GameEventEntry registry, Key namespace, int id) implements GameEvent { private static final AtomicInteger INDEX = new AtomicInteger(); private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.GAMEPLAY_TAGS, GameEventImpl::createImpl); diff --git a/src/main/java/net/minestom/server/gamedata/DataPack.java b/src/main/java/net/minestom/server/gamedata/DataPack.java index cd40885b885..9ba78735a5a 100644 --- a/src/main/java/net/minestom/server/gamedata/DataPack.java +++ b/src/main/java/net/minestom/server/gamedata/DataPack.java @@ -1,13 +1,13 @@ package net.minestom.server.gamedata; -import net.minestom.server.utils.NamespaceID; +import net.kyori.adventure.key.Key; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @ApiStatus.Experimental public sealed interface DataPack permits DataPackImpl { - @NotNull DataPack MINECRAFT_CORE = new DataPackImpl(NamespaceID.from("minecraft:core"), true); + @NotNull DataPack MINECRAFT_CORE = new DataPackImpl(Key.key("minecraft:core"), true); /** *

Returns true if this data pack is synced with the client. The null data pack is never synced.

diff --git a/src/main/java/net/minestom/server/gamedata/DataPackImpl.java b/src/main/java/net/minestom/server/gamedata/DataPackImpl.java index e12b7fa1ed6..b995018be8f 100644 --- a/src/main/java/net/minestom/server/gamedata/DataPackImpl.java +++ b/src/main/java/net/minestom/server/gamedata/DataPackImpl.java @@ -1,9 +1,9 @@ package net.minestom.server.gamedata; -import net.minestom.server.utils.NamespaceID; +import net.kyori.adventure.key.Key; import org.jetbrains.annotations.NotNull; -record DataPackImpl(@NotNull NamespaceID namespaceId, boolean isSynced) implements DataPack { +record DataPackImpl(@NotNull Key namespaceId, boolean isSynced) implements DataPack { @Override public boolean isSynced() { diff --git a/src/main/java/net/minestom/server/gamedata/tags/Tag.java b/src/main/java/net/minestom/server/gamedata/tags/Tag.java index 0255a51a38d..4828368ae25 100644 --- a/src/main/java/net/minestom/server/gamedata/tags/Tag.java +++ b/src/main/java/net/minestom/server/gamedata/tags/Tag.java @@ -8,10 +8,8 @@ import net.minestom.server.game.GameEvent; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Material; -import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,13 +26,13 @@ * Immutable by design */ public final class Tag implements ProtocolObject, Keyed { - private final NamespaceID name; - private final Set values; + private final Key name; + private final Set values; /** * Creates a new empty tag. This does not cache the tag. */ - public Tag(@NotNull NamespaceID name) { + public Tag(@NotNull Key name) { this.name = name; this.values = new HashSet<>(); } @@ -42,7 +40,7 @@ public Tag(@NotNull NamespaceID name) { /** * Creates a new tag with the given values. This does not cache the tag. */ - public Tag(@NotNull NamespaceID name, @NotNull Set values) { + public Tag(@NotNull Key name, @NotNull Set values) { this.name = name; this.values = new HashSet<>(values); } @@ -53,7 +51,7 @@ public Tag(@NotNull NamespaceID name, @NotNull Set values) { * @param id the id to check against * @return 'true' iif this tag contains the given id */ - public boolean contains(@NotNull NamespaceID id) { + public boolean contains(@NotNull Key id) { return values.contains(id); } @@ -62,11 +60,11 @@ public boolean contains(@NotNull NamespaceID id) { * * @return immutable set of values present in this tag */ - public @NotNull Set getValues() { + public @NotNull Set getValues() { return Collections.unmodifiableSet(values); } - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return name; } @@ -85,7 +83,7 @@ public boolean contains(@NotNull NamespaceID id) { * Returns the name of this tag */ @Deprecated - public NamespaceID getName() { + public Key getName() { return name; } @@ -99,13 +97,13 @@ public enum BasicType { ENTITY_TYPES("minecraft:entity_type", Registry.Resource.ENTITY_TYPE_TAGS, name -> Optional.ofNullable(EntityType.fromNamespaceId(name)).map(EntityType::id)), GAME_EVENTS("minecraft:game_event", Registry.Resource.GAMEPLAY_TAGS, - name -> Optional.ofNullable(EntityType.fromNamespaceId(name)).map(EntityType::id)), + name -> Optional.ofNullable(GameEvent.fromNamespaceId(name)).map(GameEvent::id)), SOUND_EVENTS("minecraft:sound_event", null, null), // Seems not to be included in server data POTION_EFFECTS("minecraft:sound_event", null, null), // Seems not to be included in server data //todo this is cursed. it does not update as the registry changes. Fix later. ENCHANTMENTS("minecraft:enchantment", Registry.Resource.ENCHANTMENT_TAGS, - name -> Optional.of(DynamicRegistry.Key.of(name)).map(DynamicRegistry.Key::namespace).map(MinecraftServer.getEnchantmentRegistry()::getId)),; + name -> Optional.of(Key.key(name)).map(MinecraftServer.getEnchantmentRegistry()::getId)),; private final static BasicType[] VALUES = values(); private final String identifier; diff --git a/src/main/java/net/minestom/server/gamedata/tags/TagManager.java b/src/main/java/net/minestom/server/gamedata/tags/TagManager.java index e0deb7f3724..407e6a78832 100644 --- a/src/main/java/net/minestom/server/gamedata/tags/TagManager.java +++ b/src/main/java/net/minestom/server/gamedata/tags/TagManager.java @@ -1,10 +1,14 @@ package net.minestom.server.gamedata.tags; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -21,7 +25,7 @@ public TagManager() { final var json = Registry.load(type.getResource()); final var tagIdentifierMap = tagMap.computeIfAbsent(type, s -> new CopyOnWriteArrayList<>()); json.keySet().forEach(tagName -> { - final var tag = new Tag(NamespaceID.from(tagName), getValues(json, tagName)); + final var tag = new Tag(Key.key(tagName), getValues(json, tagName)); tagIdentifierMap.add(tag); }); } @@ -40,15 +44,15 @@ public Map> getTagMap() { return Collections.unmodifiableMap(tagMap); } - private Set getValues(Map> main, String value) { + private Set getValues(Map> main, String value) { Map tagObject = main.get(value); final List tagValues = (List) tagObject.get("values"); - Set result = new HashSet<>(tagValues.size()); + Set result = new HashSet<>(tagValues.size()); tagValues.forEach(tagString -> { if (tagString.startsWith("#")) { result.addAll(getValues(main, tagString.substring(1))); } else { - result.add(NamespaceID.from(tagString)); + result.add(Key.key(tagString)); } }); return result; diff --git a/src/main/java/net/minestom/server/instance/DynamicChunk.java b/src/main/java/net/minestom/server/instance/DynamicChunk.java index 51ca29be4e2..b11648aad35 100644 --- a/src/main/java/net/minestom/server/instance/DynamicChunk.java +++ b/src/main/java/net/minestom/server/instance/DynamicChunk.java @@ -1,6 +1,7 @@ package net.minestom.server.instance; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.nbt.LongArrayBinaryTag; import net.minestom.server.MinecraftServer; @@ -131,12 +132,12 @@ public void setBlock(int x, int y, int z, @NotNull Block block, } @Override - public void setBiome(int x, int y, int z, @NotNull DynamicRegistry.Key biome) { + public void setBiome(int x, int y, int z, @NotNull Key biome) { assertLock(); this.chunkCache.invalidate(); Section section = getSectionAt(y); - var id = BIOME_REGISTRY.getId(biome.namespace()); + var id = BIOME_REGISTRY.getId(biome); if (id == -1) throw new IllegalStateException("Biome has not been registered: " + biome.namespace()); section.biomePalette().set( @@ -211,13 +212,13 @@ public void tick(long time) { } @Override - public @NotNull DynamicRegistry.Key getBiome(int x, int y, int z) { + public @NotNull Key getBiome(int x, int y, int z) { assertLock(); final Section section = getSectionAt(y); final int id = section.biomePalette() .get(toSectionRelativeCoordinate(x) / 4, toSectionRelativeCoordinate(y) / 4, toSectionRelativeCoordinate(z) / 4); - DynamicRegistry.Key biome = BIOME_REGISTRY.getKey(id); + var biome = BIOME_REGISTRY.getKey(id); Check.notNull(biome, "Biome with id {0} is not registered", id); return biome; } diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index cb05bee3566..51bc022dc3f 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -3,6 +3,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArraySet; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.pointer.Pointers; import net.kyori.adventure.sound.Sound; @@ -43,7 +44,6 @@ import net.minestom.server.timer.Schedulable; import net.minestom.server.timer.Scheduler; import net.minestom.server.utils.ArrayUtils; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.chunk.ChunkCache; import net.minestom.server.utils.chunk.ChunkSupplier; @@ -75,9 +75,9 @@ public abstract class Instance implements Block.Getter, Block.Setter, private boolean registered; - private final DynamicRegistry.Key dimensionType; + private final Key dimensionType; private final DimensionType cachedDimensionType; // Cached to prevent self-destruction if the registry is changed, and to avoid the lookups. - private final String dimensionName; + private final Key dimensionName; // World border of the instance private WorldBorder worldBorder; @@ -120,24 +120,13 @@ public abstract class Instance implements Block.Getter, Block.Setter, private final Pointers pointers; private Pos worldSpawnPosition = Pos.ZERO; - - /** - * Creates a new instance. - * - * @param uniqueId the {@link UUID} of the instance - * @param dimensionType the {@link DimensionType} of the instance - */ - public Instance(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType) { - this(uniqueId, dimensionType, dimensionType.namespace()); - } - /** * Creates a new instance. * * @param uniqueId the {@link UUID} of the instance * @param dimensionType the {@link DimensionType} of the instance */ - public Instance(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType, @NotNull NamespaceID dimensionName) { + public Instance(@NotNull UUID uniqueId, @NotNull Key dimensionType, Key dimensionName) { this(MinecraftServer.getDimensionTypeRegistry(), uniqueId, dimensionType, dimensionName); } @@ -147,12 +136,12 @@ public Instance(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionTypeRegistry, @NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType, @NotNull NamespaceID dimensionName) { + public Instance(@NotNull DynamicRegistry dimensionTypeRegistry, @NotNull UUID uniqueId, @NotNull Key dimensionType, @NotNull Key dimensionName) { this.uniqueId = uniqueId; + this.dimensionName = dimensionName; this.dimensionType = dimensionType; this.cachedDimensionType = dimensionTypeRegistry.get(dimensionType); Check.argCondition(cachedDimensionType == null, "The dimension " + dimensionType + " is not registered! Please add it to the registry (`MinecraftServer.getDimensionTypeRegistry().registry(dimensionType)`)."); - this.dimensionName = dimensionName.asString(); this.worldBorder = WorldBorder.DEFAULT_BORDER; targetBorderDiameter = this.worldBorder.diameter(); @@ -170,6 +159,10 @@ public Instance(@NotNull DynamicRegistry dimensionTypeRegistry, @ } } + public Key getDimensionName() { + return dimensionName; + } + /** * Schedules a task to be run during the next instance tick. * @@ -413,7 +406,7 @@ protected void setRegistered(boolean registered) { * * @return the dimension of the instance */ - public DynamicRegistry.Key getDimensionType() { + public Key getDimensionType() { return dimensionType; } @@ -422,14 +415,6 @@ public DynamicRegistry.Key getDimensionType() { return cachedDimensionType; } - /** - * Gets the instance dimension name. - * @return the dimension name of the instance - */ - public @NotNull String getDimensionName() { - return dimensionName; - } - /** * Gets the age of this instance in tick. * diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index ea28b8b2a15..4a6aee77aa5 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -1,6 +1,7 @@ package net.minestom.server.instance; import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.BlockVec; @@ -25,7 +26,6 @@ import net.minestom.server.network.packet.server.play.EffectPacket; import net.minestom.server.network.packet.server.play.UnloadChunkPacket; import net.minestom.server.registry.DynamicRegistry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.async.AsyncUtils; import net.minestom.server.utils.block.BlockUtils; @@ -40,7 +40,15 @@ import org.slf4j.LoggerFactory; import space.vectrix.flare.fastutil.Long2ObjectSyncMap; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -89,28 +97,32 @@ public class InstanceContainer extends Instance { protected InstanceContainer srcInstance; // only present if this instance has been created using a copy private long lastBlockChangeTime; // Time at which the last block change happened (#setBlock) - public InstanceContainer(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType) { - this(uniqueId, dimensionType, null, dimensionType.namespace()); + /** + * Creates a new instance container. + * @param uniqueId the unique id of the instance + * @param dimensionType the dimension type of the instance + * @deprecated use {@link #InstanceContainer(DynamicRegistry, UUID, Key, Key, IChunkLoader)} instead. This constructor will be removed in future versions. It uses the dimension type as the dimension name that can cause with some errors. + * @see #InstanceContainer(DynamicRegistry, UUID, Key, Key, IChunkLoader) + */ + @Deprecated + public InstanceContainer(@NotNull UUID uniqueId, @NotNull Key dimensionType) { + this(uniqueId, dimensionType, null, dimensionType); } - public InstanceContainer(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType, @NotNull NamespaceID dimensionName) { + public InstanceContainer(@NotNull UUID uniqueId, @NotNull Key dimensionType, @NotNull Key dimensionName) { this(uniqueId, dimensionType, null, dimensionName); } - public InstanceContainer(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType, @Nullable IChunkLoader loader) { - this(uniqueId, dimensionType, loader, dimensionType.namespace()); - } - - public InstanceContainer(@NotNull UUID uniqueId, @NotNull DynamicRegistry.Key dimensionType, @Nullable IChunkLoader loader, @NotNull NamespaceID dimensionName) { - this(MinecraftServer.getDimensionTypeRegistry(), uniqueId, dimensionType, loader, dimensionName); + public InstanceContainer(@NotNull UUID uniqueId, @NotNull Key dimensionType, @Nullable IChunkLoader loader, @NotNull Key dimensionName) { + this(MinecraftServer.getDimensionTypeRegistry(), uniqueId, dimensionType, dimensionName, loader); } public InstanceContainer( @NotNull DynamicRegistry dimensionTypeRegistry, @NotNull UUID uniqueId, - @NotNull DynamicRegistry.Key dimensionType, - @Nullable IChunkLoader loader, - @NotNull NamespaceID dimensionName + @NotNull Key dimensionType, + @NotNull Key dimensionName, + @Nullable IChunkLoader loader ) { super(dimensionTypeRegistry, uniqueId, dimensionType, dimensionName); setChunkSupplier(DynamicChunk::new); @@ -525,7 +537,7 @@ protected void addSharedInstance(SharedInstance sharedInstance) { * @see #getSrcInstance() to retrieve the "creation source" of the copied instance */ public synchronized InstanceContainer copy() { - InstanceContainer copiedInstance = new InstanceContainer(UUID.randomUUID(), getDimensionType()); + InstanceContainer copiedInstance = new InstanceContainer(UUID.randomUUID(), getDimensionType(), getDimensionName()); copiedInstance.srcInstance = this; copiedInstance.tagHandler = this.tagHandler.copy(); copiedInstance.lastBlockChangeTime = this.lastBlockChangeTime; diff --git a/src/main/java/net/minestom/server/instance/InstanceManager.java b/src/main/java/net/minestom/server/instance/InstanceManager.java index 6b4bc2d12b2..d9a8e9450b2 100644 --- a/src/main/java/net/minestom/server/instance/InstanceManager.java +++ b/src/main/java/net/minestom/server/instance/InstanceManager.java @@ -1,5 +1,6 @@ package net.minestom.server.instance; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; import net.minestom.server.event.EventDispatcher; @@ -51,13 +52,13 @@ public void registerInstance(@NotNull Instance instance) { * @param loader the chunk loader * @return the created {@link InstanceContainer} */ - public @NotNull InstanceContainer createInstanceContainer(@NotNull DynamicRegistry.Key dimensionType, @Nullable IChunkLoader loader) { - final InstanceContainer instanceContainer = new InstanceContainer(registries.dimensionType(), UUID.randomUUID(), dimensionType, loader, dimensionType.namespace()); + public @NotNull InstanceContainer createInstanceContainer(@NotNull Key dimensionType, @Nullable IChunkLoader loader) { + final InstanceContainer instanceContainer = new InstanceContainer(registries.dimensionType(), UUID.randomUUID(), dimensionType, dimensionType, loader); registerInstance(instanceContainer); return instanceContainer; } - public @NotNull InstanceContainer createInstanceContainer(@NotNull DynamicRegistry.Key dimensionType) { + public @NotNull InstanceContainer createInstanceContainer(@NotNull Key dimensionType) { return createInstanceContainer(dimensionType, null); } diff --git a/src/main/java/net/minestom/server/instance/LightingChunk.java b/src/main/java/net/minestom/server/instance/LightingChunk.java index eefa768500e..eda059fc7bb 100644 --- a/src/main/java/net/minestom/server/instance/LightingChunk.java +++ b/src/main/java/net/minestom/server/instance/LightingChunk.java @@ -1,5 +1,6 @@ package net.minestom.server.instance; +import net.kyori.adventure.key.Key; import net.minestom.server.ServerFlag; import net.minestom.server.collision.Shape; import net.minestom.server.coordinate.Point; @@ -12,12 +13,17 @@ import net.minestom.server.instance.palette.Palette; import net.minestom.server.network.packet.server.CachedPacket; import net.minestom.server.network.packet.server.play.data.LightData; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.chunk.ChunkUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.BitSet; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; @@ -61,7 +67,7 @@ private enum QueueType { EXTERNAL } - private static final Set DIFFUSE_SKY_LIGHT = Set.of( + private static final Set DIFFUSE_SKY_LIGHT = Set.of( Block.COBWEB.namespace(), Block.ICE.namespace(), Block.HONEY_BLOCK.namespace(), diff --git a/src/main/java/net/minestom/server/instance/SharedInstance.java b/src/main/java/net/minestom/server/instance/SharedInstance.java index c01540fa81e..6869a66f3c2 100644 --- a/src/main/java/net/minestom/server/instance/SharedInstance.java +++ b/src/main/java/net/minestom/server/instance/SharedInstance.java @@ -22,7 +22,7 @@ public class SharedInstance extends Instance { private final InstanceContainer instanceContainer; public SharedInstance(@NotNull UUID uniqueId, @NotNull InstanceContainer instanceContainer) { - super(uniqueId, instanceContainer.getDimensionType()); + super(uniqueId, instanceContainer.getDimensionType(), instanceContainer.getDimensionName()); this.instanceContainer = instanceContainer; } diff --git a/src/main/java/net/minestom/server/instance/anvil/AnvilLoader.java b/src/main/java/net/minestom/server/instance/anvil/AnvilLoader.java index 47730cbd0c9..f6c0b793c54 100644 --- a/src/main/java/net/minestom/server/instance/anvil/AnvilLoader.java +++ b/src/main/java/net/minestom/server/instance/anvil/AnvilLoader.java @@ -1,7 +1,19 @@ package net.minestom.server.instance.anvil; -import it.unimi.dsi.fastutil.ints.*; -import net.kyori.adventure.nbt.*; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntIntImmutablePair; +import it.unimi.dsi.fastutil.ints.IntList; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.nbt.BinaryTag; +import net.kyori.adventure.nbt.BinaryTagIO; +import net.kyori.adventure.nbt.BinaryTagTypes; +import net.kyori.adventure.nbt.ByteArrayBinaryTag; +import net.kyori.adventure.nbt.CompoundBinaryTag; +import net.kyori.adventure.nbt.ListBinaryTag; +import net.kyori.adventure.nbt.StringBinaryTag; +import net.kyori.adventure.nbt.TagStringIOExt; import net.minestom.server.MinecraftServer; import net.minestom.server.instance.Chunk; import net.minestom.server.instance.IChunkLoader; @@ -12,7 +24,6 @@ import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.utils.ArrayUtils; import net.minestom.server.utils.MathUtils; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.async.AsyncUtils; import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.utils.validate.Check; @@ -29,7 +40,13 @@ import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.nio.file.StandardOpenOption; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.ReentrantLock; @@ -37,7 +54,7 @@ public class AnvilLoader implements IChunkLoader { private final static Logger LOGGER = LoggerFactory.getLogger(AnvilLoader.class); private static final DynamicRegistry BIOME_REGISTRY = MinecraftServer.getBiomeRegistry(); - private final static int PLAINS_ID = BIOME_REGISTRY.getId(NamespaceID.from("minecraft:plains")); + private final static int PLAINS_ID = BIOME_REGISTRY.getId(Key.key("minecraft:plains")); private final ReentrantLock fileCreationLock = new ReentrantLock(); private final Map alreadyLoaded = new ConcurrentHashMap<>(); @@ -278,7 +295,7 @@ private int[] loadBiomePalette(@NotNull ListBinaryTag paletteTag) { int[] convertedPalette = new int[paletteTag.size()]; for (int i = 0; i < convertedPalette.length; i++) { final String name = paletteTag.getString(i); - int biomeId = BIOME_REGISTRY.getId(NamespaceID.from(name)); + int biomeId = BIOME_REGISTRY.getId(Key.key(name)); if (biomeId == -1) biomeId = PLAINS_ID; convertedPalette[i] = biomeId; } @@ -430,8 +447,8 @@ private void saveSectionData(@NotNull Chunk chunk, @NotNull CompoundBinaryTag.Bu // Add biome (biome are stored for 4x4x4 volumes, avoid unnecessary work) if (x % 4 == 0 && sectionLocalY % 4 == 0 && z % 4 == 0) { int biomeIndex = (x / 4) + (sectionLocalY / 4) * 4 * 4 + (z / 4) * 4; - final DynamicRegistry.Key biomeKey = chunk.getBiome(x, y, z); - final BinaryTag biomeName = StringBinaryTag.stringBinaryTag(biomeKey.name()); + final var biomeKey = chunk.getBiome(x, y, z); + final BinaryTag biomeName = StringBinaryTag.stringBinaryTag(biomeKey.asString()); int biomePaletteIndex = biomePalette.indexOf(biomeName); if (biomePaletteIndex == -1) { diff --git a/src/main/java/net/minestom/server/instance/block/Block.java b/src/main/java/net/minestom/server/instance/block/Block.java index 5fe94a8231d..c61f5389aaa 100644 --- a/src/main/java/net/minestom/server/instance/block/Block.java +++ b/src/main/java/net/minestom/server/instance/block/Block.java @@ -1,5 +1,6 @@ package net.minestom.server.instance.block; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.Instance; @@ -9,8 +10,11 @@ import net.minestom.server.registry.StaticProtocolObject; import net.minestom.server.tag.Tag; import net.minestom.server.tag.TagReadable; -import net.minestom.server.utils.NamespaceID; -import org.jetbrains.annotations.*; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.UnknownNullability; +import org.jetbrains.annotations.Unmodifiable; import java.util.Collection; import java.util.Map; @@ -157,7 +161,7 @@ default String getProperty(@NotNull String property) { @NotNull Registry.BlockEntry registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } @@ -198,7 +202,7 @@ default boolean compare(@NotNull Block block) { return BlockImpl.getSafe(namespaceID); } - static @Nullable Block fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable Block fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/instance/block/BlockHandler.java b/src/main/java/net/minestom/server/instance/block/BlockHandler.java index b5cf80e74d8..6da24a42447 100644 --- a/src/main/java/net/minestom/server/instance/block/BlockHandler.java +++ b/src/main/java/net/minestom/server/instance/block/BlockHandler.java @@ -1,11 +1,11 @@ package net.minestom.server.instance.block; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Player; import net.minestom.server.instance.Instance; import net.minestom.server.tag.Tag; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -84,7 +84,7 @@ default byte getBlockEntityAction() { * * @return the namespace id of this handler */ - @NotNull NamespaceID getNamespaceId(); + @NotNull Key getNamespaceId(); /** * Represents an object forwarded to {@link #onPlace(Placement)}. @@ -313,14 +313,14 @@ final class Dummy implements BlockHandler { return DUMMY_CACHE.computeIfAbsent(namespace, Dummy::new); } - private final NamespaceID namespace; + private final Key namespace; private Dummy(String name) { - namespace = NamespaceID.from(name); + namespace = Key.key(name); } @Override - public @NotNull NamespaceID getNamespaceId() { + public @NotNull Key getNamespaceId() { return namespace; } } diff --git a/src/main/java/net/minestom/server/instance/block/BlockManager.java b/src/main/java/net/minestom/server/instance/block/BlockManager.java index d19f1c50432..1fdf25d98c6 100644 --- a/src/main/java/net/minestom/server/instance/block/BlockManager.java +++ b/src/main/java/net/minestom/server/instance/block/BlockManager.java @@ -2,8 +2,8 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.kyori.adventure.key.Key; import net.minestom.server.instance.block.rule.BlockPlacementRule; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -29,8 +29,8 @@ public void registerHandler(@NotNull String namespace, @NotNull Supplier<@NotNul blockHandlerMap.put(namespace, handlerSupplier); } - public void registerHandler(@NotNull NamespaceID namespace, @NotNull Supplier<@NotNull BlockHandler> handlerSupplier) { - registerHandler(namespace.toString(), handlerSupplier); + public void registerHandler(@NotNull Key namespace, @NotNull Supplier<@NotNull BlockHandler> handlerSupplier) { + registerHandler(namespace.asString(), handlerSupplier); } public @Nullable BlockHandler getHandler(@NotNull String namespace) { diff --git a/src/main/java/net/minestom/server/instance/block/banner/BannerPattern.java b/src/main/java/net/minestom/server/instance/block/banner/BannerPattern.java index 5b7774ba147..1bdc631b9f3 100644 --- a/src/main/java/net/minestom/server/instance/block/banner/BannerPattern.java +++ b/src/main/java/net/minestom/server/instance/block/banner/BannerPattern.java @@ -1,11 +1,11 @@ package net.minestom.server.instance.block.banner; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Contract; @@ -13,11 +13,11 @@ import org.jetbrains.annotations.Nullable; public sealed interface BannerPattern extends ProtocolObject, BannerPatterns permits BannerPatternImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::bannerPattern); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::bannerPattern); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::bannerPattern); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::bannerPattern); static @NotNull BannerPattern create( - @NotNull NamespaceID assetId, + @NotNull Key assetId, @NotNull String translationKey ) { return new BannerPatternImpl(assetId, translationKey, null); @@ -40,21 +40,21 @@ public sealed interface BannerPattern extends ProtocolObject, BannerPatterns per ); } - @NotNull NamespaceID assetId(); + @NotNull Key assetId(); @NotNull String translationKey(); @Nullable Registry.BannerPatternEntry registry(); final class Builder { - private NamespaceID assetId; + private Key assetId; private String translationKey; private Builder() { } @Contract(value = "_ -> this", pure = true) - public @NotNull Builder assetId(@NotNull NamespaceID assetId) { + public @NotNull Builder assetId(@NotNull Key assetId) { this.assetId = assetId; return this; } diff --git a/src/main/java/net/minestom/server/instance/block/banner/BannerPatternImpl.java b/src/main/java/net/minestom/server/instance/block/banner/BannerPatternImpl.java index 4d5d5565ab6..3d89fcd2a2e 100644 --- a/src/main/java/net/minestom/server/instance/block/banner/BannerPatternImpl.java +++ b/src/main/java/net/minestom/server/instance/block/banner/BannerPatternImpl.java @@ -1,15 +1,15 @@ package net.minestom.server.instance.block.banner; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; record BannerPatternImpl( - @NotNull NamespaceID assetId, + @NotNull Key assetId, @NotNull String translationKey, @Nullable Registry.BannerPatternEntry registry ) implements BannerPattern { diff --git a/src/main/java/net/minestom/server/instance/block/jukebox/JukeboxSong.java b/src/main/java/net/minestom/server/instance/block/jukebox/JukeboxSong.java index 51dce5e39f7..db50fdf69f4 100644 --- a/src/main/java/net/minestom/server/instance/block/jukebox/JukeboxSong.java +++ b/src/main/java/net/minestom/server/instance/block/jukebox/JukeboxSong.java @@ -1,5 +1,6 @@ package net.minestom.server.instance.block.jukebox; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.DynamicRegistry; @@ -14,8 +15,8 @@ public sealed interface JukeboxSong extends ProtocolObject, JukeboxSongs permits JukeboxSongImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::jukeboxSong); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::jukeboxSong); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::jukeboxSong); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::jukeboxSong); static @NotNull JukeboxSong create( @NotNull SoundEvent soundEvent, diff --git a/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java b/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java index 9d41bc7f24b..0644523aa16 100644 --- a/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java +++ b/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java @@ -2,6 +2,7 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Vec; import net.minestom.server.instance.block.Block; @@ -236,7 +237,7 @@ public record SectionModifierImpl(DynamicRegistry biomeRegistry, Point si GenSection genSection, boolean fork) implements GenericModifier { @Override - public void setBiome(int x, int y, int z, @NotNull DynamicRegistry.Key biome) { + public void setBiome(int x, int y, int z, @NotNull Key biome) { if (fork) throw new IllegalStateException("Cannot modify biomes of a fork"); final int id = biomeRegistry.getId(biome); Check.argCondition(id == -1, "Biome has not been registered: {0}", biome); @@ -285,7 +286,7 @@ public void fill(@NotNull Block block) { } @Override - public void fillBiome(@NotNull DynamicRegistry.Key biome) { + public void fillBiome(@NotNull Key biome) { if (fork) throw new IllegalStateException("Cannot modify biomes of a fork"); final int id = biomeRegistry.getId(biome); Check.argCondition(id == -1, "Biome has not been registered: {0}", biome); @@ -322,7 +323,7 @@ public void setBlock(int x, int y, int z, @NotNull Block block) { } @Override - public void setBiome(int x, int y, int z, @NotNull DynamicRegistry.Key biome) { + public void setBiome(int x, int y, int z, @NotNull Key biome) { checkBorder(x, y, z); final GenerationUnit section = findAbsoluteSection(x, y, z); y -= start.y(); @@ -374,7 +375,7 @@ public void fill(@NotNull Block block) { } @Override - public void fillBiome(@NotNull DynamicRegistry.Key biome) { + public void fillBiome(@NotNull Key biome) { for (GenerationUnit section : sections) { section.modifier().fillBiome(biome); } diff --git a/src/main/java/net/minestom/server/instance/generator/UnitModifier.java b/src/main/java/net/minestom/server/instance/generator/UnitModifier.java index dfd297232c7..ed3e4d48398 100644 --- a/src/main/java/net/minestom/server/instance/generator/UnitModifier.java +++ b/src/main/java/net/minestom/server/instance/generator/UnitModifier.java @@ -1,8 +1,8 @@ package net.minestom.server.instance.generator; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; -import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.world.biome.Biome; import org.jetbrains.annotations.NotNull; @@ -61,7 +61,7 @@ public interface UnitModifier extends Block.Setter, Biome.Setter { * * @param biome the biome to fill */ - void fillBiome(@NotNull DynamicRegistry.Key biome); + void fillBiome(@NotNull Key biome); interface Supplier { @NotNull Block get(int x, int y, int z); diff --git a/src/main/java/net/minestom/server/inventory/type/EnchantmentTableInventory.java b/src/main/java/net/minestom/server/inventory/type/EnchantmentTableInventory.java index 5b9d217a2cc..ff2bc1913d2 100644 --- a/src/main/java/net/minestom/server/inventory/type/EnchantmentTableInventory.java +++ b/src/main/java/net/minestom/server/inventory/type/EnchantmentTableInventory.java @@ -1,5 +1,6 @@ package net.minestom.server.inventory.type; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.MinecraftServer; import net.minestom.server.inventory.Inventory; @@ -72,7 +73,7 @@ public void setSeed(short seed) { * @param enchantmentSlot the enchantment slot * @return the enchantment shown in the slot, null if it is hidden */ - public DynamicRegistry.Key getEnchantmentShown(@NotNull EnchantmentSlot enchantmentSlot) { + public Key getEnchantmentShown(@NotNull EnchantmentSlot enchantmentSlot) { final int id = enchantmentShown[enchantmentSlot.ordinal()]; if (id == -1) return null; return ENCHANTMENT_REGISTRY.getKey(id); @@ -86,7 +87,7 @@ public DynamicRegistry.Key getEnchantmentShown(@NotNull Enchantment * @param enchantmentSlot the enchantment slot * @param enchantment the enchantment */ - public void setEnchantmentShown(@NotNull EnchantmentSlot enchantmentSlot, @Nullable DynamicRegistry.Key enchantment) { + public void setEnchantmentShown(@NotNull EnchantmentSlot enchantmentSlot, @Nullable Key enchantment) { final short id = enchantment == null ? -1 : (short) ENCHANTMENT_REGISTRY.getId(enchantment); switch (enchantmentSlot) { case TOP -> sendProperty(InventoryProperty.ENCHANTMENT_TABLE_ENCH_ID_TOP, id); diff --git a/src/main/java/net/minestom/server/item/ItemComponent.java b/src/main/java/net/minestom/server/item/ItemComponent.java index 4c66c448d7c..1eb9396423e 100644 --- a/src/main/java/net/minestom/server/item/ItemComponent.java +++ b/src/main/java/net/minestom/server/item/ItemComponent.java @@ -1,14 +1,40 @@ package net.minestom.server.item; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.kyori.adventure.util.RGBLike; import net.minestom.server.color.Color; import net.minestom.server.color.DyeColor; import net.minestom.server.component.DataComponent; import net.minestom.server.component.DataComponentMap; -import net.minestom.server.item.component.*; +import net.minestom.server.item.component.ArmorTrim; +import net.minestom.server.item.component.AttributeList; +import net.minestom.server.item.component.BannerPatterns; +import net.minestom.server.item.component.Bee; +import net.minestom.server.item.component.BlockPredicates; +import net.minestom.server.item.component.CustomData; +import net.minestom.server.item.component.DebugStickState; +import net.minestom.server.item.component.DyedItemColor; +import net.minestom.server.item.component.EnchantmentList; +import net.minestom.server.item.component.FireworkExplosion; +import net.minestom.server.item.component.FireworkList; +import net.minestom.server.item.component.Food; +import net.minestom.server.item.component.HeadProfile; +import net.minestom.server.item.component.ItemBlockState; +import net.minestom.server.item.component.ItemRarity; +import net.minestom.server.item.component.JukeboxPlayable; +import net.minestom.server.item.component.LodestoneTracker; +import net.minestom.server.item.component.MapDecorations; +import net.minestom.server.item.component.MapPostProcessing; +import net.minestom.server.item.component.PotDecorations; +import net.minestom.server.item.component.PotionContents; +import net.minestom.server.item.component.SeededContainerLoot; +import net.minestom.server.item.component.SuspiciousStewEffects; +import net.minestom.server.item.component.Tool; +import net.minestom.server.item.component.Unbreakable; +import net.minestom.server.item.component.WritableBookContent; +import net.minestom.server.item.component.WrittenBookContent; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.Unit; import net.minestom.server.utils.collection.ObjectArray; import net.minestom.server.utils.nbt.BinaryTagSerializer; @@ -92,7 +118,7 @@ public final class ItemComponent { return NAMESPACES.get(namespaceId); } - public static @Nullable DataComponent fromNamespaceId(@NotNull NamespaceID namespaceId) { + public static @Nullable DataComponent fromNamespaceId(@NotNull Key namespaceId) { return fromNamespaceId(namespaceId.asString()); } @@ -105,7 +131,7 @@ public final class ItemComponent { } static DataComponent register(@NotNull String name, @Nullable NetworkBuffer.Type network, @Nullable BinaryTagSerializer nbt) { - DataComponent impl = DataComponent.createHeadless(NAMESPACES.size(), NamespaceID.from(name), network, nbt); + DataComponent impl = DataComponent.createHeadless(NAMESPACES.size(), Key.key(name), network, nbt); NAMESPACES.put(impl.name(), impl); IDS.set(impl.id(), impl); return impl; diff --git a/src/main/java/net/minestom/server/item/Material.java b/src/main/java/net/minestom/server/item/Material.java index 98fe2c8788a..a27b31a3838 100644 --- a/src/main/java/net/minestom/server/item/Material.java +++ b/src/main/java/net/minestom/server/item/Material.java @@ -1,11 +1,11 @@ package net.minestom.server.item; +import net.kyori.adventure.key.Key; import net.minestom.server.component.DataComponentMap; import net.minestom.server.instance.block.Block; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -26,7 +26,7 @@ public sealed interface Material extends StaticProtocolObject, Materials permits @NotNull Registry.MaterialEntry registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } @@ -63,7 +63,7 @@ default int maxStackSize() { return MaterialImpl.getSafe(namespaceID); } - static @Nullable Material fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable Material fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/item/armor/TrimMaterial.java b/src/main/java/net/minestom/server/item/armor/TrimMaterial.java index 610b2e59c00..41a10fa985a 100644 --- a/src/main/java/net/minestom/server/item/armor/TrimMaterial.java +++ b/src/main/java/net/minestom/server/item/armor/TrimMaterial.java @@ -1,5 +1,6 @@ package net.minestom.server.item.armor; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; import net.minestom.server.network.NetworkBuffer; @@ -17,8 +18,8 @@ import java.util.Map; public sealed interface TrimMaterial extends ProtocolObject permits TrimMaterialImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::trimMaterial); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::trimMaterial); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::trimMaterial); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::trimMaterial); static @NotNull TrimMaterial create( @NotNull String assetName, diff --git a/src/main/java/net/minestom/server/item/armor/TrimPattern.java b/src/main/java/net/minestom/server/item/armor/TrimPattern.java index bfe2b76a1be..c516c5ddf31 100644 --- a/src/main/java/net/minestom/server/item/armor/TrimPattern.java +++ b/src/main/java/net/minestom/server/item/armor/TrimPattern.java @@ -1,5 +1,6 @@ package net.minestom.server.item.armor; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; import net.minestom.server.network.NetworkBuffer; @@ -7,7 +8,6 @@ import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Contract; @@ -15,11 +15,11 @@ import org.jetbrains.annotations.Nullable; public sealed interface TrimPattern extends ProtocolObject permits TrimPatternImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::trimPattern); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::trimPattern); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::trimPattern); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::trimPattern); static @NotNull TrimPattern create( - @NotNull NamespaceID assetId, + @NotNull Key assetId, @NotNull Material template, @NotNull Component description, boolean decal @@ -44,7 +44,7 @@ public sealed interface TrimPattern extends ProtocolObject permits TrimPatternIm ); } - @NotNull NamespaceID assetId(); + @NotNull Key assetId(); @NotNull Material template(); @@ -56,7 +56,7 @@ public sealed interface TrimPattern extends ProtocolObject permits TrimPatternIm @Nullable Registry.TrimPatternEntry registry(); final class Builder { - private NamespaceID assetId; + private Key assetId; private Material template; private Component description; private boolean decal; @@ -66,11 +66,11 @@ private Builder() { @Contract(value = "_ -> this", pure = true) public @NotNull Builder assetId(@NotNull String assetId) { - return assetId(NamespaceID.from(assetId)); + return assetId(Key.key(assetId)); } @Contract(value = "_ -> this", pure = true) - public @NotNull Builder assetId(@NotNull NamespaceID assetId) { + public @NotNull Builder assetId(@NotNull Key assetId) { this.assetId = assetId; return this; } diff --git a/src/main/java/net/minestom/server/item/armor/TrimPatternImpl.java b/src/main/java/net/minestom/server/item/armor/TrimPatternImpl.java index 5ab4fbe4ad8..4c1465f09a5 100644 --- a/src/main/java/net/minestom/server/item/armor/TrimPatternImpl.java +++ b/src/main/java/net/minestom/server/item/armor/TrimPatternImpl.java @@ -1,17 +1,17 @@ package net.minestom.server.item.armor; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; record TrimPatternImpl( - @NotNull NamespaceID assetId, + @NotNull Key assetId, @NotNull Material template, @NotNull Component description, boolean isDecal, diff --git a/src/main/java/net/minestom/server/item/banner/BannerPattern.java b/src/main/java/net/minestom/server/item/banner/BannerPattern.java index d442036685b..4212c2f34c1 100644 --- a/src/main/java/net/minestom/server/item/banner/BannerPattern.java +++ b/src/main/java/net/minestom/server/item/banner/BannerPattern.java @@ -2,7 +2,6 @@ import net.kyori.adventure.key.Key; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,7 +17,7 @@ public sealed interface BannerPattern extends StaticProtocolObject, BannerPatter return BannerPatternImpl.getSafe(namespaceID); } - static @Nullable BannerPattern fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable BannerPattern fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/item/banner/BannerPatternImpl.java b/src/main/java/net/minestom/server/item/banner/BannerPatternImpl.java index 028e219a01e..cf0325d2f1e 100644 --- a/src/main/java/net/minestom/server/item/banner/BannerPatternImpl.java +++ b/src/main/java/net/minestom/server/item/banner/BannerPatternImpl.java @@ -1,7 +1,7 @@ package net.minestom.server.item.banner; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -9,7 +9,7 @@ import java.util.Map; // Microtus - Banner and Shield Meta -public record BannerPatternImpl(NamespaceID namespace, int id, String identifier) implements BannerPattern { +public record BannerPatternImpl(Key namespace, int id, String identifier) implements BannerPattern { private static Map IDENTIFIERS = new HashMap<>(); private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.BANNER_PATTERNS, BannerPatternImpl::createImpl); @@ -17,7 +17,7 @@ public record BannerPatternImpl(NamespaceID namespace, int id, String identifier private static BannerPattern createImpl(String namespace, Registry.Properties properties) { int id = properties.getInt("id"); String identifier = properties.getString("identifier"); - BannerPatternImpl bannerPattern = new BannerPatternImpl(NamespaceID.from(namespace), id, identifier); + BannerPatternImpl bannerPattern = new BannerPatternImpl(Key.key(namespace), id, identifier); IDENTIFIERS.put(identifier, bannerPattern); return bannerPattern; } diff --git a/src/main/java/net/minestom/server/item/component/ArmorTrim.java b/src/main/java/net/minestom/server/item/component/ArmorTrim.java index 2c67444e2c8..9279a24362a 100644 --- a/src/main/java/net/minestom/server/item/component/ArmorTrim.java +++ b/src/main/java/net/minestom/server/item/component/ArmorTrim.java @@ -1,5 +1,6 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.item.armor.TrimMaterial; import net.minestom.server.item.armor.TrimPattern; @@ -8,7 +9,7 @@ import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; -public record ArmorTrim(@NotNull DynamicRegistry.Key material, @NotNull DynamicRegistry.Key pattern, boolean showInTooltip) { +public record ArmorTrim(@NotNull Key material, @NotNull Key pattern, boolean showInTooltip) { public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type<>() { @Override @@ -28,14 +29,14 @@ public ArmorTrim read(@NotNull NetworkBuffer buffer) { public static final BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.COMPOUND.map( tag -> { - DynamicRegistry.Key material = TrimMaterial.NBT_TYPE.read(tag.get("material")); - DynamicRegistry.Key pattern = TrimPattern.NBT_TYPE.read(tag.get("pattern")); + Key material = TrimMaterial.NBT_TYPE.read(tag.get("material")); + Key pattern = TrimPattern.NBT_TYPE.read(tag.get("pattern")); boolean showInTooltip = tag.getBoolean("show_in_tooltip", true); return new ArmorTrim(material, pattern, showInTooltip); }, value -> CompoundBinaryTag.builder() .put("material", TrimMaterial.NBT_TYPE.write(value.material)) - .putString("pattern", value.pattern.name()) + .putString("pattern", value.pattern.asString()) .putBoolean("show_in_tooltip", value.showInTooltip) .build() ); diff --git a/src/main/java/net/minestom/server/item/component/BannerPatterns.java b/src/main/java/net/minestom/server/item/component/BannerPatterns.java index d18ebc00fa6..bb2e3c150e4 100644 --- a/src/main/java/net/minestom/server/item/component/BannerPatterns.java +++ b/src/main/java/net/minestom/server/item/component/BannerPatterns.java @@ -1,5 +1,6 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.color.DyeColor; @@ -18,7 +19,7 @@ public record BannerPatterns(@NotNull List layers) { public static final NetworkBuffer.Type NETWORK_TYPE = Layer.NETWORK_TYPE.list(MAX_LAYERS).map(BannerPatterns::new, BannerPatterns::layers); public static final BinaryTagSerializer NBT_TYPE = Layer.NBT_TYPE.list().map(BannerPatterns::new, BannerPatterns::layers); - public record Layer(@NotNull DynamicRegistry.Key pattern, @NotNull DyeColor color) { + public record Layer(@NotNull Key pattern, @NotNull DyeColor color) { public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type<>() { @Override public void write(@NotNull NetworkBuffer buffer, Layer value) { @@ -58,7 +59,7 @@ public BannerPatterns(@NotNull Layer layer) { this(List.of(layer)); } - public BannerPatterns(@NotNull DynamicRegistry.Key pattern, @NotNull DyeColor color) { + public BannerPatterns(@NotNull Key pattern, @NotNull DyeColor color) { this(new Layer(pattern, color)); } diff --git a/src/main/java/net/minestom/server/item/component/EnchantmentList.java b/src/main/java/net/minestom/server/item/component/EnchantmentList.java index 6dc8cd9362d..1562affc9d1 100644 --- a/src/main/java/net/minestom/server/item/component/EnchantmentList.java +++ b/src/main/java/net/minestom/server/item/component/EnchantmentList.java @@ -1,10 +1,10 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.item.enchant.Enchantment; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; @@ -14,7 +14,7 @@ import static net.kyori.adventure.nbt.StringBinaryTag.stringBinaryTag; -public record EnchantmentList(@NotNull Map, Integer> enchantments, +public record EnchantmentList(@NotNull Map enchantments, boolean showInTooltip) { public static final EnchantmentList EMPTY = new EnchantmentList(Map.of(), true); @@ -22,7 +22,7 @@ public record EnchantmentList(@NotNull Map, Int @Override public void write(@NotNull NetworkBuffer buffer, @NotNull EnchantmentList value) { buffer.write(NetworkBuffer.VAR_INT, value.enchantments.size()); - for (Map.Entry, Integer> entry : value.enchantments.entrySet()) { + for (Map.Entry entry : value.enchantments.entrySet()) { buffer.write(Enchantment.NETWORK_TYPE, entry.getKey()); buffer.write(NetworkBuffer.VAR_INT, entry.getValue()); } @@ -33,9 +33,9 @@ public void write(@NotNull NetworkBuffer buffer, @NotNull EnchantmentList value) public @NotNull EnchantmentList read(@NotNull NetworkBuffer buffer) { int size = buffer.read(NetworkBuffer.VAR_INT); Check.argCondition(size < 0 || size > Short.MAX_VALUE, "Invalid enchantment list size: {0}", size); - Map, Integer> enchantments = HashMap.newHashMap(size); + Map enchantments = HashMap.newHashMap(size); for (int i = 0; i < size; i++) { - DynamicRegistry.Key enchantment = buffer.read(Enchantment.NETWORK_TYPE); + Key enchantment = buffer.read(Enchantment.NETWORK_TYPE); enchantments.put(enchantment, buffer.read(NetworkBuffer.VAR_INT)); } boolean showInTooltip = buffer.read(NetworkBuffer.BOOLEAN); @@ -46,8 +46,8 @@ public void write(@NotNull NetworkBuffer buffer, @NotNull EnchantmentList value) @Override public @NotNull BinaryTag write(@NotNull Context context, @NotNull EnchantmentList value) { CompoundBinaryTag.Builder levels = CompoundBinaryTag.builder(); - for (Map.Entry, Integer> entry : value.enchantments.entrySet()) { - levels.put(entry.getKey().name(), BinaryTagSerializer.INT.write(context, entry.getValue())); + for (Map.Entry entry : value.enchantments.entrySet()) { + levels.put(entry.getKey().asString(), BinaryTagSerializer.INT.write(context, entry.getValue())); } return CompoundBinaryTag.builder() @@ -63,9 +63,9 @@ public void write(@NotNull NetworkBuffer buffer, @NotNull EnchantmentList value) // We have two variants of the enchantment list, one with {levels: {...}, show_in_tooltip: boolean} and one with {...}. CompoundBinaryTag levels = tag.keySet().contains("levels") ? tag.getCompound("levels") : tag; - Map, Integer> enchantments = HashMap.newHashMap(levels.size()); + Map enchantments = HashMap.newHashMap(levels.size()); for (Map.Entry entry : levels) { - DynamicRegistry.Key enchantment = Enchantment.NBT_TYPE.read(context, stringBinaryTag(entry.getKey())); + Key enchantment = Enchantment.NBT_TYPE.read(context, stringBinaryTag(entry.getKey())); int level = BinaryTagSerializer.INT.read(entry.getValue()); if (level > 0) enchantments.put(enchantment, level); } @@ -81,30 +81,30 @@ public void write(@NotNull NetworkBuffer buffer, @NotNull EnchantmentList value) enchantments = Map.copyOf(enchantments); } - public EnchantmentList(@NotNull Map, Integer> enchantments) { + public EnchantmentList(@NotNull Map enchantments) { this(enchantments, true); } - public EnchantmentList(@NotNull DynamicRegistry.Key enchantment, int level) { + public EnchantmentList(@NotNull Key enchantment, int level) { this(Map.of(enchantment, level), true); } - public boolean has(@NotNull DynamicRegistry.Key enchantment) { + public boolean has(@NotNull Key enchantment) { return enchantments.containsKey(enchantment); } - public int level(@NotNull DynamicRegistry.Key enchantment) { + public int level(@NotNull Key enchantment) { return enchantments.getOrDefault(enchantment, 0); } - public @NotNull EnchantmentList with(@NotNull DynamicRegistry.Key enchantment, int level) { - Map, Integer> newEnchantments = new HashMap<>(enchantments); + public @NotNull EnchantmentList with(@NotNull Key enchantment, int level) { + Map newEnchantments = new HashMap<>(enchantments); newEnchantments.put(enchantment, level); return new EnchantmentList(newEnchantments, showInTooltip); } - public @NotNull EnchantmentList remove(@NotNull DynamicRegistry.Key enchantment) { - Map, Integer> newEnchantments = new HashMap<>(enchantments); + public @NotNull EnchantmentList remove(@NotNull Key enchantment) { + Map newEnchantments = new HashMap<>(enchantments); newEnchantments.remove(enchantment); return new EnchantmentList(newEnchantments, showInTooltip); } diff --git a/src/main/java/net/minestom/server/item/component/JukeboxPlayable.java b/src/main/java/net/minestom/server/item/component/JukeboxPlayable.java index b47858a73c2..90b53387ca5 100644 --- a/src/main/java/net/minestom/server/item/component/JukeboxPlayable.java +++ b/src/main/java/net/minestom/server/item/component/JukeboxPlayable.java @@ -1,5 +1,6 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.MinecraftServer; @@ -10,7 +11,7 @@ import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; -public record JukeboxPlayable(@NotNull DynamicRegistry.Key song, boolean showInTooltip) { +public record JukeboxPlayable(@NotNull Key song, boolean showInTooltip) { public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type<>() { // For some reason I(matt) cannot discern, the wire format for this type can write the song // as either a registry ID or a namespace ID. Minestom always writes as a registry id. @@ -24,11 +25,11 @@ public void write(@NotNull NetworkBuffer buffer, JukeboxPlayable value) { @Override public JukeboxPlayable read(@NotNull NetworkBuffer buffer) { - DynamicRegistry.Key song; + Key song; if (buffer.read(NetworkBuffer.BOOLEAN)) { song = buffer.read(JukeboxSong.NETWORK_TYPE); } else { - song = DynamicRegistry.Key.of(buffer.read(NetworkBuffer.STRING)); + song = Key.key(buffer.read(NetworkBuffer.STRING)); final DynamicRegistry registry = MinecraftServer.getJukeboxSongRegistry(); Check.stateCondition(registry.get(song) != null, "unknown song: {0}", song); } @@ -54,11 +55,11 @@ public JukeboxPlayable read(@NotNull NetworkBuffer buffer) { } }; - public JukeboxPlayable(@NotNull DynamicRegistry.Key song) { + public JukeboxPlayable(@NotNull Key song) { this(song, true); } - public @NotNull JukeboxPlayable withSong(@NotNull DynamicRegistry.Key song) { + public @NotNull JukeboxPlayable withSong(@NotNull Key song) { return new JukeboxPlayable(song, showInTooltip); } diff --git a/src/main/java/net/minestom/server/item/component/LodestoneTracker.java b/src/main/java/net/minestom/server/item/component/LodestoneTracker.java index befd8f6a5e5..ad8bbb94cb1 100644 --- a/src/main/java/net/minestom/server/item/component/LodestoneTracker.java +++ b/src/main/java/net/minestom/server/item/component/LodestoneTracker.java @@ -1,5 +1,6 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.coordinate.Point; import net.minestom.server.network.NetworkBuffer; @@ -36,7 +37,7 @@ public void write(@NotNull NetworkBuffer buffer, @NotNull LodestoneTracker value .build() ); - public LodestoneTracker(@NotNull String dimension, @NotNull Point blockPosition, boolean tracked) { + public LodestoneTracker(@NotNull Key dimension, @NotNull Point blockPosition, boolean tracked) { this(new WorldPos(dimension, blockPosition), tracked); } diff --git a/src/main/java/net/minestom/server/item/enchant/AttributeEffect.java b/src/main/java/net/minestom/server/item/enchant/AttributeEffect.java index fb29f2cf946..82df313b409 100644 --- a/src/main/java/net/minestom/server/item/enchant/AttributeEffect.java +++ b/src/main/java/net/minestom/server/item/enchant/AttributeEffect.java @@ -1,20 +1,20 @@ package net.minestom.server.item.enchant; +import net.kyori.adventure.key.Key; import net.minestom.server.entity.attribute.Attribute; import net.minestom.server.entity.attribute.AttributeOperation; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; public record AttributeEffect( - @NotNull NamespaceID id, + @NotNull Key id, @NotNull Attribute attribute, @NotNull LevelBasedValue amount, @NotNull AttributeOperation operation ) implements Enchantment.Effect, LocationEffect { public static final BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.object( - "id", BinaryTagSerializer.STRING.map(NamespaceID::from, NamespaceID::asString), AttributeEffect::id, + "id", BinaryTagSerializer.STRING.map(Key::key, Key::asString), AttributeEffect::id, "attribute", Attribute.NBT_TYPE, AttributeEffect::attribute, "amount", LevelBasedValue.NBT_TYPE, AttributeEffect::amount, "operation", AttributeOperation.NBT_TYPE, AttributeEffect::operation, diff --git a/src/main/java/net/minestom/server/item/enchant/EffectComponent.java b/src/main/java/net/minestom/server/item/enchant/EffectComponent.java index 2eabdb77802..c9f55fe77d4 100644 --- a/src/main/java/net/minestom/server/item/enchant/EffectComponent.java +++ b/src/main/java/net/minestom/server/item/enchant/EffectComponent.java @@ -1,12 +1,12 @@ package net.minestom.server.item.enchant; +import net.kyori.adventure.key.Key; import net.minestom.server.component.DataComponent; import net.minestom.server.component.DataComponentMap; import net.minestom.server.gamedata.tags.Tag; import net.minestom.server.item.crossbow.CrossbowChargingSounds; import net.minestom.server.registry.ObjectSet; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.Unit; import net.minestom.server.utils.collection.ObjectArray; import net.minestom.server.utils.nbt.BinaryTagSerializer; @@ -59,7 +59,7 @@ public class EffectComponent { return NAMESPACES.get(namespaceId); } - public static @Nullable DataComponent fromNamespaceId(@NotNull NamespaceID namespaceId) { + public static @Nullable DataComponent fromNamespaceId(@NotNull Key namespaceId) { return fromNamespaceId(namespaceId.asString()); } @@ -72,7 +72,7 @@ public class EffectComponent { } static DataComponent register(@NotNull String name, @Nullable BinaryTagSerializer nbt) { - DataComponent impl = DataComponent.createHeadless(NAMESPACES.size(), NamespaceID.from(name), null, nbt); + DataComponent impl = DataComponent.createHeadless(NAMESPACES.size(), Key.key(name), null, nbt); NAMESPACES.put(impl.name(), impl); IDS.set(impl.id(), impl); return impl; diff --git a/src/main/java/net/minestom/server/item/enchant/Enchantment.java b/src/main/java/net/minestom/server/item/enchant/Enchantment.java index 91b345b06d4..20f34b8a336 100644 --- a/src/main/java/net/minestom/server/item/enchant/Enchantment.java +++ b/src/main/java/net/minestom/server/item/enchant/Enchantment.java @@ -1,5 +1,6 @@ package net.minestom.server.item.enchant; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.text.Component; import net.minestom.server.component.DataComponent; @@ -16,8 +17,8 @@ import java.util.List; public sealed interface Enchantment extends ProtocolObject, Enchantments permits EnchantmentImpl { - @NotNull NetworkBuffer.Type> NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::enchantment); - @NotNull BinaryTagSerializer> NBT_TYPE = BinaryTagSerializer.registryKey(Registries::enchantment); + @NotNull NetworkBuffer.Type NETWORK_TYPE = NetworkBuffer.RegistryKey(Registries::enchantment); + @NotNull BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.registryKey(Registries::enchantment); static @NotNull Builder builder() { return new Builder(); diff --git a/src/main/java/net/minestom/server/item/enchant/EntityEffect.java b/src/main/java/net/minestom/server/item/enchant/EntityEffect.java index cdd2edb7e50..a183c10d397 100644 --- a/src/main/java/net/minestom/server/item/enchant/EntityEffect.java +++ b/src/main/java/net/minestom/server/item/enchant/EntityEffect.java @@ -1,5 +1,6 @@ package net.minestom.server.item.enchant; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.entity.damage.DamageType; import net.minestom.server.gamedata.DataPack; @@ -80,7 +81,7 @@ record ApplyPotionEffect( } record DamageEntity( - @NotNull DynamicRegistry.Key damageType, + @NotNull Key damageType, @NotNull LevelBasedValue minDamage, @NotNull LevelBasedValue maxDamage ) implements EntityEffect, LocationEffect { diff --git a/src/main/java/net/minestom/server/network/NetworkBuffer.java b/src/main/java/net/minestom/server/network/NetworkBuffer.java index 3944320ecc8..c979543660e 100644 --- a/src/main/java/net/minestom/server/network/NetworkBuffer.java +++ b/src/main/java/net/minestom/server/network/NetworkBuffer.java @@ -1,5 +1,6 @@ package net.minestom.server.network; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.text.Component; import net.minestom.server.MinecraftServer; @@ -49,7 +50,7 @@ public final class NetworkBuffer { public static final Type VAR_INT_ARRAY = new NetworkBufferTypeImpl.VarIntArrayType(); public static final Type VAR_LONG_ARRAY = new NetworkBufferTypeImpl.VarLongArrayType(); - public static @NotNull Type> RegistryKey(@NotNull Function> selector) { + public static @NotNull Type RegistryKey(@NotNull Function> selector) { return new NetworkBufferTypeImpl.RegistryTypeType<>(selector); } diff --git a/src/main/java/net/minestom/server/network/NetworkBufferTypeImpl.java b/src/main/java/net/minestom/server/network/NetworkBufferTypeImpl.java index 8a790a79a22..abb7333c3e3 100644 --- a/src/main/java/net/minestom/server/network/NetworkBufferTypeImpl.java +++ b/src/main/java/net/minestom/server/network/NetworkBufferTypeImpl.java @@ -1,5 +1,6 @@ package net.minestom.server.network; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; @@ -260,6 +261,7 @@ public Long read(@NotNull NetworkBuffer buffer) { record RawBytesType() implements NetworkBufferTypeImpl { @Override public void write(@NotNull NetworkBuffer buffer, byte[] value) { + if (value.length == 0) return; buffer.ensureSize(value.length); buffer.nioBuffer.put(buffer.writeIndex(), value); buffer.writeIndex += value.length; @@ -626,9 +628,9 @@ public List read(@NotNull NetworkBuffer buffer) { } } - record RegistryTypeType(@NotNull Function> selector) implements NetworkBufferTypeImpl> { + record RegistryTypeType(@NotNull Function> selector) implements NetworkBufferTypeImpl { @Override - public void write(@NotNull NetworkBuffer buffer, DynamicRegistry.Key value) { + public void write(@NotNull NetworkBuffer buffer, Key value) { Check.stateCondition(buffer.registries == null, "Buffer does not have registries"); final DynamicRegistry registry = selector.apply(buffer.registries); final int id = registry.getId(value); @@ -637,11 +639,11 @@ public void write(@NotNull NetworkBuffer buffer, DynamicRegistry.Key value) { } @Override - public DynamicRegistry.Key read(@NotNull NetworkBuffer buffer) { + public Key read(@NotNull NetworkBuffer buffer) { Check.stateCondition(buffer.registries == null, "Buffer does not have registries"); DynamicRegistry registry = selector.apply(buffer.registries); final int id = buffer.read(VAR_INT); - final DynamicRegistry.Key key = registry.getKey(id); + final Key key = registry.getKey(id); Check.argCondition(key == null, "No such ID in registry: {0} > {1}", registry, id); return key; } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/CookieStorePacket.java b/src/main/java/net/minestom/server/network/packet/server/common/CookieStorePacket.java index 42775547f86..a77fded879b 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/CookieStorePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/CookieStorePacket.java @@ -1,9 +1,9 @@ package net.minestom.server.network.packet.server.common; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; @@ -16,7 +16,7 @@ public record CookieStorePacket( Check.argCondition(value.length > MAX_VALUE_LENGTH, "Cookie value length too long: {0} > {1}", value.length, MAX_VALUE_LENGTH); } - public CookieStorePacket(@NotNull NamespaceID key, byte[] value) { + public CookieStorePacket(@NotNull Key key, byte[] value) { this(key.asString(), value); } diff --git a/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java b/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java index a819d0af3d6..ed17a5a4648 100644 --- a/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java @@ -1,20 +1,20 @@ package net.minestom.server.network.packet.server.configuration; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Set; import static net.minestom.server.network.NetworkBuffer.STRING; -public record UpdateEnabledFeaturesPacket(@NotNull Set features) implements ServerPacket.Configuration { +public record UpdateEnabledFeaturesPacket(@NotNull Set features) implements ServerPacket.Configuration { public static final int MAX_FEATURES = 64; public UpdateEnabledFeaturesPacket(@NotNull NetworkBuffer buffer) { - this(Set.copyOf(buffer.readCollection((b) -> NamespaceID.from(b.read(STRING)), MAX_FEATURES))); + this(Set.copyOf(buffer.readCollection((b) -> Key.key(b.read(STRING)), MAX_FEATURES))); } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java index b9811bab4ab..ba39c527fa3 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java @@ -1,5 +1,6 @@ package net.minestom.server.network.packet.server.play; +import net.kyori.adventure.key.Key; import net.minestom.server.entity.GameMode; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; @@ -16,7 +17,7 @@ public record JoinGamePacket( int entityId, boolean isHardcore, List worlds, int maxPlayers, int viewDistance, int simulationDistance, boolean reducedDebugInfo, boolean enableRespawnScreen, boolean doLimitedCrafting, int dimensionType, - String world, long hashedSeed, GameMode gameMode, GameMode previousGameMode, + Key dimensionName, long hashedSeed, GameMode gameMode, GameMode previousGameMode, boolean isDebug, boolean isFlat, @Nullable WorldPos deathLocation, int portalCooldown, boolean enforcesSecureChat ) implements ServerPacket.Play { @@ -38,7 +39,7 @@ public JoinGamePacket(@NotNull NetworkBuffer reader) { reader.read(BOOLEAN), reader.read(BOOLEAN), reader.read(VAR_INT), - reader.read(STRING), + Key.key(reader.read(STRING)), reader.read(LONG), GameMode.fromId(reader.read(BYTE)), getNullableGameMode(reader.read(BYTE)), @@ -62,7 +63,7 @@ public void write(@NotNull NetworkBuffer writer) { writer.write(BOOLEAN, enableRespawnScreen); writer.write(BOOLEAN, doLimitedCrafting); writer.write(VAR_INT, dimensionType); - writer.write(STRING, world); + writer.write(STRING, dimensionName.asString()); writer.write(LONG, hashedSeed); writer.write(BYTE, gameMode.id()); if (previousGameMode != null) { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java index 2c96d1c3cbe..c2304eb1dc0 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java @@ -1,5 +1,6 @@ package net.minestom.server.network.packet.server.play; +import net.kyori.adventure.key.Key; import net.minestom.server.entity.GameMode; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; @@ -21,6 +22,18 @@ public record RespawnPacket( public static final int COPY_METADATA = 0x2; public static final int COPY_ALL = COPY_ATTRIBUTES | COPY_METADATA; + public RespawnPacket( + int dimensionType, @NotNull Key dimensionName, + long hashedSeed, @NotNull GameMode gameMode, @NotNull GameMode previousGameMode, + boolean isDebug, boolean isFlat, @Nullable WorldPos deathLocation, + int portalCooldown, int copyData + ) { + this(dimensionType, dimensionName.asString(), + hashedSeed, gameMode, previousGameMode, + isDebug, isFlat, deathLocation, + portalCooldown, copyData); + } + public RespawnPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(STRING), reader.read(LONG), GameMode.fromId(reader.read(BYTE)), diff --git a/src/main/java/net/minestom/server/network/packet/server/play/data/WorldPos.java b/src/main/java/net/minestom/server/network/packet/server/play/data/WorldPos.java index 42b2d542277..96b48ebd159 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/data/WorldPos.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/data/WorldPos.java @@ -1,5 +1,6 @@ package net.minestom.server.network.packet.server.play.data; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.coordinate.Point; import net.minestom.server.network.NetworkBuffer; @@ -9,32 +10,33 @@ import static net.minestom.server.network.NetworkBuffer.BLOCK_POSITION; import static net.minestom.server.network.NetworkBuffer.STRING; -public record WorldPos(@NotNull String dimension, @NotNull Point blockPosition) implements NetworkBuffer.Writer { +public record WorldPos(@NotNull Key dimension, @NotNull Point blockPosition) implements NetworkBuffer.Writer { + public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type() { @Override public void write(@NotNull NetworkBuffer buffer, WorldPos value) { - buffer.write(NetworkBuffer.STRING, value.dimension); + buffer.write(NetworkBuffer.STRING, value.dimension.asString()); buffer.write(NetworkBuffer.BLOCK_POSITION, value.blockPosition); } @Override public WorldPos read(@NotNull NetworkBuffer buffer) { - return new WorldPos(buffer.read(NetworkBuffer.STRING), buffer.read(NetworkBuffer.BLOCK_POSITION)); + return new WorldPos(Key.key(buffer.read(NetworkBuffer.STRING)), buffer.read(NetworkBuffer.BLOCK_POSITION)); } }; public static final BinaryTagSerializer NBT_TYPE = BinaryTagSerializer.COMPOUND.map( - tag -> new WorldPos(tag.getString("dimension"), BinaryTagSerializer.BLOCK_POSITION.read(tag.get("pos"))), + tag -> new WorldPos(Key.key(tag.getString("dimension")), BinaryTagSerializer.BLOCK_POSITION.read(tag.get("pos"))), pos -> CompoundBinaryTag.builder() - .putString("dimension", pos.dimension) + .putString("dimension", pos.dimension.asString()) .put("pos", BinaryTagSerializer.BLOCK_POSITION.write(pos.blockPosition)) .build() ); public WorldPos(@NotNull NetworkBuffer reader) { - this(reader.read(STRING), reader.read(BLOCK_POSITION)); + this(Key.key(reader.read(STRING)), reader.read(BLOCK_POSITION)); } - public @NotNull WorldPos withDimension(@NotNull String dimension) { + public @NotNull WorldPos withDimension(@NotNull Key dimension) { return new WorldPos(dimension, blockPosition); } @@ -44,7 +46,7 @@ public WorldPos(@NotNull NetworkBuffer reader) { @Override public void write(@NotNull NetworkBuffer writer) { - writer.write(STRING, dimension); + writer.write(STRING, dimension.asString()); writer.write(BLOCK_POSITION, blockPosition); } diff --git a/src/main/java/net/minestom/server/network/player/PlayerConnection.java b/src/main/java/net/minestom/server/network/player/PlayerConnection.java index 06cdd5da91b..b530570be42 100644 --- a/src/main/java/net/minestom/server/network/player/PlayerConnection.java +++ b/src/main/java/net/minestom/server/network/player/PlayerConnection.java @@ -1,5 +1,6 @@ package net.minestom.server.network.player; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.crypto.PlayerPublicKey; import net.minestom.server.entity.Entity; @@ -12,7 +13,6 @@ import net.minestom.server.network.packet.server.common.CookieStorePacket; import net.minestom.server.network.packet.server.configuration.SelectKnownPacksPacket; import net.minestom.server.network.plugin.LoginPluginMessageProcessor; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -40,7 +40,7 @@ public abstract class PlayerConnection { private CompletableFuture> knownPacksFuture = null; // Present only when waiting for a response from the client. - private final Map> pendingCookieRequests = new ConcurrentHashMap<>(); + private final Map> pendingCookieRequests = new ConcurrentHashMap<>(); public PlayerConnection() { this.online = true; @@ -190,14 +190,14 @@ public void storeCookie(@NotNull String key, byte @NotNull [] data) { public CompletableFuture fetchCookie(@NotNull String key) { CompletableFuture future = new CompletableFuture<>(); - pendingCookieRequests.put(NamespaceID.from(key), future); + pendingCookieRequests.put(Key.key(key), future); sendPacket(new CookieRequestPacket(key)); return future; } @ApiStatus.Internal public void receiveCookieResponse(@NotNull String key, byte @Nullable [] data) { - CompletableFuture future = pendingCookieRequests.remove(NamespaceID.from(key)); + CompletableFuture future = pendingCookieRequests.remove(Key.key(key)); if (future != null) { future.complete(data); } diff --git a/src/main/java/net/minestom/server/particle/Particle.java b/src/main/java/net/minestom/server/particle/Particle.java index ecf08689a5d..651e5da7b48 100644 --- a/src/main/java/net/minestom/server/particle/Particle.java +++ b/src/main/java/net/minestom/server/particle/Particle.java @@ -1,5 +1,6 @@ package net.minestom.server.particle; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTagTypes; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.nbt.FloatBinaryTag; @@ -11,7 +12,6 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -49,7 +49,7 @@ public Particle read(@NotNull NetworkBuffer buffer) { return ParticleImpl.getSafe(namespaceID); } - static @Nullable Particle fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable Particle fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } @@ -63,7 +63,7 @@ public Particle read(@NotNull NetworkBuffer buffer) { @NotNull CompoundBinaryTag toNbt(); - record Simple(@NotNull NamespaceID namespace, int id) implements Particle { + record Simple(@NotNull Key namespace, int id) implements Particle { @Override public @NotNull Particle readData(@NotNull NetworkBuffer reader) { return this; @@ -81,7 +81,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record Block(@NotNull NamespaceID namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { + record Block(@NotNull Key namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { @Contract(pure = true) public @NotNull Block withBlock(@NotNull net.minestom.server.instance.block.Block block) { @@ -107,7 +107,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record BlockMarker(@NotNull NamespaceID namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { + record BlockMarker(@NotNull Key namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { @Contract(pure = true) public @NotNull BlockMarker withBlock(@NotNull net.minestom.server.instance.block.Block block) { @@ -134,7 +134,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } - record Dust(@NotNull NamespaceID namespace, int id, @NotNull RGBLike color, float scale) implements Particle { + record Dust(@NotNull Key namespace, int id, @NotNull RGBLike color, float scale) implements Particle { @Contract (pure = true) public @NotNull Dust withProperties(@NotNull RGBLike color, float scale) { @@ -184,7 +184,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record DustColorTransition(@NotNull NamespaceID namespace, int id, @NotNull RGBLike color, @NotNull RGBLike transitionColor, float scale) implements Particle { + record DustColorTransition(@NotNull Key namespace, int id, @NotNull RGBLike color, @NotNull RGBLike transitionColor, float scale) implements Particle { @Contract (pure = true) public @NotNull DustColorTransition withProperties(@NotNull RGBLike color, @NotNull RGBLike transitionColor, float scale) { @@ -253,7 +253,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record DustPillar(@NotNull NamespaceID namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { + record DustPillar(@NotNull Key namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { @Contract(pure = true) public @NotNull DustPillar withBlock(@NotNull net.minestom.server.instance.block.Block block) { @@ -280,7 +280,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } - record FallingDust(@NotNull NamespaceID namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { + record FallingDust(@NotNull Key namespace, int id, @NotNull net.minestom.server.instance.block.Block block) implements Particle { @Contract(pure = true) public @NotNull FallingDust withBlock(@NotNull net.minestom.server.instance.block.Block block) { @@ -307,7 +307,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } - record Item(@NotNull NamespaceID namespace, int id, @NotNull ItemStack item) implements Particle { + record Item(@NotNull Key namespace, int id, @NotNull ItemStack item) implements Particle { @Contract(pure = true) public @NotNull Item withItem(@NotNull ItemStack item) { @@ -333,7 +333,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record EntityEffect(@NotNull NamespaceID namespace, int id, @NotNull AlphaColor color) implements Particle { + record EntityEffect(@NotNull Key namespace, int id, @NotNull AlphaColor color) implements Particle { @Contract(pure = true) public @NotNull EntityEffect withColor(@NotNull AlphaColor color) { @@ -371,7 +371,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record SculkCharge(@NotNull NamespaceID namespace, int id, float roll) implements Particle { + record SculkCharge(@NotNull Key namespace, int id, float roll) implements Particle { @Contract(pure = true) public @NotNull SculkCharge withRoll(float roll) { @@ -398,7 +398,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record Shriek(@NotNull NamespaceID namespace, int id, int delay) implements Particle { + record Shriek(@NotNull Key namespace, int id, int delay) implements Particle { @Contract(pure = true) public @NotNull Shriek withDelay(int delay) { @@ -424,7 +424,7 @@ public void writeData(@NotNull NetworkBuffer writer) { } } - record Vibration(@NotNull NamespaceID namespace, int id, @NotNull SourceType sourceType, @Nullable Point sourceBlockPosition, int sourceEntityId, float sourceEntityEyeHeight, int travelTicks) implements Particle { + record Vibration(@NotNull Key namespace, int id, @NotNull SourceType sourceType, @Nullable Point sourceBlockPosition, int sourceEntityId, float sourceEntityEyeHeight, int travelTicks) implements Particle { @Contract(pure = true) public @NotNull Vibration withProperties(@NotNull SourceType sourceType, @Nullable Point sourceBlockPosition, diff --git a/src/main/java/net/minestom/server/particle/ParticleImpl.java b/src/main/java/net/minestom/server/particle/ParticleImpl.java index 62e85aa3271..acbd8211f00 100644 --- a/src/main/java/net/minestom/server/particle/ParticleImpl.java +++ b/src/main/java/net/minestom/server/particle/ParticleImpl.java @@ -1,19 +1,19 @@ package net.minestom.server.particle; +import net.kyori.adventure.key.Key; import net.minestom.server.color.AlphaColor; import net.minestom.server.color.Color; import net.minestom.server.coordinate.Vec; import net.minestom.server.instance.block.Block; import net.minestom.server.item.ItemStack; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; final class ParticleImpl { private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.PARTICLES, - (namespace, properties) -> defaultParticle(NamespaceID.from(namespace), properties.getInt("id"))); + (namespace, properties) -> defaultParticle(Key.key(namespace), properties.getInt("id"))); static Particle get(@NotNull String namespace) { return CONTAINER.get(namespace); @@ -31,7 +31,7 @@ static Collection values() { return CONTAINER.values(); } - private static Particle defaultParticle(@NotNull NamespaceID namespace, int id) { + private static Particle defaultParticle(@NotNull Key namespace, int id) { return switch (namespace.asString()) { case "minecraft:block" -> new Particle.Block(namespace, id, Block.STONE); case "minecraft:block_marker" -> new Particle.BlockMarker(namespace, id, Block.STONE); diff --git a/src/main/java/net/minestom/server/potion/PotionEffect.java b/src/main/java/net/minestom/server/potion/PotionEffect.java index 69da6a5975a..50a7842ba7f 100644 --- a/src/main/java/net/minestom/server/potion/PotionEffect.java +++ b/src/main/java/net/minestom/server/potion/PotionEffect.java @@ -1,9 +1,9 @@ package net.minestom.server.potion; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,7 +18,7 @@ public sealed interface PotionEffect extends StaticProtocolObject, PotionEffects @NotNull Registry.PotionEffectEntry registry(); @Override - default @NotNull NamespaceID namespace() { + default @NotNull Key namespace() { return registry().namespace(); } @@ -35,7 +35,7 @@ default int id() { return PotionEffectImpl.getSafe(namespaceID); } - static @Nullable PotionEffect fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable PotionEffect fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/potion/PotionType.java b/src/main/java/net/minestom/server/potion/PotionType.java index 5e28ba308ac..ae1773aa575 100644 --- a/src/main/java/net/minestom/server/potion/PotionType.java +++ b/src/main/java/net/minestom/server/potion/PotionType.java @@ -1,7 +1,7 @@ package net.minestom.server.potion; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,7 +17,7 @@ public sealed interface PotionType extends StaticProtocolObject, PotionTypes per return PotionTypeImpl.getSafe(namespaceID); } - static @Nullable PotionType fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable PotionType fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/potion/PotionTypeImpl.java b/src/main/java/net/minestom/server/potion/PotionTypeImpl.java index 719a7cc6ce7..55dccf98e48 100644 --- a/src/main/java/net/minestom/server/potion/PotionTypeImpl.java +++ b/src/main/java/net/minestom/server/potion/PotionTypeImpl.java @@ -1,16 +1,16 @@ package net.minestom.server.potion; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; -record PotionTypeImpl(NamespaceID namespace, int id) implements PotionType { +record PotionTypeImpl(Key namespace, int id) implements PotionType { private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.POTION_TYPES, PotionTypeImpl::createImpl); private static PotionType createImpl(String namespace, Registry.Properties properties) { - return new PotionTypeImpl(NamespaceID.from(namespace), properties.getInt("id")); + return new PotionTypeImpl(Key.key(namespace), properties.getInt("id")); } static PotionType get(@NotNull String namespace) { diff --git a/src/main/java/net/minestom/server/registry/DynamicRegistry.java b/src/main/java/net/minestom/server/registry/DynamicRegistry.java index 456a09214a1..615235c32c9 100644 --- a/src/main/java/net/minestom/server/registry/DynamicRegistry.java +++ b/src/main/java/net/minestom/server/registry/DynamicRegistry.java @@ -1,13 +1,11 @@ package net.minestom.server.registry; -import net.kyori.adventure.key.Keyed; +import net.kyori.adventure.key.Key; import net.minestom.server.entity.Player; import net.minestom.server.gamedata.DataPack; import net.minestom.server.network.packet.server.SendablePacket; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,36 +26,6 @@ */ public sealed interface DynamicRegistry permits DynamicRegistryImpl { - /** - * A key for a {@link ProtocolObject} in a {@link DynamicRegistry}. - * - * @param Unused, except to provide compile-time safety and self documentation. - */ - sealed interface Key extends Keyed permits DynamicRegistryImpl.KeyImpl { - - static @NotNull Key of(@NotNull String namespace) { - return new DynamicRegistryImpl.KeyImpl<>(NamespaceID.from(namespace)); - } - - static @NotNull Key of(@NotNull NamespaceID namespace) { - return new DynamicRegistryImpl.KeyImpl<>(namespace); - } - - @Contract(pure = true) - @NotNull NamespaceID namespace(); - - @Contract(pure = true) - default @NotNull String name() { - return namespace().asString(); - } - - @Override - @Contract(pure = true) - default @NotNull net.kyori.adventure.key.Key key() { - return namespace(); - } - } - @ApiStatus.Internal static @NotNull DynamicRegistry create(@NotNull String id) { return new DynamicRegistryImpl<>(id, null); @@ -118,35 +86,23 @@ sealed interface Key extends Keyed permits DynamicRegistryImpl.KeyImpl { @NotNull String id(); @Nullable T get(int id); - @Nullable T get(@NotNull NamespaceID namespace); - default @Nullable T get(@NotNull Key key) { - return get(key.namespace()); - } + @Nullable T get(@NotNull net.kyori.adventure.key.Key namespace); - @Nullable Key getKey(int id); - @Nullable Key getKey(@NotNull T value); - @Nullable NamespaceID getName(int id); + @Nullable net.kyori.adventure.key.Key getKey(int id); + @Nullable net.kyori.adventure.key.Key getKey(@NotNull T value); + @Nullable net.kyori.adventure.key.Key getName(int id); @Nullable DataPack getPack(int id); - default @Nullable DataPack getPack(@NotNull Key key) { + default @Nullable DataPack getPack(@NotNull net.kyori.adventure.key.Key key) { final int id = getId(key); return id == -1 ? null : getPack(id); } /** - * Returns the protocol ID associated with the given {@link NamespaceID}, or -1 if none is registered. - * - * @see #register(NamespaceID, T) - */ - int getId(@NotNull NamespaceID id); - - /** - * Returns the protocol ID associated with the given {@link Key}, or -1 if none is registered. + * Returns the protocol ID associated with the given {@link net.kyori.adventure.key.Key}, or -1 if none is registered. * - * @see #register(NamespaceID, T) + * @see #register(net.kyori.adventure.key.Key, T) */ - default int getId(@NotNull Key key) { - return getId(key.namespace()); - } + int getId(@NotNull net.kyori.adventure.key.Key id); /** @@ -173,21 +129,21 @@ default int getId(@NotNull Key key) { * @param object The entry to register * @return The new ID of the registered object */ - default @NotNull DynamicRegistry.Key register(@NotNull String id, @NotNull T object) { - return register(NamespaceID.from(id), object, null); + default @NotNull net.kyori.adventure.key.Key register(@NotNull String id, @NotNull T object) { + return register(net.kyori.adventure.key.Key.key(id), object, null); } - default @NotNull DynamicRegistry.Key register(@NotNull NamespaceID id, @NotNull T object) { + default @NotNull net.kyori.adventure.key.Key register(@NotNull net.kyori.adventure.key.Key id, @NotNull T object) { return register(id, object, null); } @ApiStatus.Internal - default @NotNull DynamicRegistry.Key register(@NotNull String id, @NotNull T object, @Nullable DataPack pack) { - return register(NamespaceID.from(id), object, pack); + default @NotNull net.kyori.adventure.key.Key register(@NotNull String id, @NotNull T object, @Nullable DataPack pack) { + return register(net.kyori.adventure.key.Key.key(id), object, pack); } @ApiStatus.Internal - default @NotNull DynamicRegistry.Key register(@NotNull NamespaceID id, @NotNull T object, @Nullable DataPack pack) { + default @NotNull net.kyori.adventure.key.Key register(@NotNull net.kyori.adventure.key.Key id, @NotNull T object, @Nullable DataPack pack) { return register(id, object); } @@ -207,11 +163,11 @@ default int getId(@NotNull Key key) { * @return True if the object was removed, false if it was not present * @throws UnsupportedOperationException If the system property minestom.registry.unsafe-remove is not set to true */ - boolean remove(@NotNull NamespaceID namespaceId) throws UnsupportedOperationException; + boolean remove(@NotNull net.kyori.adventure.key.Key namespaceId) throws UnsupportedOperationException; /** *

Returns a {@link SendablePacket} potentially excluding vanilla entries if possible. It is never possible to - * exclude vanilla entries if one has been overridden (e.g. via {@link #register(NamespaceID, T)}.

+ * exclude vanilla entries if one has been overridden (e.g. via {@link #register(net.kyori.adventure.key.Key, T)}.

* * @param excludeVanilla Whether to exclude vanilla entries * @return A {@link SendablePacket} containing the registry data diff --git a/src/main/java/net/minestom/server/registry/DynamicRegistryImpl.java b/src/main/java/net/minestom/server/registry/DynamicRegistryImpl.java index 48b4e6e1cbe..1438b170d72 100644 --- a/src/main/java/net/minestom/server/registry/DynamicRegistryImpl.java +++ b/src/main/java/net/minestom/server/registry/DynamicRegistryImpl.java @@ -9,7 +9,6 @@ import net.minestom.server.network.packet.server.CachedPacket; import net.minestom.server.network.packet.server.SendablePacket; import net.minestom.server.network.packet.server.configuration.RegistryDataPacket; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; @@ -19,7 +18,11 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.locks.ReentrantLock; @@ -28,33 +31,12 @@ final class DynamicRegistryImpl implements DynamicRegistry { private static final UnsupportedOperationException UNSAFE_REMOVE_EXCEPTION = new UnsupportedOperationException("Unsafe remove is disabled. Enable by setting the system property 'minestom.registry.unsafe-ops' to 'true'"); - record KeyImpl(@NotNull NamespaceID namespace) implements Key { - - @Override - public String toString() { - return namespace.asString(); - } - - @Override - public int hashCode() { - return namespace.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - KeyImpl key = (KeyImpl) obj; - return namespace.equals(key.namespace); - } - } - private final CachedPacket vanillaRegistryDataPacket = new CachedPacket(() -> createRegistryDataPacket(true)); private final ReentrantLock lock = new ReentrantLock(); // Protects writes private final List entryById = new CopyOnWriteArrayList<>(); - private final Map entryByName = new ConcurrentHashMap<>(); - private final List idByName = new CopyOnWriteArrayList<>(); + private final Map entryByName = new ConcurrentHashMap<>(); + private final List idByName = new CopyOnWriteArrayList<>(); private final List packById = new CopyOnWriteArrayList<>(); private final String id; @@ -83,25 +65,25 @@ public boolean equals(Object obj) { } @Override - public @Nullable T get(@NotNull NamespaceID namespace) { + public @Nullable T get(@NotNull net.kyori.adventure.key.Key namespace) { return entryByName.get(namespace); } @Override - public @Nullable Key getKey(@NotNull T value) { + public @Nullable net.kyori.adventure.key.Key getKey(@NotNull T value) { int index = entryById.indexOf(value); - return index == -1 ? null : getKey(index); + return index == -1 ? null : getKey(index).key(); } @Override - public @Nullable Key getKey(int id) { + public @Nullable net.kyori.adventure.key.Key getKey(int id) { if (id < 0 || id >= entryById.size()) return null; - return Key.of(idByName.get(id)); + return idByName.get(id); } @Override - public @Nullable NamespaceID getName(int id) { + public @Nullable net.kyori.adventure.key.Key getName(int id) { if (id < 0 || id >= entryById.size()) return null; return idByName.get(id); @@ -115,7 +97,7 @@ public boolean equals(Object obj) { } @Override - public int getId(@NotNull NamespaceID id) { + public int getId(@NotNull net.kyori.adventure.key.Key id) { return idByName.indexOf(id); } @@ -125,7 +107,7 @@ public int getId(@NotNull NamespaceID id) { } @Override - public @NotNull DynamicRegistry.Key register(@NotNull NamespaceID namespaceId, @NotNull T object, @Nullable DataPack pack) { + public @NotNull net.kyori.adventure.key.Key register(@NotNull net.kyori.adventure.key.Key namespaceId, @NotNull T object, @Nullable DataPack pack) { // This check is disabled in tests because we remake server processes over and over. // todo: re-enable this check // Check.stateCondition((!DebugUtils.INSIDE_TEST && MinecraftServer.process() != null && !MinecraftServer.isStarted()) && !ServerFlag.REGISTRY_LATE_REGISTER, @@ -144,14 +126,14 @@ public int getId(@NotNull NamespaceID id) { idByName.add(namespaceId); packById.add(id, pack); vanillaRegistryDataPacket.invalidate(); - return Key.of(namespaceId); + return namespaceId; } finally { lock.unlock(); } } @Override - public boolean remove(@NotNull NamespaceID namespaceId) throws UnsupportedOperationException { + public boolean remove(@NotNull net.kyori.adventure.key.Key namespaceId) throws UnsupportedOperationException { if (!ServerFlag.REGISTRY_UNSAFE_OPS) throw UNSAFE_REMOVE_EXCEPTION; lock.lock(); @@ -197,7 +179,7 @@ public boolean remove(@NotNull NamespaceID namespaceId) throws UnsupportedOperat data = (CompoundBinaryTag) nbtType.write(context, entry); } //noinspection DataFlowIssue - entries.add(new RegistryDataPacket.Entry(getKey(i).name(), data)); + entries.add(new RegistryDataPacket.Entry(getKey(i).asString(), data)); } return new RegistryDataPacket(id, entries); } diff --git a/src/main/java/net/minestom/server/registry/ObjectSet.java b/src/main/java/net/minestom/server/registry/ObjectSet.java index 4d2ceaebe1e..8e27f71353f 100644 --- a/src/main/java/net/minestom/server/registry/ObjectSet.java +++ b/src/main/java/net/minestom/server/registry/ObjectSet.java @@ -1,7 +1,7 @@ package net.minestom.server.registry; +import net.kyori.adventure.key.Key; import net.minestom.server.gamedata.tags.Tag; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; @@ -20,7 +20,7 @@ public sealed interface ObjectSet permits ObjectSetImp return (ObjectSet) ObjectSetImpl.Empty.INSTANCE; } - static @NotNull ObjectSet of(@NotNull Collection entries) { + static @NotNull ObjectSet of(@NotNull Collection entries) { return new ObjectSetImpl.Entries<>(Set.copyOf(entries)); } @@ -44,10 +44,6 @@ default boolean contains(@NotNull StaticProtocolObject object) { return contains(object.namespace()); } - default boolean contains(@NotNull DynamicRegistry.Key key) { - return contains(key.namespace()); - } - - boolean contains(@NotNull NamespaceID namespace); + boolean contains(@NotNull Key namespace); } diff --git a/src/main/java/net/minestom/server/registry/ObjectSetImpl.java b/src/main/java/net/minestom/server/registry/ObjectSetImpl.java index 9d42bcd3a68..e87cfac51c1 100644 --- a/src/main/java/net/minestom/server/registry/ObjectSetImpl.java +++ b/src/main/java/net/minestom/server/registry/ObjectSetImpl.java @@ -1,11 +1,11 @@ package net.minestom.server.registry; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.BinaryTagTypes; import net.kyori.adventure.nbt.ListBinaryTag; import net.kyori.adventure.nbt.StringBinaryTag; import net.minestom.server.MinecraftServer; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; @@ -20,19 +20,19 @@ record Empty() implements ObjectSetImpl { static final Empty INSTANCE = new Empty<>(); @Override - public boolean contains(@NotNull NamespaceID namespace) { + public boolean contains(@NotNull Key namespace) { return false; } } - record Entries(@NotNull Set entries) implements ObjectSetImpl { + record Entries(@NotNull Set entries) implements ObjectSetImpl { public Entries { entries = Set.copyOf(entries); } @Override - public boolean contains(@NotNull NamespaceID namespace) { + public boolean contains(@NotNull Key namespace) { return entries.contains(namespace); } } @@ -40,7 +40,7 @@ public boolean contains(@NotNull NamespaceID namespace) { final class Tag implements ObjectSetImpl { private final net.minestom.server.gamedata.tags.Tag.BasicType tagType; private final String name; - private volatile Set value = null; + private volatile Set value = null; public Tag(@NotNull net.minestom.server.gamedata.tags.Tag.BasicType tagType, @NotNull String name) { this.tagType = tagType; @@ -57,7 +57,7 @@ public Tag(@NotNull net.minestom.server.gamedata.tags.Tag tag) { return name; } - public Set value() { + public Set value() { if (value == null) { synchronized (this) { if (value == null) { @@ -70,7 +70,7 @@ public Set value() { } @Override - public boolean contains(@NotNull NamespaceID namespace) { + public boolean contains(@NotNull Key namespace) { return value().contains(namespace); } } @@ -86,11 +86,11 @@ record NbtType( case ListBinaryTag list -> { if (list.size() == 0) yield ObjectSet.empty(); - final Set entries = new HashSet<>(list.size()); + final Set entries = new HashSet<>(list.size()); for (BinaryTag entryTag : list) { if (!(entryTag instanceof StringBinaryTag stringTag)) throw new IllegalArgumentException("Invalid entry type: " + entryTag.type()); - entries.add(NamespaceID.from(stringTag.value())); + entries.add(Key.key(stringTag.value())); } yield new Entries<>(entries); } @@ -100,7 +100,7 @@ record NbtType( if (value.startsWith("#")) { yield new Tag<>(tagType(), value.substring(1)); } else { - yield new Entries<>(Set.of(NamespaceID.from(value))); + yield new Entries<>(Set.of(Key.key(value))); } } default -> throw new IllegalArgumentException("Invalid tag type: " + tag.type()); @@ -115,7 +115,7 @@ record NbtType( if (entries.entries.size() == 1) yield stringBinaryTag(entries.entries.stream().findFirst().get().asString()); ListBinaryTag.Builder builder = ListBinaryTag.builder(BinaryTagTypes.STRING); - for (NamespaceID entry : entries.entries) + for (Key entry : entries.entries) builder.add(stringBinaryTag(entry.asString())); yield builder.build(); } diff --git a/src/main/java/net/minestom/server/registry/Registry.java b/src/main/java/net/minestom/server/registry/Registry.java index 30f2a558929..30019def8bb 100644 --- a/src/main/java/net/minestom/server/registry/Registry.java +++ b/src/main/java/net/minestom/server/registry/Registry.java @@ -4,6 +4,7 @@ import com.google.gson.JsonObject; import com.google.gson.ToNumberPolicy; import com.google.gson.stream.JsonReader; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.BinaryTag; import net.kyori.adventure.nbt.TagStringIOExt; import net.kyori.adventure.text.Component; @@ -24,7 +25,6 @@ import net.minestom.server.item.Material; import net.minestom.server.message.ChatTypeDecoration; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.collection.ObjectArray; import net.minestom.server.utils.nbt.BinaryTagSerializer; import net.minestom.server.utils.validate.Check; @@ -35,7 +35,14 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -273,21 +280,21 @@ public enum Resource { } public record FluidEntry( - @NotNull NamespaceID namespace, - @NotNull NamespaceID bucketId, + @NotNull Key namespace, + @NotNull Key bucketId, @Nullable Properties custom ) implements Entry { public FluidEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), - NamespaceID.from(main.getString("bucketId")), + this(Key.key(namespace), + Key.key(main.getString("bucketId")), custom ); } } public static final class BlockEntry implements Entry { - private final NamespaceID namespace; + private final Key namespace; private final int id; private final int stateId; private final String translationKey; @@ -312,7 +319,7 @@ public static final class BlockEntry implements Entry { private BlockEntry(String namespace, Properties main, Properties custom) { this.custom = custom; - this.namespace = NamespaceID.from(namespace); + this.namespace = Key.key(namespace); this.id = main.getInt("id"); this.stateId = main.getInt("stateId"); this.translationKey = main.getString("translationKey"); @@ -350,7 +357,7 @@ private BlockEntry(String namespace, Properties main, Properties custom) { this.signalSource = main.getBoolean("signalSource", false); } - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return namespace; } @@ -445,7 +452,7 @@ public Properties custom() { } public record DimensionTypeEntry( - NamespaceID namespace, + Key namespace, boolean ultrawarm, boolean natural, double coordinateScale, @@ -466,7 +473,7 @@ public record DimensionTypeEntry( ) implements Entry { public DimensionTypeEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getBoolean("ultrawarm"), main.getBoolean("natural"), main.getDouble("coordinate_scale"), @@ -489,7 +496,7 @@ public DimensionTypeEntry(String namespace, Properties main, Properties custom) public static final class BiomeEntry implements Entry { private final Properties custom; - private final NamespaceID namespace; + private final Key namespace; private final Integer foliageColor; private final Integer grassColor; private final Integer skyColor; @@ -502,7 +509,7 @@ public static final class BiomeEntry implements Entry { private BiomeEntry(String namespace, Properties main, Properties custom) { this.custom = custom; - this.namespace = NamespaceID.from(namespace); + this.namespace = Key.key(namespace); this.foliageColor = main.containsKey("foliageColor") ? main.getInt("foliageColor") : null; this.grassColor = main.containsKey("grassColor") ? main.getInt("grassColor") : null; @@ -521,7 +528,7 @@ public Properties custom() { return custom; } - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return namespace; } @@ -562,14 +569,14 @@ public boolean hasPrecipitation() { } } - public static final record GameEventEntry(NamespaceID namespace, Properties main, Properties custom) implements Entry { + public static final record GameEventEntry(Key namespace, Properties main, Properties custom) implements Entry { public GameEventEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), main, custom); + this(Key.key(namespace), main, custom); } } public static final class MaterialEntry implements Entry { - private final NamespaceID namespace; + private final Key namespace; private final Properties main; private final int id; private final String translationKey; @@ -583,7 +590,7 @@ public static final class MaterialEntry implements Entry { private MaterialEntry(String namespace, Properties main, Properties custom) { this.main = main; this.custom = custom; - this.namespace = NamespaceID.from(namespace); + this.namespace = Key.key(namespace); this.id = main.getInt("id"); this.translationKey = main.getString("translationKey"); { @@ -614,7 +621,7 @@ private MaterialEntry(String namespace, Properties main, Properties custom) { } } - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return namespace; } @@ -676,7 +683,7 @@ public Properties custom() { } public static final class EntityEntry implements Entry { - private final NamespaceID namespace; + private final Key namespace; private final int id; private final String translationKey; private final double drag; @@ -689,7 +696,7 @@ public static final class EntityEntry implements Entry { private final Properties custom; public EntityEntry(String namespace, Properties main, Properties custom) { - this.namespace = NamespaceID.from(namespace); + this.namespace = Key.key(namespace); this.id = main.getInt("id"); this.translationKey = main.getString("translationKey"); this.drag = main.getDouble("drag", 0.02); @@ -711,7 +718,7 @@ public EntityEntry(String namespace, Properties main, Properties custom) { this.custom = custom; } - public @NotNull NamespaceID namespace() { + public @NotNull Key namespace() { return namespace; } @@ -757,23 +764,23 @@ public Properties custom() { } } - public record FeatureFlagEntry(NamespaceID namespace, int id, Properties custom) implements Entry { + public record FeatureFlagEntry(Key namespace, int id, Properties custom) implements Entry { public FeatureFlagEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getInt("id"), null ); } } - public record DamageTypeEntry(NamespaceID namespace, float exhaustion, + public record DamageTypeEntry(Key namespace, float exhaustion, String messageId, String scaling, @Nullable String effects, @Nullable String deathMessageType, Properties custom) implements Entry { public DamageTypeEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), (float) main.getDouble("exhaustion"), main.getString("message_id"), main.getString("scaling"), @@ -783,7 +790,7 @@ public DamageTypeEntry(String namespace, Properties main, Properties custom) { } } - public record TrimMaterialEntry(@NotNull NamespaceID namespace, + public record TrimMaterialEntry(@NotNull Key namespace, @NotNull String assetName, @NotNull Material ingredient, float itemModelIndex, @@ -792,7 +799,7 @@ public record TrimMaterialEntry(@NotNull NamespaceID namespace, Properties custom) implements Entry { public TrimMaterialEntry(@NotNull String namespace, @NotNull Properties main, Properties custom) { this( - NamespaceID.from(namespace), + Key.key(namespace), main.getString("asset_name"), Objects.requireNonNull(Material.fromNamespaceId(main.getString("ingredient"))), (float) main.getDouble("item_model_index"), @@ -804,16 +811,16 @@ public TrimMaterialEntry(@NotNull String namespace, @NotNull Properties main, Pr } } - public record TrimPatternEntry(@NotNull NamespaceID namespace, - @NotNull NamespaceID assetID, + public record TrimPatternEntry(@NotNull Key namespace, + @NotNull Key assetID, @NotNull Material template, @NotNull Component description, boolean decal, Properties custom) implements Entry { public TrimPatternEntry(@NotNull String namespace, @NotNull Properties main, Properties custom) { this( - NamespaceID.from(namespace), - NamespaceID.from(main.getString("asset_id")), + Key.key(namespace), + Key.key(main.getString("asset_id")), Objects.requireNonNull(Material.fromNamespaceId(main.getString("template_item"))), JSONComponentSerializer.json().deserialize(main.section("description").toString()), main.getBoolean("decal"), @@ -822,32 +829,33 @@ public TrimPatternEntry(@NotNull String namespace, @NotNull Properties main, Pro } } - public record VillagerProfession(NamespaceID namespace, int id, SoundEvent soundEvent, Properties custom) implements Entry { + public record VillagerProfession(Key namespace, int id, SoundEvent soundEvent, Properties custom) implements Entry { public VillagerProfession(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getInt("id"), SoundEvent.fromNamespaceId(main.getString("workSound")), custom); } } - public record VillagerType(NamespaceID namespace, int id, Properties custom) implements Entry { + public record VillagerType(Key namespace, int id, Properties custom) implements Entry { public VillagerType(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getInt("id"), custom); } } - public record PotionEffectEntry(NamespaceID namespace, int id, + + public record PotionEffectEntry(Key namespace, int id, String translationKey, int color, boolean isInstantaneous, Properties custom) implements Entry { public PotionEffectEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getInt("id"), main.getString("translationKey"), main.getInt("color"), @@ -856,13 +864,13 @@ public PotionEffectEntry(String namespace, Properties main, Properties custom) { } } - public record AttributeEntry(NamespaceID namespace, int id, + public record AttributeEntry(Key namespace, int id, String translationKey, double defaultValue, boolean clientSync, double maxValue, double minValue, Properties custom) implements Entry { public AttributeEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), main.getInt("id"), main.getString("translationKey"), main.getDouble("defaultValue"), @@ -873,21 +881,21 @@ public AttributeEntry(String namespace, Properties main, Properties custom) { } } - public record BannerPatternEntry(NamespaceID namespace, NamespaceID assetId, String translationKey, Properties custom) implements Entry { + public record BannerPatternEntry(Key namespace, Key assetId, String translationKey, Properties custom) implements Entry { public BannerPatternEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), - NamespaceID.from(main.getString("asset_id")), + this(Key.key(namespace), + Key.key(main.getString("asset_id")), main.getString("translation_key"), custom); } } - public record WolfVariantEntry(NamespaceID namespace, NamespaceID wildTexture, NamespaceID tameTexture, NamespaceID angryTexture, List biomes, Properties custom) implements Entry { + public record WolfVariantEntry(Key namespace, Key wildTexture, Key tameTexture, Key angryTexture, List biomes, Properties custom) implements Entry { public WolfVariantEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), - NamespaceID.from(main.getString("wild_texture")), - NamespaceID.from(main.getString("tame_texture")), - NamespaceID.from(main.getString("angry_texture")), + this(Key.key(namespace), + Key.key(main.getString("wild_texture")), + Key.key(main.getString("tame_texture")), + Key.key(main.getString("angry_texture")), readBiomesList(main.asMap().get("biomes")), custom); } @@ -904,19 +912,19 @@ public WolfVariantEntry(String namespace, Properties main, Properties custom) { } public static final class ChatTypeEntry implements Entry { - private final NamespaceID namespace; + private final Key namespace; private final ChatTypeDecoration chat; private final ChatTypeDecoration narration; private final Properties custom; public ChatTypeEntry(String namespace, Properties main, Properties custom) { - this.namespace = NamespaceID.from(namespace); + this.namespace = Key.key(namespace); this.chat = readChatTypeDecoration(main.section("chat")); this.narration = readChatTypeDecoration(main.section("narration")); this.custom = custom; } - public NamespaceID namespace() { + public Key namespace() { return namespace; } @@ -956,26 +964,26 @@ public Properties custom() { } - public record EnchantmentEntry(NamespaceID namespace, String raw, Properties custom) implements Entry { + public record EnchantmentEntry(Key namespace, String raw, Properties custom) implements Entry { public EnchantmentEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), main.getString("raw"), custom); + this(Key.key(namespace), main.getString("raw"), custom); } } - public record PaintingVariantEntry(NamespaceID namespace, NamespaceID assetId, int width, int height, Properties custom) implements Entry { + public record PaintingVariantEntry(Key namespace, Key assetId, int width, int height, Properties custom) implements Entry { public PaintingVariantEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), - NamespaceID.from(main.getString("asset_id")), + this(Key.key(namespace), + Key.key(main.getString("asset_id")), main.getInt("width"), main.getInt("height"), custom); } } - public record JukeboxSongEntry(NamespaceID namespace, SoundEvent soundEvent, Component description, + public record JukeboxSongEntry(Key namespace, SoundEvent soundEvent, Component description, float lengthInSeconds, int comparatorOutput, Properties custom) implements Entry { public JukeboxSongEntry(String namespace, Properties main, Properties custom) { - this(NamespaceID.from(namespace), + this(Key.key(namespace), SoundEvent.fromNamespaceId(main.getString("sound_event")), GsonComponentSerializer.gson().deserialize(main.section("description").toString()), (float) main.getDouble("length_in_seconds"), diff --git a/src/main/java/net/minestom/server/registry/StaticProtocolObject.java b/src/main/java/net/minestom/server/registry/StaticProtocolObject.java index 4ba895df31c..69fe82f5f91 100644 --- a/src/main/java/net/minestom/server/registry/StaticProtocolObject.java +++ b/src/main/java/net/minestom/server/registry/StaticProtocolObject.java @@ -2,7 +2,6 @@ import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Keyed; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -22,7 +21,7 @@ public interface StaticProtocolObject extends ProtocolObject, Keyed { * @return the namespace ID */ @Contract(pure = true) - @NotNull NamespaceID namespace(); + @NotNull Key namespace(); /** * Gets the name of this object. diff --git a/src/main/java/net/minestom/server/snapshot/InstanceSnapshot.java b/src/main/java/net/minestom/server/snapshot/InstanceSnapshot.java index 714a2da6d42..0f8688edfe0 100644 --- a/src/main/java/net/minestom/server/snapshot/InstanceSnapshot.java +++ b/src/main/java/net/minestom/server/snapshot/InstanceSnapshot.java @@ -1,10 +1,9 @@ package net.minestom.server.snapshot; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; -import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.tag.TagReadable; -import net.minestom.server.world.DimensionType; import net.minestom.server.world.biome.Biome; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,7 +16,7 @@ public sealed interface InstanceSnapshot extends Snapshot, Block.Getter, Biome.Getter, TagReadable permits SnapshotImpl.Instance { - @NotNull DynamicRegistry.Key dimensionType(); + @NotNull Key dimensionType(); long worldAge(); @@ -30,7 +29,7 @@ public sealed interface InstanceSnapshot extends Snapshot, Block.Getter, Biome.G } @Override - default @NotNull DynamicRegistry.Key getBiome(int x, int y, int z) { + default @NotNull Key getBiome(int x, int y, int z) { ChunkSnapshot chunk = chunk(getChunkCoordinate(x), getChunkCoordinate(z)); return Objects.requireNonNull(chunk).getBiome(x, y, z); } diff --git a/src/main/java/net/minestom/server/snapshot/SnapshotImpl.java b/src/main/java/net/minestom/server/snapshot/SnapshotImpl.java index 839c0e2d916..1e5099e1d08 100644 --- a/src/main/java/net/minestom/server/snapshot/SnapshotImpl.java +++ b/src/main/java/net/minestom/server/snapshot/SnapshotImpl.java @@ -1,6 +1,7 @@ package net.minestom.server.snapshot; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.kyori.adventure.key.Key; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Vec; @@ -46,7 +47,7 @@ public record Server(Collection instances, } public record Instance(AtomicReference serverRef, - DynamicRegistry.Key dimensionType, long worldAge, long time, + Key dimensionType, long worldAge, long time, Map> chunksMap, int[] entitiesIds, TagReadable tagReadable) implements InstanceSnapshot { @@ -101,11 +102,11 @@ public record Chunk(int minSection, int chunkX, int chunkZ, } @Override - public @NotNull DynamicRegistry.Key getBiome(int x, int y, int z) { + public @NotNull Key getBiome(int x, int y, int z) { final Section section = sections[getChunkCoordinate(y) - minSection]; final int id = section.biomePalette() .get(toSectionRelativeCoordinate(x) / 4, toSectionRelativeCoordinate(y) / 4, toSectionRelativeCoordinate(z) / 4); - DynamicRegistry.Key key = MinecraftServer.getBiomeRegistry().getKey(id); + var key = MinecraftServer.getBiomeRegistry().getKey(id); Check.notNull(key, "Biome with id {0} is not registered", id); return key; } diff --git a/src/main/java/net/minestom/server/sound/BuiltinSoundEvent.java b/src/main/java/net/minestom/server/sound/BuiltinSoundEvent.java index 4ad76088636..a027b386c7b 100644 --- a/src/main/java/net/minestom/server/sound/BuiltinSoundEvent.java +++ b/src/main/java/net/minestom/server/sound/BuiltinSoundEvent.java @@ -3,14 +3,13 @@ import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; -record BuiltinSoundEvent(NamespaceID namespace, int id) implements StaticProtocolObject, SoundEvent { +record BuiltinSoundEvent(Key namespace, int id) implements StaticProtocolObject, SoundEvent { private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.SOUNDS, - (namespace, properties) -> new BuiltinSoundEvent(NamespaceID.from(namespace), properties.getInt("id"))); + (namespace, properties) -> new BuiltinSoundEvent(Key.key(namespace), properties.getInt("id"))); static SoundEvent get(@NotNull String namespace) { return CONTAINER.get(namespace); diff --git a/src/main/java/net/minestom/server/sound/CustomSoundEvent.java b/src/main/java/net/minestom/server/sound/CustomSoundEvent.java index a7c1e9dd2ea..e06dcf48dd3 100644 --- a/src/main/java/net/minestom/server/sound/CustomSoundEvent.java +++ b/src/main/java/net/minestom/server/sound/CustomSoundEvent.java @@ -1,8 +1,8 @@ package net.minestom.server.sound; -import net.minestom.server.utils.NamespaceID; +import net.kyori.adventure.key.Key; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -record CustomSoundEvent(@NotNull NamespaceID namespace, @Nullable Float range) implements SoundEvent { +record CustomSoundEvent(@NotNull Key namespace, @Nullable Float range) implements SoundEvent { } diff --git a/src/main/java/net/minestom/server/sound/SoundEvent.java b/src/main/java/net/minestom/server/sound/SoundEvent.java index 6856c6af7cb..9932a2fdba5 100644 --- a/src/main/java/net/minestom/server/sound/SoundEvent.java +++ b/src/main/java/net/minestom/server/sound/SoundEvent.java @@ -5,7 +5,6 @@ import net.kyori.adventure.sound.Sound; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.registry.ProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,7 +34,7 @@ public SoundEvent read(@NotNull NetworkBuffer buffer) { int id = buffer.read(NetworkBuffer.VAR_INT) - 1; if (id != -1) return BuiltinSoundEvent.getId(id); - NamespaceID namespace = NamespaceID.from(buffer.read(NetworkBuffer.STRING)); + Key namespace = Key.key(buffer.read(NetworkBuffer.STRING)); return new CustomSoundEvent(namespace, buffer.readOptional(NetworkBuffer.FLOAT)); } }; @@ -63,7 +62,7 @@ public SoundEvent read(@NotNull NetworkBuffer buffer) { * @param namespaceID the namespace ID of the sound event * @return the sound event, or null if not found */ - static @Nullable SoundEvent fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable SoundEvent fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } @@ -85,21 +84,21 @@ public SoundEvent read(@NotNull NetworkBuffer buffer) { * @return the custom sound event */ static @NotNull SoundEvent of(@NotNull String namespaceID, @Nullable Float range) { - return new CustomSoundEvent(NamespaceID.from(namespaceID), range); + return new CustomSoundEvent(Key.key(namespaceID), range); } /** - * Create a custom sound event. The {@link NamespaceID} should match a sound provided in the resource pack. + * Create a custom sound event. The {@link Key} should match a sound provided in the resource pack. * @param namespaceID the namespace ID of the custom sound event * @param range the range of the sound event, or null for (legacy) dynamic range * @return the custom sound event */ - static @NotNull SoundEvent of(@NotNull NamespaceID namespaceID, @Nullable Float range) { + static @NotNull SoundEvent of(@NotNull Key namespaceID, @Nullable Float range) { return new CustomSoundEvent(namespaceID, range); } @Contract(pure = true) - @NotNull NamespaceID namespace(); + @NotNull Key namespace(); @Contract(pure = true) default @NotNull String name() { diff --git a/src/main/java/net/minestom/server/statistic/StatisticType.java b/src/main/java/net/minestom/server/statistic/StatisticType.java index 8ed71121c83..6140b7fb42a 100644 --- a/src/main/java/net/minestom/server/statistic/StatisticType.java +++ b/src/main/java/net/minestom/server/statistic/StatisticType.java @@ -1,7 +1,7 @@ package net.minestom.server.statistic; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,7 +17,7 @@ public sealed interface StatisticType extends StaticProtocolObject, StatisticTyp return StatisticTypeImpl.getSafe(namespaceID); } - static @Nullable StatisticType fromNamespaceId(@NotNull NamespaceID namespaceID) { + static @Nullable StatisticType fromNamespaceId(@NotNull Key namespaceID) { return fromNamespaceId(namespaceID.asString()); } diff --git a/src/main/java/net/minestom/server/statistic/StatisticTypeImpl.java b/src/main/java/net/minestom/server/statistic/StatisticTypeImpl.java index 0d19b60d457..624e66ab6b4 100644 --- a/src/main/java/net/minestom/server/statistic/StatisticTypeImpl.java +++ b/src/main/java/net/minestom/server/statistic/StatisticTypeImpl.java @@ -1,16 +1,16 @@ package net.minestom.server.statistic; +import net.kyori.adventure.key.Key; import net.minestom.server.registry.Registry; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; -record StatisticTypeImpl(NamespaceID namespace, int id) implements StatisticType { +record StatisticTypeImpl(Key namespace, int id) implements StatisticType { private static final Registry.Container CONTAINER = Registry.createStaticContainer(Registry.Resource.STATISTICS, StatisticTypeImpl::createImpl); private static StatisticType createImpl(String namespace, Registry.Properties properties) { - return new StatisticTypeImpl(NamespaceID.from(namespace), properties.getInt("id")); + return new StatisticTypeImpl(Key.key(namespace), properties.getInt("id")); } static StatisticType get(@NotNull String namespace) { diff --git a/src/main/java/net/minestom/server/utils/NamespaceID.java b/src/main/java/net/minestom/server/utils/NamespaceID.java deleted file mode 100644 index 2bec8358d33..00000000000 --- a/src/main/java/net/minestom/server/utils/NamespaceID.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.minestom.server.utils; - -import net.kyori.adventure.key.Key; -import org.intellij.lang.annotations.Pattern; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; - -/** - * Represents a namespaced ID - * https://minecraft.wiki/w/Namespaced_ID - */ -public record NamespaceID(@NotNull String domain, @NotNull String path) implements CharSequence, Key { - private static final String LEGAL_LETTERS = "[0123456789abcdefghijklmnopqrstuvwxyz_-]+"; - private static final String LEGAL_PATH_LETTERS = "[0123456789abcdefghijklmnopqrstuvwxyz./_-]+"; - - public static @NotNull NamespaceID from(@NotNull String namespace) { - final int index = namespace.indexOf(Key.DEFAULT_SEPARATOR); - final String domain; - final String path; - if (index == -1) { - domain = Key.MINECRAFT_NAMESPACE; - path = namespace; - } else { - domain = namespace.substring(0, index); - path = namespace.substring(index + 1); - } - return new NamespaceID(domain, path); - } - - public static @NotNull NamespaceID from(@NotNull String domain, @NotNull String path) { - return new NamespaceID(domain, path); - } - - public static @NotNull NamespaceID from(@NotNull Key key) { - return new NamespaceID(key.namespace(), key.value()); - } - - public NamespaceID { - domain = domain.intern(); - path = path.intern(); - assert !domain.contains(".") && !domain.contains("/") : "Domain cannot contain a dot nor a slash character (" + asString() + ")"; - assert domain.matches(LEGAL_LETTERS) : "Illegal character in domain (" + asString() + "). Must match " + LEGAL_LETTERS; - assert path.matches(LEGAL_PATH_LETTERS) : "Illegal character in path (" + asString() + "). Must match " + LEGAL_PATH_LETTERS; - } - - @Override - public int length() { - return domain.length() + 1 + path.length(); - } - - @Override - public char charAt(int index) { - if (index < domain.length()) { - return domain.charAt(index); - } else if (index == domain.length()) { - return ':'; - } else { - return path.charAt(index - domain.length() - 1); - } - } - - @Override - public @NotNull CharSequence subSequence(int start, int end) { - return asString().subSequence(start, end); - } - - @Override - @Pattern("[a-z0-9_\\-.]+") - public @NotNull String namespace() { - return this.domain; - } - - @Override - public @NotNull String value() { - return this.path; - } - - @Override - public @NotNull String asString() { - return domain + ':' + path; - } - - @Override - public @NotNull String toString() { - return asString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof final Key that)) return false; - return Objects.equals(this.domain, that.namespace()) && Objects.equals(this.path, that.value()); - } - - @Override - public int hashCode() { - int result = this.domain.hashCode(); - result = (31 * result) + this.path.hashCode(); - return result; - } -} diff --git a/src/main/java/net/minestom/server/utils/nbt/BinaryTagSerializer.java b/src/main/java/net/minestom/server/utils/nbt/BinaryTagSerializer.java index d7f41f1dc1f..3fac50280e3 100644 --- a/src/main/java/net/minestom/server/utils/nbt/BinaryTagSerializer.java +++ b/src/main/java/net/minestom/server/utils/nbt/BinaryTagSerializer.java @@ -1,5 +1,6 @@ package net.minestom.server.utils.nbt; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.*; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.Style; @@ -12,7 +13,6 @@ import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.ProtocolObject; import net.minestom.server.registry.Registries; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.UniqueIdUtils; import net.minestom.server.utils.Unit; import net.minestom.server.utils.validate.Check; @@ -264,19 +264,19 @@ private BinaryTagSerializer serializer() { } }; - static @NotNull BinaryTagSerializer> registryKey(@NotNull Function> registrySelector) { + static @NotNull BinaryTagSerializer registryKey(@NotNull Function> registrySelector) { return new BinaryTagSerializer<>() { @Override - public @NotNull BinaryTag write(@NotNull Context context, DynamicRegistry.@NotNull Key value) { - return stringBinaryTag(value.name()); + public @NotNull BinaryTag write(@NotNull Context context, Key value) { + return stringBinaryTag(value.asString()); } @Override - public @NotNull DynamicRegistry.Key read(@NotNull Context context, @NotNull BinaryTag tag) { + public @NotNull Key read(@NotNull Context context, @NotNull BinaryTag tag) { if (!(tag instanceof StringBinaryTag s)) throw new IllegalArgumentException("Expected string tag for registry key"); final Registries registries = Objects.requireNonNull(context.registries(), "No registries in context"); final DynamicRegistry registry = registrySelector.apply(registries); - final DynamicRegistry.Key key = DynamicRegistry.Key.of(s.value()); + final Key key = Key.key(s.value()); Check.argCondition(registry.get(key) == null, "Key is not registered: {0} > {1}", registry, s); return key; } @@ -467,7 +467,7 @@ interface Function5 { //noinspection unchecked final BinaryTagSerializer serializer = (BinaryTagSerializer) serializerGetter.apply(value); - final DynamicRegistry.Key> type = registry.getKey(serializer); + final var type = registry.getKey(serializer); Check.notNull(type, "Unregistered serializer for: {0}", value); if (context.forClient() && registry.getPack(type) != DataPack.MINECRAFT_CORE) return null; @@ -477,7 +477,7 @@ interface Function5 { if (!(result instanceof CompoundBinaryTag resultCompound)) throw new IllegalArgumentException("Expected compound tag for tagged union"); - return CompoundBinaryTag.builder().put(resultCompound).putString(key, type.name()).build(); + return CompoundBinaryTag.builder().put(resultCompound).putString(key, type.asString()).build(); } @Override @@ -491,7 +491,7 @@ interface Function5 { final String type = compound.getString(key); Check.argCondition(type.isEmpty(), "Missing {0} field: {1}", key, tag); //noinspection unchecked - final BinaryTagSerializer serializer = (BinaryTagSerializer) registry.get(NamespaceID.from(type)); + final BinaryTagSerializer serializer = (BinaryTagSerializer) registry.get(Key.key(type)); Check.notNull(serializer, "Unregistered serializer for: {0}", type); return serializer.read(context, tag); diff --git a/src/main/java/net/minestom/server/world/biome/Biome.java b/src/main/java/net/minestom/server/world/biome/Biome.java index 30ba781b312..44b758e354c 100644 --- a/src/main/java/net/minestom/server/world/biome/Biome.java +++ b/src/main/java/net/minestom/server/world/biome/Biome.java @@ -1,5 +1,6 @@ package net.minestom.server.world.biome; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.registry.ProtocolObject; @@ -52,17 +53,17 @@ enum TemperatureModifier { } interface Setter { - void setBiome(int x, int y, int z, @NotNull DynamicRegistry.Key biome); + void setBiome(int x, int y, int z, @NotNull Key biome); - default void setBiome(@NotNull Point blockPosition, @NotNull DynamicRegistry.Key biome) { + default void setBiome(@NotNull Point blockPosition, @NotNull Key biome) { setBiome(blockPosition.blockX(), blockPosition.blockY(), blockPosition.blockZ(), biome); } } interface Getter { - @NotNull DynamicRegistry.Key getBiome(int x, int y, int z); + @NotNull Key getBiome(int x, int y, int z); - default @NotNull DynamicRegistry.Key getBiome(@NotNull Point point) { + default @NotNull Key getBiome(@NotNull Point point) { return getBiome(point.blockX(), point.blockY(), point.blockZ()); } } diff --git a/src/main/java/net/minestom/server/world/biome/BiomeEffects.java b/src/main/java/net/minestom/server/world/biome/BiomeEffects.java index 5af573fdee7..c3fc4efbff8 100644 --- a/src/main/java/net/minestom/server/world/biome/BiomeEffects.java +++ b/src/main/java/net/minestom/server/world/biome/BiomeEffects.java @@ -1,7 +1,7 @@ package net.minestom.server.world.biome; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Locale; @@ -45,11 +45,11 @@ public enum GrassColorModifier { NONE, DARK_FOREST, SWAMP; } - public record MoodSound(NamespaceID sound, int tickDelay, int blockSearchExtent, double offset) { + public record MoodSound(Key sound, int tickDelay, int blockSearchExtent, double offset) { public @NotNull CompoundBinaryTag toNbt() { return CompoundBinaryTag.builder() .put("sound", CompoundBinaryTag.builder() - .putString("sound_id", sound.toString()) + .putString("sound_id", sound.asString()) .build()) .putInt("tick_delay", tickDelay) .putInt("block_search_extent", blockSearchExtent) @@ -58,36 +58,36 @@ public record MoodSound(NamespaceID sound, int tickDelay, int blockSearchExtent, } } - public record AdditionsSound(NamespaceID sound, double tickChance) { + public record AdditionsSound(Key sound, double tickChance) { public @NotNull CompoundBinaryTag toNbt() { return CompoundBinaryTag.builder() .put("sound", CompoundBinaryTag.builder() - .putString("sound_id", sound.toString()) + .putString("sound_id", sound.asString()) .build()) .putDouble("tick_chance", tickChance) .build(); } } - public record AmbientSound(NamespaceID sound, Float range) { - public AmbientSound(NamespaceID sound) { + public record AmbientSound(Key sound, Float range) { + public AmbientSound(Key sound) { this(sound, null); } public @NotNull CompoundBinaryTag toNbt() { var builder = CompoundBinaryTag.builder() - .putString("sound_id", sound.toString()); + .putString("sound_id", sound.asString()); if (range != null) builder.putFloat("range", range); return builder.build(); } } - public record Music(NamespaceID sound, int minDelay, int maxDelay, boolean replaceCurrentMusic) { + public record Music(Key sound, int minDelay, int maxDelay, boolean replaceCurrentMusic) { public @NotNull CompoundBinaryTag toNbt() { return CompoundBinaryTag.builder() .put("sound", CompoundBinaryTag.builder() - .putString("sound_id", sound.toString()) + .putString("sound_id", sound.asString()) .build()) .putInt("min_delay", minDelay) .putInt("max_delay", maxDelay) diff --git a/src/test/java/net/minestom/server/collision/EntityBlockTouchTickIntegrationTest.java b/src/test/java/net/minestom/server/collision/EntityBlockTouchTickIntegrationTest.java index e3236ac4641..28bd98db2b4 100644 --- a/src/test/java/net/minestom/server/collision/EntityBlockTouchTickIntegrationTest.java +++ b/src/test/java/net/minestom/server/collision/EntityBlockTouchTickIntegrationTest.java @@ -1,6 +1,6 @@ package net.minestom.server.collision; -import net.minestom.testing.Env; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Vec; @@ -8,7 +8,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockHandler; -import net.minestom.server.utils.NamespaceID; +import net.minestom.testing.Env; import net.minestom.testing.extension.MicrotusExtension; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; @@ -34,8 +34,8 @@ public void onTouch(@NotNull Touch touch) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } }; @@ -73,8 +73,8 @@ public void onTouch(@NotNull Touch touch) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } }; @@ -113,8 +113,8 @@ public void onTouch(@NotNull Touch touch) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } }; @@ -161,8 +161,8 @@ public void onTouch(@NotNull Touch touch) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } }; diff --git a/src/test/java/net/minestom/server/entity/EntityAttributeTest.java b/src/test/java/net/minestom/server/entity/EntityAttributeTest.java index 5911bd8ca27..7359d50ed1c 100644 --- a/src/test/java/net/minestom/server/entity/EntityAttributeTest.java +++ b/src/test/java/net/minestom/server/entity/EntityAttributeTest.java @@ -1,5 +1,6 @@ package net.minestom.server.entity; +import net.kyori.adventure.key.Key; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.attribute.Attribute; import net.minestom.server.entity.attribute.AttributeModifier; @@ -8,7 +9,6 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.item.component.AttributeList; -import net.minestom.server.utils.NamespaceID; import net.minestom.testing.Env; import net.minestom.testing.extension.MicrotusExtension; import org.junit.jupiter.api.Test; @@ -35,7 +35,7 @@ void testEntityUpdatesAttributes(Env env) { ItemStack itemStack = ItemStack.builder(Material.DIAMOND).set(ItemComponent.ATTRIBUTE_MODIFIERS, new AttributeList(new AttributeList.Modifier(Attribute.GENERIC_MAX_HEALTH, - new AttributeModifier(NamespaceID.from("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.HEAD))).build(); + new AttributeModifier(Key.key("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.HEAD))).build(); entity.setBoots(itemStack); assertEquals(0, Double.compare(entity.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(), baseHealth)); // No change since we are in the wrong slot @@ -59,7 +59,7 @@ void testPlayerUpdatesAttributes(Env env) { ItemStack itemStack = ItemStack.builder(Material.DIAMOND).set(ItemComponent.ATTRIBUTE_MODIFIERS, new AttributeList(new AttributeList.Modifier(Attribute.GENERIC_MAX_HEALTH, - new AttributeModifier(NamespaceID.from("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.MAIN_HAND))).build(); + new AttributeModifier(Key.key("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.MAIN_HAND))).build(); player.setBoots(itemStack); assertEquals(0, Double.compare(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(), baseHealth)); // No change since we are in the wrong slot @@ -85,7 +85,7 @@ void testDirectlyAddAttributes(Env env) { ItemStack itemStack = ItemStack.builder(Material.DIAMOND).set(ItemComponent.ATTRIBUTE_MODIFIERS, new AttributeList(new AttributeList.Modifier(Attribute.GENERIC_MAX_HEALTH, - new AttributeModifier(NamespaceID.from("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.MAIN_HAND))).build(); + new AttributeModifier(Key.key("minestom:health"), addition, AttributeOperation.ADD_VALUE), EquipmentSlotGroup.MAIN_HAND))).build(); player.setItemInMainHand(itemStack); assertEquals(0, Double.compare(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(), baseHealth + addition)); diff --git a/src/test/java/net/minestom/server/entity/player/PlayerIntegrationTest.java b/src/test/java/net/minestom/server/entity/player/PlayerIntegrationTest.java index 6fbd2370601..4d7ed28c20f 100644 --- a/src/test/java/net/minestom/server/entity/player/PlayerIntegrationTest.java +++ b/src/test/java/net/minestom/server/entity/player/PlayerIntegrationTest.java @@ -1,17 +1,33 @@ package net.minestom.server.entity.player; +import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Vec; -import net.minestom.server.entity.*; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; +import net.minestom.server.entity.RelativeFlags; import net.minestom.server.entity.damage.DamageType; import net.minestom.server.event.player.PlayerGameModeChangeEvent; import net.minestom.server.message.ChatMessageType; import net.minestom.server.network.packet.client.common.ClientSettingsPacket; import net.minestom.server.network.packet.server.ServerPacket; -import net.minestom.server.network.packet.server.play.*; -import net.minestom.server.utils.NamespaceID; +import net.minestom.server.network.packet.server.play.DeclareCommandsPacket; +import net.minestom.server.network.packet.server.play.EntityAttributesPacket; +import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; +import net.minestom.server.network.packet.server.play.EntityStatusPacket; +import net.minestom.server.network.packet.server.play.FacePlayerPacket; +import net.minestom.server.network.packet.server.play.JoinGamePacket; +import net.minestom.server.network.packet.server.play.PlayerAbilitiesPacket; +import net.minestom.server.network.packet.server.play.PlayerInfoUpdatePacket; +import net.minestom.server.network.packet.server.play.PlayerPositionAndLookPacket; +import net.minestom.server.network.packet.server.play.ServerDifficultyPacket; +import net.minestom.server.network.packet.server.play.SetExperiencePacket; +import net.minestom.server.network.packet.server.play.SpawnPositionPacket; +import net.minestom.server.network.packet.server.play.UpdateHealthPacket; import net.minestom.server.world.DimensionType; import net.minestom.testing.Collector; import net.minestom.testing.Env; @@ -146,7 +162,7 @@ void playerJoinPackets(Env env) { @Test void refreshPlayerTest(Env env) { final int TEST_PERMISSION_LEVEL = 2; - final var testDimension = env.process().dimensionType().register(NamespaceID.from("minestom:test_dimension"), DimensionType.builder().build()); + final var testDimension = env.process().dimensionType().register(Key.key("minestom:test_dimension"), DimensionType.builder().build()); var instance = env.createFlatInstance(); var instance2 = env.process().instance().createInstanceContainer(testDimension); @@ -181,7 +197,7 @@ void refreshPlayerTest(Env env) { @Test void deathLocationTest(Env env) { String dimensionNamespace = "minestom:test_dimension"; - final var testDimension = env.process().dimensionType().register(NamespaceID.from(dimensionNamespace), DimensionType.builder().build()); + final var testDimension = env.process().dimensionType().register(Key.key(dimensionNamespace), DimensionType.builder().build()); var instance = env.process().instance().createInstanceContainer(testDimension); var connection = env.createConnection(); @@ -191,7 +207,7 @@ void deathLocationTest(Env env) { player.damage(DamageType.OUT_OF_WORLD, 30); assertNotNull(player.getDeathLocation()); - assertEquals(dimensionNamespace, player.getDeathLocation().dimension()); + assertEquals(dimensionNamespace, player.getDeathLocation().dimension().asString()); assertEquals(5, player.getDeathLocation().blockPosition().x()); } diff --git a/src/test/java/net/minestom/server/instance/BlockClientNbtTest.java b/src/test/java/net/minestom/server/instance/BlockClientNbtTest.java index da788786704..1b460e12d94 100644 --- a/src/test/java/net/minestom/server/instance/BlockClientNbtTest.java +++ b/src/test/java/net/minestom/server/instance/BlockClientNbtTest.java @@ -1,10 +1,10 @@ package net.minestom.server.instance; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockHandler; import net.minestom.server.tag.Tag; -import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.block.BlockUtils; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; @@ -36,8 +36,8 @@ void handler() { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minestom:test"); + public @NotNull Key getNamespaceId() { + return Key.key("minestom:test"); } }; diff --git a/src/test/java/net/minestom/server/instance/InstanceBlockPacketIntegrationTest.java b/src/test/java/net/minestom/server/instance/InstanceBlockPacketIntegrationTest.java index 971de66af5d..93f9f92cc70 100644 --- a/src/test/java/net/minestom/server/instance/InstanceBlockPacketIntegrationTest.java +++ b/src/test/java/net/minestom/server/instance/InstanceBlockPacketIntegrationTest.java @@ -1,5 +1,6 @@ package net.minestom.server.instance; +import net.kyori.adventure.key.Key; import net.kyori.adventure.nbt.CompoundBinaryTag; import net.kyori.adventure.nbt.TagStringIOExt; import net.minestom.server.coordinate.Pos; @@ -9,7 +10,6 @@ import net.minestom.server.network.packet.server.play.BlockChangePacket; import net.minestom.server.network.packet.server.play.BlockEntityDataPacket; import net.minestom.server.tag.Tag; -import net.minestom.server.utils.NamespaceID; import net.minestom.testing.Env; import net.minestom.testing.extension.MicrotusExtension; import org.jetbrains.annotations.NotNull; @@ -64,8 +64,8 @@ void placeBlockEntity(Env env) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minecraft:sign"); + public @NotNull Key getNamespaceId() { + return Key.key("minecraft:sign"); } }; diff --git a/src/test/java/net/minestom/server/instance/anvil/AnvilLoaderIntegrationTest.java b/src/test/java/net/minestom/server/instance/anvil/AnvilLoaderIntegrationTest.java index 909586a7727..83edb7c56eb 100644 --- a/src/test/java/net/minestom/server/instance/anvil/AnvilLoaderIntegrationTest.java +++ b/src/test/java/net/minestom/server/instance/anvil/AnvilLoaderIntegrationTest.java @@ -108,7 +108,7 @@ public boolean supportsParallelSaving() { for (int y = 0; y < 16; y++) { for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { - DynamicRegistry.Key b = chunk.getBiome(x, y, z); + var b = chunk.getBiome(x, y, z); assertEquals(Biome.PLAINS, b); } } diff --git a/src/test/java/net/minestom/server/instance/block/SuspiciousGravelBlockHandler.java b/src/test/java/net/minestom/server/instance/block/SuspiciousGravelBlockHandler.java index 5b0e19a9b19..6c8f274c2ca 100644 --- a/src/test/java/net/minestom/server/instance/block/SuspiciousGravelBlockHandler.java +++ b/src/test/java/net/minestom/server/instance/block/SuspiciousGravelBlockHandler.java @@ -1,8 +1,8 @@ package net.minestom.server.instance.block; +import net.kyori.adventure.key.Key; import net.minestom.server.item.ItemStack; import net.minestom.server.tag.Tag; -import net.minestom.server.utils.NamespaceID; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -22,8 +22,8 @@ public SuspiciousGravelBlockHandler(boolean hasTags) { } @Override - public @NotNull NamespaceID getNamespaceId() { - return NamespaceID.from("minecraft:suspicious_gravel"); + public @NotNull Key getNamespaceId() { + return Key.key("minecraft:suspicious_gravel"); } @Override diff --git a/src/test/java/net/minestom/server/item/component/LodestoneTrackerTest.java b/src/test/java/net/minestom/server/item/component/LodestoneTrackerTest.java index 3963b3caf2a..814d6b7befc 100644 --- a/src/test/java/net/minestom/server/item/component/LodestoneTrackerTest.java +++ b/src/test/java/net/minestom/server/item/component/LodestoneTrackerTest.java @@ -1,5 +1,6 @@ package net.minestom.server.item.component; +import net.kyori.adventure.key.Key; import net.minestom.server.component.DataComponent; import net.minestom.server.coordinate.Vec; import net.minestom.server.item.ItemComponent; @@ -18,8 +19,8 @@ public class LodestoneTrackerTest extends AbstractItemComponentTest> directReadWriteEntries() { return List.of( - Map.entry("tracked", new LodestoneTracker("minecraft:overworld", Vec.ZERO, true)), - Map.entry("not tracked", new LodestoneTracker("minecraft:overworld", new Vec(1, 2, 3), false)) + Map.entry("tracked", new LodestoneTracker(Key.key("minecraft:overworld"), Vec.ZERO, true)), + Map.entry("not tracked", new LodestoneTracker(Key.key("minecraft:overworld"), new Vec(1, 2, 3), false)) ); } diff --git a/src/test/java/net/minestom/server/network/packet/UpdateEnabledFeaturesPacketTest.java b/src/test/java/net/minestom/server/network/packet/UpdateEnabledFeaturesPacketTest.java index b7f8406cb7c..94173d5dcd1 100644 --- a/src/test/java/net/minestom/server/network/packet/UpdateEnabledFeaturesPacketTest.java +++ b/src/test/java/net/minestom/server/network/packet/UpdateEnabledFeaturesPacketTest.java @@ -1,28 +1,29 @@ package net.minestom.server.network.packet; +import net.kyori.adventure.key.Key; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.packet.server.configuration.UpdateEnabledFeaturesPacket; -import net.minestom.server.utils.NamespaceID; import org.junit.jupiter.api.Test; import java.util.HashSet; import java.util.Set; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class UpdateEnabledFeaturesPacketTest { @Test void constructorWithBufferReadsCorrectly() { NetworkBuffer buffer = new NetworkBuffer(); - UpdateEnabledFeaturesPacket updateEnabledFeaturesPacket = new UpdateEnabledFeaturesPacket(Set.of(NamespaceID.from("namespace:feature1"), NamespaceID.from("namespace:feature2"))); + UpdateEnabledFeaturesPacket updateEnabledFeaturesPacket = new UpdateEnabledFeaturesPacket(Set.of(Key.key("namespace:feature1"), Key.key("namespace:feature2"))); updateEnabledFeaturesPacket.write(buffer); UpdateEnabledFeaturesPacket packet = new UpdateEnabledFeaturesPacket(buffer); assertEquals(2, packet.features().size()); - assertTrue(packet.features().contains(NamespaceID.from("namespace:feature1"))); - assertTrue(packet.features().contains(NamespaceID.from("namespace:feature2"))); + assertTrue(packet.features().contains(Key.key("namespace:feature1"))); + assertTrue(packet.features().contains(Key.key("namespace:feature2"))); } @@ -45,9 +46,9 @@ void constructorWithBufferHandlesEmptySet() { @Test void constructorWithBufferHandlesMaxFeatures() { - Set maxFeatures = new HashSet<>(); + Set maxFeatures = new HashSet<>(); for (int i = 0; i < UpdateEnabledFeaturesPacket.MAX_FEATURES; i++) { - maxFeatures.add(NamespaceID.from("namespace:feature" + i)); + maxFeatures.add(Key.key("namespace:feature" + i)); } NetworkBuffer buffer = new NetworkBuffer(); UpdateEnabledFeaturesPacket updateEnabledFeaturesPacket = new UpdateEnabledFeaturesPacket(maxFeatures); diff --git a/src/test/java/net/minestom/server/utils/NamespaceIDTest.java b/src/test/java/net/minestom/server/utils/NamespaceIDTest.java deleted file mode 100644 index 6ed987c3947..00000000000 --- a/src/test/java/net/minestom/server/utils/NamespaceIDTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.minestom.server.utils; - -import net.kyori.adventure.key.Key; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class NamespaceIDTest { - - @Test - void init() { - var namespace = NamespaceID.from("minecraft:any"); - assertEquals("minecraft", namespace.domain()); - assertEquals("any", namespace.path()); - assertEquals("minecraft:any", namespace.toString()); - - namespace = NamespaceID.from("stone"); - assertEquals("minecraft", namespace.domain()); - assertEquals("stone", namespace.path()); - assertEquals("minecraft:stone", namespace.toString()); - } - - @Test - void equals() { - var namespace = NamespaceID.from("minecraft:any"); - assertEquals(namespace, NamespaceID.from("minecraft:any")); - assertNotEquals(namespace, NamespaceID.from("minecraft:any2")); - assertEquals(namespace, Key.key("minecraft:any")); - } - - @Test - void hashCodeConsistentWithEquals() { - var namespace = NamespaceID.from("minecraft:any"); - var key = Key.key("minecraft:any"); - - assertEquals(namespace, key); - assertEquals(namespace.hashCode(), key.hashCode()); - } - - @Test - void atMostOneColon() { - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft:block:wool")); - } - - @Test - void noSlashInDomain() { - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft/java_edition:any")); - } - - @Test - void noDotInDomain() { - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft.java:game")); - } - - @Test - void noUppercase() { - assertThrows(AssertionError.class, () -> NamespaceID.from("Minecraft:any")); - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft:Any")); - } - - @Test - void noSpace() { - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft:a n y")); - } - - @Test - void onlyLatinLowercase() { - assertThrows(AssertionError.class, () -> NamespaceID.from("Minecraft:voilà")); - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft:où_ça")); - assertThrows(AssertionError.class, () -> NamespaceID.from("minecraft:schrödingers_var")); - } - - @Test - void numbersAllowed() { - NamespaceID.from("0xc1:468786471"); - } - - @Test - void dotAllowedInPath() { - NamespaceID.from("minecraft:ambient.cave"); - } - - @Test - void slashAllowedInPath() { - NamespaceID.from("minecraft:textures/blocks/dirt.png"); - } -}