diff --git a/Essentials/src/main/java/com/earth2me/essentials/Mob.java b/Essentials/src/main/java/com/earth2me/essentials/Mob.java index 63f375f1e..7883b69c7 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Mob.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Mob.java @@ -51,6 +51,14 @@ public enum Mob { BAT("Bat", Enemies.FRIENDLY, EntityType.BAT), WITCH("Witch", Enemies.ENEMY, EntityType.WITCH), BOAT("Boat", Enemies.NEUTRAL, MobCompat.OAK_BOAT), + ACACIA_BOAT("AcaciaBoat", Enemies.NEUTRAL, "ACACIA_BOAT"), + DARK_OAK_BOAT("DarkOakBoat", Enemies.NEUTRAL, "DARK_OAK_BOAT"), + BIRCH_BOAT("BirchBoat", Enemies.NEUTRAL, "BIRCH_BOAT"), + JUNGLE_BOAT("JungleBoat", Enemies.NEUTRAL, "JUNGLE_BOAT"), + SPRUCE_BOAT("SpruceBoat", Enemies.NEUTRAL, "SPRUCE_BOAT"), + MANGROVE_BOAT("MangroveBoat", Enemies.NEUTRAL, "MANGROVE_BOAT"), + CHERRY_BOAT("CherryBoat", Enemies.NEUTRAL, "CHERRY_BOAT"), + BAMBOO_RAFT("BambooRaft", Enemies.NEUTRAL, "BAMBOO_RAFT"), MINECART("Minecart", Enemies.NEUTRAL, EntityType.MINECART), MINECART_CHEST("ChestMinecart", Enemies.NEUTRAL, MobCompat.CHEST_MINECART), MINECART_FURNACE("FurnaceMinecart", Enemies.NEUTRAL, MobCompat.FURNACE_MINECART), diff --git a/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java b/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java index be0f9c49c..885ab995b 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java @@ -5,9 +5,7 @@ import com.earth2me.essentials.utils.RegistryUtil; import com.earth2me.essentials.utils.VersionUtil; import net.ess3.nms.refl.ReflUtil; import org.bukkit.Material; -import org.bukkit.TreeSpecies; import org.bukkit.entity.Axolotl; -import org.bukkit.entity.Boat; import org.bukkit.entity.Camel; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -19,6 +17,7 @@ import org.bukkit.entity.Ocelot; import org.bukkit.entity.Panda; import org.bukkit.entity.Parrot; import org.bukkit.entity.Player; +import org.bukkit.entity.Salmon; import org.bukkit.entity.TropicalFish; import org.bukkit.entity.Villager; import org.bukkit.entity.Wolf; @@ -48,6 +47,7 @@ public final class MobCompat { public static final EntityType GOAT = getEntityType("GOAT"); public static final EntityType FROG = getEntityType("FROG"); public static final EntityType CAMEL = getEntityType("CAMEL"); + public static final EntityType SALMON = getEntityType("SALMON"); // Constants for mobs that have changed since earlier versions public static final EntityType CAT = getEntityType("CAT", "OCELOT"); @@ -194,24 +194,6 @@ public final class MobCompat { } } - public static void setBoatVariant(final Entity entity, final BoatVariant variant) { - if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_9_R01)) { - return; - } - final Boat boat; - if (entity instanceof Boat) { - boat = (Boat) entity; - } else { - return; - } - if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_19_R01)) { - //noinspection deprecation - boat.setWoodType(TreeSpecies.valueOf(variant.getTreeSpecies())); - } else { - boat.setBoatType(Boat.Type.valueOf(variant.getBoatType())); - } - } - public static void setCamelSaddle(final Entity entity, final Player target) { if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_20_1_R01)) { return; @@ -237,6 +219,16 @@ public final class MobCompat { } } + public static void setSalmonSize(Entity spawned, String s) { + if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_21_3_R01)) { + return; + } + + if (spawned instanceof org.bukkit.entity.Salmon) { + ((Salmon) spawned).setVariant(Salmon.Variant.valueOf(s)); + } + } + public enum CatType { // These are (loosely) Mojang names for the cats SIAMESE("SIAMESE", "SIAMESE_CAT"), @@ -300,35 +292,4 @@ public final class MobCompat { return RegistryUtil.valueOf(Villager.Profession.class, newProfession, oldProfession); } } - - public enum BoatVariant { - // Mappings for TreeSpecies names - ACACIA("ACACIA", "ACACIA"), - BIRCH("BIRCH", "BIRCH"), - DARKOAK("DARK_OAK", "DARK_OAK"), - GENERIC("GENERIC", "OAK"), - JUNGLE("JUNGLE", "JUNGLE"), - REDWOOD("REDWOOD", "SPRUCE"), - // Mappings for Boat.Type names (falling back to GENERIC where undefined) - OAK("GENERIC", "OAK"), - SPRUCE("REDWOOD", "SPRUCE"), - MANGROVE("GENERIC", "MANGROVE"), - ; - - private final String treeSpecies; - private final String boatType; - - BoatVariant(final String treeSpecies, final String boatType) { - this.treeSpecies = treeSpecies; - this.boatType = boatType; - } - - public String getTreeSpecies() { - return treeSpecies; - } - - public String getBoatType() { - return boatType; - } - } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/MobData.java b/Essentials/src/main/java/com/earth2me/essentials/MobData.java index 90c8e42c5..30457a564 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MobData.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MobData.java @@ -8,7 +8,6 @@ import net.ess3.api.TranslatableException; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.entity.Ageable; -import org.bukkit.entity.Boat; import org.bukkit.entity.ChestedHorse; import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; @@ -199,15 +198,6 @@ public enum MobData { TEMPERATE_FROG("temperate", MobCompat.FROG, "frog:TEMPERATE", true), WARM_FROG("warm", MobCompat.FROG, "frog:WARM", true), COLD_FROG("cold", MobCompat.FROG, "frog:COLD", true), - ACACIA_BOAT("acacia", Boat.class, MobCompat.BoatVariant.ACACIA, true), - BIRCH_BOAT("birch", Boat.class, MobCompat.BoatVariant.BIRCH, true), - DARK_OAK_BOAT("darkoak", Boat.class, MobCompat.BoatVariant.DARKOAK, true), - GENERIC_BOAT("generic", Boat.class, MobCompat.BoatVariant.GENERIC, true), - JUNGLE_BOAT("jungle", Boat.class, MobCompat.BoatVariant.JUNGLE, true), - REDWOOD_BOAT("redwood", Boat.class, MobCompat.BoatVariant.REDWOOD, true), - MANGROVE_BOAT("mangrove", Boat.class, MobCompat.BoatVariant.MANGROVE, true), - OAK_BOAT("oak", Boat.class, MobCompat.BoatVariant.OAK, true), - SPRUCE_BOAT("spruce", Boat.class, MobCompat.BoatVariant.SPRUCE, true), SADDLE_CAMEL("saddle", MobCompat.CAMEL, Data.CAMELSADDLE, true), PALE_WOLF("pale", EntityType.WOLF, "wolf:PALE", true), SPOTTED_WOLF("spotted", EntityType.WOLF, "wolf:PALE", true), @@ -218,6 +208,9 @@ public enum MobData { WOODS_WOLF("woods", EntityType.WOLF, "wolf:WOODS", true), CHESTNUT_WOLF("chestnut", EntityType.WOLF, "wolf:CHESTNUT", true), STRIPED_WOLF("striped", EntityType.WOLF, "wolf:STRIPED", true), + SMALL_SALMON("small", MobCompat.SALMON, "salmon:SMALL", true), + MEDIUM_SALMON("medium", MobCompat.SALMON, "salmon:MEDIUM", true), + LARGE_SALMON("large", MobCompat.SALMON, "salmon:LARGE", true), ; final private String nickname; @@ -398,8 +391,6 @@ public enum MobData { ((Goat) spawned).setScreaming(true); } else if (this.value.equals(Data.CAMELSADDLE)) { MobCompat.setCamelSaddle(spawned, target); - } else if (this.value instanceof MobCompat.BoatVariant) { - MobCompat.setBoatVariant(spawned, (MobCompat.BoatVariant) this.value); } else if (this.value instanceof String) { final String[] split = ((String) this.value).split(":"); switch (split[0]) { @@ -436,6 +427,9 @@ public enum MobData { case "wolf": MobCompat.setWolfVariant(spawned, split[1]); break; + case "salmon": + MobCompat.setSalmonSize(spawned, split[1]); + break; } } else { Essentials.getWrappedLogger().warning("Unknown mob data type: " + this.toString());