Added support for 1.20's food for breeding compatibility.

This commit is contained in:
Brianna OKeefe 2024-03-11 19:07:11 -05:00
parent 50d1a41acd
commit 0319e37caf
1 changed files with 43 additions and 36 deletions

View File

@ -8,13 +8,7 @@ import com.craftaro.ultimatestacker.settings.Settings;
import com.craftaro.ultimatestacker.stackable.entity.Split; import com.craftaro.ultimatestacker.stackable.entity.Split;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Ageable; import org.bukkit.entity.*;
import org.bukkit.entity.Cat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Horse;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.event.player.PlayerInteractAtEntityEvent;
@ -75,55 +69,68 @@ public class InteractListeners implements Listener {
private boolean correctFood(ItemStack is, Entity entity) { private boolean correctFood(ItemStack is, Entity entity) {
Material type = is.getType(); Material type = is.getType();
switch (entity.getType().name()) { switch (entity.getType().name()) {
case "COW": case "COW":
case "MUSHROOM_COW": case "MUSHROOM_COW":
case "SHEEP": case "SHEEP":
return type == Material.WHEAT; return type == Material.WHEAT;
case "PIG": case "PIG":
return type == Material.CARROT || (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9) && type == Material.BEETROOT) || type == Material.POTATO; return type == Material.CARROT || type == Material.BEETROOT || type == Material.POTATO;
case "CHICKEN": case "CHICKEN":
return type == XMaterial.WHEAT_SEEDS.parseMaterial() return type == Material.WHEAT_SEEDS
|| type == Material.MELON_SEEDS || type == Material.MELON_SEEDS
|| type == Material.PUMPKIN_SEEDS || type == Material.PUMPKIN_SEEDS
|| type == XMaterial.BEETROOT_SEEDS.parseMaterial(); || type == Material.BEETROOT_SEEDS;
case "HORSE": case "HORSE":
return (type == Material.GOLDEN_APPLE || type == Material.GOLDEN_CARROT) && ((Horse)entity).isTamed(); case "DONKEY":
case "MULE":
return (type == Material.GOLDEN_APPLE || type == Material.GOLDEN_CARROT) && ((AbstractHorse) entity).isTamed();
case "WOLF": case "WOLF":
return type == XMaterial.BEEF.parseMaterial() return type == Material.BEEF
|| type == XMaterial.CHICKEN.parseMaterial() || type == Material.CHICKEN
|| type == XMaterial.COD.parseMaterial() || type == Material.COD
|| type == XMaterial.MUTTON.parseMaterial() || type == Material.MUTTON
|| type == XMaterial.PORKCHOP.parseMaterial() || type == Material.PORKCHOP
|| type == XMaterial.RABBIT.parseMaterial() || type == Material.RABBIT
|| XMaterial.SALMON.equals(XMaterial.matchXMaterial(is)) || type == Material.SALMON
|| type == XMaterial.COOKED_BEEF.parseMaterial() || type == Material.COOKED_BEEF
|| type == XMaterial.COOKED_CHICKEN.parseMaterial() || type == Material.COOKED_CHICKEN
|| type == XMaterial.COOKED_COD.parseMaterial() || type == Material.COOKED_COD
|| type == XMaterial.COOKED_MUTTON.parseMaterial() || type == Material.COOKED_MUTTON
|| type == XMaterial.COOKED_PORKCHOP.parseMaterial() || type == Material.COOKED_PORKCHOP
|| type == XMaterial.COOKED_RABBIT.parseMaterial() || type == Material.COOKED_RABBIT
|| XMaterial.COOKED_SALMON.equals(XMaterial.matchXMaterial(is)) || type == Material.COOKED_SALMON
|| type == Material.ROTTEN_FLESH
&& ((Wolf) entity).isTamed(); && ((Wolf) entity).isTamed();
case "OCELOT": case "OCELOT":
return (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)
? type == Material.SALMON
|| type == Material.COD
|| type == Material.PUFFERFISH
|| type == Material.TROPICAL_FISH
: type == XMaterial.COD.parseMaterial()); // Now broken in 1.13 ((Ocelot) entity).isTamed()
case "PANDA":
return (type == Material.BAMBOO);
case "FOX":
return type == Material.SWEET_BERRIES;
case "CAT": case "CAT":
return (type == Material.COD || type == Material.SALMON) && ((Cat) entity).isTamed(); return (type == Material.COD || type == Material.SALMON) && ((Tameable) entity).isTamed();
case "PANDA":
return type == Material.BAMBOO;
case "FOX":
return type == Material.SWEET_BERRIES || type == Material.GLOW_BERRIES;
case "RABBIT": case "RABBIT":
return type == Material.CARROT || type == Material.GOLDEN_CARROT || type == Material.DANDELION; return type == Material.CARROT || type == Material.GOLDEN_CARROT || type == Material.DANDELION;
case "LLAMA": case "LLAMA":
case "TRADER_LLAMA":
return type == Material.HAY_BLOCK; return type == Material.HAY_BLOCK;
case "TURTLE": case "TURTLE":
return type == Material.SEAGRASS; return type == Material.SEAGRASS;
case "HOGLIN":
return type == Material.CRIMSON_FUNGUS;
case "STRIDER":
return type == Material.WARPED_FUNGUS;
case "BEE":
return type == Material.HONEYCOMB || type == Material.HONEY_BOTTLE;
case "AXOLOTL":
return type == Material.TROPICAL_FISH_BUCKET;
case "GOAT":
return type == Material.WHEAT;
case "GLOW_SQUID":
return type == Material.GLOW_INK_SAC;
case "CAMEL":
return type == Material.CACTUS;
default: default:
return false; return false;
} }