From fc764a0fb3552752e6f3ec6f533f6e7890c45291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Sun, 10 Dec 2023 18:40:43 -0700 Subject: [PATCH] fix issues with spawners and entity parsing --- .../com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java | 7 +++++++ .../com/dfsek/terra/mod/handle/MinecraftWorldHandle.java | 8 ++++++++ .../terra/block/entity/MobSpawnerBlockEntityMixin.java | 8 +++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index d49841a7b..1d8744bcf 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -61,6 +61,13 @@ public class BukkitWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { + if (!id.contains(":")) { //TODO: remove in 7.0 + String newid = "minecraft:" + id.toLowerCase();; + logger.warn( + "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + + ". You are advised to preform this rename in your config backs as this translation will be removed in the next major " + + "version of Terra."); + } if(!id.startsWith("minecraft:")) throw new IllegalArgumentException("Invalid entity identifier " + id); String entityID = id.toUpperCase(Locale.ROOT).substring(10); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java index 538041417..4dfa940ac 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/handle/MinecraftWorldHandle.java @@ -64,6 +64,14 @@ public class MinecraftWorldHandle implements WorldHandle { @Override public @NotNull EntityType getEntity(@NotNull String id) { + if (!id.contains(":")) { //TODO: remove in 7.0 + String newid = "minecraft:" + id.toLowerCase();; + logger.warn( + "Translating " + id + " to " + newid + ". In 1.20.3 entity parsing was reworked" + + ". You are advised to preform this rename in your config backs as this translation will be removed in the next major " + + "version of Terra."); + } + if(!id.startsWith("minecraft:")) throw new IllegalArgumentException("Invalid entity identifier " + id); Identifier identifier = Identifier.tryParse(id); if(identifier == null) identifier = Identifier.tryParse(id); return (EntityType) Registries.ENTITY_TYPE.get(identifier); diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java index bf85dd159..ccc8b738a 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/implementations/terra/block/entity/MobSpawnerBlockEntityMixin.java @@ -58,7 +58,13 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { } public void terra$setSpawnedType(@NotNull EntityType creatureType) { - method_46408((net.minecraft.entity.EntityType) creatureType, world.getRandom()); + Random rand; + if (hasWorld()) { + rand = world.getRandom(); + } else { + rand = Random.create(); + } + method_46408((net.minecraft.entity.EntityType) creatureType, rand); } public int terra$getDelay() {