From bf36ec5dd8eba290a40050157bfd4330719fe42f Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 30 Jun 2020 15:50:12 -0700 Subject: [PATCH] Enable backwards compatibility. Adds protection for bee breeding too. --- .../flags/protection/BreedingListener.java | 62 ++++++++++++------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreedingListener.java b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreedingListener.java index 7b34bcf82..d509d9627 100644 --- a/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreedingListener.java +++ b/src/main/java/world/bentobox/bentobox/listeners/flags/protection/BreedingListener.java @@ -2,9 +2,10 @@ package world.bentobox.bentobox.listeners.flags.protection; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; -import com.google.common.collect.ImmutableMap; import org.bukkit.Material; import org.bukkit.entity.Animals; import org.bukkit.entity.EntityType; @@ -15,6 +16,8 @@ import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; +import com.google.common.base.Enums; + import world.bentobox.bentobox.api.flags.FlagListener; import world.bentobox.bentobox.lists.Flags; @@ -31,30 +34,41 @@ public class BreedingListener extends FlagListener { * This list may need to be extended with future versions of Minecraft. * See this Minecraft Wiki page for reference: https://minecraft.gamepedia.com/Breeding#Breeding_foods. */ - private static final ImmutableMap> BREEDING_ITEMS = new ImmutableMap.Builder>() - .put(EntityType.HORSE, Arrays.asList(Material.GOLDEN_APPLE, Material.GOLDEN_CARROT)) - .put(EntityType.DONKEY, Arrays.asList(Material.GOLDEN_APPLE, Material.GOLDEN_CARROT)) - .put(EntityType.COW, Collections.singletonList(Material.WHEAT)) - .put(EntityType.MUSHROOM_COW, Collections.singletonList(Material.WHEAT)) - .put(EntityType.SHEEP, Collections.singletonList(Material.WHEAT)) - .put(EntityType.PIG, Arrays.asList(Material.CARROT, Material.POTATO, Material.BEETROOT)) - .put(EntityType.CHICKEN, Arrays.asList(Material.WHEAT_SEEDS, Material.PUMPKIN_SEEDS, Material.MELON_SEEDS, Material.BEETROOT_SEEDS)) - .put(EntityType.WOLF, Arrays.asList(Material.PORKCHOP, Material.COOKED_PORKCHOP, Material.BEEF, Material.COOKED_BEEF, - Material.CHICKEN, Material.COOKED_CHICKEN, Material.RABBIT, Material.COOKED_RABBIT, - Material.MUTTON, Material.COOKED_MUTTON, Material.ROTTEN_FLESH)) - .put(EntityType.CAT, Arrays.asList(Material.COD, Material.SALMON)) - .put(EntityType.OCELOT, Arrays.asList(Material.COD, Material.SALMON)) - .put(EntityType.RABBIT, Arrays.asList(Material.DANDELION, Material.CARROT, Material.GOLDEN_CARROT)) - .put(EntityType.LLAMA, Collections.singletonList(Material.HAY_BLOCK)) - .put(EntityType.TRADER_LLAMA, Collections.singletonList(Material.HAY_BLOCK)) - .put(EntityType.TURTLE, Collections.singletonList(Material.SEAGRASS)) - .put(EntityType.PANDA, Collections.singletonList(Material.BAMBOO)) - .put(EntityType.FOX, Collections.singletonList(Material.SWEET_BERRIES)) - .put(EntityType.HOGLIN, Collections.singletonList(Material.CRIMSON_FUNGUS)) // 1.16.1 - .put(EntityType.STRIDER, Collections.singletonList(Material.WARPED_FUNGUS)) // 1.16.1 - .build(); + private static final Map> BREEDING_ITEMS; + static { + Map> bi = new HashMap<>(); + + bi.put(EntityType.HORSE, Arrays.asList(Material.GOLDEN_APPLE, Material.GOLDEN_CARROT)); + bi.put(EntityType.DONKEY, Arrays.asList(Material.GOLDEN_APPLE, Material.GOLDEN_CARROT)); + bi.put(EntityType.COW, Collections.singletonList(Material.WHEAT)); + bi.put(EntityType.MUSHROOM_COW, Collections.singletonList(Material.WHEAT)); + bi.put(EntityType.SHEEP, Collections.singletonList(Material.WHEAT)); + bi.put(EntityType.PIG, Arrays.asList(Material.CARROT, Material.POTATO, Material.BEETROOT)); + bi.put(EntityType.CHICKEN, Arrays.asList(Material.WHEAT_SEEDS, Material.PUMPKIN_SEEDS, Material.MELON_SEEDS, Material.BEETROOT_SEEDS)); + bi.put(EntityType.WOLF, Arrays.asList(Material.PORKCHOP, Material.COOKED_PORKCHOP, Material.BEEF, Material.COOKED_BEEF, + Material.CHICKEN, Material.COOKED_CHICKEN, Material.RABBIT, Material.COOKED_RABBIT, + Material.MUTTON, Material.COOKED_MUTTON, Material.ROTTEN_FLESH)); + bi.put(EntityType.CAT, Arrays.asList(Material.COD, Material.SALMON)); + bi.put(EntityType.OCELOT, Arrays.asList(Material.COD, Material.SALMON)); + bi.put(EntityType.RABBIT, Arrays.asList(Material.DANDELION, Material.CARROT, Material.GOLDEN_CARROT)); + bi.put(EntityType.LLAMA, Collections.singletonList(Material.HAY_BLOCK)); + bi.put(EntityType.TRADER_LLAMA, Collections.singletonList(Material.HAY_BLOCK)); + bi.put(EntityType.TURTLE, Collections.singletonList(Material.SEAGRASS)); + bi.put(EntityType.PANDA, Collections.singletonList(Material.BAMBOO)); + bi.put(EntityType.FOX, Collections.singletonList(Material.SWEET_BERRIES)); + if (Enums.getIfPresent(EntityType.class, "BEES").isPresent()) { // 1.15.2 + bi.put(EntityType.BEE, Arrays.asList(Material.SUNFLOWER, Material.ORANGE_TULIP, Material.PINK_TULIP, + Material.RED_TULIP, Material.WHITE_TULIP, Material.ALLIUM, + Material.AZURE_BLUET, Material.BLUE_ORCHID, Material.CORNFLOWER, + Material.DANDELION, Material.OXEYE_DAISY, Material.PEONY, Material.POPPY)); + } + if (Enums.getIfPresent(EntityType.class, "HOGLIN").isPresent()) { + bi.put(EntityType.HOGLIN, Collections.singletonList(Material.CRIMSON_FUNGUS)); // 1.16.1 + bi.put(EntityType.STRIDER, Collections.singletonList(Material.WARPED_FUNGUS)); // 1.16.1 + } + BREEDING_ITEMS = Collections.unmodifiableMap(bi); + } - //TODO: add bees when switching to 1.15.x only @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled=true) public void onPlayerInteract(final PlayerInteractAtEntityEvent e) {