mirror of
https://github.com/songoda/EpicEnchants.git
synced 2025-03-12 14:49:42 +01:00
Add the ability to use "opponent_holding" on Living_Entities
This commit is contained in:
parent
4a43c4d562
commit
a40ddd325b
@ -5,7 +5,9 @@ import com.songoda.epicenchants.enums.TriggerType;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
@ -68,17 +70,31 @@ public class GeneralUtils {
|
||||
return triggers == null ? Collections.emptySet() : Arrays.stream(triggers.replaceAll("\\s+", "").split(",")).map(TriggerType::valueOf).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public static ItemStack getHeldItem(Player player, Event event) {
|
||||
int slot = player.getInventory().getHeldItemSlot();
|
||||
public static ItemStack getHeldItem(LivingEntity entity, Event event) {
|
||||
if (entity instanceof Player) {
|
||||
Player player = (Player)entity;
|
||||
int slot = player.getInventory().getHeldItemSlot();
|
||||
|
||||
try {
|
||||
if (event instanceof PlayerInteractEvent && ((PlayerInteractEvent) event).getHand() == EquipmentSlot.OFF_HAND) {
|
||||
slot = 40;
|
||||
try {
|
||||
if (event instanceof PlayerInteractEvent && ((PlayerInteractEvent) event).getHand() == EquipmentSlot.OFF_HAND) {
|
||||
slot = 40;
|
||||
}
|
||||
} catch (NoSuchMethodError ignore) {
|
||||
}
|
||||
} catch (NoSuchMethodError ignore) {
|
||||
}
|
||||
|
||||
return player.getInventory().getItem(slot);
|
||||
return player.getInventory().getItem(slot);
|
||||
} else if (entity.getEquipment() != null){
|
||||
ItemStack item = entity.getEquipment().getItemInHand();
|
||||
|
||||
try {
|
||||
if (item.getType() == Material.AIR) {
|
||||
return entity.getEquipment().getItemInOffHand();
|
||||
}
|
||||
} catch (NoSuchMethodError ignore) {
|
||||
}
|
||||
return item;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Object parseJS(String toParse, String type, Object def) {
|
||||
|
@ -58,7 +58,7 @@ public class Placeholders {
|
||||
put("{opponent_is_sneaking}", (user, opponent) -> opponent instanceof Player && ((Player) opponent).isSneaking());
|
||||
|
||||
put("{user_holding}", (user, opponent) -> Optional.ofNullable(getHeldItem(user, null)).map(ItemStack::getType).orElse(Material.AIR));
|
||||
put("{opponent_holding}", (user, opponent) -> opponent instanceof Player ? Optional.ofNullable(getHeldItem((Player) opponent, null)).map(ItemStack::getType).orElse(Material.AIR) : "N/A");
|
||||
put("{opponent_holding}", (user, opponent) -> opponent != null ? Optional.ofNullable(getHeldItem(opponent, null)).map(ItemStack::getType).orElse(Material.AIR) : "N/A");
|
||||
|
||||
put("{user_is_swimming}", (user, opponent) -> user.getLocation().getBlock().isLiquid());
|
||||
put("{opponent_is_swimming}", (user, opponent) -> opponent != null && opponent.getLocation().getBlock().isLiquid());
|
||||
|
Loading…
Reference in New Issue
Block a user