diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index 343d7a1d8..7bc7957e8 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -1258,7 +1258,11 @@ private static void handleBlockRightClick(T even // Handle created boats if (item != null && Materials.isBoat(item.getType())) { - Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), Materials.getRelatedEntity(item.getType()))); + EntityType entityType = Materials.getRelatedEntity(item.getType()); + if (entityType == null) { + entityType = EntityType.OAK_BOAT; + } + Events.fireToCancel(event, new SpawnEntityEvent(event, cause, placed.getLocation().add(0.5, 0, 0.5), entityType)); return; } diff --git a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java index 886783a9e..15ad891a2 100644 --- a/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java +++ b/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/util/Materials.java @@ -81,14 +81,13 @@ private static void putMaterialTag(Tag tag, Integer value) { ENTITY_ITEMS.put(EntityType.ARMOR_STAND, Material.ARMOR_STAND); ENTITY_ITEMS.put(EntityType.END_CRYSTAL, Material.END_CRYSTAL); - for (String wood : new String[]{"OAK", "SPRUCE", "BIRCH", "JUNGLE", "ACACIA", "DARK_OAK", "MANGROVE", "CHERRY", "PALE_OAK"}) { - String regular = wood + "_BOAT"; - String chest = wood + "_CHEST_BOAT"; - ENTITY_ITEMS.put(EntityType.valueOf(regular), Material.getMaterial(regular)); - ENTITY_ITEMS.put(EntityType.valueOf(chest), Material.getMaterial(chest)); - } - ENTITY_ITEMS.put(EntityType.BAMBOO_RAFT, Material.BAMBOO_RAFT); - ENTITY_ITEMS.put(EntityType.BAMBOO_CHEST_RAFT, Material.BAMBOO_CHEST_RAFT); + // All boat items should have an entity equivalent, so we can use the tag to map them out. + Tag.ITEMS_BOATS.getValues().forEach(mat -> { + EntityType entityEquivalent = Registry.ENTITY_TYPE.get(mat.getKey()); + if (entityEquivalent != null) { + ENTITY_ITEMS.put(entityEquivalent, mat); + } + }); // preset some tags to a default value, override some of them: putMaterialTag(Tag.DOORS, MODIFIED_ON_RIGHT);