Delete src/main/java/pers/xanadu/enderdragon/listener directory

This commit is contained in:
Xanadu13
2023-08-25 21:50:50 +08:00
committed by GitHub
parent 255ebe3241
commit 5b64f739ee
13 changed files with 0 additions and 817 deletions
@@ -1,149 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.*;
import org.bukkit.attribute.Attribute;
import org.bukkit.block.Block;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.manager.RewardManager;
import pers.xanadu.enderdragon.util.MyDragon;
import pers.xanadu.enderdragon.util.Version;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import static pers.xanadu.enderdragon.EnderDragon.*;
import static pers.xanadu.enderdragon.manager.DragonManager.*;
import static pers.xanadu.enderdragon.manager.GlowManager.*;
public class CreatureSpawnListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void OnDragonSpawn(final CreatureSpawnEvent e){
if(!(e.getEntity() instanceof EnderDragon)) return;
if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return;
EnderDragon dragon = (EnderDragon) e.getEntity();
MyDragon myDragon = judge();
if(myDragon == null) {
Lang.warn("special_dragon_jude_mode setting error!");
return;
}
setSpecialKey(dragon, myDragon.unique_name);
DamageManager.data.put(dragon.getUniqueId(),new ConcurrentHashMap<>());
int times = data.getInt("times");
Lang.runCommands(myDragon.spawn_cmd);
for(String str : myDragon.spawn_broadcast_msg){
Lang.broadcastMSG(str.replaceAll("%times%",String.valueOf(times)));
}
dragon.setCustomName(myDragon.display_name);
setAttribute(dragon, Attribute.GENERIC_MAX_HEALTH, myDragon.max_health);
dragon.setHealth(myDragon.spawn_health);
//modifyAttribute(dragon, Attribute.GENERIC_MOVEMENT_SPEED, myDragon.move_speed_modify);//
modifyAttribute(dragon, Attribute.GENERIC_ARMOR, myDragon.armor_modify);
modifyAttribute(dragon, Attribute.GENERIC_ARMOR_TOUGHNESS, myDragon.armor_toughness_modify);
String color = myDragon.glow_color.toUpperCase();
if(!color.equals("NONE")) setGlowingColor(dragon,getGlowColor(color));
else dragon.setGlowing(false);
String bossBar_color = myDragon.bossbar_color.toUpperCase();
String bossBar_style = myDragon.bossbar_style.toUpperCase();
if(Version.mcMainVersion >= 14){
BossBar bossBar = dragon.getBossBar();
if(bossBar != null){
bossBar.setColor(BarColor.valueOf(bossBar_color));
bossBar.setStyle(BarStyle.valueOf(bossBar_style));
}
}
else if(Version.mcMainVersion >= 12){
getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon.display_name,bossBar_color,bossBar_style);
}
//dragon.getMetadata();
}
@EventHandler(priority = EventPriority.HIGHEST)
public void OnCrystalPlaced(final PlayerInteractEvent e){
if(!Config.resist_player_respawn) return;
if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(e.getMaterial() != Material.END_CRYSTAL) return;
if(e.getClickedBlock() == null) return;
Material blockType = e.getClickedBlock().getType();
if(blockType != Material.OBSIDIAN && blockType != Material.BEDROCK) return;
World world = e.getPlayer().getWorld();
if(world.getEnvironment() != World.Environment.THE_END) return;
Block block = e.getClickedBlock();
int d0 = block.getX();
int d1 = block.getY() + 1;
int d2 = block.getZ();
if(world.getBlockAt(d0, d1, d2).getType() != Material.AIR) return;
Location cen = block.getLocation().clone().add(0.5,1,0.5);
Collection<Entity> list = world.getNearbyEntities(cen,0.5,1,0.5);
if(!list.isEmpty()) return;
e.setCancelled(true);
ItemStack item = e.getItem();
int amount = item.getAmount();
e.getItem().setAmount(amount-1);
EnderCrystal crystal = (EnderCrystal) world.spawnEntity(cen,EntityType.ENDER_CRYSTAL);
crystal.setShowingBottom(false);
}
@EventHandler(priority = EventPriority.HIGH)
public void OnEffectCloudSpawn(final EntitySpawnEvent e){
if(!(e.getEntity() instanceof AreaEffectCloud)) return;
AreaEffectCloud effectCloud = (AreaEffectCloud) e.getEntity();
if(effectCloud.getSource() == null) return;
if(!(effectCloud.getSource() instanceof EnderDragon)) return;
EnderDragon dragon = (EnderDragon) effectCloud.getSource();
String unique_name = getSpecialKey(dragon);
if(unique_name == null) return;
MyDragon myDragon = mp.get(unique_name);
if(myDragon == null) return;
effectCloud.setRadius((float) myDragon.effect_cloud_original_radius);
effectCloud.setRadiusPerTick((float) myDragon.effect_cloud_expand_speed/20f);
effectCloud.setDuration(myDragon.effect_cloud_duration * 20);
if(myDragon.effect_cloud_color_R != -1){
effectCloud.setParticle(Particle.SPELL_MOB);
effectCloud.setColor(Color.fromRGB(myDragon.effect_cloud_color_R,myDragon.effect_cloud_color_G,myDragon.effect_cloud_color_B));
}
effectCloud.clearCustomEffects();
for(PotionEffect effect : myDragon.effect_cloud_potion){
effectCloud.addCustomEffect(effect,true);
}
}
@EventHandler(priority = EventPriority.LOW)
public void OnDragonBreathGather(final PlayerInteractEvent e){
if(!Config.resist_dragon_breath_gather) return;
if(e.getMaterial() != Material.GLASS_BOTTLE) return;
if(e.getAction() != Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.RIGHT_CLICK_AIR) return;
World world = e.getPlayer().getWorld();
if(world.getEnvironment() != World.Environment.THE_END) return;
Player p = e.getPlayer();
Location cen = p.getLocation().clone().add(0d,0.9d,0d);
Collection<Entity> list = world.getNearbyEntities(cen,2.3d,2.9d,2.3d);
for(Entity entity : list){
if(entity instanceof AreaEffectCloud) {
AreaEffectCloud effectCloud = (AreaEffectCloud) entity;
if(effectCloud.getSource() instanceof EnderDragon){
e.setCancelled(true);
break;
}
}
}
}
}
@@ -1,41 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.potion.PotionEffect;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.util.MyDragon;
public class DragonAttackListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void OnDragonAttack(final EntityDamageByEntityEvent e){
Entity victim = e.getEntity();
Entity attack = e.getDamager();
if(!(attack instanceof EnderDragon)) return;
EnderDragon dragon = (EnderDragon) attack;
String unique_name = DragonManager.getSpecialKey(dragon);
if(unique_name == null) return;
MyDragon myDragon = DragonManager.mp.get(unique_name);
if(myDragon == null) return;
e.setDamage(Math.max(0.1, e.getDamage() + myDragon.attack_damage_modify));
if(victim instanceof Player){
Player player = (Player) victim;
for(PotionEffect effect : myDragon.attack_potion_effect){
player.addPotionEffect(effect);
}
if(!myDragon.suck_blood_enable) return;
double suck = e.getFinalDamage() * myDragon.suck_blood_rate + myDragon.suck_blood_base_amount;
dragon.setHealth(Math.min(dragon.getHealth()+suck,dragon.getMaxHealth()));
}
else{
if(!myDragon.suck_blood_enable) return;
if(myDragon.suck_blood_only_player) return;
double suck = e.getFinalDamage() * myDragon.suck_blood_rate + myDragon.suck_blood_base_amount;
dragon.setHealth(Math.min(dragon.getHealth()+suck,dragon.getMaxHealth()));
}
}
}
@@ -1,33 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import pers.xanadu.enderdragon.event.DragonDamageByPlayerEvent;
import static pers.xanadu.enderdragon.EnderDragon.pm;
public class DragonBaseHurtListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void BaseAttackToDragon(EntityDamageByEntityEvent e){
if(e.isCancelled()) return;
if(e.getDamage() <= 0.0) return;
Entity victim = e.getEntity();
Entity entity = e.getDamager();
if(victim instanceof EnderDragon){
EnderDragon dragon = (EnderDragon) victim;
if(entity instanceof Player){
Player player = (Player) entity;
pm.callEvent(new DragonDamageByPlayerEvent(player,dragon,e.getCause(),e.getFinalDamage()));
}
else if(entity instanceof Projectile){
Projectile projectile = (Projectile) entity;
if(!(projectile.getShooter() instanceof Player)) return;
Player damager = (Player) projectile.getShooter();
pm.callEvent(new DragonDamageByPlayerEvent(damager,dragon,e.getCause(),e.getFinalDamage()));
}
}
}
}
@@ -1,60 +0,0 @@
package pers.xanadu.enderdragon.listener;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.event.DragonDamageByPlayerEvent;
import pers.xanadu.enderdragon.manager.DamageManager;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
public class DragonDamageByPlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void OnDragonDamageByPlayer(final DragonDamageByPlayerEvent e){
Player p = e.getDamager();
EnderDragon dragon = e.getDragon();
double health = dragon.getHealth();
double damage = Math.min(e.getFinalDamage(),health);
if(damage > 0.0d){
UUID dragon_uid = dragon.getUniqueId();
ConcurrentHashMap<String,Double> mp = DamageManager.data.computeIfAbsent(dragon_uid, k->new ConcurrentHashMap<>());
mp.compute(p.getName(),(k,v)->v==null?damage:v+damage);
}
//Bukkit.broadcastMessage(RewardManager.data.get(dragon.getUniqueId()).get(p.getUniqueId())+"");
double max_health = dragon.getMaxHealth();
double remain_health = Math.max(health-e.getFinalDamage(),0.0);
String str = Lang.dragon_damage_display.replaceAll("%damage%", format(damage)).replaceAll("%remain_health%",format(remain_health)).replaceAll("%max_health%",format(max_health));
switch (Config.damage_visible_mode.toLowerCase()){
case "actionbar" : {
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(str));
break;
}
case "chatbox" : {
Lang.sendFeedback(p,str);
break;
}
case "subtitle" : {
p.sendTitle("",str,5,40,5);
break;
}
default : {
}
}
}
private String format(double d0){
return String.format("%.2f",d0);
}
}
@@ -1,163 +0,0 @@
package pers.xanadu.enderdragon.listener;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.scheduler.BukkitRunnable;
import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.manager.TimerManager;
import pers.xanadu.enderdragon.util.MyDragon;
import pers.xanadu.enderdragon.util.Pair;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import static pers.xanadu.enderdragon.EnderDragon.*;
public class DragonDeathListener implements Listener {
@EventHandler
public void OnDragonDeath(final EntityDeathEvent e){
if(!(e.getEntity() instanceof EnderDragon)) return;
EnderDragon dragon = (EnderDragon) e.getEntity();
String unique_name = DragonManager.getSpecialKey(dragon);
if(unique_name == null) return;
MyDragon myDragon = DragonManager.mp.get(unique_name);
if(myDragon == null) return;
int times = data.getInt("times");
data.set("times",times+1);
try{
data.save(dataF);
}catch (IOException ex){
Lang.error(Lang.plugin_file_save_error.replaceAll("\\{file_name}",dataF.getName()));
}
e.setDroppedExp(myDragon.exp_drop);
if(myDragon.dragon_egg_spawn_chance > ThreadLocalRandom.current().nextDouble(100)){
new BukkitRunnable() {
@Override
public void run() {
Block block = e.getEntity().getWorld().getBlockAt(myDragon.dragon_egg_spawn_x, myDragon.dragon_egg_spawn_y, myDragon.dragon_egg_spawn_z);
block.setType(Material.DRAGON_EGG);
}
}.runTaskLater(plugin, myDragon.dragon_egg_spawn_delay);
}
Player p = e.getEntity().getKiller();
myDragon.reward_dist.handle_dist(myDragon,dragon,p);
{
List<String> processed = new ArrayList<>();
if(p != null){
for(String str : myDragon.death_broadcast_msg){
processed.add(str.replaceAll("%times%",String.valueOf(times)).replaceAll("%player%",p.getDisplayName()));
}
}
else{
StringBuilder names = new StringBuilder();
List<Entity> entities = dragon.getNearbyEntities(5,5,5);
for (Entity entity : entities) {
if (entity instanceof Player) {
names.append(((Player) entity).getDisplayName()).append(",");
}
}
String name = names.toString();
if(name.equals("")) name = Lang.dragon_no_killer;
if(name.endsWith(",")) name = name.substring(0,name.length()-1);
for(String str : myDragon.death_broadcast_msg){
processed.add(str.replaceAll("%times%",String.valueOf(times)).replaceAll("%player%", name));
}
}
handleBroadcast(processed,myDragon,dragon);
}
DamageManager.data.remove(dragon.getUniqueId());
Lang.runCommands(myDragon.death_cmd,p);
if(p != null){
for(String str : myDragon.msg_to_killer){
Lang.sendFeedback(p,str.replaceAll("%times%",String.valueOf(times)));
}
}
TimerManager.startTimer(dragon.getWorld().getName());
}
public static void handleBroadcast(final List<String> list,final MyDragon myDragon,final EnderDragon dragon){
boolean find = false;
for(String str : list){
if(str.contains("{damage_statistics}")){
find = true;
break;
}
}
if(!find) Lang.broadcastMSG(list);
else{
final TextComponent hover = getHover(myDragon,dragon);
for(String str : list){
final String[] splits = str.split("\\{damage_statistics}");
final ComponentBuilder builder = new ComponentBuilder(Lang.plugin_prefix);
int size = splits.length;
for(int i=0;i<size-1;i++){
builder.append(splits[i]).append(hover);
}
builder.append(splits[size-1]);
if(str.endsWith("{damage_statistics}")) builder.append(hover);
Bukkit.getOnlinePlayers().forEach(p->p.spigot().sendMessage(builder.create()));
}
}
}
public static TextComponent getHover(final MyDragon myDragon,final EnderDragon dragon) {
final TextComponent text = new TextComponent(Lang.dragon_damage_statistics_text);
List<Pair<String,Double>> list = DamageManager.getDamageList(dragon.getUniqueId());
list.sort(DamageManager::sortByDamage);
double sum = 0d;
for(Pair<String,Double> pair : list){
sum += pair.second;
}
StringBuilder builder = new StringBuilder();
for(String raw : Lang.dragon_damage_statistics_hover_prefix){
builder.append(raw
.replaceAll("%dragon_display_name%",myDragon.display_name)
.replaceAll("%damage_sum%",String.format("%.2f",sum))
).append("\n");
}
int i = 0;
for(Pair<String,Double> pair : list){
String raw = Lang.dragon_damage_statistics_hover_mt;
if(i < Config.damage_statistics_limit){
double damage = pair.second;
double percent = damage/sum*100;
builder.append(raw
.replaceAll("%rank%", String.valueOf(++i))
.replaceAll("%player%", pair.first)
.replaceAll("%damage%",String.format("%.2f",damage))
.replaceAll("%percent%",String.format("%.2f%%",percent))
).append("\n");
}
}
if(list.size()-i>0){
String raw = Lang.dragon_damage_statistics_hover_exceeds_limit;
builder.append(raw
.replaceAll("%exceeds_number%", String.valueOf(list.size()-i))
).append("\n");
}
for(String raw : Lang.dragon_damage_statistics_hover_suffix){
builder.append(raw
.replaceAll("%dragon_display_name%",myDragon.display_name)
.replaceAll("%damage_sum%",String.format("%.2f",sum))
);
}
BaseComponent[] cmp = new ComponentBuilder(builder.toString()).create();
text.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,cmp));
return text;
}
}
@@ -1,94 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerBedEnterEvent;
import pers.xanadu.enderdragon.event.DragonDamageByPlayerEvent;
import pers.xanadu.enderdragon.event.PlayerExplodeDragonEvent;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import static pers.xanadu.enderdragon.EnderDragon.pm;
import static pers.xanadu.enderdragon.manager.WorldManager.getExplosionDragon;
public class DragonExplosionHurtListener implements Listener {
private static final ConcurrentHashMap<UUID,PlayerExplodeDragonEvent> mp = new ConcurrentHashMap<>();
@EventHandler(priority = EventPriority.HIGHEST)
public void OnDragonDamageByTNT(final EntityDamageByEntityEvent e){
if(e.isCancelled()) return;
if(e.getDamage() <= 0.0) return;
Entity victim = e.getEntity();
Entity entity = e.getDamager();
if(victim instanceof EnderDragon){
EnderDragon dragon = (EnderDragon) victim;
if(entity instanceof TNTPrimed){
TNTPrimed tnt = (TNTPrimed) entity;
if(!(tnt.getSource() instanceof Player)) return;
Player damager = (Player) tnt.getSource();
pers.xanadu.enderdragon.EnderDragon.pm.callEvent(new DragonDamageByPlayerEvent(damager,dragon,e.getCause(),e.getFinalDamage()));
}
}
}
/**
* 用tnt隔着方块炸龙也能触发
*/
@EventHandler(priority = EventPriority.HIGHEST)
public void OnDragonDamageByExplode(final EntityDamageByBlockEvent e){
long time = pers.xanadu.enderdragon.EnderDragon.getInstance().getWorldDataManager().getGameTime(e.getEntity().getWorld());
EntityDamageEvent.DamageCause cause = e.getCause();
if(e.getCause() != EntityDamageEvent.DamageCause.BLOCK_EXPLOSION) return;
Entity entity = e.getEntity();
if(entity instanceof EnderDragon){
//Bukkit.broadcastMessage(e.getFinalDamage()+"awa");
EnderDragon dragon = (EnderDragon) entity;
for(UUID uuid : mp.keySet()){
PlayerExplodeDragonEvent ped = mp.get(uuid);
if(ped == null) continue;
if(ped.getTime() != time) continue;
if(ped.getEnderDragon().getUniqueId() != dragon.getUniqueId()) continue;
//mp.remove(uuid);
pm.callEvent(new DragonDamageByPlayerEvent(ped.getPlayer(),dragon,cause,e.getFinalDamage()));
//Bukkit.broadcastMessage(ped._loc.toString());
//Bukkit.broadcastMessage("final: "+e.getFinalDamage());
break;
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void OnPlayerClickBed(final PlayerBedEnterEvent e){
Player p = e.getPlayer();
if(p.getWorld().getEnvironment() != World.Environment.THE_END) return;
long time = pers.xanadu.enderdragon.EnderDragon.getInstance().getWorldDataManager().getGameTime(e.getPlayer().getWorld());
Location bed_loc = e.getBed().getLocation();
Collection<EnderDragon> entities = getExplosionDragon(5f,bed_loc);
for(EnderDragon dragon : entities){
UUID uuid = p.getUniqueId();
mp.put(uuid,new PlayerExplodeDragonEvent(time,p,dragon,bed_loc));
break;
}
}
public static void clearUID(final UUID uuid){
mp.remove(uuid);
}
public static void addUID(final UUID uuid,final PlayerExplodeDragonEvent ped){
mp.put(uuid,ped);
}
}
@@ -1,26 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.entity.EnderDragon;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import pers.xanadu.enderdragon.util.MyDragon;
import static pers.xanadu.enderdragon.manager.DragonManager.getSpecialKey;
import static pers.xanadu.enderdragon.manager.DragonManager.mp;
public class DragonHealListener implements Listener {
@EventHandler(priority = EventPriority.HIGH)
public void OnDragonHeal(final EntityRegainHealthEvent e){
if(!(e.getEntity() instanceof EnderDragon)) return;
EnderDragon dragon = (EnderDragon) e.getEntity();
if(!e.getRegainReason().equals(EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL)) return;
String unique_name = getSpecialKey(dragon);
if(unique_name == null) return;
MyDragon myDragon = mp.get(unique_name);
if(myDragon == null) return;
e.setAmount(myDragon.crystal_heal_speed / 2d);
}
}
@@ -1,21 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerDropItemEvent;
public class EndGatewayListener implements Listener {
// @EventHandler
// public void OnEndGateWaySpawn(final PortalCreateEvent e){
// Bukkit.broadcastMessage("123");
// List<BlockState> list = e.getBlocks();
// list.forEach(block -> Bukkit.broadcastMessage(block.toString()));
// }
// @EventHandler
// public void OnEndGateWaySpawn2(final EntityCreatePortalEvent e){
// Bukkit.broadcastMessage("12345");
//
// }
}
@@ -1,123 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.PlayerInventory;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.gui.*;
import pers.xanadu.enderdragon.gui.holder.Menu;
import pers.xanadu.enderdragon.gui.holder.MenuEditor;
import pers.xanadu.enderdragon.gui.slot.PageJumpSlot;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.manager.GuiManager;
import pers.xanadu.enderdragon.manager.RewardManager;
import pers.xanadu.enderdragon.util.MyDragon;
public class InventoryListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void OnInventoryClick(InventoryClickEvent e){
InventoryHolder holder = e.getInventory().getHolder();
if(!(holder instanceof GUIHolder)) return;
GUIHolder guiHolder = (GUIHolder) holder;
if(!(guiHolder.getGUI() instanceof GUIWrapper)) return;
e.setCancelled(true);
GUIWrapper guiWrapper = (GUIWrapper) guiHolder.getGUI();
if(e.getClickedInventory() instanceof PlayerInventory){
return;
}
if(e.getRawSlot() >= 54 || e.getRawSlot() < 0){ //点击箱子以外界面会返回-999
return;
}
Player p = (Player) e.getWhoClicked();
GUISlot slot = guiWrapper.getSlot(e.getRawSlot());
GUISlotType type = slot.getType();
if(type == GUISlotType.EMPTY || type == GUISlotType.TIP || type == GUISlotType.PAGE_TIP){
return;
}
if(type == GUISlotType.PAGE_PREV){
guiWrapper.prev();
p.updateInventory();
return;
}
if(type == GUISlotType.PAGE_NEXT){
guiWrapper.next();
p.updateInventory();
return;
}
if(holder instanceof Menu){
if(e.getClick() != ClickType.LEFT && e.getClick() != ClickType.RIGHT){
return;
}
if(type == GUISlotType.ITEM_SLOT){
return;
}
if(type == GUISlotType.PAGE_JUMP){
String name = ((PageJumpSlot)slot).getGuiName();
GuiManager.openGui(p,name,false);
return;
}
if(type == GUISlotType.DRAGON_SLOT){
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
MyDragon dragon = DragonManager.mp.get(unique_name);
if(dragon == null){
Lang.sendFeedback(p,Lang.gui_not_found);
return;
}
GuiManager.openGui(p,dragon.drop_gui,dragon.unique_name,false);
return;
}
}
else if(holder instanceof MenuEditor){
MenuEditor menuEditor = (MenuEditor) holder;
if(e.getClick() != ClickType.LEFT && e.getClick() != ClickType.RIGHT && e.getClick() != ClickType.SHIFT_RIGHT){
return;
}
if(type == GUISlotType.ITEM_SLOT){
if(e.getClick() != ClickType.SHIFT_RIGHT) return;
int idx = guiWrapper.getPage()*guiWrapper.getItemSize()+guiWrapper.getItemSlotIdx(e.getRawSlot());
//Bukkit.broadcastMessage(idx+"");
boolean b = RewardManager.removeItem(menuEditor.getDragon_key(),idx);
if(b) {
p.sendMessage(Lang.command_drop_item_remove_succeed);
guiWrapper.updateItemChanges(true);
}
else p.sendMessage(Lang.command_drop_item_remove_fail);
return;
}
if(type == GUISlotType.PAGE_JUMP){
String name = ((PageJumpSlot)slot).getGuiName();
GuiManager.openGui(p,name,true);
return;
}
if(type == GUISlotType.DRAGON_SLOT){
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
MyDragon dragon = DragonManager.mp.get(unique_name);
if(dragon == null){
Lang.sendFeedback(p,Lang.gui_not_found);
return;
}
GuiManager.openGui(p,dragon.drop_gui,dragon.unique_name,true);
return;
}
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void OnInventoryDrag(InventoryDragEvent e){
InventoryHolder holder = e.getInventory().getHolder();
if(!(holder instanceof GUIHolder)) return;
if(holder instanceof Menu){
GUIHolder guiHolder = (GUIHolder) holder;
if(!(guiHolder.getGUI() instanceof GUIWrapper)) return;
e.setCancelled(true);
}
}
}
@@ -1,19 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import pers.xanadu.enderdragon.manager.GlowManager;
public class PlayerListener implements Listener {
@EventHandler
public void onPlayerJoin(final PlayerJoinEvent e){
GlowManager.setScoreBoard(e.getPlayer());
}
@EventHandler
public void onPlayerQuit(final PlayerQuitEvent e){
DragonExplosionHurtListener.clearUID(e.getPlayer().getUniqueId());
}
}
@@ -1,16 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginDisableEvent;
import static pers.xanadu.enderdragon.EnderDragon.*;
public class PluginDisableListener implements Listener {
@EventHandler
public void OnPluginDisable(PluginDisableEvent e){
if(e.getPlugin().equals(plugin)){
disableAll();
}
}
}
@@ -1,45 +0,0 @@
package pers.xanadu.enderdragon.listener;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.type.RespawnAnchor;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot;
import pers.xanadu.enderdragon.event.PlayerExplodeDragonEvent;
import java.util.Collection;
import java.util.UUID;
import static pers.xanadu.enderdragon.manager.WorldManager.getExplosionDragon;
public class RespawnAnchorExplodeListener implements Listener {
@EventHandler(priority = EventPriority.HIGH)
public void OnRespawnAnchorExplode(final PlayerInteractEvent e){
if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
Block block = e.getClickedBlock();
if(block == null || block.getType() != Material.RESPAWN_ANCHOR) return;
RespawnAnchor anchor = (RespawnAnchor) block.getBlockData();
Player p = e.getPlayer();
Material offHand = p.getInventory().getItemInOffHand().getType();
if(e.getHand()== EquipmentSlot.HAND && e.getMaterial()!=Material.GLOWSTONE && offHand==Material.GLOWSTONE) return;
if(e.getMaterial()==Material.GLOWSTONE && anchor.getCharges()<4) return;
if(anchor.getCharges()==0) return;
if(pers.xanadu.enderdragon.EnderDragon.getInstance().getRespawnAnchorManager().isRespawnAnchorWorks(p.getWorld())) return;
if(p.isSneaking() && (p.getItemInHand().getType()!=Material.AIR || offHand!=Material.AIR)) return;
long time = pers.xanadu.enderdragon.EnderDragon.getInstance().getWorldDataManager().getGameTime(e.getPlayer().getWorld());
Location loc = block.getLocation();
Collection<EnderDragon> entities = getExplosionDragon(5f,loc);
for(EnderDragon dragon : entities){
UUID uuid = p.getUniqueId();
DragonExplosionHurtListener.addUID(uuid,new PlayerExplodeDragonEvent(time,p,dragon,loc));
break;
}
}
}
@@ -1,27 +0,0 @@
package pers.xanadu.enderdragon.listener.mythiclib;
import io.lumine.mythic.lib.api.event.PlayerAttackEvent;
import io.lumine.mythic.lib.damage.DamageMetadata;
import org.bukkit.entity.EnderDragon;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import pers.xanadu.enderdragon.event.DragonDamageByPlayerEvent;
import static pers.xanadu.enderdragon.EnderDragon.pm;
public class PlayerAttackListener implements Listener {
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerAttack(PlayerAttackEvent e){
if(e.isCancelled()) return;
if(!(e.getEntity() instanceof org.bukkit.entity.EnderDragon)) return;
EnderDragon dragon = (EnderDragon) e.getEntity();
DamageMetadata damage = e.getDamage();
double final_damage = damage.getDamage();
if(final_damage > 0.0d){
DragonDamageByPlayerEvent event = new DragonDamageByPlayerEvent(e.getAttacker().getPlayer(),dragon, e.toBukkit().getCause(), final_damage);
pm.callEvent(event);
}
}
}