From b5e345faeca03921d22b731f951076ea1db0c18d Mon Sep 17 00:00:00 2001 From: Xanadu13 <104714710+iXanadu13@users.noreply.github.com> Date: Mon, 15 Aug 2022 13:54:19 +0800 Subject: [PATCH] 1.8.3 Add English language,move what in "language.yml" to "lang\Chinese(English).yml",fix the bug of drop-item gui title. --- .../java/xanadu/enderdragon/EnderDragon.java | 72 +++++++++++-------- .../enderdragon/commands/MainCommand.java | 64 ++++++++++------- .../enderdragon/events/CreatureHurt.java | 11 +-- .../enderdragon/events/DragonDeath.java | 11 +-- .../enderdragon/events/DragonSpawn.java | 6 +- .../java/xanadu/enderdragon/lang/Chinese.yml | 58 +++++++++++++++ .../java/xanadu/enderdragon/lang/English.yml | 57 +++++++++++++++ .../java/xanadu/enderdragon/lang/Message.java | 72 +++++++++++++++++++ .../enderdragon/listeners/InventoryClick.java | 5 +- src/main/resources/config.yml | 7 +- src/main/resources/plugin.yml | 5 +- 11 files changed, 296 insertions(+), 72 deletions(-) create mode 100644 src/main/java/xanadu/enderdragon/lang/Chinese.yml create mode 100644 src/main/java/xanadu/enderdragon/lang/English.yml create mode 100644 src/main/java/xanadu/enderdragon/lang/Message.java diff --git a/src/main/java/xanadu/enderdragon/EnderDragon.java b/src/main/java/xanadu/enderdragon/EnderDragon.java index 713bd7c..612b05c 100644 --- a/src/main/java/xanadu/enderdragon/EnderDragon.java +++ b/src/main/java/xanadu/enderdragon/EnderDragon.java @@ -13,60 +13,67 @@ import org.bukkit.plugin.java.JavaPlugin; import xanadu.enderdragon.commands.MainCommand; import xanadu.enderdragon.commands.TabCompleter; import xanadu.enderdragon.events.*; +import xanadu.enderdragon.lang.Message; import xanadu.enderdragon.listeners.InventoryClick; import xanadu.enderdragon.metrics.Metrics; -import java.io.BufferedReader; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.*; import java.net.URL; import java.net.URLConnection; public final class EnderDragon extends JavaPlugin { public static String prefix = ""; + public static String language = ""; + public static String langPath = ""; public static Plugin plugin; public static Server server; public static PluginManager pm; - public static File data0; - public static File language0; + public static File dataF; + public static File langF; public static FileConfiguration data; - public static FileConfiguration language; + public static FileConfiguration lang; @Override public void onEnable() { plugin = this; server = plugin.getServer(); pm = Bukkit.getPluginManager(); + boolean configNotFound = false; + boolean dataNotFound = false; if (!new File(getDataFolder(), "config.yml").exists()) { saveDefaultConfig(); - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 未检测到config.yml文件,正在生成新的配置文件"); + configNotFound = true; } if (!new File(getDataFolder(), "data.yml").exists()) { this.saveResource("data.yml",false); - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 未检测到data.yml文件,正在生成新的配置文件"); + dataNotFound = true; } - if (!new File(getDataFolder(), "language.yml").exists()) { - this.saveResource("language.yml",false); - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 未检测到language.yml文件,正在生成新的配置文件"); + language = plugin.getConfig().getString("lang","English"); + langPath = "lang/" + language + ".yml"; + if (!new File(getDataFolder(), langPath).exists()) { + this.saveResource(langPath, false); } - data0 = new File(plugin.getDataFolder(),"data.yml"); - language0 = new File(plugin.getDataFolder(),"language.yml"); - data = YamlConfiguration.loadConfiguration(data0); - language = YamlConfiguration.loadConfiguration(language0); - prefix = language.getString("prefix"); - if(!getConfig().getString("version").equals("1.8.2") ){ - Bukkit.getConsoleSender().sendMessage("§c[EnderDragon] config.yml版本与插件不对应,请更新配置文件"); + sendMessage("§a[EnderDragon] Language: §6" + language); + dataF = new File(plugin.getDataFolder(),"data.yml"); + langF = new File(getDataFolder(), langPath); + lang = YamlConfiguration.loadConfiguration(langF); + data = YamlConfiguration.loadConfiguration(dataF); + Message.loadLanguage(); + prefix = lang.getString("prefix","§7[§eEnderDragon§7]§r "); + if(configNotFound){sendMessage(Message.configNotFound);} + if(dataNotFound){sendMessage(Message.dataNotFound);} + if(!getConfig().getString("version").equals("1.8.3") ){ + sendMessage(Message.configWrongVersion); } if(!data.getString("version").equals("1.8.1") ){ - Bukkit.getConsoleSender().sendMessage("§c[EnderDragon] data.yml版本与插件不对应,请更新配置文件"); + sendMessage(Message.dataWrongVersion); } - if(!language.getString("version").equals("1.8") ){ - Bukkit.getConsoleSender().sendMessage("§c[EnderDragon] language.yml版本与插件不对应,请更新配置文件"); + if(!lang.getString("version").equals("1.8.3") ){ + sendMessage(Message.langWrongVersion); } - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 插件已加载"); - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 作者:Xanadu13"); + sendMessage(Message.loaded); + sendMessage("§a[EnderDragon] Author: Xanadu13"); pm.registerEvents(new CreatureHurt(),this); pm.registerEvents(new DragonAttack(),this); pm.registerEvents(new DragonDeath(),this); @@ -76,7 +83,7 @@ public final class EnderDragon extends JavaPlugin { getCommand("enderdragon").setExecutor(new MainCommand()); getCommand("enderdragon").setTabCompleter(new TabCompleter()); Metrics metrics = new Metrics(this,14850); - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 正在为您检查更新..."); + sendMessage(Message.checkingUpdate); try { URLConnection conn = new URL("https://api.github.com/repos/iXanadu13/EnderDragon/releases/latest").openConnection(); conn.setConnectTimeout(20000); @@ -87,12 +94,12 @@ public final class EnderDragon extends JavaPlugin { String newVer = line.substring(line.indexOf("\"tag_name\"") + 13, line.indexOf("\"target_commitish\"") - 2); String localVer = plugin.getDescription().getVersion(); if (!localVer.equals(newVer)) { - Bukkit.getConsoleSender().sendMessage("§e[EnderDragon] 您正在使用的插件版本: v"+localVer); - Bukkit.getConsoleSender().sendMessage("§e[EnderDragon] 检测到新版插件v"+newVer+"已发布,请尽快更新"); - Bukkit.getConsoleSender().sendMessage("§e[EnderDragon] 下载地址:https://www.mcbbs.net/thread-1314199-1-1.html"); + sendMessage(Message.OutOfDate1.replace("{0}",localVer)); + sendMessage(Message.OutOfDate2.replace("{1}",newVer)); + sendMessage(Message.OutOfDate3); } else{ - Bukkit.getConsoleSender().sendMessage("§a[EnderDragon] 您正在使用最新版的插件(v"+localVer+")..."); + sendMessage(Message.UpToDate.replace("{1}",newVer)); } } catch (Exception e) { e.printStackTrace(); @@ -103,7 +110,12 @@ public final class EnderDragon extends JavaPlugin { @Override public void onDisable() { - Bukkit.getConsoleSender().sendMessage("§e[EnderDragon] 插件已卸载"); + sendMessage(Message.onDisable); + } + + + public void sendMessage(String msg) { + Bukkit.getConsoleSender().sendMessage(msg); } diff --git a/src/main/java/xanadu/enderdragon/commands/MainCommand.java b/src/main/java/xanadu/enderdragon/commands/MainCommand.java index d38919a..9913ab3 100644 --- a/src/main/java/xanadu/enderdragon/commands/MainCommand.java +++ b/src/main/java/xanadu/enderdragon/commands/MainCommand.java @@ -10,7 +10,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import xanadu.enderdragon.lang.Message; +import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.List; @@ -23,30 +25,42 @@ public class MainCommand implements CommandExecutor { if (args.length == 1) { if (args[0].equalsIgnoreCase("reload")) { if(!sender.hasPermission("ed.reload")){ - sender.sendMessage("§4你没有使用该命令的权限"); + sender.sendMessage(Message.NoCommandPermission); return false; } + if (!new File(plugin.getDataFolder(), "config.yml").exists()) { + plugin.saveDefaultConfig(); + } + if (!new File(plugin.getDataFolder(), "data.yml").exists()) { + plugin.saveResource("data.yml", false); + } plugin.reloadConfig(); - data = YamlConfiguration.loadConfiguration(data0); - language = YamlConfiguration.loadConfiguration(language0); - prefix = language.getString("prefix"); - sender.sendMessage(prefix + "§a配置文件已重载"); + data = YamlConfiguration.loadConfiguration(dataF); + language = plugin.getConfig().getString("lang","Chinese"); + langPath = "lang/" + language + ".yml"; + if (!new File(plugin.getDataFolder(), langPath).exists()) { + plugin.saveResource(langPath, false); + } + langF = new File(plugin.getDataFolder(), langPath); + lang = YamlConfiguration.loadConfiguration(langF); + Message.loadLanguage(); + sender.sendMessage(prefix + Message.configReloaded); } } else if (args.length > 1 && args[0].equalsIgnoreCase("drop") ) { if (!(sender instanceof Player || args[1].equalsIgnoreCase("clear"))) { - sender.sendMessage(prefix + "§c这个指令只能由玩家执行"); + sender.sendMessage(prefix + Message.PlayerCommand); return false; } if (args[1].equalsIgnoreCase("add")) { - if(!sender.hasPermission("ed.drop.change")){ - sender.sendMessage("§4你没有使用该命令的权限"); + if(!sender.hasPermission("ed.drop.edit")){ + sender.sendMessage(Message.NoCommandPermission); return false; } if(args.length == 3 ) { Player p = (Player) sender; if(p.getItemInHand().getType() == Material.AIR){ - p.sendMessage(prefix + "§c添加掉落物失败,你手上没有拿物品..."); + p.sendMessage(prefix + Message.DropItemAddFail); return false; } String ChanceStr = args[2]; @@ -54,10 +68,10 @@ public class MainCommand implements CommandExecutor { try { chance = Double.parseDouble(ChanceStr); } catch (NumberFormatException ex){ - p.sendMessage(prefix + "§c您应该输入数字而不是 " + ChanceStr); + p.sendMessage(prefix + Message.MustNumber + ChanceStr); throw new NumberFormatException("\n\n" - + "\33[31;1m" + "错误的命令: /ed drop add " + ChanceStr + "\n" - + "\33[33;1m" + "正确用法: /ed drop add 数字" + "\n" + + "\33[31;1m" + "Error: /ed drop add " + ChanceStr + "\n" + + "\33[33;1m" + "Valid: /ed drop add " +Message.Number+ "\n" + "\33[0m"); } List datum = data.getStringList("items"); @@ -66,34 +80,34 @@ public class MainCommand implements CommandExecutor { datum.add(String.valueOf(chance)); data.set("items", datum); try { - data.save(data0); + data.save(dataF); } catch (IOException e) { throw new RuntimeException(e); } - data = YamlConfiguration.loadConfiguration(data0); - p.sendMessage(prefix + "§a掉落物添加成功,概率为: §c" + chance + "%"); + data = YamlConfiguration.loadConfiguration(dataF); + p.sendMessage(prefix + Message.DropItemAddSucceed.replace("{chance}",""+chance)); } } if (args[1].equalsIgnoreCase("clear")) { - if(!sender.hasPermission("ed.drop.change")){ - sender.sendMessage("§4你没有使用该命令的权限"); + if(!sender.hasPermission("ed.drop.edit")){ + sender.sendMessage(Message.NoCommandPermission); return false; } if(args.length == 2 ) { data.set("items",""); try { - data.save(data0); + data.save(dataF); } catch (IOException e) { throw new RuntimeException(e); } - data = YamlConfiguration.loadConfiguration(data0); - sender.sendMessage(prefix + "§a掉落物配置已清空"); + data = YamlConfiguration.loadConfiguration(dataF); + sender.sendMessage(prefix + Message.ClearDropItemConfig); } } if (args[1].equalsIgnoreCase("gui")) { if(!sender.hasPermission("ed.drop.gui")){ - sender.sendMessage("§4你没有使用该命令的权限"); + sender.sendMessage(Message.NoCommandPermission); return false; } if(args.length == 2 ) { @@ -112,11 +126,11 @@ public class MainCommand implements CommandExecutor { if(meta != null) { List lore = meta.getLore(); if(lore != null) { - lore.add("§6(掉落概率: " + chance + "%)§r"); + lore.add("§6("+Message.DropChance+": " + chance + "%)§r"); meta.setLore(lore); } else{ - meta.setLore(Collections.singletonList("§6(掉落概率: " + chance + "%)§r")); + meta.setLore(Collections.singletonList("§6("+Message.DropChance+": " + chance + "%)§r")); } item.setItemMeta(meta); } @@ -130,8 +144,8 @@ public class MainCommand implements CommandExecutor { } else { - sender.sendMessage("§e/ed reload 重载配置文件"); - sender.sendMessage("§e/ed drop 特殊龙掉落物设置"); + sender.sendMessage(Message.CommandTips1); + sender.sendMessage(Message.CommandTips2); } return false; } diff --git a/src/main/java/xanadu/enderdragon/events/CreatureHurt.java b/src/main/java/xanadu/enderdragon/events/CreatureHurt.java index 050c951..66a31d8 100644 --- a/src/main/java/xanadu/enderdragon/events/CreatureHurt.java +++ b/src/main/java/xanadu/enderdragon/events/CreatureHurt.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import xanadu.enderdragon.lang.Message; import static xanadu.enderdragon.EnderDragon.*; @@ -14,15 +15,15 @@ public class CreatureHurt implements Listener { @EventHandler public void OnCreatureHurt(EntityDamageByEntityEvent e){ int DamageVisual = plugin.getConfig().getInt("special-dragon.damage-visible"); - String message = language.getString("damage-display"); + String MSG = Message.DamageDisplay; if(DamageVisual == 0){return;} if(e.getDamager().getType() != EntityType.PLAYER){return;} if(e.getEntity().getType() != EntityType.ENDER_DRAGON){return;} Player p = (Player) e.getDamager(); double damage = e.getDamage(); - message = message.replaceAll("%damage%", String.valueOf(damage)); - if(DamageVisual == 1){p.sendTitle("",message,5,40,5);} - if(DamageVisual == 2){p.sendMessage(message);} - if(DamageVisual == 3){p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));} + MSG = MSG.replaceAll("%damage%", String.valueOf(damage)); + if(DamageVisual == 1){p.sendTitle("",MSG,5,40,5);} + if(DamageVisual == 2){p.sendMessage(MSG);} + if(DamageVisual == 3){p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MSG));} } } diff --git a/src/main/java/xanadu/enderdragon/events/DragonDeath.java b/src/main/java/xanadu/enderdragon/events/DragonDeath.java index 4030800..02d7984 100644 --- a/src/main/java/xanadu/enderdragon/events/DragonDeath.java +++ b/src/main/java/xanadu/enderdragon/events/DragonDeath.java @@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.scheduler.BukkitRunnable; import xanadu.enderdragon.EnderDragon; +import xanadu.enderdragon.lang.Message; import java.io.IOException; import java.util.List; @@ -26,7 +27,7 @@ public class DragonDeath implements Listener { if(e.getEntity().getType() != EntityType.ENDER_DRAGON){return;} int times = data.getInt("times"); data.set("times",times+1); - data.save(data0); + data.save(dataF); Player p = e.getEntity().getKiller(); int exp = plugin.getConfig().getInt("special-dragon.exp-drop"); int x = plugin.getConfig().getInt("special-dragon.dragon-egg-spawn.x"); @@ -36,10 +37,10 @@ public class DragonDeath implements Listener { boolean UseCMD = plugin.getConfig().getBoolean("command.enable"); boolean EggChance = plugin.getConfig().getInt("special-dragon.dragon-egg-spawn.chance") > ThreadLocalRandom.current().nextInt(0, 100); boolean AllBroadcast = !plugin.getConfig().getBoolean("only-special-death-remind"); - String skill = language.getString("killer-message"); - String KillMsg = language.getString("dragon-killing-broadcast"); - String nobody = language.getString("nobody-kill"); - String InvIsFull = language.getString("player-inv-full"); + String skill = Message.KillerMessage; + String KillMsg = Message.DragonKillingBroadcast; + String nobody = Message.NobodyKill; + String InvIsFull = Message.PlayerInvFull; if(KillMsg != null) { if(p != null) { if ((e.getEntity().getScoreboardTags().contains("special")) || (AllBroadcast)) { diff --git a/src/main/java/xanadu/enderdragon/events/DragonSpawn.java b/src/main/java/xanadu/enderdragon/events/DragonSpawn.java index 3771e58..f96a576 100644 --- a/src/main/java/xanadu/enderdragon/events/DragonSpawn.java +++ b/src/main/java/xanadu/enderdragon/events/DragonSpawn.java @@ -10,6 +10,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.scoreboard.Team; +import xanadu.enderdragon.lang.Message; import java.util.concurrent.ThreadLocalRandom; @@ -24,10 +25,11 @@ public class DragonSpawn implements Listener { double health = plugin.getConfig().getDouble("special-dragon.max-health"); double SpawnHealth = plugin.getConfig().getDouble("special-dragon.spawn-health"); int circle = plugin.getConfig().getInt("special-dragon.respawn-circle"); + if (circle == 0 ){circle = 999999999;} boolean chance = plugin.getConfig().getInt("special-dragon.chance") > ThreadLocalRandom.current().nextInt(0, 100); boolean SpecialMsg0 = plugin.getConfig().getBoolean("special-dragon.spawn-remind"); - String SpawnMsg = language.getString("dragon-spawn-broadcast"); - String SpecialMsg = language.getString("special-broadcast"); + String SpawnMsg = Message.DragonSpawnBroadcast; + String SpecialMsg = Message.SpecialBroadcast; String Name = plugin.getConfig().getString("special-dragon.name"); String NormalName = plugin.getConfig().getString("normal-dragon.name"); String color = plugin.getConfig().getString("special-dragon.glow-color"); diff --git a/src/main/java/xanadu/enderdragon/lang/Chinese.yml b/src/main/java/xanadu/enderdragon/lang/Chinese.yml new file mode 100644 index 0000000..19c6e2b --- /dev/null +++ b/src/main/java/xanadu/enderdragon/lang/Chinese.yml @@ -0,0 +1,58 @@ +#配置文件版本,请勿修改 +version: 1.8.3 + +configNotFound: '§a[EnderDragon] config.yml不存在, 已自动创建.' +dataNotFound: '§a[EnderDragon] data.yml不存在, 已自动创建.' +messageNotFound: '§a[EnderDragon] message.yml不存在, 已自动创建.' +configWrongVersion: '§c[EnderDragon] config.yml版本与插件不对应,请更新配置文件' +dataWrongVersion: '§c[EnderDragon] data.yml版本与插件不对应,请更新配置文件' +langWrongVersion: '§c[EnderDragon] 语言文件版本与插件不对应,请更新语言文件' +messageWrongVersion: '§c[EnderDragon] message.yml版本与插件不对应,请更新配置文件' +loaded: '§a[EnderDragon] 插件已加载' +checkingUpdate: '§a[EnderDragon] 正在为您检查更新...' +OutOfDate1: '§e[EnderDragon] 您正在使用的插件版本: v{0}' +OutOfDate2: '§e[EnderDragon] 检测到新版插件v{1}已发布,请尽快更新' +OutOfDate3: '§e[EnderDragon] 下载地址:https://www.mcbbs.net/thread-1314199-1-1.html' +UpToDate: '§a[EnderDragon] 您正在使用最新版的插件(v{1})...' +onDisable: '§e[EnderDragon] 插件已卸载' + +NoCommandPermission: '§4你没有使用该命令的权限' +configReloaded: '§a配置文件已重载' +PlayerCommand: '§c这个指令只能由玩家执行' +DropItemAddFail: '§c添加掉落物失败,你手上没有拿物品...' +DropItemAddSucceed: '§a掉落物添加成功,概率为: §c{chance}%' +MustNumber: '§c您应该输入数字而不是 ' +Number: '数字' +DropChance: '掉落概率' +ClearDropItemConfig: '§a掉落物配置已清空' +CommandTips1: '§e/ed reload 重载配置文件' +CommandTips2: '§e/ed drop 特殊龙掉落物设置' + +#消息提示前缀 +prefix: '§7[§eEnderDragon§7]§r ' + +#末影龙生成时全服提示内容 +#仅在此处有效:可用%times%代替这条末影龙的数字序号,输入“none”代表不提示 +dragon-spawn-broadcast: '§a第 %times% 条末影龙已被复活' + +#生成特殊龙后全服提醒内容 +#只有当上一个值为true时,该提醒内容才有效 +special-broadcast: '§6这条末影龙散发着神秘的气息...' + +#末影龙被击杀时全服提示内容 +#仅在此处有效:可用%times%代替这条末影龙的数字序号,可用%player%代替击杀末影龙的玩家的名字 +#插件会智能检测周围的玩家来替换%player%,如果实在检测不到将用下方条目中的内容替代%player% +dragon-killing-broadcast: '§b第 %times% 条末影龙已被 %player% 击杀' + +#无玩家参与时,%player%将被该项代替 +nobody-kill: '玩家远程' + +#发给击杀特殊龙的玩家的话 +killer-message: '§6恭喜你,这条龙掉落了龙蛋和大量经验!' + +#每次玩家攻击末影龙时,显示给攻击者的提示 +#仅在此处有效:可用%damage%代替伤害数值 +damage-display: '对末影龙的攻击伤害:%damage%' + +#特殊末影龙成功掉落物品,但是击杀者背包已满时,显示给击杀者的提示 +player-inv-full: '§c您的背包没有空余格子,特殊末影龙战利品可能已掉落在您脚下' \ No newline at end of file diff --git a/src/main/java/xanadu/enderdragon/lang/English.yml b/src/main/java/xanadu/enderdragon/lang/English.yml new file mode 100644 index 0000000..611a561 --- /dev/null +++ b/src/main/java/xanadu/enderdragon/lang/English.yml @@ -0,0 +1,57 @@ +version: 1.8.3 + +configNotFound: '§a[EnderDragon] File config.yml Not Found,Creating a new one...' +dataNotFound: '§a[EnderDragon] File data.yml Not Found,Creating a new one...' +messageNotFound: '§a[EnderDragon] File message.yml Not Found,Creating a new one...' +configWrongVersion: '§c[EnderDragon] File config.yml out of date,please update it.' +dataWrongVersion: '§c[EnderDragon] File data.yml out of date,please update it.' +langWrongVersion: '§c[EnderDragon] language file out of date,please update it.' +messageWrongVersion: '§c[EnderDragon] File message.yml out of date,please update it.' +loaded: '§a[EnderDragon] Enabling the plugin...' +checkingUpdate: '§a[EnderDragon] Checking update...' +OutOfDate1: '§e[EnderDragon] Your version: v{0}' +OutOfDate2: '§e[EnderDragon] New version: v{1}' +OutOfDate3: '§e[EnderDragon] Download Link: https://www.spigotmc.org/resources/enderdragon-1-12-1-19.101583' +UpToDate: '§a[EnderDragon] You are using the latest version (v{1})...' +onDisable: '§e[EnderDragon] Disabling the plugin...' + +NoCommandPermission: '§4Sorry,but you do not have permission to do that.' +configReloaded: '§aConfig reload complete.' +PlayerCommand: '§cOnly player can do this.' +DropItemAddFail: '§cYour hand is empty!!Please hold something.' +DropItemAddSucceed: '§aAdd succeed,drop-chance is §c{chance}%' +MustNumber: '§cYou should enter a figure instead of this: ' +Number: '' +DropChance: 'chance' +ClearDropItemConfig: '§aDrop-item config has been cleared.' +CommandTips1: '§e/ed reload §a reload the config' +CommandTips2: '§e/ed drop §a set the drop-item' + +prefix: '§7[§eEnderDragon§7]§r ' + +#message been sent to everyone when every dragon is respawned +#You can use %times% to stand for the order number of dragon. +#If you enter "none",noting will be sent. +dragon-spawn-broadcast: '§aDragon No.%times% has spawned.' + +#message been sent to everyone when a special dragon is respawned +#You can shut it in config.yml. +special-broadcast: '§6This dragon is emitting ancient mystery...' + +#message been sent to everyone when every dragon is killed +#You can use %times% to stand for the order number of dragon, and use %player% to stand for killer's name. +#Plugin will judge killer intelligently,if plugin can't find the killer,%player% will be replaced by what is in 'nobody-kill'. +dragon-killing-broadcast: '§bDragon No.%times% has been killed by %player%' + +nobody-kill: 'mysterious man' + +#message been sent to the killer of special dragon +killer-message: '§6Congratulations!This dragon dropped lots of exp and a dragon egg' + +#message been sent to the attacker if he or she is trying to hurt a dragon +#You can use %damage% to stand for damage amount. +damage-display: 'Damage amount to dragon : %damage%' + +#message been sent to the killer of special dragon +#called when special-ender-dragon drop item , but the inventory of the killer doesn't have empty slot. +player-inv-full: '§cYour inventory is full,special drop-item maybe fell at your feet.' \ No newline at end of file diff --git a/src/main/java/xanadu/enderdragon/lang/Message.java b/src/main/java/xanadu/enderdragon/lang/Message.java new file mode 100644 index 0000000..1ead303 --- /dev/null +++ b/src/main/java/xanadu/enderdragon/lang/Message.java @@ -0,0 +1,72 @@ +package xanadu.enderdragon.lang; + +import static xanadu.enderdragon.EnderDragon.lang; + +public class Message { + public static String configNotFound; + public static String dataNotFound; + public static String messageNotFound; + public static String configWrongVersion; + public static String dataWrongVersion; + public static String langWrongVersion; + public static String messageWrongVersion; + public static String loaded; + public static String checkingUpdate; + public static String OutOfDate1; + public static String OutOfDate2; + public static String OutOfDate3; + public static String UpToDate; + public static String onDisable; + public static String NoCommandPermission; + public static String configReloaded; + public static String PlayerCommand; + public static String DropItemAddFail; + public static String DropItemAddSucceed; + public static String MustNumber; + public static String Number; + public static String DropChance; + public static String ClearDropItemConfig; + public static String CommandTips1; + public static String CommandTips2; + public static String DamageDisplay; + public static String KillerMessage; + public static String DragonKillingBroadcast; + public static String NobodyKill; + public static String PlayerInvFull; + public static String DragonSpawnBroadcast; + public static String SpecialBroadcast; + public static void loadLanguage(){ + configNotFound = lang.getString("configNotFound","§a[EnderDragon] config.yml不存在, 已自动创建."); + dataNotFound = lang.getString("dataNotFound","§a[EnderDragon] data.yml不存在, 已自动创建."); + messageNotFound = lang.getString("messageNotFound","§a[EnderDragon] message.yml不存在, 已自动创建."); + configWrongVersion = lang.getString("configWrongVersion","§c[EnderDragon] config.yml版本与插件不对应,请更新配置文件"); + dataWrongVersion = lang.getString("dataWrongVersion","§c[EnderDragon] data.yml版本与插件不对应,请更新配置文件"); + langWrongVersion = lang.getString("langWrongVersion","§c[EnderDragon] 语言文件版本与插件不对应,请更新语言文件"); + messageWrongVersion = lang.getString("messageWrongVersion","§c[EnderDragon] message.yml版本与插件不对应,请更新配置文件"); + loaded = lang.getString("loaded","§a[EnderDragon] 插件已加载"); + checkingUpdate = lang.getString("checkingUpdate","§a[EnderDragon] 正在为您检查更新..."); + OutOfDate1 = lang.getString("OutOfDate1","§e[EnderDragon] 您正在使用的插件版本: v{0}"); + OutOfDate2 = lang.getString("OutOfDate2","§e[EnderDragon] 检测到新版插件v{1}已发布,请尽快更新"); + OutOfDate3 = lang.getString("OutOfDate3","§e[EnderDragon] 下载地址:https://github.com/iXanadu13/EnderDragon/"); + UpToDate = lang.getString("UpToDate","§a[EnderDragon] 您正在使用最新版的插件(v{1})..."); + onDisable = lang.getString("onDisable","§e[EnderDragon] 插件已卸载"); + NoCommandPermission = lang.getString("NoCommandPermission","§4你没有使用该命令的权限"); + configReloaded = lang.getString("configReloaded","§a配置文件已重载"); + PlayerCommand = lang.getString("PlayerCommand","§c这个指令只能由玩家执行"); + DropItemAddFail = lang.getString("DropItemAddFail","§c添加掉落物失败,你手上没有拿物品..."); + DropItemAddSucceed = lang.getString("DropItemAddSucceed","§a掉落物添加成功,概率为: §c{chance}%"); + MustNumber = lang.getString("MustNumber","§c您应该输入数字而不是 "); + Number = lang.getString("Number","数字"); + DropChance = lang.getString("DropChance","掉落概率"); + ClearDropItemConfig = lang.getString("ClearDropItemConfig","§a掉落物配置已清空"); + CommandTips1 = lang.getString("CommandTips1","§e/ed reload 重载配置文件"); + CommandTips2 = lang.getString("CommandTips2","§e/ed drop 特殊龙掉落物设置"); + DamageDisplay = lang.getString("damage-display","对末影龙的攻击伤害:%damage%"); + KillerMessage = lang.getString("killer-message","§6恭喜你,这条龙掉落了龙蛋和大量经验!"); + DragonKillingBroadcast = lang.getString("dragon-killing-broadcast","§b第 %times% 条末影龙已被 %player% 击杀"); + NobodyKill = lang.getString("nobody-kill","玩家远程"); + PlayerInvFull = lang.getString("player-inv-full","§c您的背包没有空余格子,特殊末影龙战利品可能已掉落在您脚下"); + DragonSpawnBroadcast = lang.getString("dragon-spawn-broadcast","§a第 %times% 条末影龙已被复活"); + SpecialBroadcast = lang.getString("special-broadcast","§6这条末影龙散发着神秘的气息..."); + } +} diff --git a/src/main/java/xanadu/enderdragon/listeners/InventoryClick.java b/src/main/java/xanadu/enderdragon/listeners/InventoryClick.java index d1911be..94fd1f9 100644 --- a/src/main/java/xanadu/enderdragon/listeners/InventoryClick.java +++ b/src/main/java/xanadu/enderdragon/listeners/InventoryClick.java @@ -5,10 +5,13 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import static xanadu.enderdragon.EnderDragon.plugin; + public class InventoryClick implements Listener { @EventHandler(priority = EventPriority.HIGH) public void OnInventoryClick(InventoryClickEvent e){ - if(!e.getView().getTitle().contains("§b特殊龙掉落物§r")){return;} + String title = plugin.getConfig().getString("special-dragon.drop-gui-title"); + if(!e.getView().getTitle().contains(title)){return;} e.setCancelled(true); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f2d468c..4fdb12e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,8 @@ #配置文件版本,请勿修改 -version: 1.8.2 +version: 1.8.3 + +#可选: 'Chinese','English' +lang: 'Chinese' #普通末影龙 normal-dragon: @@ -13,7 +16,7 @@ special-dragon: name: '特殊末影龙' #每几次有概率复活出特殊的末影龙 - #千万不要设置该项为0!!!!!否则会引发报错 + #请输入大于0的整数 #如果不希望复活出特殊末影龙,请设置下方的概率为0 respawn-circle: 10 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1641ef2..8b698c5 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,7 @@ name: EnderDragon -version: 1.8.2 +version: 1.8.3 main: xanadu.enderdragon.EnderDragon +author: Xanadu13 api-version: 1.13 #若要将插件装在低于1.13版本的服务器,请修改api-version的值为相应版本号 #举例:如果我要装在1.12.2的服务器,那么设置如下: @@ -15,7 +16,7 @@ permissions: ed.reload: description: '允许重载插件配置文件' default: op - ed.drop.change: + ed.drop.edit: description: '允许修改特殊龙掉落物' default: op ed.drop.gui: