connection_lost
本帖最后由 1582952890 于 2017-9-16 20:47 编辑

LockettePro v2.9.0 - 安全高效的新一代木牌锁箱插件

2017年8月11日更新


LockettePro简介
还记得以前/现在使用的木牌锁插件Lockette吗?LockettePro是Lockette的完全重制版本。LockettePro抛弃了冗余的代码,优化了性能,并且对于一些(数据删除)的地方进行了漏洞修复。LockettePro可以深度自定义配置,用户在使用的时候可以完全控制插件的作为。
Lockette与LockettePro的锁箱方式,指令使用方式,与用户存储方式完全相同,并且两个插件可以互换使用。(UUID牌子除外)

为什么我要写LockettePro这个插件
说实话,我对Lockette这个插件比较无语了。最近我的服务器在性能检查的过程中,我打算查看一下Lockette这个插件的源码,结果我发现Lockette这个插件本身的代码其实非常糟糕,性能也很差,使用着三年前已经deprecated的API,某个漏洞都快四年了还不迟迟修好等等。我感觉单纯的更新已经没有多大希望了,这个插件有着完全重写的必要。

牌子锁插件有什么共同的优点?
* 不依赖数据库,玩家信息不会单独保存在其他的位置。
* 生动形象地锁箱,并且查看箱子的主人与用户可谓是一目了然。
* 便于维护与管理。管理员拆锁大法://replacenear 20 WALL_SIGN 0

LockettePro与Lockette相比有什么优点?
* 性能上有着绝对的优势,尤其是服务器有很多漏斗有关工具的时候,后期也会不停地进行优化。
* 可以使用中文语言文件。(Lockette在2年前的某次更新的时候语言文件读取被改错了,导致无法读取中文字符。)
* 可以更加深度自定义,在下文中将有具体的说明。
* 可以防止由于某(数据删除)的bug所导致的撬锁问题。
* UUID 支持 0w0

LockettePro vs Lockette 性能对比 (折叠)

使用方法
对于玩家:
* 放置箱子或可以锁住的方块后,手持牌子右键点即可上锁,或者SHIFT并且在第一行写好[Private]即可上锁。
* 对于门,门可以在门框上方或下方的方块放置锁住的牌子,锁法与箱子一样。
* 为箱子添加用户:首先右键锁好的方块的牌子,然后输入/lock 行号 玩家名,即可将另一名玩家加到用户里面。如果填写[Everyone]则代表所有人都可以使用。
* 如果仍然需要更多用户,可以在该方块的另一侧再帖一个牌子(手持牌子右键的话会自动贴好,如果没有贴好请在第一行写"[More Users]"),然后右键牌子输入/lock 行号 玩家名即可。
* 如果锁门的牌子上填写了[timer:X]的话,则门会在X秒后自动关闭。
对于腐竹与管理员们请见下方配置区域。
  
插件权限与指令
所有/lock指令均可使/lockettepro,/lockette 或 /lockit 替换。
* 修改牌子的用户,玩家默认有这个权限,指令:/lock 行号 玩家名,玩家需要先右键选中一个牌子才可以使用。
* 重载插件,权限:lockettepro.reload,指令:/lock reload
* 管理员撬锁权限:lockettepro.admin.break
* 管理员绕过检测使用方块(例如开箱子)权限:lockettepro.admin.use  
* 管理员绕过检测在锁着的方块附近放东西权限:lockettepro.admin.interfere
* 管理员修改任何人的牌子权限:lockettepro.admin.edit

插件配置

快速配置说明
1. 首先当然是将下载好的插件放到服务器的plugins文件夹,重启服务器以产生默认的配置文件。如果以前使用过原版Lockette,请删除原插件。
2. (可选)从帖子的最下方下载所需的语言文件替换lang.yml。
3. 如果你的服务器以前使用的Lockette的中文功能,牌子使用了[私有]作为锁的名字的话,请在config.yml将lock-signs中加上'[私有]'。如果使用了'[更多用户]'作为了更多用户的牌子的话,请在addidional-signs中添加'[更多用户]'。(单引号要保留)
4. 根据自己的需求修改其他设置,具体配置请见上方折叠部分的配置说明。
5. 重启服务器,完成设置。

支持插件
WorldGuard, Residence, Towny, ProtocolLib, Factions, ASkyBlock, PlotSquared, SimpleClans, GriefPrevention:
如果玩家没有破坏该方块的权限,则玩家不能锁它。
Towny:
所有玩家需要有"lockettepro.towny.winderness"权限才可以在野外锁箱子。
如果箱子上有一行用户名字为[村子名]或[国家名],则玩家如果在相应的村子或国家的话,即可以打开这个箱子。
Factions:
如果箱子上有一行用户名字为[部落名],则玩家如果在相应的部落的话,即可以打开这个箱子。
Vault:
如果箱子上有一行用户名字为[权限组],则玩家如果在相应的权限组的话,即可以打开这个箱子。其他:
否色玩家不可以在其他玩家的保护区放牌子。(除非该玩家拥有该区域的权限)
其他未注明插件:
一些插件自带保护,LockettePro并不需要额外支持。例如玩家不能锁ChestShop的箱子。

