2019-12-03 12:04:06 +00:00
|
|
|
|
2019-07-06 04:03:15 +00:00
|
|
|
package io.izzel.taboolib.util.lite;
|
2019-07-05 16:17:54 +00:00
|
|
|
|
2019-08-31 12:22:27 +00:00
|
|
|
import com.google.common.collect.Lists;
|
2019-10-06 09:43:37 +00:00
|
|
|
import io.izzel.taboolib.util.Reflection;
|
2019-07-05 16:17:54 +00:00
|
|
|
import org.bukkit.enchantments.Enchantment;
|
|
|
|
import org.bukkit.entity.LivingEntity;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.entity.Projectile;
|
|
|
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
2019-08-31 12:22:27 +00:00
|
|
|
import org.bukkit.event.inventory.ClickType;
|
|
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
2019-07-05 16:17:54 +00:00
|
|
|
|
2019-08-31 12:22:27 +00:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.Optional;
|
2019-07-05 16:17:54 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @Author 坏黑
|
|
|
|
* @Since 2019-07-05 18:53
|
|
|
|
*/
|
|
|
|
public class Servers {
|
|
|
|
|
|
|
|
public static void setEnchantmentAcceptingNew(boolean value) {
|
|
|
|
try {
|
2019-10-06 09:43:37 +00:00
|
|
|
Reflection.setValue(null, Enchantment.class, true, "acceptingNew", value);
|
|
|
|
} catch (Throwable t) {
|
|
|
|
t.printStackTrace();
|
2019-07-05 16:17:54 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Player getAttackerInDamageEvent(EntityDamageByEntityEvent e) {
|
|
|
|
if (e.getDamager() instanceof Player) {
|
|
|
|
return (Player) e.getDamager();
|
|
|
|
} else if (e.getDamager() instanceof Projectile && ((Projectile) e.getDamager()).getShooter() instanceof Player) {
|
|
|
|
return (Player) ((Projectile) e.getDamager()).getShooter();
|
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static LivingEntity getLivingAttackerInDamageEvent(EntityDamageByEntityEvent e) {
|
|
|
|
if (e.getDamager() instanceof LivingEntity) {
|
|
|
|
return (LivingEntity) e.getDamager();
|
|
|
|
} else if (e.getDamager() instanceof Projectile && ((Projectile) e.getDamager()).getShooter() instanceof LivingEntity) {
|
|
|
|
return (LivingEntity) ((Projectile) e.getDamager()).getShooter();
|
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
2019-08-31 12:22:27 +00:00
|
|
|
|
|
|
|
public static List<ItemStack> getAffectItemInClickEvent(InventoryClickEvent e) {
|
|
|
|
List<ItemStack> list = Lists.newArrayList();
|
|
|
|
if (e.getClick() == ClickType.NUMBER_KEY) {
|
|
|
|
Optional.ofNullable(e.getWhoClicked().getInventory().getItem(e.getHotbarButton())).ifPresent(list::add);
|
|
|
|
}
|
|
|
|
Optional.ofNullable(e.getCurrentItem()).ifPresent(list::add);
|
|
|
|
return list;
|
|
|
|
}
|
2019-07-05 16:17:54 +00:00
|
|
|
}
|