# JobsReborn-PatchPlaceBreak [Addon]
一个允许放置和破坏块的补丁扩展,是 [JobsReborn](https://www.spigotmc.org/resources/jobs-reborn.4216/) 的附加组件。
## 放置和破坏问题
在使用 JobsReborn 时,似乎放置一个方块然后破坏它会被视为有效的职业
行动,从而导致玩家获得报酬。
鉴于这一事实,很容易想象用丝绸触摸镐采集钻石矿石,然后在采集后立即将其重新放置,以便
无限重复此过程...
JobsReborn 的解决方案是在放置钻石矿石时移除金钱和经验值,从而防止上述场景发生。但它并不完美:如果由于某种原因您需要使用金钱和经验值增益
,那么破坏方块时获得的金额将高于放置相同方块时收回的金额。而且……嗯……为装饰目的
丢失金钱和经验值并不是玩家们所喜欢的。
事实上,JobsReborn 已经提供的放置和破坏补丁已经提供了更好的解决方案。
然而,其主要局限性在于保护在 14 天后才会解除。此外,您必须**为每个方块**指定一个固定时
间,在此期间再次破坏该方块将不获得金钱和经验值。总的来说,这无疑是一个进步的
第一步,但我们可以/应该做得更好。插件就在此发挥作用。
## 特性
* 与 JobsReborn 已经提供的放置和破坏保护相似且高效
(包括活塞补丁、配对玩家漏洞、对服务器重启的恢复力等);
* 永久性保护,彻底阻止任何服务器上的利用者;
* 更细粒度的限制方块定制(受保护的方块列表可以是包含式或排除式)以便轻松
最大化保护效果,同时微调性能;
* 使用 SQLite 作为默认持久性解决方案,设置简单快速,便于快速发现和
试验此插件(尽管不建议在生产环境中使用,因为它性能较低);
* 可以依赖 MySQL 或 MariaDB 数据库(观察到更好的性能);
* 通过在出现问题时尽早检测漏洞,通过严格验证来确保插件快速失效和安全响应,从而让您远离配置错误的风险。
## 补丁的工作原理
补丁很简单:在破坏或放置方块时,每个方块都会被标记。
此信息在服务器重启后保持不变。
在支付时间,如果 BREAK、TNTBREAK 或 PLACE 操作涉及活动“玩家”标签,则支付
将被取消。
无关紧要的是作者是谁,因此如果一个玩家放置一个方块,而另一个玩家破坏它,支付
仍然会被取消(修补配对玩家漏洞)。
有两种主要行为,它们的细微差别如下:
* 当放置一个方块时,会连接一个标签到它:这对于修补 BREAK 和 TNTBREAK
操作很有用(例如,在破坏玩家放置的钻石矿石时);
* 当破坏一个方块时,会连接一个标签到它原来的位置:这对于修补 PLACE 操作很有用(例如,
在短时间内反复替换先前破坏的树苗)。
*注意:第二种行为会导致“瞬时”标签,也就是说,一个标签只适用于短时间。值固定为三秒钟。*
最后,当活塞移动一个方块时,标签会跟随它(无论它瞬时与否),从而
修补活塞漏洞。
作为比较点,这种行为可以与
[mcMMO](https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/) 插件中实现的行为类似。
简单高效,这很有用。
## Spigot 插件的设置
我们在这里假设您已经设置了一个 Spigot 服务器,并且已经在其上安装了 JobsReborn 插件。
服务器的版本必须高于或等于 1.17.x。
从此
[release section](https://github.com/Djaytan/mc-jobs-reborn-patch-place-break/releases/) 下载最新的 `.jar` 文件,并将其放入 `plugins/` 文件夹,就完成了!
重启服务器后,插件应该会在 `/plugins` 命令显示的列表中以绿色出现。
如果您希望在较低版本的服务器上使用此插件,则应使用以下版本:
* [2.2.53](https://github.com/Djaytan/mc-jobs-reborn-patch-place-break/releases/tag/v2.2.53) 用于
Minecraft 版本 1.11 到 1.16(含)
* [1.2.0](https://github.com/Djaytan/mc-jobs-reborn-patch-place-break/releases/tag/v1.2.0) 用于
Minecraft 版本 1.8、1.9 和 1.10
在此之后,您应该关闭 JobsReborn 的 "PlaceAndBreak" 配置部分中的所有选项。
这将导致与以下结果相似的结果:
```yaml
PlaceAndBreak:
# 启用块保护,例如矿石,防止通过反复放置和破坏同一块来利用。
# 修改 restrictedBlocks.yml 文件以保护您想要保护的块
Enabled: false
# 是否使用新的块保护方法
# 在大多数情况下,这是一种更有效的方法来检查破坏/放置保护,并且不涉及任何缓存或将数据保存到数据库
# 仅适用于 1.14+ 服务器
NewMethod: false
BlockTracker:
# 是否使用 BlockTracker 插件代替内置块跟踪器
Enabled: false
# 启用此项,我们将忽略矿生成器中生成的块,例如石头、砂石和黑曜石。您仍然可以为放置在黑曜石块上的玩家定义计时器
IgnoreOreGenerators: true
# 块保护数据将在数据库中保留多长时间(以天为单位)
# 这将清理冷却值为 -1 的块数据
# 在每次服务器启动时都会执行数据库清理
# 这不能超过 14 天
KeepDataFor: 14
GlobalBlockTimer:
# 所有块都会在玩家放置后 X 秒内受到保护
Place:
Use: false
# 以秒为单位的时间。这只能是正数,且不能高于 900
# 如果需要更高的计时器,则可以在特定块的 restrictedBlocks.yml 文件中定义
Timer: 3
Break:
Use: false
# 以秒为单位的时间。这只能是正数,且不能高于 60
# 这仅用于防止玩家在同一位置放置方块并再次获得报酬
Timer: 3
# 启用丝绸触摸保护。
# 启用此项后,玩家在受 restrictedblocks 列表中限制的块上使用丝绸触摸工具时将不会获得报酬。
SilkTouchProtection: false
```
## 问题
如果您发现任何错误或可疑行为,请不要犹豫,通过“讨论”部分或直接通过 [GitHub Issues section](https://github.com/djaytan/mc-jobs-reborn-patch-place-break/issues) 报告它。 我将尽最大努力尽快做出回应。
## 如何支持项目?
如果您欣赏该项目并希望支持我们,那么您可以考虑在
[GitHub repository](https://github.com/Djaytan/mc-jobs-reborn-patch-place-break) 上放置一个星标。
这将向我们表明您对该项目感兴趣,我们将对此表示感谢!
## 许可
该项目采用 [MIT](https://opensource.org/licenses/MIT) 许可。