植物羊是一种降低产羊毛的羊占用服务器资源的优化技术。具体来说,当一只羊变成植物羊之后,羊失去意识,但会正常吃掉脚下的草并且长出毛。植物羊的起源是古代记载的水羊。
方法
在羊附近输入命令 /watersheep curse,附近上下左右前后 8 个格子范围内羊会变成植物羊。
在植物羊附近输入命令 /watersheep bless,附近上下左右前后 8 个格子范围内植物羊会恢复成羊。
输入命令 /watersheep info,显示附近 128 格的羊和植物羊的分布情况。
特点
植物羊不会发出声音,也不会移动。植物羊的表情不变。植物羊基本是按照下面叙述的长毛依据定时长毛。
长毛判据
每隔4800刻(正常情况下4分钟),一只植物羊长出毛需要符合下面的条件:
- 有玩家在植物羊所在的世界
- 植物羊所在区块被加载
- 植物羊没有毛
- 植物羊的脚下必须是草方块
如果符合条件,脚下方块会变成泥土,羊会长出毛。
原理
当用户输入命令的时候,如果要把羊变成植物羊,那么羊的实体会加上 noAI 的 NBT 标签,加入一个名为 watersheep 的计分板项目,被静音。恢复羊的指令撤销这些操作。
每隔4800刻,一个计划任务搜索有玩家在线的世界,取出这个世界的已加载方块,找到这些方块上面的植物羊,并检查它们是否符合这个条件。如果符合,则让羊的毛恢复,同时修改羊脚下的方块。
具体代码
noAI 机制:https://github.com/pentyum/dropp ... nbt/No_ai_1_14.java
命令:https://github.com/pentyum/dropp ... mmand_executor.java
计划任务:https://github.com/pentyum/dropp ... ersheep_runner.java |