耗子
本帖最后由 耗子 于 2023-3-27 17:54 编辑

插件介绍

本插件基于Bukkit API开发,用于在服务器中控制实体和方块行为,并为不同世界设置不同规则。本插件基于1.16.5开发,但已完成全版本兼容,除部分功能无法在较低版本运行外,其余功能均可运行。插件功能如下所示:

  • 阻止实体生成、通过传送门、爆炸、破坏方块、乘坐载具、捡起物品。
  • 阻止玩家受到伤害、放置方块、点击方块和实体。
  • 阻止物品受到爆炸、火焰和岩浆伤害。
  • 阻止生物转变(村民、女巫、僵尸村民、溺尸、苦力怕、僵尸猪人、蘑菇牛)。
  • 阻止火焰蔓延、烧毁方块、熄灭。
  • 阻止雪形成、融化。
  • 阻止雪傀儡产雪。
  • 阻止冰形成、融化。
  • 阻止珊瑚失水。
  • 阻止踩碎海龟蛋。
  • 阻止耕地退化。
  • 阻止树叶腐烂。
  • 阻止龙蛋传送。
  • 阻止床和重生锚爆炸。
  • 阻止水和岩浆流动。
  • 死亡时保留经验和物品。
  • 控制天气。
  • 阻止方块被点燃。

如何配置

插件初次运行后会在插件安装目录下创建Law文件夹,Law文件夹的内容如下:

  • config.yml:插件的配置文件。
  • lang.yml:插件的语言文件。
  • global.yml:全局规则配置文件。
  • worlds:存放各个世界的规则配置文件的文件夹。

global.yml内的文件内容如下所示:


如果要为每个世界单独配置规则,需要在worlds文件夹下创建对应世界名的yml文件,例如主世界:world.yml,下界:DIM-1.yml。并将需要覆盖的全局配置的配置项,写入到相应世界的配置文件中,然后使用UTF-8编码格式保存配置文件。

指令列表

  • /law help - 查看插件指令帮助。
  • /law reload - 重载插件的配置文件。
  • /law world - 查看当前所在世界名。

权限列表

  • law.admin.help - 查看插件指令帮助。
  • law.admin.reload - 重载插件的配置文件。
  • law.admin.world - 查看当前所在世界名。
  • law.bypass.place-block - 绕过放置方块检查。
  • law.bypass.left-click-block - 绕过左键点击方块检查。
  • law.bypass.right-click-block - 绕过右键点击方块检查。
  • law.bypass.left-click-entity - 绕过左键点击实体检查。
  • law.bypass.right-click-entity - 绕过右键点击实体检查。

下载插件


https://afdian.net/leaflet?slug=mouse
开源信息

本插件所有源代码托管于Github,使用BSD-3-Clause license开源协议。

https://github.com/mouse0w0/law

统计信息



本插件所用所有代码均为原创,不存在借用/抄袭等行为



残缺de黑月℡
耗子我的神

名副其实
那么和 WorldGuard 比起来,这个插件在哪方面更好用呢?
除了语言文本可编辑性外的一切均可

耗子
名副其实 发表于 2022-11-21 22:58
那么和 WorldGuard 比起来,这个插件在哪方面更好用呢?
除了语言文本可编辑性外的一切均可 ...

跟编程语言一样,你觉得好用就好用,你觉得不好用就不好用。

名副其实
耗子 发表于 2022-11-22 10:05
跟编程语言一样,你觉得好用就好用,你觉得不好用就不好用。

首先个人只是试探性的询问,以便您获取一些更新的灵感。
其次您其实没有必要回复如此模棱两可的答案。您应当对您自己编写的插件有信心才是。
回到问题上。
提出这个问题的原因是因为您的插件可能面临被删帖的风险,鉴于版规提到同类插件的处理方法(站内存在更好实现插件的情况下),虽然个人不敢保证站内有这样的插件一定会取代您的资源,但从长远角度看您还是相当有必要为插件的自定义性和使用便捷程度上做一些改进。
插件不是编程语言,既然您发布在这,那就想必是为公众所用的。出于这个原因,个人也建议您在插件的上手难度和调控难度上做出一些改进。如果您认为您的插件已经相当完备,您可以忽略我的请求。
感谢阅读。

