本帖最后由 1582952890 于 2017-9-17 10:59 编辑

如果你发现了Bug,或者与模组不兼容的地方,可在下面跟帖回复。或者通过电邮的方式联系我
Email: icefox@lukatown.cc
我会尽快修复   感谢您的支持!

插件已经于 2014年6月20日 更新,现在可以保护领地内的方块不被交互
这种情况多发生在格雷的机器上面
由于能力上的约束,我只完成了对GT模组、ICEX模组、BC模组的初步测试,
如果您有兴趣,可以帮忙测试一下对其他模组的兼容。 如果你发现了不兼容或者兼容有问题的模组
可以告诉我,我会想办法兼容它们。非常感谢!

2014年6月20日 经过某喵的测试,插件可以保护神秘法杖。 @tsubasa56

插件简介:

    制作这款插件的目的很简单,因为某群在讨论时,无意听到了领地无法保护扳手的问题。
于是本着好人的态度,去实验了一下,果然是无法保护。遂抄起IDE和拙计的代码技术,写了这么一个小插件



插件作用:
    自定义保护领地中不被其他物品交互。这些是通过物品ID来定义的。
    简单来说,如果你添加了GT扳手的ID,则可以保护领地内的方块不被GT扳手右键
    或者你添加了BC扳手的ID,同样保护领地内的方块不被BC扳手右键
   
    对于格雷的话,还有很多可扩展的内容,具体可以看下面的图片

插件效果:

首先,肯定是GT的扳手了,GT扳手对机器反正是无效了


接下来,还是GT扳手。只不过这回我们的目标是木牌,熟悉的朋友应该都知道GT扳手对木牌这样的物品有神秘加成


然后,我们来测试一下BC的扳手(我之前并没测试领地能否保护管道不被BC扳手调整,至少本插件是完全拦截了操作)


同样是BC扳手,只不过我们的目标仍然是木牌


然后我们再稍微展开一下,毕竟可以自定义ID,于是……
普通的领地是无法保护机器上的覆盖版的,也就是说。如果没有本插件的话,我可以一个撬棍就拆光土豪家里的覆盖版
但是有了之后就不怕了


同样,锤子也是完全支持的


有过经验的朋友应该知道,格雷的机器如果附加了“传输模块”但模块终端无任何容器的话,机器内部的物品是会被抛在外面的。
而有心熊孩子就会借助这个,窃取其他玩家的财产,但是有了本插件之后,就无需担心了。   覆盖版什么的通通不让放


最后是螺丝刀,螺丝刀在GT中用来调整覆盖版的输入输出状态,虽然我没想出能够造成威胁的方法。但不经过别人允许,就能调整别人覆盖版的状态
这怎么也说不过去把。    有了本插件之后,这些就不用担心了。


插件用法:
    首先,你需要一个“领地”插件,如果不知道这是什么的话。麻烦借助一下BBS的搜索功能。这里不做过多阐述
   
    然后,你需要找到领地插件的config文件,我们需要对该配置文件做小小的修改,以便启用本插件:
    ①:在领地的config文件中找到:
FlagPermission
    ②:在FlagPermission节点的最后,添加“wrench: true”   (这一步的目的是面向所有领地开放此Flag的设置权)
    ③:保存文件。    如不理解,可参考图
    添加完之后应该是这样的:


     接下来,我们要给玩家默认创建的领地开启此Flag,以保护领地内物品:
     ①找到“ResidenceDefault”
     ②在ResidenceDefault节点的最后,添加“wrench: false”。[注意,这里是false  而不是true](这一步的目的是给玩家创建的领地分配该flag)
     ③:保存文件。    如不理解,可参考图
     添加完之后应该是这样的:
     


      最后一步,我们要给创建领地的玩家分配该权限,要不然自己的领地都没法用扳手之类的岂不是没天理了:
      ①:找到“CreatorDefault”
      ②:在CreatorDefault节点的最后,添加“wrench: true”。(这一步的目的是给领地的主人添加使用扳手等物品的权限)
      ③:保存文件。    如不理解,可参考图
      添加完之后应该是这样的:

      

插件配置文件:
    因为插件是兼容模组里的物品,所以可能会有部分服主需要修改监听的物品ID。例如:在我这,GT铁扳手的ID为21323,而你们那可能就是20000
     所以我准备了一个配置文件,以便你随时修改物品ID。
     配置文件将在你加载本插件时自动释放,默认位于:
