2424import com .google .inject .Key ;
2525import com .google .inject .Singleton ;
2626import com .google .inject .Stage ;
27+ import com .plotsquared .bukkit .entity .EntityType ;
2728import com .plotsquared .bukkit .generator .BukkitPlotGenerator ;
2829import com .plotsquared .bukkit .inject .BackupModule ;
2930import 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