From 5311ce31b4c07d62bedb86717916af56543768a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=BB=E9=AD=82=E5=9C=A3=E4=BD=BF?= Date: Fri, 27 Dec 2024 02:50:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A2=AB=E5=A4=8D=E4=BB=87=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E4=BB=A5=E5=85=8D=E8=B4=B9=E8=A7=A3=E9=94=81?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E5=A2=93=E7=A2=91=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82=20=E5=8F=B3=E9=94=AE=E5=A2=93=E7=A2=91=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E4=BB=A5=E7=82=B9=E5=87=BB=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=A0=8F=E5=86=85=E7=9A=84=E8=A7=A3=E9=94=81=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E8=A7=A3=E9=94=81=E5=A2=93=E7=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/ZbCommand.java | 7 +++-- .../Listener/PlayerEventListener.java | 28 ++++++++++++++++++- .../coordinateRecorder/data/PlayerData.java | 9 ++++-- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java index 7870ed4..cd09921 100644 --- a/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java +++ b/src/main/java/ling/coordinateRecorder/Commands/ZbCommand.java @@ -131,7 +131,7 @@ public class ZbCommand implements CommandExecutor, TabCompleter { @SuppressWarnings("DuplicatedCode") protected void unlock(Player player, String[] strings) { - if (strings.length > 1) { + if (strings.length > 2) { player.sendMessage(ChatColor.RED + "命令过长"); return; } @@ -140,7 +140,10 @@ public class ZbCommand implements CommandExecutor, TabCompleter { player.sendMessage(ChatColor.RED + "玩家未登录"); return; } - data.unlockTombstoneBlock(); + String key = null; + if (strings.length == 2) + key = strings[1]; + data.unlockTombstoneBlock(key); } protected void remove(Player player, String[] strings) { diff --git a/src/main/java/ling/coordinateRecorder/Listener/PlayerEventListener.java b/src/main/java/ling/coordinateRecorder/Listener/PlayerEventListener.java index e1e0800..ff96533 100644 --- a/src/main/java/ling/coordinateRecorder/Listener/PlayerEventListener.java +++ b/src/main/java/ling/coordinateRecorder/Listener/PlayerEventListener.java @@ -6,6 +6,11 @@ import ling.coordinateRecorder.data.PlayerData; import ling.coordinateRecorder.data.PlayerDeathData; import ling.coordinateRecorder.data.PlayerHarm; import ling.coordinateRecorder.data.TombstoneData; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.hover.content.Text; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.Chest; @@ -156,6 +161,27 @@ public class PlayerEventListener implements Listener { } } data.setTombstoneBlock(block); + + BaseComponent message = new TextComponent("墓碑内有" + ChatColor.YELLOW + count + ChatColor.WHITE + "个物品\n"); + if (tombstoneData.isRevenge() && player.getUniqueId().toString().equals(tombstoneData.getOwnerDefeater())) { + message.addExtra("这个墓碑由你复仇而产生,可以免费解锁! "); + } else { + message.addExtra("解锁将给你带来" + Config.getFractionTimeMessage(getUnlockPunish(data, tombstoneData, + Arrays.asList( + chest.getBlockInventory() + .getContents()))) + + "点沙雕值惩罚!(当前" + Config.getFractionTimeMessage(data.getFraction()) + ") "); + } + BaseComponent unlock = new TextComponent("[解锁]"); + unlock.setUnderlined(true); + unlock.setColor(net.md_5.bungee.api.ChatColor.YELLOW); + unlock.setBold(true); + unlock.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("点击解锁墓碑"))); + unlock.setClickEvent( + new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/zb unlock " + tombstoneData.getArmorStandUuid())); + message.addExtra(unlock); + player.spigot().sendMessage(message); + /* player.sendMessage( "要解锁此墓碑,请使用" + ChatColor.GOLD + "/zb unlock" + ChatColor.WHITE + " 命令解除锁定"); player.sendMessage("墓碑内有" + ChatColor.YELLOW + count + ChatColor.WHITE + "个物品"); @@ -168,7 +194,7 @@ public class PlayerEventListener implements Listener { getUnlockPunish(data, tombstoneData, Arrays.asList(chest.getBlockInventory().getContents()))) + "点沙雕值惩罚!(当前" + ChatColor.RED + data.getFraction() + ChatColor.WHITE + ")"); - } + }*/ event.setCancelled(true); } diff --git a/src/main/java/ling/coordinateRecorder/data/PlayerData.java b/src/main/java/ling/coordinateRecorder/data/PlayerData.java index b08d74e..1baac99 100644 --- a/src/main/java/ling/coordinateRecorder/data/PlayerData.java +++ b/src/main/java/ling/coordinateRecorder/data/PlayerData.java @@ -13,6 +13,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataContainer; +import org.jetbrains.annotations.Nullable; import org.jooq.Record; import org.jooq.Result; import org.jooq.impl.DSL; @@ -110,7 +111,7 @@ public class PlayerData { } /// 解锁墓碑 - public void unlockTombstoneBlock() { + public void unlockTombstoneBlock(@Nullable String key) { if (tombstoneBlock == null) { player.sendMessage(ChatColor.RED + "请先右键点击要解锁的墓碑"); return; @@ -135,8 +136,12 @@ public class PlayerData { player.sendMessage(ChatColor.RED + "不是你的墓碑,无法解锁!"); return; } + if (key != null && !key.equals(data.getArmorStandUuid())) { + player.sendMessage(ChatColor.RED + "数据过期,请重新右击该墓碑!"); + return; + } int value = 0; - if (!data.isRevenge()) { + if (!data.isRevenge() || !data.getOwnerDefeater().equals(player.getUniqueId().toString())) { //先给予沙雕值惩罚 value = PlayerEventListener.getUnlockPunish(this, data, Arrays.asList(chest.getBlockInventory().getContents()));