./plugin/LukaTownWrenchProtect/config.yml

     配置文件内容如下,基本上是简单易懂。
  1. # 本插件支持自定义ID保护,默认附带了几个ID,如不需要,删除即可
  2. # 如果想添加ID的话, 比着葫芦画瓢即可。
  3. # 你可以通过"Enabled_Interact_Hook"来控制是否开启本插件的功能,默认是关闭的
  4. #
  5. # by icefox at 2014-05-26
  6. # 本插件使用GPLv3协议开源,源码托管在: http://dev.lukatown.cc/luka_wrenchprotect
  7. # 请遵循开源协议,谢谢
  8. #
  9. # 如果你发现了bug,或者不兼容的模组,可通过电邮的方式联系我,我会尽快修正
  10. # Email: icefox@lukatown.cc

  11. #是否开启本插件的交互监听  (默认关闭)
  12. #交互监听的意义是针对领地无法保护模组里物品在领地内交互的情况,例如:格雷&工业里的扳手在仍可以在领地内交互,即使他不是领地归属者(如不理解交互可看下面FAQ第一条)
  13. #一旦正确添加禁止在领地内使用的物品ID后,本插件便可保护这种问题
  14. Enabled_Interact_Hook: false

  15. #是否开启本插件的方块监听  (默认关闭)
  16. #方块监听的意义是针对领地无法保护模组里的方块被交互的情况,例如:格雷&工业里的机器在领地内仍然可以被非领地归属者打开
  17. #一旦正确添加被保护的方块ID后,本插件便可保护这种问题
  18. Enabled_Block_Hook: false

  19. #FAQ:
  20. #1.何为交互:玩家右键一个方块即为交互.这种情况最常见的就是:玩家手持扳手右键一个机器.此时就触发了本插件的交互监听(为了便于理解这里忽略了实体与实体的交互)

  21. #自定义物品ID,只能为物品(即Items)
  22. InteractEvent:
  23.   - 19362
  24.   - 21259
  25.   - 21319
  26.   - 21320
  27.   - 21321
  28.   - 21322
  29.   - 21323
  30.   - 21324
  31.   - 21325
  32.   - 21326
  33.   - 21327
  34.   - 21328
  35.   - 21329
  36.   - 21330
  37.   - 21331
  38.   - 21332
  39.   - 21398

  40. #自定义方块ID,只能为方块(即Block)
  41. BlockEvent:
  42.   - 4031
  43.   - 4032
  44.   - 4033
  45.   - 4034
  46.   - 4035
  47.   - 4036
  48.   - 4057
  49.   - 4058
  50.   - 4059
复制代码

插件权限:
    插件核心实质上是依赖于领地插件,所以本质上是无需任何权限的。
    但因为配置文件的特殊性,我预留了一个重新载入配置文件的指令。
    所以该指令是需要特定权限的:

   
  1. #权限只有一个
  2. #是用来重新读取本插件的配置文件
  3. #默认只有OP拥有此权限
  4. #如果需要,你可以通过权限管理插件来分配此权限
  5. luka.wp.reload
复制代码

插件指令:
    仍然只有一个
  1. #使用后插件将会重新读取配置文件   需要拥有“luka.wp.reload”权限,该权限默认只有OP拥有
  2. /lwp reload
复制代码

插件用法:
    下载插件后,塞到服务端plugin目录下,然后重启服务端
     如后台是这样显示,即代表插件加载成功
     

给予其他玩家领地权限:
    关于玩家如何在自己领地里给予其他朋友使用扳手等物品的权限,我这里简单的说明下
    前面说到过,本插件使用了一个外置
Flag,即为:wrench
    这个Flag和领地自带的Flag实际上是相同的。
   
    简单点说:
    玩家只需要站在自己领地里执行指令:res pset 其他玩家ID wrench t
    即可赋予对应ID玩家的扳手使用权

    同样:
    也可以把某个领地的限制功能关闭
    玩家
只需要站在自己领地里执行指令:res set wrench t

插件开源:
    制作这款插件的目的很单纯,我也是一名在校学生,也是在通过其他人的源码不断提升自己的Java水平,
如果你觉得我的源码能够帮上你,请自便
    源码托管在:http://dev.lukatown.cc/luka_wrenchprotect
    本插件使用GPLv3协议开源,请遵循开源协议,谢谢!


插件下载地址:
    永久更新地址:http://download.lukatown.cc/plugins/luka_wrenchprotect.jar


插件更新日志:
  1. 1.0.3    2014年6月20日 10:53 增加block交互时的保护
  2. 1.0.2    2014年6月09日 01:27 修复检测function判断内容和实际config不同的bug(一个d引发的血案)
  3. 1.0.1    2014年5月29日 13:40 修复了listener中存在空指针的情况,同时将插件的保护固定物品方式改为自定义物品ID
  4. 1.0.0    2014年5月29日 02:00 发布了第一个版本
复制代码


如果你感觉这个插件对你有用,麻烦支持我一下。至少,让我知道这插件最起码还有存在的价值,谢谢