update to v2.0.2

This commit is contained in:
Xanadu13
2023-02-10 19:58:06 +08:00
committed by GitHub
parent 1246cb5f91
commit e884a64eea
15 changed files with 133 additions and 67 deletions
@@ -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);
} }