Skip to content

Commit 6c06d5f

Browse files
committed
chore: start work on flexible entity type wrapper
1 parent df15203 commit 6c06d5f

File tree

9 files changed

+409
-284
lines changed

9 files changed

+409
-284
lines changed

Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java

Lines changed: 35 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.inject.Key;
2525
import com.google.inject.Singleton;
2626
import com.google.inject.Stage;
27+
import com.plotsquared.bukkit.entity.EntityType;
2728
import com.plotsquared.bukkit.generator.BukkitPlotGenerator;
2829
import com.plotsquared.bukkit.inject.BackupModule;
2930
import com.plotsquared.bukkit.inject.BukkitModule;
@@ -794,60 +795,29 @@ private void runEntityTask() {
794795
if (entity.getMetadata("ps_custom_spawned").stream().anyMatch(MetadataValue::asBoolean)) {
795796
continue;
796797
}
797-
// TODO: use (type) pattern matching when targeting java 21
798-
switch (entity.getType().toString()) {
799-
case "EGG":
800-
case "FISHING_HOOK", "FISHING_BOBBER":
801-
case "ENDER_SIGNAL", "EYE_OF_ENDER":
802-
case "AREA_EFFECT_CLOUD":
803-
case "EXPERIENCE_ORB":
804-
case "LEASH_HITCH", "LEASH_KNOT":
805-
case "FIREWORK", "FIREWORK_ROCKET":
806-
case "LIGHTNING", "LIGHTNING_BOLT":
807-
case "WITHER_SKULL":
808-
case "UNKNOWN":
809-
case "PLAYER":
798+
799+
switch (EntityType.of(entity.getType())) {
800+
case EGG, FISHING_BOBBER, EYE_OF_ENDER, AREA_EFFECT_CLOUD, EXPERIENCE_ORB, LEASH_KNOT, FIREWORK_ROCKET,
801+
LIGHTNING_BOLT, WITHER_SKULL, UNKNOWN, PLAYER, MANNEQUIN, BLOCK_DISPLAY, INTERACTION, ITEM_DISPLAY,
802+
GLOW_ITEM_FRAME, TEXT_DISPLAY, OMINOUS_ITEM_SPAWNER, MARKER -> {
810803
// non moving / unmovable
811-
continue;
812-
case "THROWN_EXP_BOTTLE", "EXPERIENCE_BOTTLE":
813-
case "SPLASH_POTION", "POTION":
814-
case "SNOWBALL":
815-
case "SHULKER_BULLET":
816-
case "SPECTRAL_ARROW":
817-
case "ENDER_PEARL":
818-
case "ARROW":
819-
case "LLAMA_SPIT":
820-
case "TRIDENT":
804+
}
805+
case EXPERIENCE_BOTTLE, SPLASH_POTION, LINGERING_POTION, SNOWBALL, SHULKER_BULLET, SPECTRAL_ARROW,
806+
ENDER_PEARL, ARROW, LLAMA_SPIT, TRIDENT -> {
821807
// managed elsewhere | projectile
822-
continue;
823-
case "ITEM_FRAME":
824-
case "PAINTING":
808+
}
809+
case TNT, FALLING_BLOCK -> {
810+
// managed elsewhere
811+
}
812+
case ITEM_FRAME, PAINTING -> {
825813
// Not vehicles
826-
continue;
827-
case "ARMOR_STAND":
828-
// Temporarily classify as vehicle
829-
case "MINECART":
830-
case "MINECART_CHEST":
831-
case "CHEST_MINECART":
832-
case "MINECART_COMMAND":
833-
case "COMMAND_BLOCK_MINECART":
834-
case "MINECART_FURNACE":
835-
case "FURNACE_MINECART":
836-
case "MINECART_HOPPER":
837-
case "HOPPER_MINECART":
838-
case "MINECART_MOB_SPAWNER":
839-
case "SPAWNER_MINECART":
840-
case "END_CRYSTAL":
841-
case "ENDER_CRYSTAL": // Backwards compatibility for 1.20.4
842-
case "MINECART_TNT":
843-
case "TNT_MINECART":
844-
case "CHEST_BOAT":
845-
case "BOAT":
846-
case "ACACIA_BOAT", "BIRCH_BOAT", "CHERRY_BOAT", "DARK_OAK_BOAT", "JUNGLE_BOAT", "MANGROVE_BOAT",
847-
"OAK_BOAT", "PALE_OAK_BOAT", "SPRUCE_BOAT", "BAMBOO_RAFT":
848-
case "ACACIA_CHEST_BOAT", "BIRCH_CHEST_BOAT", "CHERRY_CHEST_BOAT", "DARK_OAK_CHEST_BOAT",
849-
"JUNGLE_CHEST_BOAT", "MANGROVE_CHEST_BOAT", "OAK_CHEST_BOAT", "PALE_OAK_CHEST_BOAT",
850-
"SPRUCE_CHEST_BOAT", "BAMBOO_CHEST_RAFT":
814+
}
815+
// ARMOR_STAND temporarily classified as vehicle
816+
case ARMOR_STAND, MINECART, CHEST_MINECART, COMMAND_BLOCK_MINECART, FURNACE_MINECART, HOPPER_MINECART,
817+
SPAWNER_MINECART, END_CRYSTAL, TNT_MINECART, ACACIA_BOAT, BIRCH_BOAT, CHERRY_BOAT, DARK_OAK_BOAT,
818+
JUNGLE_BOAT, MANGROVE_BOAT, OAK_BOAT, PALE_OAK_BOAT, SPRUCE_BOAT, BAMBOO_RAFT, ACACIA_CHEST_BOAT,
819+
BIRCH_CHEST_BOAT, CHERRY_CHEST_BOAT, DARK_OAK_CHEST_BOAT, JUNGLE_CHEST_BOAT, MANGROVE_CHEST_BOAT,
820+
OAK_CHEST_BOAT, PALE_OAK_CHEST_BOAT, SPRUCE_CHEST_BOAT, BAMBOO_CHEST_RAFT -> {
851821
if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) {
852822
com.plotsquared.core.location.Location location = BukkitUtil.adapt(entity.getLocation());
853823
Plot plot = location.getPlot();
@@ -872,22 +842,15 @@ private void runEntityTask() {
872842
this.removeRoadEntity(entity, iterator);
873843
}
874844
}
875-
continue;
876-
case "SMALL_FIREBALL":
877-
case "FIREBALL":
878-
case "DRAGON_FIREBALL":
879-
case "DROPPED_ITEM", "ITEM":
845+
}
846+
case SMALL_FIREBALL, FIREBALL, DRAGON_FIREBALL, ITEM, WIND_CHARGE, BREEZE_WIND_CHARGE -> {
880847
if (Settings.Enabled_Components.KILL_ROAD_ITEMS
881848
&& plotArea.getOwnedPlotAbs(BukkitUtil.adapt(entity.getLocation())) == null) {
882849
this.removeRoadEntity(entity, iterator);
883850
}
884851
// dropped item
885-
continue;
886-
case "PRIMED_TNT", "TNT":
887-
case "FALLING_BLOCK":
888-
// managed elsewhere
889-
continue;
890-
case "SHULKER":
852+
}
853+
case SHULKER -> {
891854
if (Settings.Enabled_Components.KILL_ROAD_MOBS && (Settings.Enabled_Components.KILL_NAMED_ROAD_MOBS || entity.getCustomName() == null)) {
892855
LivingEntity livingEntity = (LivingEntity) entity;
893856
List<MetadataValue> meta = entity.getMetadata("shulkerPlot");
@@ -928,80 +891,16 @@ private void runEntityTask() {
928891
}
929892
}
930893
}
931-
continue;
932-
case "ZOMBIFIED_PIGLIN":
933-
case "PIGLIN_BRUTE":
934-
case "LLAMA":
935-
case "DONKEY":
936-
case "MULE":
937-
case "ZOMBIE_HORSE":
938-
case "SKELETON_HORSE":
939-
case "HUSK":
940-
case "ELDER_GUARDIAN":
941-
case "WITHER_SKELETON":
942-
case "STRAY":
943-
case "ZOMBIE_VILLAGER":
944-
case "EVOKER":
945-
case "EVOKER_FANGS":
946-
case "VEX":
947-
case "VINDICATOR":
948-
case "POLAR_BEAR":
949-
case "BAT":
950-
case "BLAZE":
951-
case "CAVE_SPIDER":
952-
case "CHICKEN":
953-
case "COW":
954-
case "CREEPER":
955-
case "ENDERMAN":
956-
case "ENDERMITE":
957-
case "ENDER_DRAGON":
958-
case "GHAST":
959-
case "HAPPY_GHAST": // 1.21.6+
960-
case "GHASTLING": // 1.21.6+
961-
case "GIANT":
962-
case "GUARDIAN":
963-
case "HORSE":
964-
case "IRON_GOLEM":
965-
case "MAGMA_CUBE":
966-
case "MUSHROOM_COW", "MOOSHROOM":
967-
case "OCELOT":
968-
case "PIG":
969-
case "PIG_ZOMBIE":
970-
case "RABBIT":
971-
case "SHEEP":
972-
case "SILVERFISH":
973-
case "SKELETON":
974-
case "SLIME":
975-
case "SNOWMAN", "SNOW_GOLEM":
976-
case "SPIDER":
977-
case "SQUID":
978-
case "VILLAGER":
979-
case "WITCH":
980-
case "WITHER":
981-
case "WOLF":
982-
case "ZOMBIE":
983-
case "PARROT":
984-
case "SALMON":
985-
case "DOLPHIN":
986-
case "TROPICAL_FISH":
987-
case "DROWNED":
988-
case "COD":
989-
case "TURTLE":
990-
case "PUFFERFISH":
991-
case "PHANTOM":
992-
case "ILLUSIONER":
993-
case "CAT":
994-
case "PANDA":
995-
case "FOX":
996-
case "PILLAGER":
997-
case "TRADER_LLAMA":
998-
case "WANDERING_TRADER":
999-
case "RAVAGER":
1000-
case "BEE":
1001-
case "HOGLIN":
1002-
case "PIGLIN":
1003-
case "ZOGLIN":
1004-
default: {
894+
}
895+
case ZOMBIFIED_PIGLIN, PIGLIN_BRUTE, LLAMA, DONKEY, MULE, ZOMBIE_HORSE, SKELETON_HORSE, HUSK,
896+
ELDER_GUARDIAN, WITHER_SKELETON, STRAY, ZOMBIE_VILLAGER, EVOKER, EVOKER_FANGS, VEX, VINDICATOR,
897+
POLAR_BEAR, BAT, BLAZE, CAVE_SPIDER, CHICKEN, COW, CREEPER, ENDERMAN, ENDERMITE, ENDER_DRAGON, GHAST,
898+
HAPPY_GHAST, GIANT, GUARDIAN, HORSE, IRON_GOLEM, MAGMA_CUBE, MOOSHROOM, OCELOT, PIG, RABBIT, SHEEP,
899+
SILVERFISH, SKELETON, SLIME, SNOW_GOLEM, SPIDER, SQUID, VILLAGER, WITCH, WITHER, WOLF, ZOMBIE,
900+
PARROT, SALMON, DOLPHIN, TROPICAL_FISH, DROWNED, COD, TURTLE, PUFFERFISH, PHANTOM, ILLUSIONER, CAT,
901+
PANDA, FOX, PILLAGER, TRADER_LLAMA, WANDERING_TRADER, RAVAGER, BEE, HOGLIN, PIGLIN, ZOGLIN, FROG,
902+
GOAT, WARDEN, TADPOLE, ALLAY, ARMADILLO, AXOLOTL, STRIDER, SNIFFER, CAMEL, BOGGED, COPPER_GOLEM,
903+
GLOW_SQUID, BREEZE, CREAKING -> {
1005904
if (Settings.Enabled_Components.KILL_ROAD_MOBS) {
1006905
Location location = entity.getLocation();
1007906
if (BukkitUtil.adapt(location).isPlotRoad()) {

0 commit comments

Comments
 (0)