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 97f932c81..35922cab5 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 @@ -23,13 +23,11 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Locale; - import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.bukkit.util.BukkitUtils; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; -import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; public class BukkitWorldHandle implements WorldHandle { @@ -61,22 +59,6 @@ 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 perform 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); - - return new BukkitEntityType(switch(entityID) { - case "END_CRYSTAL" -> org.bukkit.entity.EntityType.END_CRYSTAL; - case "ENDER_CRYSTAL" -> throw new IllegalArgumentException( - "Invalid entity identifier " + id); // make sure this issue can't happen the other way around. - default -> org.bukkit.entity.EntityType.valueOf(entityID); - }); + return BukkitUtils.getEntityType(id); } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java index cc2fa78ef..6c0a9c7f4 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/util/BukkitUtils.java @@ -2,11 +2,40 @@ package com.dfsek.terra.bukkit.util; import org.bukkit.Material; import org.bukkit.block.data.BlockData; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Locale; + +import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; public class BukkitUtils { + private static final Logger logger = LoggerFactory.getLogger(BukkitUtils.class); + public static boolean isLiquid(BlockData blockState) { Material material = blockState.getMaterial(); return material == Material.WATER || material == Material.LAVA; } + + public static EntityType getEntityType(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 perform 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); + + return new BukkitEntityType(switch(entityID) { + case "END_CRYSTAL" -> org.bukkit.entity.EntityType.END_CRYSTAL; + case "ENDER_CRYSTAL" -> throw new IllegalArgumentException( + "Invalid entity identifier " + id); // make sure this issue can't happen the other way around. + default -> org.bukkit.entity.EntityType.valueOf(entityID); + }); + } } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index f2d446de7..408265821 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -20,7 +20,6 @@ package com.dfsek.terra.bukkit.world; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.TreeType; import org.bukkit.entity.Player; import org.bukkit.generator.WorldInfo; import org.bukkit.util.Vector; @@ -46,27 +45,12 @@ import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.inventory.BukkitItemStack; import com.dfsek.terra.bukkit.world.inventory.meta.BukkitEnchantment; -import com.dfsek.terra.transform.MapTransform; -import com.dfsek.terra.transform.TransformerImpl; /** * Utility class to adapt Bukkit enums to Terra enums. */ public final class BukkitAdapter { - public static TransformerImpl TREE_TRANSFORMER = new TransformerImpl.Builder() - .addTransform(new MapTransform() - .add(TreeType.COCOA_TREE, "JUNGLE_COCOA") - .add(TreeType.BIG_TREE, "LARGE_OAK") - .add(TreeType.TALL_REDWOOD, "LARGE_SPRUCE") - .add(TreeType.REDWOOD, "SPRUCE") - .add(TreeType.TREE, "OAK") - .add(TreeType.MEGA_REDWOOD, "MEGA_SPRUCE") - .add(TreeType.SWAMP, "SWAMP_OAK")) - .addTransform(TreeType::toString) - .build(); - - public static BlockState adapt(org.bukkit.block.data.BlockData data) { return BukkitBlockState.newInstance(data); } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index 7bdc75d96..dc9d1ecb6 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.entity.MobSpawner; import com.dfsek.terra.api.block.entity.SerialState; import com.dfsek.terra.api.entity.EntityType; +import com.dfsek.terra.bukkit.util.BukkitUtils; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; @@ -115,7 +116,7 @@ public class BukkitMobSpawner extends BukkitBlockEntity implements MobSpawner { public void applyState(String state) { SerialState.parse(state).forEach((k, v) -> { switch(k) { - case "type" -> setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase()))); + case "type" -> setSpawnedType(BukkitUtils.getEntityType(v)); case "delay" -> setDelay(Integer.parseInt(v)); case "min_delay" -> setMinSpawnDelay(Integer.parseInt(v)); case "max_delay" -> setMaxSpawnDelay(Integer.parseInt(v));