diff --git a/pom.xml b/pom.xml
index 3de3105..7ab811d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
Residence
- 2.8.3.2
+ 2.8.3.3
Residence
重制版本的领地插件 - 喵♂呜
@@ -58,15 +58,15 @@
http://ci.yumc.pw/job/${project.artifactId}/
- &6GUI菜单上线(&c测试版本 可能存在BUG&6)...
+ &6GUI菜单上线(&c测试版本&6)...
+ &b2.8.3.3 - &c添加圈地世界限制(详见dany.yml)...;
&b2.8.3.2 - &c去除铁轨修复补丁(1.8开始无需修复)...;
&b2.8.3.1 - &4修复菜单监听未启用的问题(请删除一次gui.yml)...;
- &b2.8.3.0 - &cGUI菜单测试版上线...;
Debug
UTF-8
-
+
spigot-repo
diff --git a/src/main/java/pw/yumc/Residence/ResidenceMain.java b/src/main/java/pw/yumc/Residence/ResidenceMain.java
index a5511ab..91dc5f8 100644
--- a/src/main/java/pw/yumc/Residence/ResidenceMain.java
+++ b/src/main/java/pw/yumc/Residence/ResidenceMain.java
@@ -99,6 +99,7 @@ public class ResidenceMain extends JavaPlugin {
protected DataBackup backup;
protected ChatManager chatmanager;
protected FileConfig config;
+ protected FileConfig deny;
protected File dataFolder;
protected Map deleteConfirm;
protected EconomyInterface economy;
@@ -165,6 +166,13 @@ public class ResidenceMain extends JavaPlugin {
return deleteConfirm;
}
+ /**
+ * @return the deny
+ */
+ public FileConfig getDeny() {
+ return deny;
+ }
+
public EconomyInterface getEconomyManager() {
return economy;
}
@@ -301,7 +309,7 @@ public class ResidenceMain extends JavaPlugin {
YMLSaveHelper yml;
File loadFile;
final long time = System.currentTimeMillis();
- final HashMap worlds = new HashMap();
+ final HashMap worlds = new HashMap<>();
for (final World world : this.getServer().getWorlds()) {
loadFile = new File(worldFolder, "res_" + world.getName() + ".yml");
if (loadFile.isFile()) {
@@ -384,8 +392,8 @@ public class ResidenceMain extends JavaPlugin {
} catch (final Exception e) {
vergt1_8 = false;
}
- deleteConfirm = new HashMap();
- resadminToggle = new ArrayList();
+ deleteConfirm = new HashMap<>();
+ resadminToggle = new ArrayList<>();
dataFolder = this.getDataFolder();
if (!dataFolder.isDirectory()) {
dataFolder.mkdirs();
@@ -560,11 +568,13 @@ public class ResidenceMain extends JavaPlugin {
@Override
public void onLoad() {
config = new FileConfig(this);
+ deny = new FileConfig(this, "deny.yml");
}
@Override
public void reloadConfig() {
config.reload();
+ deny.reload();
gmanager = new PermissionManager(this);
imanager = new WorldItemManager(this.getConfig());
wmanager = new WorldFlagManager(this);
diff --git a/src/main/java/pw/yumc/Residence/commandsub/CommandCreate.java b/src/main/java/pw/yumc/Residence/commandsub/CommandCreate.java
index 20efcd8..5c442c1 100644
--- a/src/main/java/pw/yumc/Residence/commandsub/CommandCreate.java
+++ b/src/main/java/pw/yumc/Residence/commandsub/CommandCreate.java
@@ -29,6 +29,10 @@ public class CommandCreate extends BaseCommand {
@Override
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
final Player player = (Player) sender;
+ if (plugin.getDeny().getStringList("world").contains(player.getWorld().getName())) {
+ player.sendMessage("§c当前世界不允许圈地!");
+ return;
+ }
final boolean resadmin = (command != null);
final ResidenceManager rmanager = plugin.getResidenceManager();
final Language language = plugin.getLanguage();
diff --git a/src/main/java/pw/yumc/Residence/listeners/ResidencePlayerListener.java b/src/main/java/pw/yumc/Residence/listeners/ResidencePlayerListener.java
index a09c78c..d9b65ca 100644
--- a/src/main/java/pw/yumc/Residence/listeners/ResidencePlayerListener.java
+++ b/src/main/java/pw/yumc/Residence/listeners/ResidencePlayerListener.java
@@ -251,8 +251,7 @@ public class ResidencePlayerListener implements Listener {
return;
}
final Material mat = block.getType();
- if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block)
- || event.getAction() == Action.PHYSICAL)) {
+ if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block) || event.getAction() == Action.PHYSICAL)) {
final int typeId = player.getItemInHand().getTypeId();
if (typeId != plugin.getConfigManager().getSelectionTooldID() && typeId != plugin.getConfigManager().getInfoToolID() && typeId != 351 && typeId != 416) {
return;
@@ -284,6 +283,10 @@ public class ResidencePlayerListener implements Listener {
}
if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getSelectionTooldID()) {
+ if (plugin.getDeny().getStringList("world").contains(player.getWorld().getName())) {
+ player.sendMessage("§c当前世界不允许圈地!");
+ return;
+ }
final Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit");
if (wep != null) {
if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) {
@@ -291,19 +294,19 @@ public class ResidencePlayerListener implements Listener {
}
}
final PermissionGroup group = plugin.getPermissionManager().getGroup(player);
- if (player.hasPermission("residence.select") || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select")
- || group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) {
+ if (player.hasPermission("residence.select")
+ || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select")
+ || group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select")
+ || resadmin) {
if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
final Location loc = block.getLocation();
plugin.getSelectionManager().placeLoc1(player, loc);
- player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Primary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
- + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
+ player.sendMessage(String.format("§a%s§c(%s,%s,%s)§a!", plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Primary")), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
event.setCancelled(true);
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
final Location loc = block.getLocation();
plugin.getSelectionManager().placeLoc2(player, loc);
- player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Secondary")) + ChatColor.RED + "(" + loc.getBlockX() + ","
- + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!");
+ player.sendMessage(String.format("§a%s§c(%s,%s,%s)§a!", plugin.getLanguage().getPhrase("Secondary", plugin.getLanguage().getPhrase("Primary")), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
}
}
}
@@ -324,8 +327,8 @@ public class ResidencePlayerListener implements Listener {
if (heldItem != null) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (player.getItemInHand().getTypeId() == 351) {
- if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17
- && (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
+ if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS
+ || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17 && (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) {
perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
if (!perms.playerHas(player.getName(), world, "build", true)) {
event.setCancelled(true);
@@ -500,8 +503,9 @@ public class ResidencePlayerListener implements Listener {
final Player player = event.getPlayer();
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc);
if (res != null) {
- if (plugin.isResAdminOn(player) || ((res.getPermissions().playerHas(player.getName(), "tp", true) || player.hasPermission("residence.admin.tp"))
- && (res.getPermissions().playerHas(player.getName(), "move", true) || player.hasPermission("residence.admin.move")))) {
+ if (plugin.isResAdminOn(player)
+ || ((res.getPermissions().playerHas(player.getName(), "tp", true) || player.hasPermission("residence.admin.tp"))
+ && (res.getPermissions().playerHas(player.getName(), "move", true) || player.hasPermission("residence.admin.move")))) {
handleNewLocation(player, loc, false);
} else if (event.getCause() != TeleportCause.PLUGIN) {
final String areaname = res.getName();
@@ -527,21 +531,48 @@ public class ResidencePlayerListener implements Listener {
}
private boolean isCanUseEntity_BothClick(final Material mat, final Block block) {
- return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE
- || mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE || mat == Material.DRAGON_EGG || plugin.getConfigManager().getCustomBothClick().contains(block.getTypeId())
- || (plugin.isGt1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR
- || mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE
- || mat == Material.DARK_OAK_FENCE_GATE));
+ return mat == Material.LEVER
+ || mat == Material.STONE_BUTTON
+ || mat == Material.WOOD_BUTTON
+ || mat == Material.WOODEN_DOOR
+ || mat == Material.TRAP_DOOR
+ || mat == Material.FENCE_GATE
+ || mat == Material.PISTON_BASE
+ || mat == Material.PISTON_STICKY_BASE
+ || mat == Material.DRAGON_EGG
+ || plugin.getConfigManager().getCustomBothClick().contains(block.getTypeId())
+ || (plugin.isGt1_8()
+ && (mat == Material.SPRUCE_DOOR
+ || mat == Material.BIRCH_DOOR
+ || mat == Material.JUNGLE_DOOR
+ || mat == Material.ACACIA_DOOR
+ || mat == Material.DARK_OAK_DOOR
+ || mat == Material.SPRUCE_FENCE_GATE
+ || mat == Material.BIRCH_FENCE_GATE
+ || mat == Material.JUNGLE_FENCE_GATE
+ || mat == Material.ACACIA_FENCE_GATE
+ || mat == Material.DARK_OAK_FENCE_GATE));
}
private boolean isCanUseEntity_RClickOnly(final Material mat, final Block block) {
- return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL || mat == Material.CAKE_BLOCK
- || mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH
- || mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(block.getTypeId());
+ return mat == Material.ITEM_FRAME
+ || mat == Material.BEACON
+ || mat == Material.FLOWER_POT
+ || mat == Material.COMMAND
+ || mat == Material.ANVIL
+ || mat == Material.CAKE_BLOCK
+ || mat == Material.NOTE_BLOCK
+ || mat == Material.DIODE
+ || mat == Material.DIODE_BLOCK_OFF
+ || mat == Material.DIODE_BLOCK_ON
+ || mat == Material.BED_BLOCK
+ || mat == Material.WORKBENCH
+ || mat == Material.BREWING_STAND
+ || mat == Material.ENCHANTMENT_TABLE
+ || plugin.getConfigManager().getCustomRightClick().contains(block.getTypeId());
}
private boolean isContainer(final Material mat, final Block block) {
- return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container")
- || plugin.getConfigManager().getCustomContainers().contains(block.getTypeId());
+ return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container") || plugin.getConfigManager().getCustomContainers().contains(block.getTypeId());
}
}
diff --git a/src/main/resources/deny.yml b/src/main/resources/deny.yml
new file mode 100644
index 0000000..2befe58
--- /dev/null
+++ b/src/main/resources/deny.yml
@@ -0,0 +1,3 @@
+#禁止圈地的世界(将会禁止命令和选择)
+world:
+- 'denyworld'
\ No newline at end of file