fix: 被复仇时,可以免费解锁自己墓碑的问题。
右键墓碑后,可以点击聊天栏内的解锁按钮解锁墓碑
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()));
|
||||||
|
|||||||
Reference in New Issue
Block a user