update to v2.0.2
This commit is contained in:
@@ -31,7 +31,7 @@ public class MainCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
switch (args[0].toLowerCase()){
|
switch (args[0].toLowerCase()){
|
||||||
case "reload" -> {
|
case "reload" : {
|
||||||
if(!sender.hasPermission("ed.reload")){
|
if(!sender.hasPermission("ed.reload")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
@@ -41,19 +41,20 @@ public class MainCommand implements CommandExecutor {
|
|||||||
sendFeedback(sender,Lang.command_reload_config);
|
sendFeedback(sender,Lang.command_reload_config);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case "respawn" -> {
|
case "respawn" : {
|
||||||
if(!sender.hasPermission("ed.respawn")){
|
if(!sender.hasPermission("ed.respawn")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(!(sender instanceof Player player)){
|
if(!(sender instanceof Player)){
|
||||||
sendFeedback(sender,Lang.command_only_player);
|
sendFeedback(sender,Lang.command_only_player);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Player player = (Player) sender;
|
||||||
EnderDragon.getInstance().getDragonManager().initiateRespawn(player);
|
EnderDragon.getInstance().getDragonManager().initiateRespawn(player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case "update" -> {
|
case "update" : {
|
||||||
if(!sender.hasPermission("ed.update")){
|
if(!sender.hasPermission("ed.update")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
@@ -65,19 +66,20 @@ public class MainCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
default -> {
|
default : {
|
||||||
sendCommandTips(sender);
|
sendCommandTips(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (args[0].equalsIgnoreCase("drop")) {
|
if (args[0].equalsIgnoreCase("drop")) {
|
||||||
if(!(sender instanceof Player p)) {
|
if(!(sender instanceof Player)) {
|
||||||
sendFeedback(sender,Lang.command_only_player);
|
sendFeedback(sender,Lang.command_only_player);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Player p = (Player) sender;
|
||||||
switch (args[1].toLowerCase()){
|
switch (args[1].toLowerCase()){
|
||||||
case "gui" -> {
|
case "gui" : {
|
||||||
if(!sender.hasPermission("ed.drop.gui")){
|
if(!sender.hasPermission("ed.drop.gui")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
@@ -96,8 +98,9 @@ public class MainCommand implements CommandExecutor {
|
|||||||
openGui(p,dragon.drop_gui,key);
|
openGui(p,dragon.drop_gui,key);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case "clear" -> {
|
case "clear" : {
|
||||||
if(!sender.hasPermission("ed.drop.edit")){
|
if(!sender.hasPermission("ed.drop.edit")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
@@ -108,8 +111,9 @@ public class MainCommand implements CommandExecutor {
|
|||||||
sendFeedback(sender,Lang.command_drop_item_clear);
|
sendFeedback(sender,Lang.command_drop_item_clear);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case "add" -> {
|
case "add" : {
|
||||||
if(!sender.hasPermission("ed.drop.edit")){
|
if(!sender.hasPermission("ed.drop.edit")){
|
||||||
sendFeedback(sender,Lang.command_no_permission);
|
sendFeedback(sender,Lang.command_no_permission);
|
||||||
return false;
|
return false;
|
||||||
@@ -138,8 +142,9 @@ public class MainCommand implements CommandExecutor {
|
|||||||
sendFeedback(p,Lang.command_drop_item_add_succeed.replaceAll("\\{chance}",ChanceStr));
|
sendFeedback(p,Lang.command_drop_item_add_succeed.replaceAll("\\{chance}",ChanceStr));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
default -> {
|
default : {
|
||||||
sendCommandTips(sender);
|
sendCommandTips(sender);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
package xanadu.enderdragon.commands;
|
package xanadu.enderdragon.commands;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static xanadu.enderdragon.manager.DragonManager.dragon_names;
|
import static xanadu.enderdragon.manager.DragonManager.dragon_names;
|
||||||
|
|
||||||
public class TabCompleter implements org.bukkit.command.TabCompleter {
|
public class TabCompleter implements org.bukkit.command.TabCompleter {
|
||||||
|
|
||||||
private static final List<String> arguments_1 = List.of(new String[]{"drop", "reload", "respawn", "update"});
|
private static final List<String> arguments_1 = Arrays.asList("drop", "reload", "respawn", "update");
|
||||||
private static final List<String> arguments_2 = List.of(new String[]{"add", "clear", "gui"});
|
private static final List<String> arguments_2 = Arrays.asList("add", "clear", "gui");
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
|
||||||
|
|||||||
@@ -18,16 +18,19 @@ public abstract class GUISlot {
|
|||||||
if(section == null) return new EmptySlot();
|
if(section == null) return new EmptySlot();
|
||||||
GUISlotType guiSlotType = GUISlotType.getByName(section.getString("type"));
|
GUISlotType guiSlotType = GUISlotType.getByName(section.getString("type"));
|
||||||
switch (guiSlotType) {
|
switch (guiSlotType) {
|
||||||
case ITEM_SLOT -> {
|
case ITEM_SLOT : {
|
||||||
return new ItemSlot(section);
|
return new ItemSlot(section);
|
||||||
}
|
}
|
||||||
case DRAGON_SLOT -> {
|
case DRAGON_SLOT : {
|
||||||
return new DragonSlot(section);
|
return new DragonSlot(section);
|
||||||
}
|
}
|
||||||
case PAGE_PREV, PAGE_NEXT, PAGE_TIP, TIP -> {
|
case PAGE_PREV :
|
||||||
|
case PAGE_NEXT :
|
||||||
|
case PAGE_TIP :
|
||||||
|
case TIP : {
|
||||||
return new TipSlot(guiSlotType, section);
|
return new TipSlot(guiSlotType, section);
|
||||||
}
|
}
|
||||||
case PAGE_JUMP -> {
|
case PAGE_JUMP : {
|
||||||
return new PageJumpSlot(section);
|
return new PageJumpSlot(section);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ import static xanadu.enderdragon.manager.DragonManager.*;
|
|||||||
public class CreatureSpawnListener implements Listener {
|
public class CreatureSpawnListener implements Listener {
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void OnDragonSpawn(CreatureSpawnEvent e){
|
public void OnDragonSpawn(CreatureSpawnEvent e){
|
||||||
if(!(e.getEntity() instanceof EnderDragon dragon)) return;
|
if(!(e.getEntity() instanceof EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) e.getEntity();
|
||||||
MyDragon myDragon = judge();
|
MyDragon myDragon = judge();
|
||||||
if(myDragon == null) {
|
if(myDragon == null) {
|
||||||
Lang.warn("special_dragon_jude_mode setting error!");
|
Lang.warn("special_dragon_jude_mode setting error!");
|
||||||
@@ -86,9 +87,11 @@ public class CreatureSpawnListener implements Listener {
|
|||||||
}
|
}
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void OnEffectCloudSpawn(final EntitySpawnEvent e){
|
public void OnEffectCloudSpawn(final EntitySpawnEvent e){
|
||||||
if(!(e.getEntity() instanceof AreaEffectCloud effectCloud)) return;
|
if(!(e.getEntity() instanceof AreaEffectCloud)) return;
|
||||||
|
AreaEffectCloud effectCloud = (AreaEffectCloud) e.getEntity();
|
||||||
if(effectCloud.getSource() == null) return;
|
if(effectCloud.getSource() == null) return;
|
||||||
if(!(effectCloud.getSource() instanceof EnderDragon dragon)) return;
|
if(!(effectCloud.getSource() instanceof EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) effectCloud.getSource();
|
||||||
String unique_name = getSpecialKey(dragon);
|
String unique_name = getSpecialKey(dragon);
|
||||||
if(unique_name == null) return;
|
if(unique_name == null) return;
|
||||||
MyDragon myDragon = mp.get(unique_name);
|
MyDragon myDragon = mp.get(unique_name);
|
||||||
@@ -116,7 +119,8 @@ public class CreatureSpawnListener implements Listener {
|
|||||||
Location cen = p.getLocation().clone().add(0d,0.9d,0d);
|
Location cen = p.getLocation().clone().add(0d,0.9d,0d);
|
||||||
Collection<Entity> list = world.getNearbyEntities(cen,2.3d,2.9d,2.3d);
|
Collection<Entity> list = world.getNearbyEntities(cen,2.3d,2.9d,2.3d);
|
||||||
for(Entity entity : list){
|
for(Entity entity : list){
|
||||||
if(entity instanceof AreaEffectCloud effectCloud) {
|
if(entity instanceof AreaEffectCloud) {
|
||||||
|
AreaEffectCloud effectCloud = (AreaEffectCloud) entity;
|
||||||
if(effectCloud.getSource() instanceof EnderDragon){
|
if(effectCloud.getSource() instanceof EnderDragon){
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -16,12 +16,16 @@ public class DragonBaseHurtListener implements Listener {
|
|||||||
if(e.getDamage() <= 0.0) return;
|
if(e.getDamage() <= 0.0) return;
|
||||||
Entity victim = e.getEntity();
|
Entity victim = e.getEntity();
|
||||||
Entity entity = e.getDamager();
|
Entity entity = e.getDamager();
|
||||||
if(victim instanceof EnderDragon dragon){
|
if(victim instanceof EnderDragon){
|
||||||
if(entity instanceof Player player){
|
EnderDragon dragon = (EnderDragon) victim;
|
||||||
|
if(entity instanceof Player){
|
||||||
|
Player player = (Player) entity;
|
||||||
pm.callEvent(new DragonDamageByPlayerEvent(player,dragon,e.getCause(),e.getFinalDamage()));
|
pm.callEvent(new DragonDamageByPlayerEvent(player,dragon,e.getCause(),e.getFinalDamage()));
|
||||||
}
|
}
|
||||||
else if(entity instanceof Projectile projectile){
|
else if(entity instanceof Projectile){
|
||||||
if(!(projectile.getShooter() instanceof Player damager)) return;
|
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()));
|
pm.callEvent(new DragonDamageByPlayerEvent(damager,dragon,e.getCause(),e.getFinalDamage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,19 @@ public class DragonDamageByPlayerListener implements Listener {
|
|||||||
double remain_health = Math.max(dragon.getHealth()-e.getFinalDamage(),0.0);
|
double remain_health = Math.max(dragon.getHealth()-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));
|
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()){
|
switch (Config.damage_visible_mode.toLowerCase()){
|
||||||
case "actionbar" -> p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(str));
|
case "actionbar" : {
|
||||||
case "chatbox" -> Lang.sendFeedback(p,str);
|
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(str));
|
||||||
case "subtitle" -> p.sendTitle("",str,5,40,5);
|
break;
|
||||||
default -> {
|
}
|
||||||
|
case "chatbox" : {
|
||||||
|
Lang.sendFeedback(p,str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "subtitle" : {
|
||||||
|
p.sendTitle("",str,5,40,5);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default : {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ import static xanadu.enderdragon.manager.DragonManager.mp;
|
|||||||
public class DragonDeathListener implements Listener {
|
public class DragonDeathListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void OnDragonDeath(EntityDeathEvent e){
|
public void OnDragonDeath(EntityDeathEvent e){
|
||||||
if(!(e.getEntity() instanceof EnderDragon dragon)) return;
|
if(!(e.getEntity() instanceof EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) e.getEntity();
|
||||||
String unique_name = getSpecialKey(dragon);
|
String unique_name = getSpecialKey(dragon);
|
||||||
if(unique_name == null) return;
|
if(unique_name == null) return;
|
||||||
MyDragon myDragon = mp.get(unique_name);
|
MyDragon myDragon = mp.get(unique_name);
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ import static xanadu.enderdragon.manager.DragonManager.mp;
|
|||||||
public class DragonHealListener implements Listener {
|
public class DragonHealListener implements Listener {
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void OnDragonHeal(EntityRegainHealthEvent e){
|
public void OnDragonHeal(EntityRegainHealthEvent e){
|
||||||
if(!(e.getEntity() instanceof EnderDragon dragon)) return;
|
if(!(e.getEntity() instanceof EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) e.getEntity();
|
||||||
if(!e.getRegainReason().equals(EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL)) return;
|
if(!e.getRegainReason().equals(EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL)) return;
|
||||||
String unique_name = getSpecialKey(dragon);
|
String unique_name = getSpecialKey(dragon);
|
||||||
if(unique_name == null) return;
|
if(unique_name == null) return;
|
||||||
|
|||||||
@@ -18,13 +18,15 @@ public class EntityDamageByEntityListener implements Listener {
|
|||||||
public void OnDragonAttack(EntityDamageByEntityEvent e){
|
public void OnDragonAttack(EntityDamageByEntityEvent e){
|
||||||
Entity victim = e.getEntity();
|
Entity victim = e.getEntity();
|
||||||
Entity attack = e.getDamager();
|
Entity attack = e.getDamager();
|
||||||
if(!(attack instanceof EnderDragon dragon)) return;
|
if(!(attack instanceof EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) attack;
|
||||||
String unique_name = getSpecialKey(dragon);
|
String unique_name = getSpecialKey(dragon);
|
||||||
if(unique_name == null) return;
|
if(unique_name == null) return;
|
||||||
MyDragon myDragon = mp.get(unique_name);
|
MyDragon myDragon = mp.get(unique_name);
|
||||||
if(myDragon == null) return;
|
if(myDragon == null) return;
|
||||||
e.setDamage(Math.max(0.1, e.getDamage() + myDragon.attack_damage_modify));
|
e.setDamage(Math.max(0.1, e.getDamage() + myDragon.attack_damage_modify));
|
||||||
if(victim instanceof Player player){
|
if(victim instanceof Player){
|
||||||
|
Player player = (Player) victim;
|
||||||
for(PotionEffect effect : myDragon.attack_potion_effect){
|
for(PotionEffect effect : myDragon.attack_potion_effect){
|
||||||
player.addPotionEffect(effect);
|
player.addPotionEffect(effect);
|
||||||
}
|
}
|
||||||
@@ -45,9 +47,12 @@ public class EntityDamageByEntityListener implements Listener {
|
|||||||
if(e.getDamage() <= 0.0) return;
|
if(e.getDamage() <= 0.0) return;
|
||||||
Entity victim = e.getEntity();
|
Entity victim = e.getEntity();
|
||||||
Entity entity = e.getDamager();
|
Entity entity = e.getDamager();
|
||||||
if(victim instanceof EnderDragon dragon){
|
if(victim instanceof EnderDragon){
|
||||||
if(entity instanceof TNTPrimed tnt){
|
EnderDragon dragon = (EnderDragon) victim;
|
||||||
if(!(tnt.getSource() instanceof Player damager)) return;
|
if(entity instanceof TNTPrimed){
|
||||||
|
TNTPrimed tnt = (TNTPrimed) entity;
|
||||||
|
if(!(tnt.getSource() instanceof Player)) return;
|
||||||
|
Player damager = (Player) tnt.getSource();
|
||||||
pm.callEvent(new DragonDamageByPlayerEvent(damager,dragon,e.getCause(),e.getFinalDamage()));
|
pm.callEvent(new DragonDamageByPlayerEvent(damager,dragon,e.getCause(),e.getFinalDamage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,47 +24,42 @@ public class InventoryListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void OnInventoryClick(InventoryClickEvent e){
|
public void OnInventoryClick(InventoryClickEvent e){
|
||||||
InventoryHolder holder = e.getInventory().getHolder();
|
InventoryHolder holder = e.getInventory().getHolder();
|
||||||
if(!(holder instanceof GUIHolder guiHolder)) return;
|
if(!(holder instanceof GUIHolder)) return;
|
||||||
if(!(guiHolder.getGUI() instanceof GUIWrapper guiWrapper)) return;
|
|
||||||
if(e.getClickedInventory() instanceof PlayerInventory){
|
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
GUIHolder guiHolder = (GUIHolder) holder;
|
||||||
|
if(!(guiHolder.getGUI() instanceof GUIWrapper)) return;
|
||||||
|
GUIWrapper guiWrapper = (GUIWrapper) guiHolder.getGUI();
|
||||||
|
if(e.getClickedInventory() instanceof PlayerInventory){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(e.getClick() != ClickType.LEFT && e.getClick() != ClickType.RIGHT){
|
if(e.getClick() != ClickType.LEFT && e.getClick() != ClickType.RIGHT){
|
||||||
e.setCancelled(true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(e.getRawSlot() >= 54 || e.getRawSlot() < 0){ //点击箱子以外界面会返回-999
|
if(e.getRawSlot() >= 54 || e.getRawSlot() < 0){ //点击箱子以外界面会返回-999
|
||||||
e.setCancelled(true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player p = (Player) e.getWhoClicked();
|
Player p = (Player) e.getWhoClicked();
|
||||||
GUISlot slot = guiWrapper.getSlot(e.getRawSlot());
|
GUISlot slot = guiWrapper.getSlot(e.getRawSlot());
|
||||||
GUISlotType type = slot.getType();
|
GUISlotType type = slot.getType();
|
||||||
if(type == GUISlotType.EMPTY || type == GUISlotType.TIP || type == GUISlotType.PAGE_TIP || type == GUISlotType.ITEM_SLOT){
|
if(type == GUISlotType.EMPTY || type == GUISlotType.TIP || type == GUISlotType.PAGE_TIP || type == GUISlotType.ITEM_SLOT){
|
||||||
e.setCancelled(true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(type == GUISlotType.PAGE_PREV){
|
if(type == GUISlotType.PAGE_PREV){
|
||||||
e.setCancelled(true);
|
|
||||||
guiWrapper.prev();
|
guiWrapper.prev();
|
||||||
p.updateInventory();
|
p.updateInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(type == GUISlotType.PAGE_NEXT){
|
if(type == GUISlotType.PAGE_NEXT){
|
||||||
e.setCancelled(true);
|
|
||||||
guiWrapper.next();
|
guiWrapper.next();
|
||||||
p.updateInventory();
|
p.updateInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(type == GUISlotType.PAGE_JUMP){
|
if(type == GUISlotType.PAGE_JUMP){
|
||||||
e.setCancelled(true);
|
|
||||||
String name = ((PageJumpSlot)slot).getGuiName();
|
String name = ((PageJumpSlot)slot).getGuiName();
|
||||||
GuiManager.openGui(p,name);
|
GuiManager.openGui(p,name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(type == GUISlotType.DRAGON_SLOT){
|
if(type == GUISlotType.DRAGON_SLOT){
|
||||||
e.setCancelled(true);
|
|
||||||
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
|
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
|
||||||
MyDragon dragon = mp.get(unique_name);
|
MyDragon dragon = mp.get(unique_name);
|
||||||
if(dragon == null){
|
if(dragon == null){
|
||||||
@@ -79,8 +74,9 @@ public class InventoryListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void OnInventoryDrag(InventoryDragEvent e){
|
public void OnInventoryDrag(InventoryDragEvent e){
|
||||||
InventoryHolder holder = e.getInventory().getHolder();
|
InventoryHolder holder = e.getInventory().getHolder();
|
||||||
if(!(holder instanceof GUIHolder guiHolder)) return;
|
if(!(holder instanceof GUIHolder)) return;
|
||||||
if(!(guiHolder.getGUI() instanceof GUIWrapper guiWrapper)) return;
|
GUIHolder guiHolder = (GUIHolder) holder;
|
||||||
|
if(!(guiHolder.getGUI() instanceof GUIWrapper)) return;
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,9 +17,10 @@ public class MMOPlayerAttackListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void meleeAttacks(PlayerAttackEvent e) {
|
public void meleeAttacks(PlayerAttackEvent e) {
|
||||||
if (!(e.getAttack() instanceof MeleeAttackMetadata attackMetadata)) {
|
if (!(e.getAttack() instanceof MeleeAttackMetadata)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
MeleeAttackMetadata attackMetadata = (MeleeAttackMetadata) e.getAttack();
|
||||||
Player player = e.getPlayer();
|
Player player = e.getPlayer();
|
||||||
PlayerData playerData = PlayerData.get(player);
|
PlayerData playerData = PlayerData.get(player);
|
||||||
NBTItem nBTItem = MythicLib.plugin.getVersion().getWrapper().getNBTItem(player.getInventory().getItem(attackMetadata.getHand().toBukkit()));
|
NBTItem nBTItem = MythicLib.plugin.getVersion().getWrapper().getNBTItem(player.getInventory().getItem(attackMetadata.getHand().toBukkit()));
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package xanadu.enderdragon.listeners.mythiclib;
|
|||||||
import io.lumine.mythic.lib.api.event.PlayerAttackEvent;
|
import io.lumine.mythic.lib.api.event.PlayerAttackEvent;
|
||||||
import io.lumine.mythic.lib.damage.DamageMetadata;
|
import io.lumine.mythic.lib.damage.DamageMetadata;
|
||||||
import io.lumine.mythic.lib.damage.DamageType;
|
import io.lumine.mythic.lib.damage.DamageType;
|
||||||
|
import org.bukkit.entity.EnderDragon;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -14,7 +15,8 @@ public class PlayerAttackListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void onPlayerAttack(PlayerAttackEvent e){
|
public void onPlayerAttack(PlayerAttackEvent e){
|
||||||
if(e.isCancelled()) return;
|
if(e.isCancelled()) return;
|
||||||
if(!(e.getEntity() instanceof org.bukkit.entity.EnderDragon dragon)) return;
|
if(!(e.getEntity() instanceof org.bukkit.entity.EnderDragon)) return;
|
||||||
|
EnderDragon dragon = (EnderDragon) e.getEntity();
|
||||||
DamageMetadata damage = e.getDamage();
|
DamageMetadata damage = e.getDamage();
|
||||||
double weapon = damage.getDamage(DamageType.WEAPON) + damage.getDamage(DamageType.UNARMED);
|
double weapon = damage.getDamage(DamageType.WEAPON) + damage.getDamage(DamageType.UNARMED);
|
||||||
if(weapon > 0.0d) {
|
if(weapon > 0.0d) {
|
||||||
|
|||||||
@@ -349,11 +349,24 @@ public class DragonManager {
|
|||||||
Object WorldProviderTheEnd = WorldProviderTheEndClass.cast(worldProvider);
|
Object WorldProviderTheEnd = WorldProviderTheEndClass.cast(worldProvider);
|
||||||
String method_name;
|
String method_name;
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case "v1_12_R1" -> method_name = "t";
|
case "v1_12_R1" : {
|
||||||
case "v1_13_R1", "v1_13_R2" -> method_name = "r";
|
method_name = "t";
|
||||||
case "v1_14_R1" -> method_name = "q";
|
break;
|
||||||
case "v1_15_R1" -> method_name = "o";
|
}
|
||||||
default -> method_name = null;
|
case "v1_13_R1" :
|
||||||
|
case "v1_13_R2" : {
|
||||||
|
method_name = "r";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "v1_14_R1" : {
|
||||||
|
method_name = "q";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "v1_15_R1" : {
|
||||||
|
method_name = "o";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default : method_name = null;
|
||||||
}
|
}
|
||||||
if(method_name == null) return null;
|
if(method_name == null) return null;
|
||||||
Method method = WorldProviderTheEnd.getClass().getDeclaredMethod(method_name);
|
Method method = WorldProviderTheEnd.getClass().getDeclaredMethod(method_name);
|
||||||
|
|||||||
@@ -26,25 +26,25 @@ public class TaskManager {
|
|||||||
String[] str = string.split(":",2);
|
String[] str = string.split(":",2);
|
||||||
TaskType taskType = TaskType.getByName(str[0]);
|
TaskType taskType = TaskType.getByName(str[0]);
|
||||||
switch (taskType){
|
switch (taskType){
|
||||||
case minute -> {
|
case minute : {
|
||||||
return new Minute(TaskType.minute,str[1]);
|
return new Minute(TaskType.minute,str[1]);
|
||||||
}
|
}
|
||||||
case hour -> {
|
case hour : {
|
||||||
return new Hour(TaskType.hour,str[1]);
|
return new Hour(TaskType.hour,str[1]);
|
||||||
}
|
}
|
||||||
case day -> {
|
case day : {
|
||||||
return new Day(TaskType.day,str[1]);
|
return new Day(TaskType.day,str[1]);
|
||||||
}
|
}
|
||||||
case week -> {
|
case week : {
|
||||||
return new Week(TaskType.week,str[1]);
|
return new Week(TaskType.week,str[1]);
|
||||||
}
|
}
|
||||||
case month -> {
|
case month : {
|
||||||
return new Month(TaskType.month,str[1]);
|
return new Month(TaskType.month,str[1]);
|
||||||
}
|
}
|
||||||
case year -> {
|
case year : {
|
||||||
return new Year(TaskType.year,str[1]);
|
return new Year(TaskType.year,str[1]);
|
||||||
}
|
}
|
||||||
default -> {
|
default : {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,14 +18,36 @@ public abstract class Task {
|
|||||||
protected Task(TaskType type,String str){
|
protected Task(TaskType type,String str){
|
||||||
this.type = type;
|
this.type = type;
|
||||||
switch (type){
|
switch (type){
|
||||||
case minute, hour -> this.period = Integer.parseInt(str);
|
case minute :
|
||||||
case day -> this.period = Integer.parseInt(str.split(",")[0]);
|
case hour : {
|
||||||
case week, month, year -> this.day = Integer.parseInt(str.split(",")[0]);
|
this.period = Integer.parseInt(str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case day : {
|
||||||
|
this.period = Integer.parseInt(str.split(",")[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case week :
|
||||||
|
case month :
|
||||||
|
case year : {
|
||||||
|
this.day = Integer.parseInt(str.split(",")[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(data.getString(path) == null){
|
if(data.getString(path) == null){
|
||||||
switch (type){
|
switch (type){
|
||||||
case minute, hour -> this.nextTime = this.getNextTime(LocalDateTime.now());
|
case minute :
|
||||||
case day, week, month, year -> calcNextTime(str);
|
case hour : {
|
||||||
|
this.nextTime = this.getNextTime(LocalDateTime.now());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case day :
|
||||||
|
case week :
|
||||||
|
case month :
|
||||||
|
case year : {
|
||||||
|
calcNextTime(str);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
saveFile(nextTime);
|
saveFile(nextTime);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user