fix: 被复仇时,可以免费解锁自己墓碑的问题。

右键墓碑后,可以点击聊天栏内的解锁按钮解锁墓碑
This commit is contained in:
2024-12-27 02:50:45 +08:00
parent 53a19297ed
commit 5311ce31b4
3 changed files with 39 additions and 5 deletions

View File

@@ -131,7 +131,7 @@ public class ZbCommand implements CommandExecutor, TabCompleter {
@SuppressWarnings("DuplicatedCode") @SuppressWarnings("DuplicatedCode")
protected void unlock(Player player, String[] strings) { protected void unlock(Player player, String[] strings) {
if (strings.length > 1) { if (strings.length > 2) {
player.sendMessage(ChatColor.RED + "命令过长"); player.sendMessage(ChatColor.RED + "命令过长");
return; return;
} }
@@ -140,7 +140,10 @@ public class ZbCommand implements CommandExecutor, TabCompleter {
player.sendMessage(ChatColor.RED + "玩家未登录"); player.sendMessage(ChatColor.RED + "玩家未登录");
return; return;
} }
data.unlockTombstoneBlock(); String key = null;
if (strings.length == 2)
key = strings[1];
data.unlockTombstoneBlock(key);
} }
protected void remove(Player player, String[] strings) { protected void remove(Player player, String[] strings) {

View File

@@ -6,6 +6,11 @@ import ling.coordinateRecorder.data.PlayerData;
import ling.coordinateRecorder.data.PlayerDeathData; import ling.coordinateRecorder.data.PlayerDeathData;
import ling.coordinateRecorder.data.PlayerHarm; import ling.coordinateRecorder.data.PlayerHarm;
import ling.coordinateRecorder.data.TombstoneData; 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.*;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Chest; import org.bukkit.block.Chest;
@@ -156,6 +161,27 @@ public class PlayerEventListener implements Listener {
} }
} }
data.setTombstoneBlock(block); 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( player.sendMessage(
"要解锁此墓碑,请使用" + ChatColor.GOLD + "/zb unlock" + ChatColor.WHITE + " 命令解除锁定"); "要解锁此墓碑,请使用" + ChatColor.GOLD + "/zb unlock" + ChatColor.WHITE + " 命令解除锁定");
player.sendMessage("墓碑内有" + ChatColor.YELLOW + count + ChatColor.WHITE + "个物品"); player.sendMessage("墓碑内有" + ChatColor.YELLOW + count + ChatColor.WHITE + "个物品");
@@ -168,7 +194,7 @@ public class PlayerEventListener implements Listener {
getUnlockPunish(data, tombstoneData, getUnlockPunish(data, tombstoneData,
Arrays.asList(chest.getBlockInventory().getContents()))) + Arrays.asList(chest.getBlockInventory().getContents()))) +
"点沙雕值惩罚!(当前" + ChatColor.RED + data.getFraction() + ChatColor.WHITE + ""); "点沙雕值惩罚!(当前" + ChatColor.RED + data.getFraction() + ChatColor.WHITE + "");
} }*/
event.setCancelled(true); event.setCancelled(true);
} }

View File

@@ -13,6 +13,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
import org.jetbrains.annotations.Nullable;
import org.jooq.Record; import org.jooq.Record;
import org.jooq.Result; import org.jooq.Result;
import org.jooq.impl.DSL; import org.jooq.impl.DSL;
@@ -110,7 +111,7 @@ public class PlayerData {
} }
/// 解锁墓碑 /// 解锁墓碑
public void unlockTombstoneBlock() { public void unlockTombstoneBlock(@Nullable String key) {
if (tombstoneBlock == null) { if (tombstoneBlock == null) {
player.sendMessage(ChatColor.RED + "请先右键点击要解锁的墓碑"); player.sendMessage(ChatColor.RED + "请先右键点击要解锁的墓碑");
return; return;
@@ -135,8 +136,12 @@ public class PlayerData {
player.sendMessage(ChatColor.RED + "不是你的墓碑,无法解锁!"); player.sendMessage(ChatColor.RED + "不是你的墓碑,无法解锁!");
return; return;
} }
if (key != null && !key.equals(data.getArmorStandUuid())) {
player.sendMessage(ChatColor.RED + "数据过期,请重新右击该墓碑!");
return;
}
int value = 0; int value = 0;
if (!data.isRevenge()) { if (!data.isRevenge() || !data.getOwnerDefeater().equals(player.getUniqueId().toString())) {
//先给予沙雕值惩罚 //先给予沙雕值惩罚
value = PlayerEventListener.getUnlockPunish(this, data, value = PlayerEventListener.getUnlockPunish(this, data,
Arrays.asList(chest.getBlockInventory().getContents())); Arrays.asList(chest.getBlockInventory().getContents()));