耗子
本帖最后由 耗子 于 2022-12-19 13:13 编辑
名副其实 发表于 2022-11-22 22:48
首先个人只是试探性的询问,以便您获取一些更新的灵感。
其次您其实没有必要回复如此模棱两可的答案。您 ...

本插件的功能与站内某插件高度相似,但本插件正是由于其文件大小过于庞大才编写的。本插件文件大小60KB,而其文件大小则达到3MB。本贴的目的是展示如何编写一个简洁易用的插件,而不是把一大堆类库和代码打包进插件里,更甭提很多插件连旧版本兼容都懒得做了。本插件名为Law,意为规则、定律,不仅仅是游戏里的规则,更希望各位开发者在插件开发过程中,有一套经得起考验的规则。最后希望本插件有资格成为各位开发者在开发插件时的榜样。

耗子
本帖最后由 耗子 于 2022-11-27 22:53 编辑
名副其实 发表于 2022-11-22 22:48
首先个人只是试探性的询问,以便您获取一些更新的灵感。
其次您其实没有必要回复如此模棱两可的答案。您 ...

另外再回应一下你的建议吧,你建议我在插件的自定义性、使用便捷程度、上手难度和调控难度上做出一些改进,有点无理取闹了,在此回应一下本插件的编写规范:
1. 本插件只有必要的指令和权限,指令只有3条,权限也仅有2类9项,并且不同于其它插件,使用减号(-)分割单词,便于阅读。
2. 本插件的配置文件均没有任何需要缩进的配置项,极大的避免配置项缩进的问题。
3. 本插件的所有配置项均使用小写字母加减号(-)分割单词,避免了配置过程中任何因Shift产生的配置项书写错误。
基于这以上三点开发出来的插件,如果其上手依然很困难,那站内所有插件估计都不是人用的了。我查看了你的几个插件,有些插件内的配置项的命名风格不统一,并且配置文件中的缩进比较多,希望你能采纳本插件的编写规范。

名副其实
耗子 发表于 2022-11-27 22:52
另外再回应一下你的建议吧,你建议我在插件的自定义性、使用便捷程度、上手难度和调控难度上做出一些改进 ...

并不是无理取闹。我并没有认为您的插件存在明显的漏洞或是不足之处,这只是一句建议,希望您能够听取更多建议,事实上这段话可能并不是要点。换句话说,个人更想让您在现有功能基础上继续优化。
另外我已经想明白了,这两个插件不具有可比性。因为这两个插件的应用场景是不同的。WorldGuard 适用于需要调试类功能的复杂场景,而您的插件更像是轻量级应用,适合快速建立对特定世界的基础保护。换言之就是您的插件更专注于保护,因此该在哪个具体场景使用哪个插件不言而喻。
更新建议:
增加流体流动限制,因为您的插件不具有此功能,导致我在推荐此插件时遇到了一些问题。
增加标签。多个设置好值的flags组成一个标签,当给予世界一个标签的时候会同时将标签中提到的flag进行设置,此功能有助于帮助用户快速建立起不同世界的多样化保护。

耗子
名副其实 发表于 2022-11-28 22:22
并不是无理取闹。我并没有认为您的插件存在明显的漏洞或是不足之处,这只是一句建议,希望您能够听取更多 ...

流体流动限制会尽快加入的,标签会使配置的加载变得更加复杂,就不计划加入了。

名副其实
耗子 发表于 2022-11-28 22:47
流体流动限制会尽快加入的,标签会使配置的加载变得更加复杂,就不计划加入了。 ...

另外请允许我再多嘴一句。
我很看好您的插件,并且希望能在未来解决问答版问题的时候更多地向坛友推荐这款插件,而不是复杂的wg。

追梦皮卡
好东西,下载了

季楠
很棒的插件~MCBBS有你更精彩!

LwTs
版本1.19.2使用核心paper,床在地狱依然会爆炸

耗子
LwTs 发表于 2022-12-17 20:41
版本1.19.2使用核心paper,床在地狱依然会爆炸

已修复无法阻止床爆炸和无法阻止重生锚爆炸的问题。

LwTs
服务器核心1.19.2paper 使用插件版本1.1.2,在地狱时死亡掉落生效但会额外多掉出一份玩家背包内的所有物品,该问题影响严重,目前只能通过指令来取消死亡不掉落。

