2222import com .google .common .collect .BiMap ;
2323import com .google .common .collect .HashBiMap ;
2424import com .sk89q .worldguard .protection .flags .Flags ;
25+ import org .bukkit .Bukkit ;
2526import org .bukkit .Material ;
27+ import org .bukkit .NamespacedKey ;
2628import org .bukkit .Tag ;
2729import org .bukkit .entity .EntityType ;
2830import org .bukkit .potion .PotionEffect ;
@@ -80,6 +82,10 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
8082 ENTITY_ITEMS .put (EntityType .ARMOR_STAND , Material .ARMOR_STAND );
8183 ENTITY_ITEMS .put (EntityType .END_CRYSTAL , Material .END_CRYSTAL );
8284
85+ // preset some tags to a default value, override some of them:
86+ putMaterialTag (Tag .DOORS , MODIFIED_ON_RIGHT );
87+ putMaterialTag (Tag .TRAPDOORS , MODIFIED_ON_RIGHT );
88+
8389 MATERIAL_FLAGS .put (Material .AIR , 0 );
8490 MATERIAL_FLAGS .put (Material .STONE , 0 );
8591 MATERIAL_FLAGS .put (Material .GRASS_BLOCK , 0 );
@@ -150,12 +156,6 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
150156 MATERIAL_FLAGS .put (Material .CAKE , MODIFIED_ON_RIGHT );
151157 MATERIAL_FLAGS .put (Material .REPEATER , MODIFIED_ON_RIGHT );
152158// MATERIAL_FLAGS.put(Material.STAINED_GLASS, 0);
153- MATERIAL_FLAGS .put (Material .ACACIA_TRAPDOOR , MODIFIED_ON_RIGHT );
154- MATERIAL_FLAGS .put (Material .BIRCH_TRAPDOOR , MODIFIED_ON_RIGHT );
155- MATERIAL_FLAGS .put (Material .DARK_OAK_TRAPDOOR , MODIFIED_ON_RIGHT );
156- MATERIAL_FLAGS .put (Material .JUNGLE_TRAPDOOR , MODIFIED_ON_RIGHT );
157- MATERIAL_FLAGS .put (Material .OAK_TRAPDOOR , MODIFIED_ON_RIGHT );
158- MATERIAL_FLAGS .put (Material .SPRUCE_TRAPDOOR , MODIFIED_ON_RIGHT );
159159 MATERIAL_FLAGS .put (Material .INFESTED_STONE , 0 );
160160 MATERIAL_FLAGS .put (Material .INFESTED_STONE_BRICKS , 0 );
161161 MATERIAL_FLAGS .put (Material .INFESTED_MOSSY_STONE_BRICKS , 0 );
@@ -227,11 +227,6 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
227227 MATERIAL_FLAGS .put (Material .IRON_TRAPDOOR , 0 );
228228 MATERIAL_FLAGS .put (Material .RED_SANDSTONE , 0 );
229229 MATERIAL_FLAGS .put (Material .RED_SANDSTONE_STAIRS , 0 );
230- MATERIAL_FLAGS .put (Material .SPRUCE_DOOR , MODIFIED_ON_RIGHT );
231- MATERIAL_FLAGS .put (Material .BIRCH_DOOR , MODIFIED_ON_RIGHT );
232- MATERIAL_FLAGS .put (Material .JUNGLE_DOOR , MODIFIED_ON_RIGHT );
233- MATERIAL_FLAGS .put (Material .ACACIA_DOOR , MODIFIED_ON_RIGHT );
234- MATERIAL_FLAGS .put (Material .DARK_OAK_DOOR , MODIFIED_ON_RIGHT );
235230
236231 MATERIAL_FLAGS .put (Material .DIRT_PATH , 0 );
237232 MATERIAL_FLAGS .put (Material .CHORUS_PLANT , 0 );
@@ -247,7 +242,7 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
247242 MATERIAL_FLAGS .put (Material .PURPUR_SLAB , 0 );
248243 MATERIAL_FLAGS .put (Material .STRUCTURE_BLOCK , MODIFIED_ON_LEFT | MODIFIED_ON_RIGHT );
249244 MATERIAL_FLAGS .put (Material .REPEATING_COMMAND_BLOCK , MODIFIED_ON_RIGHT );
250- MATERIAL_FLAGS .put (Material .CHAIN_COMMAND_BLOCK , MODIFIED_ON_RIGHT );
245+ MATERIAL_FLAGS .put (Material .CHAIN_COMMAND_BLOCK , MODIFIED_ON_RIGHT );
251246
252247 MATERIAL_FLAGS .put (Material .MAGMA_BLOCK , 0 );
253248 MATERIAL_FLAGS .put (Material .NETHER_WART_BLOCK , 0 );
@@ -677,7 +672,6 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
677672 MATERIAL_FLAGS .put (Material .CRIMSON_FUNGUS , 0 );
678673 MATERIAL_FLAGS .put (Material .CRIMSON_NYLIUM , 0 );
679674 MATERIAL_FLAGS .put (Material .CRIMSON_ROOTS , 0 );
680- MATERIAL_FLAGS .put (Material .CRIMSON_TRAPDOOR , MODIFIED_ON_RIGHT );
681675 MATERIAL_FLAGS .put (Material .CRYING_OBSIDIAN , 0 );
682676 MATERIAL_FLAGS .put (Material .GILDED_BLACKSTONE , 0 );
683677 MATERIAL_FLAGS .put (Material .LODESTONE , 0 );
@@ -718,7 +712,6 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
718712 MATERIAL_FLAGS .put (Material .WARPED_FUNGUS_ON_A_STICK , 0 );
719713 MATERIAL_FLAGS .put (Material .WARPED_NYLIUM , 0 );
720714 MATERIAL_FLAGS .put (Material .WARPED_ROOTS , 0 );
721- MATERIAL_FLAGS .put (Material .WARPED_TRAPDOOR , MODIFIED_ON_RIGHT );
722715 MATERIAL_FLAGS .put (Material .WARPED_WART_BLOCK , 0 );
723716 MATERIAL_FLAGS .put (Material .WEEPING_VINES , 0 );
724717 MATERIAL_FLAGS .put (Material .WEEPING_VINES_PLANT , 0 );
@@ -843,9 +836,46 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
843836 MATERIAL_FLAGS .put (Material .ARMADILLO_SCUTE , 0 );
844837 MATERIAL_FLAGS .put (Material .WOLF_ARMOR , 0 );
845838
846- // Generated via tag
847- putMaterialTag (Tag .WOODEN_DOORS , MODIFIED_ON_RIGHT );
848- putMaterialTag (Tag .WOODEN_TRAPDOORS , MODIFIED_ON_RIGHT );
839+ // 1.21
840+ MATERIAL_FLAGS .put (Material .CHISELED_TUFF , 0 );
841+ MATERIAL_FLAGS .put (Material .POLISHED_TUFF , 0 );
842+ MATERIAL_FLAGS .put (Material .TUFF_BRICKS , 0 );
843+ MATERIAL_FLAGS .put (Material .CHISELED_TUFF_BRICKS , 0 );
844+ MATERIAL_FLAGS .put (Material .HEAVY_CORE , 0 );
845+ MATERIAL_FLAGS .put (Material .CHISELED_COPPER , 0 );
846+ MATERIAL_FLAGS .put (Material .EXPOSED_CHISELED_COPPER , 0 );
847+ MATERIAL_FLAGS .put (Material .WEATHERED_CHISELED_COPPER , 0 );
848+ MATERIAL_FLAGS .put (Material .OXIDIZED_CHISELED_COPPER , 0 );
849+ MATERIAL_FLAGS .put (Material .WAXED_CHISELED_COPPER , 0 );
850+ MATERIAL_FLAGS .put (Material .WAXED_EXPOSED_CHISELED_COPPER , 0 );
851+ MATERIAL_FLAGS .put (Material .WAXED_WEATHERED_CHISELED_COPPER , 0 );
852+ MATERIAL_FLAGS .put (Material .WAXED_OXIDIZED_CHISELED_COPPER , 0 );
853+ MATERIAL_FLAGS .put (Material .CRAFTER , 0 );
854+ MATERIAL_FLAGS .put (Material .FLOW_BANNER_PATTERN , 0 );
855+ MATERIAL_FLAGS .put (Material .GUSTER_BANNER_PATTERN , 0 );
856+ MATERIAL_FLAGS .put (Material .COPPER_GRATE , 0 );
857+ MATERIAL_FLAGS .put (Material .WEATHERED_COPPER_GRATE , 0 );
858+ MATERIAL_FLAGS .put (Material .EXPOSED_COPPER_GRATE , 0 );
859+ MATERIAL_FLAGS .put (Material .OXIDIZED_COPPER_GRATE , 0 );
860+ MATERIAL_FLAGS .put (Material .WAXED_COPPER_GRATE , 0 );
861+ MATERIAL_FLAGS .put (Material .WAXED_WEATHERED_COPPER_GRATE , 0 );
862+ MATERIAL_FLAGS .put (Material .WAXED_EXPOSED_COPPER_GRATE , 0 );
863+ MATERIAL_FLAGS .put (Material .WAXED_OXIDIZED_COPPER_GRATE , 0 );
864+ MATERIAL_FLAGS .put (Material .COPPER_BULB , 0 );
865+ MATERIAL_FLAGS .put (Material .WEATHERED_COPPER_BULB , 0 );
866+ MATERIAL_FLAGS .put (Material .EXPOSED_COPPER_BULB , 0 );
867+ MATERIAL_FLAGS .put (Material .OXIDIZED_COPPER_BULB , 0 );
868+ MATERIAL_FLAGS .put (Material .WAXED_COPPER_BULB , 0 );
869+ MATERIAL_FLAGS .put (Material .WAXED_WEATHERED_COPPER_BULB , 0 );
870+ MATERIAL_FLAGS .put (Material .WAXED_EXPOSED_COPPER_BULB , 0 );
871+ MATERIAL_FLAGS .put (Material .WAXED_OXIDIZED_COPPER_BULB , 0 );
872+ MATERIAL_FLAGS .put (Material .TRIAL_SPAWNER , 0 );
873+ MATERIAL_FLAGS .put (Material .TRIAL_KEY , 0 );
874+ MATERIAL_FLAGS .put (Material .OMINOUS_TRIAL_KEY , 0 );
875+ MATERIAL_FLAGS .put (Material .VAULT , 0 );
876+ MATERIAL_FLAGS .put (Material .OMINOUS_BOTTLE , 0 );
877+ MATERIAL_FLAGS .put (Material .BREEZE_ROD , 0 );
878+
849879 putMaterialTag (Tag .SHULKER_BOXES , MODIFIED_ON_RIGHT );
850880 putMaterialTag (Tag .ITEMS_BOATS , 0 );
851881 putMaterialTag (Tag .BANNERS , 0 );
@@ -902,22 +932,25 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
902932 if (isSpawnEgg (material )) {
903933 MATERIAL_FLAGS .put (material , 0 );
904934 }
935+ if (material .name ().startsWith ("MUSIC_DISC_" )) {
936+ MATERIAL_FLAGS .put (material , 0 );
937+ }
905938 if (!MATERIAL_FLAGS .containsKey (material )) {
906939 logger .fine ("Missing material definition for " + (material .isBlock () ? "block " : "item " ) + material .name ());
907940 }
908941 }
909942
910943// DAMAGE_EFFECTS.add(PotionEffectType.SPEED);
911944 DAMAGE_EFFECTS .add (PotionEffectType .SLOWNESS );
912- // DAMAGE_EFFECTS.add(PotionEffectType.FAST_DIGGING );
945+ // DAMAGE_EFFECTS.add(PotionEffectType.HASTE );
913946 DAMAGE_EFFECTS .add (PotionEffectType .MINING_FATIGUE );
914- // DAMAGE_EFFECTS.add(PotionEffectType.INCREASE_DAMAGE );
915- // DAMAGE_EFFECTS.add(PotionEffectType.HEAL );
947+ // DAMAGE_EFFECTS.add(PotionEffectType.STRENGTH );
948+ // DAMAGE_EFFECTS.add(PotionEffectType.INSTANT_HEALTH );
916949 DAMAGE_EFFECTS .add (PotionEffectType .INSTANT_DAMAGE );
917- // DAMAGE_EFFECTS.add(PotionEffectType.JUMP );
950+ // DAMAGE_EFFECTS.add(PotionEffectType.JUMP_BOOST );
918951 DAMAGE_EFFECTS .add (PotionEffectType .NAUSEA );
919952// DAMAGE_EFFECTS.add(PotionEffectType.REGENERATION);
920- // DAMAGE_EFFECTS.add(PotionEffectType.DAMAGE_RESISTANCE );
953+ // DAMAGE_EFFECTS.add(PotionEffectType.RESISTANCE );
921954// DAMAGE_EFFECTS.add(PotionEffectType.FIRE_RESISTANCE);
922955// DAMAGE_EFFECTS.add(PotionEffectType.WATER_BREATHING);
923956// DAMAGE_EFFECTS.add(PotionEffectType.INVISIBILITY);
@@ -940,6 +973,11 @@ private static void putMaterialTag(Tag<Material> tag, Integer value) {
940973 DAMAGE_EFFECTS .add (PotionEffectType .BAD_OMEN );
941974// DAMAGE_EFFECTS.add(PotionEffectType.HERO_OF_THE_VILLAGE);
942975 DAMAGE_EFFECTS .add (PotionEffectType .DARKNESS );
976+ DAMAGE_EFFECTS .add (PotionEffectType .TRIAL_OMEN );
977+ DAMAGE_EFFECTS .add (PotionEffectType .WIND_CHARGED );
978+ DAMAGE_EFFECTS .add (PotionEffectType .WEAVING );
979+ DAMAGE_EFFECTS .add (PotionEffectType .OOZING );
980+ DAMAGE_EFFECTS .add (PotionEffectType .INFESTED );
943981 }
944982
945983 private Materials () {
@@ -1139,10 +1177,11 @@ public static EntityType getEntitySpawnEgg(Material material) {
11391177 case ALLAY_SPAWN_EGG -> EntityType .ALLAY ;
11401178 case ARMADILLO_SPAWN_EGG -> EntityType .ARMADILLO ;
11411179 case AXOLOTL_SPAWN_EGG -> EntityType .AXOLOTL ;
1142- case SPIDER_SPAWN_EGG -> EntityType .SPIDER ;
11431180 case BAT_SPAWN_EGG -> EntityType .BAT ;
11441181 case BEE_SPAWN_EGG -> EntityType .BEE ;
11451182 case BLAZE_SPAWN_EGG -> EntityType .BLAZE ;
1183+ case BOGGED_SPAWN_EGG -> EntityType .BOGGED ;
1184+ case BREEZE_SPAWN_EGG -> EntityType .BREEZE ;
11461185 case CAT_SPAWN_EGG -> EntityType .CAT ;
11471186 case CAMEL_SPAWN_EGG -> EntityType .CAMEL ;
11481187 case CAVE_SPIDER_SPAWN_EGG -> EntityType .CAVE_SPIDER ;
@@ -1192,6 +1231,7 @@ public static EntityType getEntitySpawnEgg(Material material) {
11921231 case SLIME_SPAWN_EGG -> EntityType .SLIME ;
11931232 case SNIFFER_SPAWN_EGG -> EntityType .SNIFFER ;
11941233 case SNOW_GOLEM_SPAWN_EGG -> EntityType .SNOW_GOLEM ;
1234+ case SPIDER_SPAWN_EGG -> EntityType .SPIDER ;
11951235 case SQUID_SPAWN_EGG -> EntityType .SQUID ;
11961236 case STRAY_SPAWN_EGG -> EntityType .STRAY ;
11971237 case STRIDER_SPAWN_EGG -> EntityType .STRIDER ;
@@ -1366,15 +1406,13 @@ public static boolean hasDamageEffect(Collection<PotionEffect> effects) {
13661406 * @return true if equippable armor
13671407 */
13681408 public static boolean isArmor (Material type ) {
1409+ if (Tag .ITEMS_HEAD_ARMOR .isTagged (type ) || Tag .ITEMS_CHEST_ARMOR .isTagged (type ) ||
1410+ Tag .ITEMS_LEG_ARMOR .isTagged (type ) || Tag .ITEMS_FOOT_ARMOR .isTagged (type ) ||
1411+ Tag .ITEMS_SKULLS .isTagged (type )) {
1412+ return true ;
1413+ }
13691414 return switch (type ) {
1370- case LEATHER_HELMET , LEATHER_CHESTPLATE , LEATHER_LEGGINGS , LEATHER_BOOTS ,
1371- CHAINMAIL_HELMET , CHAINMAIL_CHESTPLATE , CHAINMAIL_LEGGINGS , CHAINMAIL_BOOTS ,
1372- IRON_HELMET , IRON_CHESTPLATE , IRON_LEGGINGS , IRON_BOOTS ,
1373- DIAMOND_HELMET , DIAMOND_CHESTPLATE , DIAMOND_LEGGINGS , DIAMOND_BOOTS ,
1374- GOLDEN_HELMET , GOLDEN_CHESTPLATE , GOLDEN_LEGGINGS , GOLDEN_BOOTS ,
1375- NETHERITE_HELMET , NETHERITE_CHESTPLATE , NETHERITE_LEGGINGS , NETHERITE_BOOTS ,
1376- TURTLE_HELMET , ELYTRA ->
1377- true ;
1415+ case CARVED_PUMPKIN , ELYTRA -> true ;
13781416 default -> false ;
13791417 };
13801418 }
@@ -1465,27 +1503,18 @@ public static boolean isToolApplicable(Material toolMaterial, Material targetMat
14651503 public static boolean isFire (Material type ) {
14661504 return type == Material .FIRE || type == Material .SOUL_FIRE ;
14671505 }
1468-
1506+
14691507 public static boolean isWaxedCopper (Material type ) {
1470- return switch (type ) {
1471- case WAXED_COPPER_BLOCK , WAXED_EXPOSED_COPPER , WAXED_WEATHERED_COPPER , WAXED_OXIDIZED_COPPER ,
1472- WAXED_CUT_COPPER , WAXED_EXPOSED_CUT_COPPER , WAXED_WEATHERED_CUT_COPPER ,
1473- WAXED_OXIDIZED_CUT_COPPER , WAXED_CUT_COPPER_STAIRS , WAXED_EXPOSED_CUT_COPPER_STAIRS ,
1474- WAXED_WEATHERED_CUT_COPPER_STAIRS , WAXED_OXIDIZED_CUT_COPPER_STAIRS , WAXED_CUT_COPPER_SLAB ,
1475- WAXED_EXPOSED_CUT_COPPER_SLAB , WAXED_WEATHERED_CUT_COPPER_SLAB , WAXED_OXIDIZED_CUT_COPPER_SLAB ->
1476- true ;
1477- default -> false ;
1478- };
1508+ // copied from the MaterialTags class in Paper
1509+ return type .name ().startsWith ("WAXED_" ) && type .name ().contains ("COPPER" );
14791510 }
1480-
1511+
14811512 public static boolean isUnwaxedCopper (Material type ) {
1513+ // copied from the MaterialTags class in Paper
14821514 return switch (type ) {
1483- case COPPER_BLOCK , EXPOSED_COPPER , WEATHERED_COPPER , OXIDIZED_COPPER , CUT_COPPER ,
1484- EXPOSED_CUT_COPPER , WEATHERED_CUT_COPPER , OXIDIZED_CUT_COPPER , CUT_COPPER_STAIRS ,
1485- EXPOSED_CUT_COPPER_STAIRS , WEATHERED_CUT_COPPER_STAIRS , OXIDIZED_CUT_COPPER_STAIRS ,
1486- CUT_COPPER_SLAB , EXPOSED_CUT_COPPER_SLAB , WEATHERED_CUT_COPPER_SLAB , OXIDIZED_CUT_COPPER_SLAB ->
1487- true ;
1488- default -> false ;
1515+ case COPPER_BLOCK , CHISELED_COPPER , COPPER_DOOR , COPPER_TRAPDOOR , COPPER_GRATE , COPPER_BULB -> true ;
1516+ default -> type .name ().startsWith ("EXPOSED_" ) || type .name ().startsWith ("WEATHERED_" ) ||
1517+ type .name ().startsWith ("OXIDIZED_" ) || type .name ().startsWith ("CUT_COPPER" );
14891518 };
14901519 }
14911520
0 commit comments