diff --git a/.idea/workspace.xml b/.idea/workspace.xml index d5d5d71..5853470 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,7 +5,30 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -219,7 +242,15 @@ diff --git a/src/main/java/org/start/command/command.java b/src/main/java/org/start/command/command.java index 7e68621..24d376f 100644 --- a/src/main/java/org/start/command/command.java +++ b/src/main/java/org/start/command/command.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Player; import org.start.data.TeamManager; import org.start.player.cuan_song.chuan_song; +import org.start.player.pCase.run_; import org.start.print; import org.start.player.bossbar.boss_bar_runs; @@ -56,6 +57,7 @@ public class command implements CommandExecutor { boss_bar_runs.onPlayerJoinTeam(player,"red"); //为玩家添加进度条 print.player_p(player,"你已加入进攻方"); print.boardChat("玩家"+ player.getName()+"加入进攻方"); + run_.joinRed(player); return true; } } @@ -69,6 +71,7 @@ public class command implements CommandExecutor { boss_bar_runs.onPlayerJoinTeam(player,"blue"); print.player_p(player,"你已加入防守方"); print.boardChat("玩家"+ player.getName()+"加入进攻方"); + run_.joinBlue(player); return true; } @@ -85,6 +88,7 @@ public class command implements CommandExecutor { boss_bar_runs.onPlayerLeaveTeam(player); //移除玩家的进度条 print.boardChat("玩家"+ player.getName()+"离开守塔模式"); TeamManager.removePlayer(player.getName()); //将玩家移出存储类 + run_.stop(player); return true; } diff --git a/src/main/java/org/start/getConfig.java b/src/main/java/org/start/getConfig.java new file mode 100644 index 0000000..100bd7c --- /dev/null +++ b/src/main/java/org/start/getConfig.java @@ -0,0 +1,40 @@ +package org.start; + +import org.bukkit.ChatColor; +import org.bukkit.plugin.java.JavaPlugin; + + +public class getConfig { + private static JavaPlugin plugin; + public getConfig(JavaPlugin plugin){getConfig.plugin = plugin;plugin.getLogger().info("getConfig 类初始化操作已完成");} + + public static double getDouble(String path, double def){ + + // 传 0.0 等于sb 或者本身需求就是 0.0,所以直接返回 0.0 + if (def == 0.0){ + print.command_p(print.PrintEnum.E, "The target path " + ChatColor.YELLOW + path + " is empty or 0.0, and the default value is 0.0. In general, this is not a normal result"); + return def; + } + + double d = plugin.getConfig().getDouble(path); + if (d == 0.0){d = def;} + + return d; + } + + public static String getString(String path, String def) throws Exception { + + String s = plugin.getConfig().getString(path); + + if (s == null & def == null){ + print.command_p(print.PrintEnum.E, "The target path " + ChatColor.YELLOW + path + " is empty, and the default value is empty. In general, this is not a normal result"); + return null; + } + + if (s == null){ + return def; + } + + return s; + } +} diff --git a/src/main/java/org/start/player/pCase/pIdName.java b/src/main/java/org/start/player/pCase/pIdName.java deleted file mode 100644 index 3945c68..0000000 --- a/src/main/java/org/start/player/pCase/pIdName.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.start.player.pCase; - - -// 控制玩家头顶的名字状态 -public class pIdName { - -} diff --git a/src/main/java/org/start/player/pCase/p_IdName.java b/src/main/java/org/start/player/pCase/p_IdName.java new file mode 100644 index 0000000..ae5f16a --- /dev/null +++ b/src/main/java/org/start/player/pCase/p_IdName.java @@ -0,0 +1,26 @@ +package org.start.player.pCase; + + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +// 控制玩家头顶的名字状态 +public class p_IdName { + public static void setRed(Player player){ + String red = ChatColor.RED+"[红队] " + player.getName(); + player.setCustomName(red); + player.setCustomNameVisible(true); + } + + public static void setBlue(Player player){ + String blue = ChatColor.BLUE + "[蓝队] " + player.getName(); + player.setCustomName(blue); + player.setCustomNameVisible(true); + } + + public static void setStop(Player player){ + player.setCustomName(player.getName()); + player.setCustomNameVisible(true); + } + +} diff --git a/src/main/java/org/start/player/pCase/p_heath.java b/src/main/java/org/start/player/pCase/p_heath.java new file mode 100644 index 0000000..a445133 --- /dev/null +++ b/src/main/java/org/start/player/pCase/p_heath.java @@ -0,0 +1,43 @@ +package org.start.player.pCase; + +import org.bukkit.entity.Player; +import org.start.getConfig; +import org.start.print; + +public class p_heath { + + private static double heath; + + public static void init(){ + heath = getConfig.getDouble("heath", 40); + } + + public static void setHeath(Player player){ + double currentHealth = player.getHealth(); + + // 确保不会报 error + if (heath < 0){ + heath = 0; + } + + // 如果新的最大血量小于当前血量,则调整玩家当前血量为最大血量 + if (currentHealth > heath) { + player.setHealth(heath); + } + + player.setMaxHealth(heath); + + try { + player.setHealth(heath); + }catch (Exception e){ + print.command_p("e",""+e); + } + + + } + + public static void stop(Player player){ + double h = 20.0; + player.setHealth(h); + } +} diff --git a/src/main/java/org/start/player/pCase/p_kang_xing.java b/src/main/java/org/start/player/pCase/p_kang_xing.java new file mode 100644 index 0000000..e8a57d2 --- /dev/null +++ b/src/main/java/org/start/player/pCase/p_kang_xing.java @@ -0,0 +1,38 @@ +package org.start.player.pCase; + +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.start.getConfig; +import org.start.print; +import org.start.print.PrintEnum; + +public class p_kang_xing { + + private static int duration; // 设定持续时间 + private static int amplifier; //设置效果等级 + private static double heath = 60.0; + + public static void init(){ + double amplifier_ = getConfig.getDouble("amplifier", 5); + amplifier = (int) amplifier_; + + double duration_ = getConfig.getDouble("duration", 7200); + duration = (int) duration_; + + if (duration == 5 & amplifier == 7200){ + print.command_p(PrintEnum.W,"警告,已传入的抗性,持续时间参数为默认值(5,7200)."); + } else { + print.command_p(PrintEnum.I,"已加载抗性,持续时间的值分别为 "+ amplifier + " " + duration); + } + } + + public static void setKangXing(Player player){ + PotionEffect damageResistance = new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, duration, amplifier); + player.addPotionEffect(damageResistance); + } + + public static void moveAll(Player player){ + player.removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE); + } +} diff --git a/src/main/java/org/start/player/pCase/p_kui_jia.java b/src/main/java/org/start/player/pCase/p_kui_jia.java new file mode 100644 index 0000000..1f13d51 --- /dev/null +++ b/src/main/java/org/start/player/pCase/p_kui_jia.java @@ -0,0 +1,49 @@ +package org.start.player.pCase; + +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.LeatherArmorMeta; + + +// 考虑到游戏开始时仍有玩家可能佩戴盔甲,因此游戏开始时移除盔甲 +public class p_kui_jia { + + public static void setBlue(Player player){ + // 清空玩家的所有盔甲栏(头盔、胸甲、裤子、靴子) + ItemStack[] emptyArmor = new ItemStack[4]; + player.getInventory().setArmorContents(emptyArmor); + + player.getInventory().setChestplate(createDyeableArmor(Material.LEATHER_CHESTPLATE, Color.BLUE)); + player.getInventory().setLeggings(createDyeableArmor(Material.LEATHER_LEGGINGS, Color.BLUE)); + } + + public static void setRed(Player player){ + // 同上 + ItemStack[] emptyArmor = new ItemStack[4]; + player.getInventory().setArmorContents(emptyArmor); + + player.getInventory().setChestplate(createDyeableArmor(Material.LEATHER_CHESTPLATE, Color.RED)); + player.getInventory().setLeggings(createDyeableArmor(Material.LEATHER_LEGGINGS, Color.RED)); + } + + public static void setStop(Player player){ + // 清空玩家的所有盔甲栏(头盔、胸甲、裤子、靴子) + ItemStack[] emptyArmor = new ItemStack[4]; + player.getInventory().setArmorContents(emptyArmor); + } + + // 创建染色的皮革盔甲 + private static ItemStack createDyeableArmor(Material material, Color color) { + ItemStack armor = new ItemStack(material); + LeatherArmorMeta meta = (LeatherArmorMeta) armor.getItemMeta(); + + if (meta != null) { + meta.setColor(color); // 设置颜色 + armor.setItemMeta(meta); // 应用更改 + } + + return armor; + } +} diff --git a/src/main/java/org/start/player/pCase/run_.java b/src/main/java/org/start/player/pCase/run_.java index f30499d..1393a9c 100644 --- a/src/main/java/org/start/player/pCase/run_.java +++ b/src/main/java/org/start/player/pCase/run_.java @@ -1,9 +1,37 @@ package org.start.player.pCase; +import org.bukkit.entity.Player; + // 主类,用于控制: -// 玩家头顶的名字系统 -// 玩家抗性系统 -// 玩家血量系统 -// 玩家盔甲颜色系统 +// 玩家头顶的名字系统 -> ok +// 玩家抗性系统 -> no +// 玩家血量系统 -> no +// 玩家盔甲颜色系统 -> ok public class run_ { + + public static void init(){ + p_heath.init(); + } + + public static void joinRed(Player player){ + p_IdName.setRed(player); + p_kui_jia.setRed(player); + p_kang_xing.setKangXing(player); + p_heath.setHeath(player); + } + + public static void joinBlue(Player player){ + p_IdName.setBlue(player); + p_kui_jia.setBlue(player); + p_kang_xing.setKangXing(player); + p_heath.setHeath(player); + } + + public static void stop(Player player){ + p_IdName.setStop(player); + p_kui_jia.setStop(player); + p_kang_xing.moveAll(player); + p_heath.stop(player); + } + } diff --git a/src/main/java/org/start/print.java b/src/main/java/org/start/print.java index 68c780c..e727e38 100644 --- a/src/main/java/org/start/print.java +++ b/src/main/java/org/start/print.java @@ -9,12 +9,20 @@ public class print { private static JavaPlugin plugin; public print(JavaPlugin plugin){print.plugin = plugin;plugin.getLogger().info("print 类初始化操作已完成");} - public static void command_p(String type, String msg) { - if (type.equals("w")) { + public enum PrintEnum { + I("i"), + W("w"), + E("e"); + private final String value; + PrintEnum(String value) {this.value = value;} + } + + public static void command_p(PrintEnum type, String msg) { + if (type == PrintEnum.W) { plugin.getLogger().info("\033[33m[Waring] \033[0m" + msg); - } else if (type.equals("i")) { + } else if (type == PrintEnum.I) { plugin.getLogger().info("\033[34m[Info] \033[0m" + msg); - } else if (type.equals("e")) { + } else if (type == PrintEnum.E) { plugin.getLogger().info("\033[31m[Error] \033[0m" + msg); } else { plugin.getLogger().info("\033[33m[Waring] \033[0m" + "意外的输出调用" + type + "(信息内容:" + msg + ")"); @@ -43,3 +51,5 @@ public class print { Bukkit.broadcastMessage(msg_); } } + + diff --git a/src/main/java/org/start/run.java b/src/main/java/org/start/run.java index c558356..ed02ad0 100644 --- a/src/main/java/org/start/run.java +++ b/src/main/java/org/start/run.java @@ -48,6 +48,7 @@ public class run extends JavaPlugin implements Listener { //开始初始化 这几句都是爷,必须最先初始化 new print(this); // <------- 初始化信息输出类,位于当前文件 + new getConfig(this); // <------- 初始化配置获取类 new worldSpawnItem(this); // <------- 初始化传送点获取类,位于data def_path.def_path_(this); // <------- 初始化玩家占领点获取类,位于player -> main new def_path().initPath(); // <------- 初始化占领点位置 diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f439750..fee463a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -40,5 +40,15 @@ capture_area: z: 110 +# 指定玩家获得的抗性提升等级,时间 +amplifier: 7 +duration: 10000 + + +# 指定玩家进入该模式时,修改玩家血量为多少 +heath: 60 + + + diff --git a/target/classes/org/start/command/command.class b/target/classes/org/start/command/command.class index 6129d39..91e6b00 100644 Binary files a/target/classes/org/start/command/command.class and b/target/classes/org/start/command/command.class differ diff --git a/target/classes/org/start/player/main/def_path.class b/target/classes/org/start/player/main/def_path.class deleted file mode 100644 index f6db200..0000000 Binary files a/target/classes/org/start/player/main/def_path.class and /dev/null differ diff --git a/target/classes/org/start/player/main/demo.class b/target/classes/org/start/player/main/demo.class deleted file mode 100644 index 6e1b091..0000000 Binary files a/target/classes/org/start/player/main/demo.class and /dev/null differ diff --git a/target/classes/org/start/player/main/redAtEvent.class b/target/classes/org/start/player/main/redAtEvent.class deleted file mode 100644 index d40d884..0000000 Binary files a/target/classes/org/start/player/main/redAtEvent.class and /dev/null differ diff --git a/target/classes/org/start/player/main/run_$1.class b/target/classes/org/start/player/main/run_$1.class index afa0587..b6ba0a1 100644 Binary files a/target/classes/org/start/player/main/run_$1.class and b/target/classes/org/start/player/main/run_$1.class differ diff --git a/target/classes/org/start/player/main/run_.class b/target/classes/org/start/player/main/run_.class index 1332cf1..183a8b2 100644 Binary files a/target/classes/org/start/player/main/run_.class and b/target/classes/org/start/player/main/run_.class differ diff --git a/target/classes/org/start/player/main/say$1.class b/target/classes/org/start/player/main/say$1.class deleted file mode 100644 index 1136ed0..0000000 Binary files a/target/classes/org/start/player/main/say$1.class and /dev/null differ diff --git a/target/classes/org/start/player/main/say.class b/target/classes/org/start/player/main/say.class deleted file mode 100644 index f640bfc..0000000 Binary files a/target/classes/org/start/player/main/say.class and /dev/null differ diff --git a/target/classes/org/start/player/main/shi_fo_at.class b/target/classes/org/start/player/main/shi_fo_at.class deleted file mode 100644 index fe1aa26..0000000 Binary files a/target/classes/org/start/player/main/shi_fo_at.class and /dev/null differ diff --git a/target/classes/org/start/run.class b/target/classes/org/start/run.class index e719b10..c5832e3 100644 Binary files a/target/classes/org/start/run.class and b/target/classes/org/start/run.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 09427ba..10fe0d9 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,17 +1,19 @@ +org\start\player\pCase\p_heath.class org\start\player\bossbar\manger.class org\start\run.class +org\start\player\main\model\shi_fo_at.class org\start\player\bossbar\boss_bar_runs.class -org\start\player\main\def_path.class -org\start\player\main\demo.class -org\start\player\main\redAtEvent.class +org\start\player\main\model\redAtEvent.class +org\start\player\pCase\p_kui_jia.class org\start\player\main\run_.class +org\start\player\pCase\run_.class org\start\player\cuan_song\chuan_song.class -org\start\player\main\say$1.class -org\start\player\main\say.class org\start\command\commandTab.class +org\start\player\pCase\p_kang_xing.class org\start\print.class +org\start\player\pCase\p_IdName.class org\start\player\bossbar\data.class +org\start\player\main\model\def_path.class org\start\data\TeamManager.class org\start\player\main\run_$1.class -org\start\player\main\shi_fo_at.class org\start\command\command.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index b98c961..40b0b7f 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,16 +1,19 @@ D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\bossbar\boss_bar_runs.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\model\shi_fo_at.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\run_.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\cuan_song\chuan_song.java -D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\demo.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\data\TeamManager.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\data\worldSpawnItem.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\pCase\p_kang_xing.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\bossbar\data.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\model\redAtEvent.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\pCase\p_kui_jia.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\model\def_path.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\pCase\p_heath.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\command\command.java -D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\redAtEvent.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\pCase\run_.java +D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\pCase\p_IdName.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\print.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\bossbar\manger.java -D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\def_path.java -D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\say.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\run.java D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\command\commandTab.java -D:\project\java\mc_spring_1.20\守塔模式\src\main\java\org\start\player\main\shi_fo_at.java