CB实现原版的动态光源
效果展示


首先是一个漆黑的矿洞


我手上的火把只剩一根了


可是画面太黑了看不见矿物


这时候你需要动态光源


只需手上拿着火把,就可以产生光源


光会随玩家移动


但是只要切换掉火把,光就会消失

原理翻页

原理


一个动态光源的单位
(由于时间原因,例如黄金装备穿戴发光还没有做,不过只要学会以下内容,修改光源判据就很简单了)

指令方块高频连接下面部分:



首先我们需要一个计分板充当判据。
  1. /scoreboard objectives add torch dummy
复制代码
命令讲解:创建一个名为"torch"的计分板。

接着三个独立部分:
红色羊毛
  1. /execute @p[score_torch_min=1,score_torch=1] ~ ~ ~ summon WitherSkull ~ ~ ~ {direction:[0.0,0.0,0.0]}
复制代码
命令讲解:在判据为1的玩家走过的地方生成一个隐形‘凋零骷髅头’。(作为实体中介,方便删除光源)
黄色羊毛
  1. /execute @p[score_torch_min=1,score_torch=1] ~ ~ ~ fill ~ ~ ~ ~ ~ ~ minecraft:torch 0 keep
复制代码
命令讲解:在判据为1的玩家走过的地方把空气替换为火把(产生光源的部分,且不会破坏任何方块)
橙色羊毛
  1. /scoreboard players set @e[type=Item] torch 2 {Item:{id:"minecraft:torch"}}
复制代码
命令讲解:把掉落的物品'火把'判据设置为2(跳跃和飞行时火把放置在空中会掉落,为了防止刷物品添加判据)



探测性部分1
  1. /testfor @p[score_torch=0]
复制代码
命令讲解:探测玩家是否拥有判据1。输出↓
  1. /execute @e[type=WitherSkull] ~ ~ ~ fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air 0 replace minecraft:torch
复制代码
命令讲解:把凋零骷髅头旁9个方块单位的火把替换为空气。
  1. /kill @e[type=WitherSkull]
复制代码
命令讲解:删除所有凋零骷髅头。



探测性部分2

  1. /testfor @p {SelectedItemSlot:7,Inventory:[{Slot:7b,id:"minecraft:torch"}]}
复制代码
命令讲解:(光源盘踞)探测玩家8号物品栏是否拿着火把。
关于光源判据,可以通过任意testfor来判断,这里就不做详细讲解了。具体可以探测物品栏1-36,100-103的物品或接触生物等
接着输出↓
  1. /scoreboard players set @p torch 1
复制代码
命令讲解:把这个玩家设置盘踞为1。非门连接↓
  1. /scoreboard players set @p torch 0
复制代码
命令讲解:反之,把玩家设置判据为0。

一个较短刻的高频连接下面部分



删除光源部分

通过一个比刚才长的高频,产生时差来维持光源。
蓝色羊毛
  1. /execute @e[type=WitherSkull] ~ ~ ~ fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air 0 replace minecraft:torch
复制代码
命令讲解:把实体判据(凋零骷髅头)旁9个方块单位的火把替换为空气。
紫色羊毛
  1. /execute @e[type=WitherSkull] ~ ~ ~ kill @e[type=Item,score_torch_min=2,score_torch=2,r=5]
复制代码
命令讲解:把在实体判据附近5个方块的判据为2的物品(掉落的火把)删除。[r=5主要是考虑飞行状态下的速度]

如果你耐心看到了这里,那么就把地图交给你好了。
下载地址
@songfeitong @tyson @我的世界sun123 @PotatoMaster101 @ghyzhi10086 @审奥不解释 @67880371 @kongbaiyo

[groupid=546]Command Block Logic[/groupid]