插件下载
本插件目前已经相当成熟,基础功能已经全部完成,由于mcbbs有的时候我没法上,最新版本请查看Spigot。
MCBBS附件下载:
版本 v2.9.0(1.8+最新)2017.08.11
服务器版本 1.8-1.12.x 对应: LockettePro.jar (106.74 KB, 下载次数: 9550)
版本 v1.9.4 (1.7- 最新)2016.06.06
服务器版本 1.6-1.7 对应: LockettePro-v1.9.3(1.6-1.7).jar (78.04 KB, 下载次数: 5673)
外置站点&历史版本下载:
Spigot
变更日志 ChangeLog


Hykilpikonna
可以自定能上锁的方块??!!!!!!

新语
看上去不错,不过应该也会有bug吧...

鹿鸣呦
赞一个    支持@@@@@@@@@@

connection_lost
kilpikonna 发表于 2016-3-19 06:35
可以自定能上锁的方块??!!!!!!

其实原版Lockette也可以。。。

孤独秋叶
这锁箱子插件更换后原来的没用了吗。

1012514182
请问支持MCPC+的贴牌子上锁吗,之前我用的Lockette不能直接贴牌子

connection_lost
1012514182 发表于 2016-3-19 07:56
请问支持MCPC+的贴牌子上锁吗,之前我用的Lockette不能直接贴牌子

不能直接贴牌子应该是个bug,我的bukkit服务器自从以前的某次更新后Lockette自动贴牌子就一半不管用了。你应该需要试试。。。应该没问题

connection_lost
孤独秋叶 发表于 2016-3-19 07:54
这锁箱子插件更换后原来的没用了吗。

两个插件之间由于表现方式相同,可以随时互换

1012514182
connection_lost 发表于 2016-3-19 08:32
不能直接贴牌子应该是个bug,我的bukkit服务器自从以前的某次更新后Lockette自动贴牌子就一半不管用了。 ...

嗯嗯,如果可以给你加人气

2205422896
asdddasdasdasadsasfdafdasfd

2205422896
2205422896 发表于 2016-3-19 08:55
asdddasdasdasadsasfdafdasfd

fdasdfsafsdadfsg

生日12578
希望有1.9版本的这个插件

linzhibin
>.<希望加个拥有某种权限的op可以直接打开箱子无视那个锁

connection_lost
本帖最后由 connection_lost 于 2016-3-19 10:50 编辑

* 管理员撬锁权限:lockettepro.admin.break
* 管理员绕过检测使用方块(例如开箱子)权限:lockettepro.admin.use  
* 管理员绕过检测在锁着的方块附近放东西权限:lockettepro.admin.interfere
OP自带所有权限的。。

Innovators
1.9服务器 BUG特征:右击箱子显示已锁 但实际没有用 也没有牌子在箱子上.错误代码如下:
  1. [11:57:46] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to LockettePro v1.0
  2. org.bukkit.event.EventException
  3.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[Spigot.jar:git-Spigot-dd155ed-81b699a]
  4.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-dd155ed-81b699a]
  5.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  6.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  7.         at org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:226) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  8.         at org.bukkit.craftbukkit.v1_9_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:193) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  9.         at net.minecraft.server.v1_9_R1.PlayerInteractManager.a(PlayerInteractManager.java:110) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  10.         at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:795) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  11.         at net.minecraft.server.v1_9_R1.PacketPlayInBlockDig.a(SourceFile:40) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  12.         at net.minecraft.server.v1_9_R1.PacketPlayInBlockDig.a(SourceFile:10) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  13.         at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  14.         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73]
  15.         at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73]
  16.         at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  17.         at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:721) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  18.         at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  19.         at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  20.         at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [Spigot.jar:git-Spigot-dd155ed-81b699a]
  21.         at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]
  22. Caused by: java.lang.NoSuchFieldError: VILLAGER_NO
  23.         at me.crafter.mc.lockettepro.Utils.playAccessDenyEffect(Utils.java:79) ~[?:?]
  24.         at me.crafter.mc.lockettepro.BlockPlayerListener.onAttemptInteractLockedBlocks(BlockPlayerListener.java:176) ~[?:?]
  25.         at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) ~[?:?]
  26.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
  27.         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
  28.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[Spigot.jar:git-Spigot-dd155ed-81b699a]
  29.         ... 18 more
复制代码

下一页 最后一页