耗子
LwTs 发表于 2022-12-18 16:48
服务器核心1.19.2paper 使用插件版本1.1.2,在地狱时死亡掉落生效但会额外多掉出一份玩家背包内的所有物品 ...

已于1.1.3中修复

白魂ww
名副其实 发表于 2022-11-22 22:48
首先个人只是试探性的询问,以便您获取一些更新的灵感。
其次您其实没有必要回复如此模棱两可的答案。您 ...

都加高绿了 还删帖 要是申请不过 发现烂不早删了? 你还能看到现在的贴?
天天这意见  那意见 免费写出来给你用还不够?

404E
耗子 发表于 2022-11-22 23:02
本插件的功能事实上与站内某插件高度相似,但本插件正是由于其文件大小过于庞大才编写的。本插件文件大小5 ...

如果你是在说 https://www.mcbbs.net/thread-1150139-1-1.html 这个的话

插件是用的kotlin编写的,不打包kotlin进插件完全使用不了,relocate kotlin也是因为其他插件如果打包了不同版本的kotlin,会出现NoSuchMethodError,至于插件大小,我觉得不会有哪个服务器差这3mb点硬盘。另外,打包类库进插件是一种错误?

关于配置文件
1. [] 和 - 都是yaml中列表的写法,[]在配置项少的时候或许比-更好用,但是在配置项较多的情况下,-更加一目了然。
2. yaml的缩进我认为是一种优点,不能因为他有一定的学习成本就否认他。
3. 用户作为服主,了解一下bukkit大部分插件都会采用的yaml配置的语法,也是应该的,不能因为某些服主自己不会yaml语法,配置文件写错了,就否认yaml的语法。

关于配置文件使用下划线-分割单词,我个人觉得用-还是_纯粹看开发者自己的喜好,如果打错了单词,那不能怪开发者,而且文本编辑器里不是有复制和粘贴吗?

耗子
404E 发表于 2022-12-19 11:10
如果你是在说 https://www.mcbbs.net/thread-1150139-1-1.html 这个的话

插件是用的kotlin编写的,不打 ...

Kotlin是一门很优秀的语言,但是我只是想证明没有Kotlin一样能写出好插件,为了Kotlin的语法而把Kotlin依赖打包进插件中是舍本逐末了。

[] 和 - 的列表语法我并不反对使用其中某一个,使用 [] 只是为了能够提供比较好配置文件阅读体验。

反对YAML缩进不是因为其存在一定的学习成本,而是因缩进错误导致的配置文件失效出现频率比较高,我只是在考虑我的目标用户的使用体验。

使用 - 分割单词,并使用全小写的理由是不需要按Shift就能打出所有的字符。当然,我也不反对开发者根据自己的喜好选用别的命名方式,我反对的是在单个插件的配置文件中使用多种命名方式,开发者应该在其插件中确保仅使用一种命名方式。

名副其实
白魂ww 发表于 2022-12-19 10:27
都加高绿了 还删帖 要是申请不过 发现烂不早删了? 你还能看到现在的贴?
天天这意见  那意见 免费写出来 ...

您想要表达什么?我单纯只是质疑插件的一些内容而不质疑插件本身,它的质量不错,我是为其提供建议而不是为了推翻帖子。楼主都没说啥请问您要插什么嘴?

Yusai
名副其实 发表于 2022-11-22 22:48
首先个人只是试探性的询问,以便您获取一些更新的灵感。
其次您其实没有必要回复如此模棱两可的答案。您 ...

你说是Boom插件么,那个插件会影响部分数据包的使用,例如我正在使用的Feather Message,今天下午我用对分查找,逐一排查,发现是这个插件的问题.

名副其实
Yusai 发表于 2022-12-20 20:20
**** 作者被禁止或删除 内容自动屏蔽 ****

其实还有nobuildplus,那个问题比较突出

yan_as
本帖最后由 yan_as 于 2022-12-25 13:03 编辑

[12:57:41 ERROR]: Could not load 'plugins/Law-1.1.3.jar' in folder 'plugins'
怪了,服务器没办法生成文件夹,只能换插件了
基岩Java互通,水桶端


耗子
yan_as 发表于 2022-12-25 12:58
[12:57:41 ERROR]: Could not load 'plugins/Law-1.1.3.jar' in folder 'plugins'
怪了,服务器没办法生成 ...

