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")
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) {

View File

@@ -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);
}

View File

@@ -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()));