diff --git a/src/main/java/pers/xanadu/enderdragon/listener/CreatureSpawnListener.java b/src/main/java/pers/xanadu/enderdragon/listener/CreatureSpawnListener.java deleted file mode 100644 index 1d287a8..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/CreatureSpawnListener.java +++ /dev/null @@ -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 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 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; - } - } - } - } - - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java deleted file mode 100644 index 07a3a38..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java +++ /dev/null @@ -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())); - } - } - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonBaseHurtListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonBaseHurtListener.java deleted file mode 100644 index 50e7289..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonBaseHurtListener.java +++ /dev/null @@ -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())); - } - } - } -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonDamageByPlayerListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonDamageByPlayerListener.java deleted file mode 100644 index c84fe1b..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonDamageByPlayerListener.java +++ /dev/null @@ -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 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); - } - -} - diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java deleted file mode 100644 index 43cad70..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java +++ /dev/null @@ -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 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 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 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;ip.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> list = DamageManager.getDamageList(dragon.getUniqueId()); - list.sort(DamageManager::sortByDamage); - double sum = 0d; - for(Pair 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 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; - } - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonExplosionHurtListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonExplosionHurtListener.java deleted file mode 100644 index 3dfd332..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonExplosionHurtListener.java +++ /dev/null @@ -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 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 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); - } - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java deleted file mode 100644 index 60351d4..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java +++ /dev/null @@ -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); - } - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/EndGatewayListener.java b/src/main/java/pers/xanadu/enderdragon/listener/EndGatewayListener.java deleted file mode 100644 index e3bbbce..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/EndGatewayListener.java +++ /dev/null @@ -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 list = e.getBlocks(); -// list.forEach(block -> Bukkit.broadcastMessage(block.toString())); -// } -// @EventHandler -// public void OnEndGateWaySpawn2(final EntityCreatePortalEvent e){ -// Bukkit.broadcastMessage("12345"); -// -// } -} - diff --git a/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java b/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java deleted file mode 100644 index d968e65..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java +++ /dev/null @@ -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); - } - } - -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java b/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java deleted file mode 100644 index aed1730..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java +++ /dev/null @@ -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()); - } -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/PluginDisableListener.java b/src/main/java/pers/xanadu/enderdragon/listener/PluginDisableListener.java deleted file mode 100644 index 9f55f79..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/PluginDisableListener.java +++ /dev/null @@ -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(); - } - } -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/RespawnAnchorExplodeListener.java b/src/main/java/pers/xanadu/enderdragon/listener/RespawnAnchorExplodeListener.java deleted file mode 100644 index 167e5d7..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/RespawnAnchorExplodeListener.java +++ /dev/null @@ -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 entities = getExplosionDragon(5f,loc); - for(EnderDragon dragon : entities){ - UUID uuid = p.getUniqueId(); - DragonExplosionHurtListener.addUID(uuid,new PlayerExplodeDragonEvent(time,p,dragon,loc)); - break; - } - } -} diff --git a/src/main/java/pers/xanadu/enderdragon/listener/mythiclib/PlayerAttackListener.java b/src/main/java/pers/xanadu/enderdragon/listener/mythiclib/PlayerAttackListener.java deleted file mode 100644 index c8f9da7..0000000 --- a/src/main/java/pers/xanadu/enderdragon/listener/mythiclib/PlayerAttackListener.java +++ /dev/null @@ -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); - } - } - -}