希望能提供更完整的日志,谢谢

yan_as
耗子 发表于 2022-12-25 13:28
希望能提供更完整的日志,谢谢

已经解决了,感谢作者关注,这个问题只是服务器日常发癫而已

yuhao5018
好耶感谢分享!!

xiaojie204
很棒的插件~MCBBS有你更精彩!

takeoff37808
版本PaperMC-1.18.2-388,在global.yml的prevent-entity-break-block规则中添加CREEPER后,爬行者仍旧会对荧光物品展示框和展示框造成破坏,但是其他方块不会破坏。撤出residence和essentialsX插件后仍无效。插件版本1.1.4,为当前最新版。console无任何报错信息。望修复,谢谢!

马上就换名字
耕地保护能用指令吗

耗子
takeoff37808 发表于 2023-1-3 14:31
版本PaperMC-1.18.2-388,在global.yml的prevent-entity-break-block规则中添加CREEPER后,爬行者仍旧会对 ...

已发布1.1.5,prevent-entity-break-block现在阻止实体破坏画和展示框,尽管它们不是方块。

PixelEast
本帖最后由 PixelEast 于 2023-1-10 13:20 编辑

很不错的插件,很实用,希望添加更多功能
例如禁止树叶自然消失,禁止龙蛋传送,禁止海龟蛋被踩碎的功能

fdhvgd
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

fdhvgd
少时诵诗书所所所所所多多多多多多多多多多多多多多多多多多

Coquettishpigs
请问作者大大,这个插件可以防止物品被火焰烧毁嘛

耗子
Coquettishpigs 发表于 2023-1-10 22:37
请问作者大大,这个插件可以防止物品被火焰烧毁嘛

可以设置prevent-item-damage-by-fire配置项为true阻止物品被火焰和岩浆烧毁

耗子
PixelEast 发表于 2023-1-9 23:03
很不错的插件,很实用,希望添加更多功能
例如禁止树叶自然消失,禁止龙蛋传送,禁止海龟蛋被踩碎的功能 ...

已更新相应功能。

格林
太强了 , 苦于原版防爆指令导致村民无法收集农作物的问题太久了 ,  你的插件完美解决了我的问题 , 非常喜欢wwwwwww!!!

PixelEast
容我再提几个小建议(贪得无厌)
固定时间为某个值
禁止玩家饥饿

耗子
本帖最后由 耗子 于 2023-1-12 12:41 编辑
PixelEast 发表于 2023-1-11 22:58
容我再提几个小建议(贪得无厌)
固定时间为某个值
禁止玩家饥饿

固定时间为某个值还是用gamerule的doDaynightCycle和设置时间的指令来实现吧。禁止玩家饥饿有些超出本插件的责任范围了。

Coquettishpigs
加一个禁止流浪商人生成doge?

耗子
Coquettishpigs 发表于 2023-1-13 21:18
加一个禁止流浪商人生成doge?

有阻止实体生成的设置项

Coquettishpigs
暂停时间?doge

2586098561
这下面的设置不知道为什么无法生效,不管如何设置 都是/gamerule doFireTick 这个指令优先生效
# 阻止火焰蔓延
prevent-fire-spread: false

# 阻止火焰摧毁方块
prevent-fire-burn: false

# 阻止火焰熄灭
prevent-fire-fade: false

耗子
2586098561 发表于 2023-1-19 15:46
这下面的设置不知道为什么无法生效,不管如何设置 都是/gamerule doFireTick 这个指令优先生效
# 阻止火焰 ...

doFireTick=false永远是优先生效的,请设置为doFireTick=true再设置插件的选项

好大一坨翔哟
作者大大
如果想要阻止一个类型里所有的选择的话 除了把所有的类型填进去有没有更方便的方法

  1. # 阻止点燃方块
  2. # 可用点燃类型:https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/block/BlockIgniteEvent.IgniteCause.html
  3. prevent-ignite-block: []
复制代码

耗子
好大一坨翔哟 发表于 2023-1-27 18:22
作者大大
如果想要阻止一个类型里所有的选择的话 除了把所有的类型填进去有没有更方便的方法

我感觉挺少的所以偷懒没有添加更方便的方法

qq2873404500
有用,感谢分享

mc_mengxing
MCBBS有你更精彩

耗子
修复了一些问题