1
0
mirror of https://e.coding.net/circlecloud/Residence.git synced 2025-11-24 21:46:16 +00:00

fix Rails Bug and flush item bug...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092
2015-09-26 17:25:10 +08:00
parent 532c89e70e
commit 08e3ed84e2
4 changed files with 67 additions and 5 deletions

View File

@@ -47,6 +47,7 @@ import com.bekvon.bukkit.residence.listeners.ResidenceBlockListener;
import com.bekvon.bukkit.residence.listeners.ResidenceEntityListener; import com.bekvon.bukkit.residence.listeners.ResidenceEntityListener;
import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener; import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener;
import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener_1_8; import com.bekvon.bukkit.residence.listeners.ResidencePlayerListener_1_8;
import com.bekvon.bukkit.residence.listeners.bugfix.ResidenceBugFix;
import com.bekvon.bukkit.residence.manager.ConfigManager; import com.bekvon.bukkit.residence.manager.ConfigManager;
import com.bekvon.bukkit.residence.manager.EntityManager; import com.bekvon.bukkit.residence.manager.EntityManager;
import com.bekvon.bukkit.residence.manager.FlagManager; import com.bekvon.bukkit.residence.manager.FlagManager;
@@ -86,7 +87,8 @@ public class Residence extends JavaPlugin {
public static float bukkitver; public static float bukkitver;
public final static int saveVersion = 1; public final static int saveVersion = 1;
public final static String[] validLanguages = { "English", "Chinese" }; public final static String[] validLanguages = { "English",
"Chinese" };
protected static Residence instance; protected static Residence instance;
protected DataBackup backup; protected DataBackup backup;
protected ResidenceBlockListener blistener; protected ResidenceBlockListener blistener;
@@ -445,6 +447,7 @@ public class Residence extends JavaPlugin {
if (taskmanager == null) { if (taskmanager == null) {
taskmanager = new TaskManager(this); taskmanager = new TaskManager(this);
} }
final PluginManager pm = getServer().getPluginManager();
if (firstenable) { if (firstenable) {
if (!this.isEnabled()) { if (!this.isEnabled()) {
return; return;
@@ -460,12 +463,10 @@ public class Residence extends JavaPlugin {
useWorldEdit = false; useWorldEdit = false;
this.getLogger().warning("WorldEdit 未找到!"); this.getLogger().warning("WorldEdit 未找到!");
} }
blistener = new ResidenceBlockListener(this); blistener = new ResidenceBlockListener(this);
plistener = new ResidencePlayerListener(this); plistener = new ResidencePlayerListener(this);
elistener = new ResidenceEntityListener(this); elistener = new ResidenceEntityListener(this);
plistener1_8 = new ResidencePlayerListener_1_8(this); plistener1_8 = new ResidencePlayerListener_1_8(this);
final PluginManager pm = getServer().getPluginManager();
pm.registerEvents(blistener, this); pm.registerEvents(blistener, this);
pm.registerEvents(plistener, this); pm.registerEvents(plistener, this);
if (is1_8()) { if (is1_8()) {
@@ -481,6 +482,9 @@ public class Residence extends JavaPlugin {
fmanager = new FlagManager(this); fmanager = new FlagManager(this);
fmanager.init(); fmanager.init();
pm.registerEvents(new ResidenceBugFix(this), this);
this.getLogger().info("刷甘蔗漏洞补丁已加载...");
taskmanager.add(this.getServer().getScheduler().runTaskTimer(this, new HealTask(this), 20, 20)); taskmanager.add(this.getServer().getScheduler().runTaskTimer(this, new HealTask(this), 20, 20));
hdmcnd = new HandlerMainCommand(this); hdmcnd = new HandlerMainCommand(this);

View File

@@ -0,0 +1,58 @@
package com.bekvon.bukkit.residence.listeners.bugfix;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.bekvon.bukkit.residence.protection.FlagPermissions;
public class ResidenceBugFix implements Listener {
Residence plugin;
public ResidenceBugFix(final Residence plugin) {
this.plugin = plugin;
}
@EventHandler
public void onPhysics(final BlockPhysicsEvent e) {
final Material mat = e.getChangedType();
if (mat == Material.RAILS || mat == Material.POWERED_RAIL || mat == Material.ACTIVATOR_RAIL) {
e.setCancelled(true);
}
}
@EventHandler
public void onPlace(final PlayerInteractEvent e) {
try {
final Player p = e.getPlayer();
final Block b = e.getClickedBlock();
final BlockFace bf = e.getBlockFace();
if (bf == null) {
return;
}
final Block b1 = b.getRelative(bf, 1);
final Block b2 = b.getRelative(bf, 2);
final ClaimedResidence res = plugin.getResidenceManager().getByLoc(b2.getLocation());
if (res == null) {
return;
}
final FlagPermissions perms = plugin.getPermsByLocForPlayer(b.getLocation(), p);
final String world = p.getWorld().getName();
if (b1.getType() != Material.AIR && b2.getType() == Material.AIR) {
if (!perms.playerHas(p.getName(), world, "place", false)) {
e.setCancelled(true);
p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission") + "(你在尝试刷甘蔗?)");
}
}
} catch (final Exception e2) {
}
}
}

View File

@@ -238,7 +238,7 @@ public class ConfigManager {
preventBuildInRent = config.getBoolean("Global.PreventRentModify", true); preventBuildInRent = config.getBoolean("Global.PreventRentModify", true);
stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true); stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true);
legacyperms = config.getBoolean("Global.LegacyPermissions", false); legacyperms = config.getBoolean("Global.LegacyPermissions", false);
namefix = config.getString("Global.ResidenceNameRegex", "[A-Za-z0-9\\u4e00-\\u9fa5\\-\\_]");// "[^a-zA-Z0-9\\-\\_]" namefix = config.getString("Global.ResidenceNameRegex", "[^A-Za-z0-9\\u4e00-\\u9fa5\\-\\_]");// "[^a-zA-Z0-9\\-\\_]"
showIntervalMessages = config.getBoolean("Global.ShowIntervalMessages", false); showIntervalMessages = config.getBoolean("Global.ShowIntervalMessages", false);
spoutEnable = config.getBoolean("Global.EnableSpout", false); spoutEnable = config.getBoolean("Global.EnableSpout", false);
enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true); enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true);

View File

@@ -52,7 +52,7 @@ Global:
# 设置为'false'将造成即使在保存文件时检测到错误,领地插件也会继续加载. # 设置为'false'将造成即使在保存文件时检测到错误,领地插件也会继续加载.
StopOnSaveFault: true StopOnSaveFault: true
# 领地名称字符过滤,Google搜索 "Java正则表达式" 可以了解它是如何工作. # 领地名称字符过滤,Google搜索 "Java正则表达式" 可以了解它是如何工作.
ResidenceNameRegex: '[A-Za-z0-9\u4e00-\u9fa5\\-\\_]' ResidenceNameRegex: '[^A-Za-z0-9\u4e00-\u9fa5\-\_]'
# 设置为'true'将会 当每次租用到期或出租期满,都会发送给控制台一个信息. # 设置为'true'将会 当每次租用到期或出租期满,都会发送给控制台一个信息.
ShowIntervalMessages: false ShowIntervalMessages: false
# 实验 - 以下设置块的ID列表将作为检查的“箱子”和“使用”标志的使用,当使用MOD自定义箱子和物品时. # 实验 - 以下设置块的ID列表将作为检查的“箱子”和“使用”标志的使用,当使用MOD自定义箱子和物品时.