第五十五章 effect-牛頓哭了
如果你現(xiàn)在要自定義一個(gè)僵尸小BOSS,你會(huì)怎么做?
使用NBT是最好的方式。但是如果是要在基巖版里面做呢?況且你現(xiàn)在也不會(huì)使用NBT,也就看得懂的水平罷了。
在這種情況下,我們就需要使用多個(gè)指令來(lái)達(dá)成目的,比方說(shuō)可以使用/replaceitem(/item)指令來(lái)給僵尸上裝備。
但血量和防御力該怎么修改?
其實(shí)不難修改,我們只需要使用一個(gè)特別的東西:狀態(tài)效果
狀態(tài)效果(Status Effect)在Minecraft中非常有用,甚至可以提高生物的血量上限和防御力。我們可以使用指令/effect來(lái)給生物添加、清除狀態(tài)效果:
/effect
作用:給一或多個(gè)實(shí)體添加或移除狀態(tài)效果。
需要權(quán)限等級(jí):Java-2,基巖-1
需要作弊:是
格式:
Java1.13更新之前和基巖版:
/effect <目標(biāo)選擇器> clear ——清除目標(biāo)所擁有的所有狀態(tài)效果。
/effect <目標(biāo)選擇器><狀態(tài)效果ID>[<持續(xù)時(shí)間:秒>][<強(qiáng)度等級(jí)>][<是否隱藏粒子和圖標(biāo):布爾值>]——給予目標(biāo)指定的狀態(tài)效果。
Java1.13更新后:
/effect clear <目標(biāo)選擇器>[狀態(tài)效果ID]——清除目標(biāo)所擁有的所有狀態(tài)效果,或只清除指定的狀態(tài)效果
/effect give <目標(biāo)選擇器><狀態(tài)效果ID>[<秒數(shù)>][<強(qiáng)度等級(jí)>][<是否隱藏粒子和圖標(biāo):布爾值>]——給予目標(biāo)指定的狀態(tài)效果。
格式總體來(lái)說(shuō)還是十分簡(jiǎn)單的?,F(xiàn)在讓我們來(lái)試試給這只僵尸添加一個(gè)狀態(tài)效果:
/effect @e[type=zombie,c=1] regeneration(Java1.13更新前和基巖版)
/effect give @e[type=zombie,limit=1,sort=nearest] regeneration (Java1.13更新后)
運(yùn)行上面的指令,游戲?qū)?huì)給離執(zhí)行地點(diǎn)最近的僵尸添加30秒的1級(jí)生命恢復(fù)效果(僵尸:危)。
如果我們想要將這個(gè)狀態(tài)效果移除,可以使用:
/effect @e[type=zombie,c=1] clear (Java1.13更新前和基巖版)
/effect clear @e[type=zombie,limit=1,sort=nearest](Java1.13更新后)
這兩條指令將會(huì)清除離執(zhí)行地點(diǎn)最近的僵尸所擁有的所有狀態(tài)效果。但如果這個(gè)僵尸擁有其他我們不想清除的狀態(tài)效果怎么辦?
在Java1.13及之后的版本中,我們可以執(zhí)行/effect clear @e[type=zombie,limit=1,sort=nearest] regeneration來(lái)清除生命恢復(fù)效果而不清除其他狀態(tài)效果??墒窃贘ava1.13前的版本和基巖版中似乎沒(méi)有清除指定狀態(tài)效果的方法呀?
還是有的。
想一想,當(dāng)目標(biāo)已經(jīng)有了指定的狀態(tài)效果,我們?cè)偬砑右粋€(gè)狀態(tài)效果上去會(huì)發(fā)生什么?
再想一想,當(dāng)兩個(gè)名稱、類型一樣的文件相遇的時(shí)候,計(jì)算機(jī)會(huì)給你提示什么?
想到了沒(méi)有?沒(méi)錯(cuò),只有兩種可能性:覆蓋和保留原來(lái)的狀態(tài)效果
而Minecraft選擇了什么呢??jī)烧呔?。?dāng)目標(biāo)具有相同的狀態(tài)效果時(shí),游戲?qū)?huì)根據(jù)以下情況選擇是保留還是覆蓋:
?、傩?tīng)顟B(tài)效果持續(xù)時(shí)間比源狀態(tài)效果要短,且持續(xù)時(shí)間不等于0,保留原來(lái)的狀態(tài)效果
?、谛?tīng)顟B(tài)效果持續(xù)時(shí)間比源狀態(tài)效果要長(zhǎng)或相等,覆蓋原來(lái)的狀態(tài)效果
?、坌?tīng)顟B(tài)效果持續(xù)時(shí)間為0,移除原來(lái)的狀態(tài)效果(實(shí)際上也是覆蓋)。
發(fā)現(xiàn)了沒(méi)有?我們可以通過(guò)添加一個(gè)持續(xù)時(shí)間為0的狀態(tài)效果來(lái)移除指定的狀態(tài)效果:
/effect @e[type=zombie,c=1] regeneration 0
這樣子就成功保住了那只僵尸的命。而且,這個(gè)方法在Java1.13更新后仍然可用。
狀態(tài)效果的持續(xù)時(shí)間最大為1000000秒(11.574天),如果指定更大的值將會(huì)被視為1000000秒。默認(rèn)的持續(xù)時(shí)間是30秒,即半分鐘。(注,在基巖版1.16.200版本之前,持續(xù)時(shí)間最大為2147483647,但超過(guò)2040109465秒的話就沒(méi)有效果了)
持續(xù)時(shí)間的單位一般是秒,但有三個(gè)狀態(tài)效果的值例外:瞬間傷害、瞬間治療和飽和。它們?nèi)褂玫膯挝皇怯螒蚩?,默認(rèn)的持續(xù)時(shí)間也被改為了1游戲刻。畢竟是“瞬間”嘛,一“瞬間”持續(xù)太長(zhǎng)時(shí)間就不正常了。
現(xiàn)在可以嘗試給我們的僵尸BOSS加血量上限了:
/effect @e[type=zombie,tag=boss] health_boost 1000000(Java1.13前和基巖版)
/effect give @e[type=zombie,tag=boss] health_boost 1000000 (Java1.13更新后)
health_boost是“生命提升”效果,可以提升生命最大值。上面的指令將會(huì)為我們的僵尸boss增加4點(diǎn)生命值上限,持續(xù)1000000秒。
對(duì)于一個(gè)Boss來(lái)說(shuō),24點(diǎn)血也太少了。因此我們要提高生命提升的等級(jí)。生命提升效果能夠增加的最大生命值等于強(qiáng)度等級(jí)乘4的積。作為一個(gè)小型boss,100點(diǎn)血就足夠了,也就是說(shuō)我們需要給僵尸添加20級(jí)的生命提升:
/effect @e[type=zombie,tag=boss] health_boost 1000000,19(Java1.13前和基巖版)
/effect give @e[type=zombie,tag=boss] health_boost 1000000,19(Java1.13更新后)
?。ㄗⅲ荷厦娴亩禾?hào)僅用于區(qū)分兩個(gè)參數(shù)之用,實(shí)際在游戲中無(wú)需輸入逗號(hào))
你肯定會(huì)疑惑:不是添加20級(jí)嗎,怎么是19級(jí)?
其實(shí)這就是添加20級(jí)。只不過(guò)這個(gè)“強(qiáng)度等級(jí)”參數(shù)有些特別,它的值范圍是0~255。輸入0相當(dāng)于1級(jí),輸入1相當(dāng)于2級(jí).......輸入255相當(dāng)于256級(jí)。
明白了吧?
現(xiàn)在我們成功為僵尸提高了生命值上限。但是狀態(tài)效果是有粒子的,到時(shí)候玩家過(guò)來(lái)打這個(gè)boss,發(fā)現(xiàn)這個(gè)boss有冒出粒子,不就露餡了么?
解決辦法很簡(jiǎn)單??匆?jiàn)那個(gè)“是否隱藏粒子和圖標(biāo)”參數(shù)了沒(méi)?默認(rèn)它是false,如果將它改為true,游戲?qū)?huì)隱藏該狀態(tài)效果的粒子,在Java版甚至還會(huì)把圖標(biāo)也給隱藏了。
現(xiàn)在你學(xué)會(huì)/effect了沒(méi)?趕緊去游戲中嘗試一下吧!
?。ㄗⅲ涸贛inecraft中,狀態(tài)效果持續(xù)時(shí)間超過(guò)1638秒的話,效果的持續(xù)時(shí)間將顯示為**:**。在Java版中,計(jì)時(shí)仍然會(huì)照常進(jìn)行。)
?。阒绬幔涸贘ava版中,當(dāng)玩家擁有超過(guò)128級(jí)的跳躍效果時(shí),玩家會(huì)因?yàn)樘匦远鵁o(wú)法跳躍!)
effect歷史:
Java
1.5——加入了/effect
1.6.1——加入了clear參數(shù)
1.8——加入了“是否隱藏粒子和圖標(biāo)”參數(shù)
1.13——更改了/effect的語(yǔ)法
1.15.2——較強(qiáng)效果覆蓋較弱效果時(shí),較弱效果只是被隱藏了。
攜帶版和基巖版
\\攜帶版\\
1.0.5——加入了/effect
\\基巖版\\
1.16.200——現(xiàn)在持續(xù)時(shí)間上限和Java版一樣為1000000秒了。