mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2025-02-03 05:51:35 +01:00
Fix Dispenser Shulker Box bug and cleanup (#1776)
This commit is contained in:
parent
149d1f84e8
commit
46a662e1a7
@ -1048,6 +1048,12 @@ public void onBlockDispense(BlockDispenseEvent event) {
|
||||
Block placed = dispenserBlock.getRelative(dispenser.getFacing());
|
||||
Block clicked = placed.getRelative(dispenser.getFacing());
|
||||
handleBlockRightClick(event, cause, item, clicked, placed);
|
||||
|
||||
// handle special dispenser behavior
|
||||
if (item != null && Materials.isShulkerBox(item.getType())) {
|
||||
Events.fireToCancel(event, new PlaceBlockEvent(event, cause, placed.getLocation(), item.getType()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,27 +52,7 @@ public final class Materials {
|
||||
private static final Map<Material, Integer> MATERIAL_FLAGS = new EnumMap<>(Material.class);
|
||||
private static final Set<PotionEffectType> DAMAGE_EFFECTS = new HashSet<>();
|
||||
|
||||
private static Set<Material> shulkerBoxes = new HashSet<>();
|
||||
|
||||
static {
|
||||
shulkerBoxes.add(Material.SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.WHITE_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.ORANGE_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.MAGENTA_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.LIGHT_BLUE_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.YELLOW_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.LIME_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.PINK_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.GRAY_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.LIGHT_GRAY_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.CYAN_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.PURPLE_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.BLUE_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.BROWN_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.GREEN_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.RED_SHULKER_BOX);
|
||||
shulkerBoxes.add(Material.BLACK_SHULKER_BOX);
|
||||
|
||||
ENTITY_ITEMS.put(EntityType.PAINTING, Material.PAINTING);
|
||||
ENTITY_ITEMS.put(EntityType.ARROW, Material.ARROW);
|
||||
ENTITY_ITEMS.put(EntityType.SNOWBALL, Material.SNOWBALL);
|
||||
@ -747,12 +727,10 @@ public final class Materials {
|
||||
MATERIAL_FLAGS.put(Material.WEEPING_VINES_PLANT, 0);
|
||||
|
||||
|
||||
// Fake tags
|
||||
for (Material m : shulkerBoxes) {
|
||||
MATERIAL_FLAGS.put(m, MODIFIED_ON_RIGHT);
|
||||
}
|
||||
|
||||
// Generated via tag
|
||||
for (Material shulkerBox : Tag.SHULKER_BOXES.getValues()) {
|
||||
MATERIAL_FLAGS.put(shulkerBox, MODIFIED_ON_RIGHT);
|
||||
}
|
||||
for (Material door : Tag.DOORS.getValues()) {
|
||||
MATERIAL_FLAGS.put(door, MODIFIED_ON_RIGHT);
|
||||
}
|
||||
@ -1034,6 +1012,16 @@ public static boolean isBoat(Material material) {
|
||||
return Tag.ITEMS_BOATS.isTagged(material);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test whether the given material is a Shulker Box.
|
||||
*
|
||||
* @param material the material
|
||||
* @return true if a Shulker Box block
|
||||
*/
|
||||
public static boolean isShulkerBox(Material material) {
|
||||
return Tag.SHULKER_BOXES.isTagged(material);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test whether the given material is an inventory block.
|
||||
*
|
||||
@ -1052,7 +1040,7 @@ public static boolean isInventoryBlock(Material material) {
|
||||
|| material == Material.BARREL
|
||||
|| material == Material.BLAST_FURNACE
|
||||
|| material == Material.SMOKER
|
||||
|| shulkerBoxes.contains(material);
|
||||
|| Tag.SHULKER_BOXES.isTagged(material);
|
||||
}
|
||||
|
||||
public static boolean isSpawnEgg(Material material) {
|
||||
|
Loading…
Reference in New Issue
Block a user