mirror of
https://e.coding.net/circlecloud/Residence.git
synced 2024-11-23 02:18:53 +00:00
fix: 修复GUI刷物品问题 添加GUI开关
Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
parent
e4ef12f7b7
commit
4a33913a9c
236
pom.xml
236
pom.xml
@ -1,120 +1,120 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>pw.yumc</groupId>
|
||||
<artifactId>Residence</artifactId>
|
||||
<version>2.8.3.5</version>
|
||||
<name>Residence</name>
|
||||
<description>重制版本的领地插件 - 喵♂呜</description>
|
||||
<build>
|
||||
<finalName>${project.name}</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
<configuration>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>2.3</version>
|
||||
<configuration>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
<minimizeJar>true</minimizeJar>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<include>cn.citycraft:PluginHelper</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>cn.citycraft.PluginHelper</pattern>
|
||||
<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<ciManagement>
|
||||
<system>Jenkins</system>
|
||||
<url>http://ci.yumc.pw/job/${project.artifactId}/</url>
|
||||
</ciManagement>
|
||||
<properties>
|
||||
<update.description>&6GUI菜单上线(&c测试版本&6)...</update.description>
|
||||
<update.changes>
|
||||
&b2.8.3.5 - &c修复世界限制失效问题...;
|
||||
&b2.8.3.4 - &c圈地世界限制忽略OP和管理...;
|
||||
&b2.8.3.3 - &c添加圈地世界限制(详见dany.yml)...;
|
||||
</update.changes>
|
||||
<env.GIT_COMMIT>Debug</env.GIT_COMMIT>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>yumc-repo</id>
|
||||
<url>http://repo.yumc.pw/content/groups/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>jtb</id>
|
||||
<name>YUMC</name>
|
||||
<url>http://repo.yumc.pw/content/repositories/yumcenter/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<type>jar</type>
|
||||
<version>1.9-R0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.earth2me</groupId>
|
||||
<artifactId>essentials</artifactId>
|
||||
<version>2.9.6</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/Essentials.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
<artifactId>Vault</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q</groupId>
|
||||
<artifactId>WorldEdit</artifactId>
|
||||
<version>5.4.5</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/WorldEdit.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.citycraft</groupId>
|
||||
<artifactId>PluginHelper</artifactId>
|
||||
<type>jar</type>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>pw.yumc</groupId>
|
||||
<artifactId>Residence</artifactId>
|
||||
<version>2.8.3.6</version>
|
||||
<name>Residence</name>
|
||||
<description>重制版本的领地插件 - 喵♂呜</description>
|
||||
<build>
|
||||
<finalName>${project.name}</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
<configuration>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>2.3</version>
|
||||
<configuration>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
<minimizeJar>true</minimizeJar>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<include>cn.citycraft:PluginHelper</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>cn.citycraft.PluginHelper</pattern>
|
||||
<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<ciManagement>
|
||||
<system>Jenkins</system>
|
||||
<url>http://ci.yumc.pw/job/${project.artifactId}/</url>
|
||||
</ciManagement>
|
||||
<properties>
|
||||
<update.description>§6GUI菜单完善...</update.description>
|
||||
<update.changes>
|
||||
§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>
|
||||
</properties>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>yumc-repo</id>
|
||||
<url>http://repo.yumc.pw/content/groups/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>jtb</id>
|
||||
<name>YUMC</name>
|
||||
<url>http://repo.yumc.pw/content/repositories/yumcenter/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<type>jar</type>
|
||||
<version>1.11.2-R0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.earth2me</groupId>
|
||||
<artifactId>essentials</artifactId>
|
||||
<version>2.9.6</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/Essentials.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
<artifactId>Vault</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q</groupId>
|
||||
<artifactId>WorldEdit</artifactId>
|
||||
<version>5.4.5</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/WorldEdit.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.citycraft</groupId>
|
||||
<artifactId>PluginHelper</artifactId>
|
||||
<type>jar</type>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -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;
|
||||
}
|
||||
event.setCancelled(true);
|
||||
final int slot = event.getRawSlot();
|
||||
if ((slot > 53) || (slot < 0)) {
|
||||
return;
|
||||
}
|
||||
final SetFlag setFlag = GUI.get(player);
|
||||
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);
|
||||
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 = ((GuiHolder) guiHolder).getFlag();
|
||||
setFlag.toggleFlag(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
Version: 1.0
|
||||
|
||||
#是否开启领地GUI
|
||||
Enable: true
|
||||
# 图形化界面的按钮显示
|
||||
GUI:
|
||||
setTrue:
|
||||
|
Loading…
Reference in New Issue
Block a user