mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2025-11-24 21:46:16 +00:00
12
pom.xml
12
pom.xml
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>pw.yumc</groupId>
|
||||
<artifactId>Residence</artifactId>
|
||||
<version>2.8.3.5</version>
|
||||
<version>2.8.3.6</version>
|
||||
<name>Residence</name>
|
||||
<description>重制版本的领地插件 - 喵♂呜</description>
|
||||
<build>
|
||||
@@ -58,11 +58,11 @@
|
||||
<url>http://ci.yumc.pw/job/${project.artifactId}/</url>
|
||||
</ciManagement>
|
||||
<properties>
|
||||
<update.description>&6GUI菜单上线(&c测试版本&6)...</update.description>
|
||||
<update.description>§6GUI菜单完善...</update.description>
|
||||
<update.changes>
|
||||
&b2.8.3.5 - &c修复世界限制失效问题...;
|
||||
&b2.8.3.4 - &c圈地世界限制忽略OP和管理...;
|
||||
&b2.8.3.3 - &c添加圈地世界限制(详见dany.yml)...;
|
||||
§b2.8.3.6 - §c修复GUI刷物品的问题...;
|
||||
§b2.8.3.5 - §c修复世界限制失效问题...;
|
||||
§b2.8.3.4 - §c圈地世界限制忽略OP和管理...;
|
||||
</update.changes>
|
||||
<env.GIT_COMMIT>Debug</env.GIT_COMMIT>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
@@ -89,7 +89,7 @@
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<type>jar</type>
|
||||
<version>1.9-R0.1-SNAPSHOT</version>
|
||||
<version>1.11.2-R0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.earth2me</groupId>
|
||||
|
||||
@@ -13,7 +13,6 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence;
|
||||
|
||||
import cn.citycraft.PluginHelper.config.FileConfig;
|
||||
import pw.yumc.Residence.ResidenceMain;
|
||||
import pw.yumc.Residence.listeners.ResidenceGUIListener;
|
||||
|
||||
public class FlagUtil {
|
||||
public static FileConfig conf;
|
||||
@@ -27,6 +26,9 @@ public class FlagUtil {
|
||||
}
|
||||
|
||||
public static void open(final ClaimedResidence area, final Player player, final String target, final boolean resadmin) {
|
||||
if (!conf.getBoolean("Enable")) {
|
||||
|
||||
return; }
|
||||
final SetFlag flag = new SetFlag(area, player, resadmin);
|
||||
if (StringUtils.isEmpty(target)) {
|
||||
flag.recalculateResidence(area);
|
||||
@@ -34,7 +36,6 @@ public class FlagUtil {
|
||||
flag.setTargePlayer(target);
|
||||
flag.recalculatePlayer(area);
|
||||
}
|
||||
ResidenceGUIListener.GUI.put(player.getName(), flag);
|
||||
player.openInventory(flag.getInventory());
|
||||
player.sendMessage("§a已打开领地 " + area.getName() + " 的管理界面!");
|
||||
}
|
||||
|
||||
21
src/main/java/pw/yumc/Residence/gui/GuiHolder.java
Normal file
21
src/main/java/pw/yumc/Residence/gui/GuiHolder.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package pw.yumc.Residence.gui;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
public class GuiHolder implements InventoryHolder {
|
||||
SetFlag flag;
|
||||
|
||||
public GuiHolder(SetFlag flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
public SetFlag getFlag() {
|
||||
return flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ public class SetFlag {
|
||||
if (FlagUtil.description.containsKey(one.getKey())) {
|
||||
lore.addAll(FlagUtil.description.get(one.getKey()));
|
||||
}
|
||||
switch (one.getValue().intValue()) {
|
||||
switch (one.getValue()) {
|
||||
case 0:
|
||||
lore.add(ChatColor.GOLD + "权限状态: " + ChatColor.RED + "关闭");
|
||||
break;
|
||||
@@ -79,7 +79,7 @@ public class SetFlag {
|
||||
}
|
||||
|
||||
public ItemStack getStatuItem(final Entry<String, Integer> one) {
|
||||
switch (one.getValue().intValue()) {
|
||||
switch (one.getValue()) {
|
||||
case 0:
|
||||
return Residence.getFlagUtilManager().getGuiFalse();
|
||||
case 1:
|
||||
@@ -114,7 +114,7 @@ public class SetFlag {
|
||||
resFlags.put(one.getKey(), one.getValue());
|
||||
}
|
||||
}
|
||||
Map<String, Boolean> pFlags = null;
|
||||
Map<String, Boolean> pFlags;
|
||||
if (this.targetPlayer != null) {
|
||||
final ArrayList<String> PosibleResPFlags = res.getPermissions().getposibleFlags();
|
||||
final Map<String, Boolean> temp = new HashMap<>();
|
||||
@@ -131,22 +131,30 @@ public class SetFlag {
|
||||
}
|
||||
}
|
||||
}
|
||||
String title = String.format(FlagUtil.getConfig().getMessage("GUI.Pset.Title"), this.targetPlayer, res.getName());
|
||||
recalculate(title, globalFlags, resFlags, res.getPermissions().getFlags(), flags);
|
||||
}
|
||||
|
||||
public void recalculate(String title, Map<String, Boolean> globalFlags, Map<String, Boolean> resFlags, Map<String, Boolean> resPerm, List<String> flags) {
|
||||
final LinkedHashMap<String, Integer> TempPermMap = new LinkedHashMap<>();
|
||||
for (final Entry<String, Boolean> one : resPerm.entrySet()) {
|
||||
if (flags.contains(one.getKey())) {
|
||||
resFlags.put(one.getKey(), one.getValue());
|
||||
}
|
||||
}
|
||||
for (final Entry<String, Boolean> one : globalFlags.entrySet()) {
|
||||
if (flags.contains(one.getKey())) {
|
||||
if (resFlags.containsKey(one.getKey())) {
|
||||
TempPermMap.put(one.getKey(), resFlags.get(one.getKey()) ? 1 : 0);
|
||||
} else {
|
||||
TempPermMap.put(one.getKey(), Integer.valueOf(2));
|
||||
TempPermMap.put(one.getKey(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
String title = "";
|
||||
title = String.format(FlagUtil.getConfig().getMessage("GUI.Pset.Title"), this.targetPlayer, res.getName());
|
||||
if (title.length() > 32) {
|
||||
title = title.substring(0, Math.min(title.length(), 32));
|
||||
}
|
||||
final Inventory GuiInv = Bukkit.createInventory(null, 54, title);
|
||||
final Inventory GuiInv = Bukkit.createInventory(new GuiHolder(this), 54, title);
|
||||
final FlagData flagData = Residence.getFlagUtilManager().getFlagData();
|
||||
this.pageCount = ((int) Math.ceil(TempPermMap.size() / 45.0D));
|
||||
final int start = this.page * 45 - 45;
|
||||
@@ -168,7 +176,7 @@ public class SetFlag {
|
||||
if (flagData.contains(one.getKey())) {
|
||||
MiscInfo = flagData.getItem(one.getKey());
|
||||
}
|
||||
if (one.getValue().intValue() == 1) {
|
||||
if (one.getValue() == 1) {
|
||||
final ItemMeta im = MiscInfo.getItemMeta();
|
||||
im.addEnchant(Enchantment.LUCK, 1, true);
|
||||
MiscInfo.setItemMeta(im);
|
||||
@@ -193,65 +201,8 @@ public class SetFlag {
|
||||
final Map<String, Boolean> globalFlags = Residence.getPermissionManager().getAllFlags().getFlags();
|
||||
final Map<String, Boolean> resFlags = new HashMap<>();
|
||||
final LinkedHashMap<String, Integer> TempPermMap = new LinkedHashMap<>();
|
||||
for (final Entry<String, Boolean> one : res.getPermissions().getFlags().entrySet()) {
|
||||
if (flags.contains(one.getKey())) {
|
||||
resFlags.put(one.getKey(), one.getValue());
|
||||
}
|
||||
}
|
||||
for (final Entry<String, Boolean> one : globalFlags.entrySet()) {
|
||||
if (flags.contains(one.getKey())) {
|
||||
if (resFlags.containsKey(one.getKey())) {
|
||||
TempPermMap.put(one.getKey(), resFlags.get(one.getKey()) ? 1 : 0);
|
||||
} else {
|
||||
TempPermMap.put(one.getKey(), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
String title = "";
|
||||
title = String.format(FlagUtil.getConfig().getMessage("GUI.Set.Title"), res.getName());
|
||||
if (title.length() > 32) {
|
||||
title = title.substring(0, Math.min(title.length(), 32));
|
||||
}
|
||||
final Inventory GuiInv = Bukkit.createInventory(null, 54, title);
|
||||
final FlagData flagData = Residence.getFlagUtilManager().getFlagData();
|
||||
this.pageCount = ((int) Math.ceil(TempPermMap.size() / 45.0D));
|
||||
final int start = this.page * 45 - 45;
|
||||
final int end = this.page * 45;
|
||||
int count = -1;
|
||||
this.permMap.clear();
|
||||
for (final Entry<String, Integer> one : TempPermMap.entrySet()) {
|
||||
count++;
|
||||
if (count >= end) {
|
||||
break;
|
||||
}
|
||||
if (count >= start) {
|
||||
this.permMap.put(one.getKey(), one.getValue());
|
||||
}
|
||||
}
|
||||
int i = 0;
|
||||
for (final Entry<String, Integer> one : this.permMap.entrySet()) {
|
||||
ItemStack MiscInfo = getStatuItem(one);
|
||||
if (flagData.contains(one.getKey())) {
|
||||
MiscInfo = flagData.getItem(one.getKey());
|
||||
}
|
||||
if (one.getValue().intValue() == 1) {
|
||||
final ItemMeta im = MiscInfo.getItemMeta();
|
||||
im.addEnchant(Enchantment.LUCK, 1, true);
|
||||
MiscInfo.setItemMeta(im);
|
||||
} else {
|
||||
MiscInfo.removeEnchantment(Enchantment.LUCK);
|
||||
}
|
||||
final ItemMeta MiscInfoMeta = MiscInfo.getItemMeta();
|
||||
MiscInfoMeta.setDisplayName(ChatColor.GREEN + one.getKey());
|
||||
MiscInfoMeta.setLore(getFlagLore(one));
|
||||
MiscInfo.setItemMeta(MiscInfoMeta);
|
||||
GuiInv.setItem(i, MiscInfo);
|
||||
i++;
|
||||
if (i > 53) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
setPageItem(GuiInv);
|
||||
String title = String.format(FlagUtil.getConfig().getMessage("GUI.Set.Title"), res.getName());
|
||||
recalculate(title, globalFlags, resFlags, res.getPermissions().getFlags(), flags);
|
||||
}
|
||||
|
||||
public void setAdmin(final boolean state) {
|
||||
@@ -278,9 +229,7 @@ public class SetFlag {
|
||||
final ClickType click = event.getClick();
|
||||
final InventoryAction action = event.getAction();
|
||||
final ItemStack item = this.inventory.getItem(slot);
|
||||
if (item == null) {
|
||||
return;
|
||||
}
|
||||
if (item == null) { return; }
|
||||
if (slot == 53) {
|
||||
if (this.page < this.pageCount) {
|
||||
this.page += 1;
|
||||
@@ -302,13 +251,10 @@ public class SetFlag {
|
||||
command = "false";
|
||||
} else if ((click.isLeftClick()) && (action == InventoryAction.MOVE_TO_OTHER_INVENTORY)) {
|
||||
command = "remove";
|
||||
} else if ((click.isRightClick()) && (action == InventoryAction.MOVE_TO_OTHER_INVENTORY)) {
|
||||
return;
|
||||
}
|
||||
String flag = "";
|
||||
} else if ((click.isRightClick()) && (action == InventoryAction.MOVE_TO_OTHER_INVENTORY)) { return; }
|
||||
int i = 0;
|
||||
for (final Entry<String, Integer> one : this.permMap.entrySet()) {
|
||||
flag = one.getKey();
|
||||
String flag = one.getKey();
|
||||
if (i == slot) {
|
||||
if (this.targetPlayer == null) {
|
||||
if (this.admin) {
|
||||
|
||||
@@ -1,39 +1,25 @@
|
||||
package pw.yumc.Residence.listeners;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
import pw.yumc.Residence.gui.GuiHolder;
|
||||
import pw.yumc.Residence.gui.SetFlag;
|
||||
|
||||
public class ResidenceGUIListener implements Listener {
|
||||
public static Map<String, SetFlag> GUI = new HashMap<>();
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onFlagGuiClick(final InventoryClickEvent event) {
|
||||
final String player = event.getWhoClicked().getName();
|
||||
if (GUI.size() == 0 || !GUI.containsKey(player)) {
|
||||
return;
|
||||
}
|
||||
InventoryHolder guiHolder = event.getInventory().getHolder();
|
||||
if (guiHolder instanceof GuiHolder) {
|
||||
event.setCancelled(true);
|
||||
final int slot = event.getRawSlot();
|
||||
if ((slot > 53) || (slot < 0)) {
|
||||
return;
|
||||
}
|
||||
final SetFlag setFlag = GUI.get(player);
|
||||
if ((slot > 53) || (slot < 0)) { return; }
|
||||
final SetFlag setFlag = ((GuiHolder) guiHolder).getFlag();
|
||||
setFlag.toggleFlag(event);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onFlagGuiClose(final InventoryCloseEvent event) {
|
||||
final String player = event.getPlayer().getName();
|
||||
if (GUI.size() != 0 & GUI.containsKey(player)) {
|
||||
GUI.remove(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
Version: 1.0
|
||||
|
||||
#是否开启领地GUI
|
||||
Enable: true
|
||||
# 图形化界面的按钮显示
|
||||
GUI:
|
||||
setTrue:
|
||||
|
||||
Reference in New Issue
Block a user