sirokuma-blog

sirokuma-blog

Minecraftの建築やコマンドについて書いたりします..

【Hypixel】skyblockの雑解説(初心者編)

f:id:skyblue_000:20191003201804p:plain

 

f:id:skyblue_000:20191005154616p:plain

 

skyblockとは・・・?

skyblockとは限られた資源と土地の中で目標達成やアイテムを集めるゲームです。

hypixelのskyblockではHub島という公共の島で資源を集めたり、自分の島を発展させたりします。

農業、鉱業、釣り、醸造やHP,MPなどのステータスの概念も存在します。

skyblockですが、MMORPGみたいなものです。

環境構築

バージョンは1.8.9がお勧めです。

別にやらなくてもいいのですが,

以下のmodを入れると少しハッピーになるかも。。

Mod

l Optifine l

optifine.net

軽量化modです。


l 5zig l

github.com

画面に情報を表示したり、明るさを1000%まで上げられたりできます。


l Skyblock Addons l

www.youtube.com

Bossのスポーン時間の表示やエンチャントやリフォージの厳選が簡単に

なる等の機能があるmodです。

動画の概要欄からダウンロードできます。


l プラッキーmod l

www.youtube.com

チャットをクリックで翻訳できるmodです。

他にも、KeyStrokeやデバッグ表示等の機能もあります。

 動画の概要欄からダウンロードできます。

Resource Pack

武器や防具を格好良くしたり、間違えて違う武器を買ったりしないために入れておくと良いかもしれない...

l Hypixel Skyblock Pack l

hypixel.net


l FurfSky+ l

hypixel.net

アニメーションがあるリソパ。

テクスチャも格好良くてオススメです。

skyblockに入ろう

GameMenuを開き、左上の頭ブロックをクリックでskyblockに入れます。

メンテナンス等で入れない事があるよ。

f:id:skyblue_000:20191003200504p:plain

Hub島に行こう

プレイヤーは最初、このような小さな島にスポーンします。

まずは、木を伐採して向こうの島に行きましょう。

f:id:skyblue_000:20191003200801p:plain

 

そして、ゲートをくぐるとこのような村にワープします。

f:id:skyblue_000:20191003201215p:plain

自分の島と,このhub島は、メニュー(ネザースター)から移動できます。

プレイヤーがこれから何をやるかは自由なので

ここから下は基本的な要素について書いていきます。

Recipe

f:id:skyblue_000:20191003220910p:plain

Hypixelのskyblockには多くのオリジナルレシピがあり、アイテムを集めることで

開放できます。メニューからレシピを確認することが可能です。

Collection

f:id:skyblue_000:20191003220755p:plain

アイテムを集めていくごとに、レシピが開放されていきます。

丸石は最初は50個ですが、最後のレシピを開放するには70000個も集めなければ

なりません。これもまた、メニューからどのくらい集めたかを確認できます。

Minions(ミニオン)

f:id:skyblue_000:20191003222553j:plain

何万ものアイテムを集めるのはとてつもなく大変なのでこのゲームには、ミニオンという可愛いmobが代わりに集めてくれます。

そのアイテムを集めることによって、ミニオンを作るレシピが開放できます。

ミニオンはプレイヤーがいる時は勿論,サーバーに入っていない時もアイテムを集めてくれます。

また、ミニオンはレベルを上げることができ、上げることで集めるのが早くなったりストレージが大きくなったりします。

最初、ミニオンは5体までしか設置できませんが、新しいミニオンを作ったり、レベルアップをすることで設置できる数が増えます。

Reforge(リフォージ)

f:id:skyblue_000:20191003221727p:plain

この村人に話しかけると、武器や防具を鍛えることができます。

⇩ここにどんな効果が乗るかが書いてあるので見てみよう。

hypixel.net

レア度が高いほどステータスの伸びと費用が大きくなります。

Talisman(タリスマン)

インベントリやTalismanBag(RedStoneを集めることで開放)にいれておくことで

特殊効果を発揮するアイテムです。

Reforgeができるので、火力を上げるには必須アイテムです。

⬇︎全タリスマンの効果や入手方法

 

hypixel.net

Skill

 それぞれのスキルに合った行動をすると経験値がたまり、レベルが上がるとステータス上昇,アイテムのダブルドロップの確率増加,お金がもらえたりします。

Farming(農業)

Level Up Bonus:HP上昇

野菜等を収穫するとレベルが上がるスキルです。

この道を進んでいくと農場へ続くゲートがあります。

f:id:skyblue_000:20191004170937p:plain

The Barn

f:id:skyblue_000:20191004171650p:plain

ここでは、小麦,人参,スイカなどの作物の収穫や

牛,豚などの動物を狩ることができます。

Mushuroom Desert

条件:Farming Level V

f:id:skyblue_000:20191004172143p:plain

カカオ,サトウキビ,キノコ,サボテン等を収穫できます。 

Mining(鉱業)

Level Up Bonus:Defense上昇

石,鉱石等を掘るとレベルが上がるスキルです。

 この道を真っ直ぐに行くと洞窟があります。

f:id:skyblue_000:20191004172412p:plain

l 鉱山一覧 l

Coal Mine

f:id:skyblue_000:20191004173001p:plain

Gold Mine

条件:Mining Level I

f:id:skyblue_000:20191004173229p:plain

Deep Caverns

条件:Mining Level V

f:id:skyblue_000:20191004173516p:plain
デカい鉱山です。

下に行くにつれ、鉱石の種類が変わってきます。

Tips:

ラピス鉱石がある場所にいるmobは、稀にラピス装備という採掘時にでる

経験値を増やす防具を落とします。暇があったら集めてみましょう。

Combat(戦闘)

 Level Up Bonus:Crit Chance上昇

l ダンジョン一覧 l

Graveyard

f:id:skyblue_000:20191010135516p:plain

 ゾンビがいるだけです。

Spider's Den

 条件:Combat Level I

 

f:id:skyblue_000:20191010135521p:plain

蜘蛛,スライム,スケルトン等がいるエリアです。

このエリアからBlazing FortressとThe Endにアクセスできます。

Blazing Fortress

条件:Combat Level V

 

f:id:skyblue_000:20191010140040p:plain

ここにはブレイズやガスト、グロウストーンやネザーウォートなど

バニラのネザーにあるものは全てあります。

また、二時間周期でMagma Bossが湧きます。

倒すとEmber装備の素材等が手に入ります。

The End

条件:Combat Level XII

f:id:skyblue_000:20191010135935p:plain

f:id:skyblue_000:20191010135941p:plain

f:id:skyblue_000:20191010142041p:plain

エンダー系の敵がいるエリアです。
最深部では、プレイヤーがsummoing eyeを8個設置することで

ドラゴンがスポーンします。

倒すとドラゴン装備の素材等が手に入ります。

Foraging(伐木)

Level Up Bonus:Strength上昇

Forest

オークの原木が取れるエリア

Birch Park

シラカバが取れるエリア

Spruce Wood

マツが取れるエリア

Jungle Island

ジャングルの原木が取れるエリア

CollectionをVIIにするとJungle AxeというCut Allみたいな斧の

レシピが開放されます。

Savanna Woodland

サバンナの原木が取れるエリア

Dark Thicket

ダークオークの原木が取れるエリア

Fishing(釣り)

 Level Up Bonus:HP上昇

餌やSea Creature(釣れるmobの総称)が釣れるなどのバニラにはない機能がいくつかあります。

私自身、釣りをあまりやっていないので書けることが殆どないです(◞‸◟)

Enchanting(エンチャント)

Level Up Bonus:Intelligence上昇

通常、バニラでは最大30までしかエンチャントできませんが、

skyblockでは最大64までエンチャントができます。

また、バニラにはないオリジナルエンチャントも多くあります。

自分でエンチャ台と本棚を作って島に置いてエンチャントをしましょう。

Excelで雑に作った表

f:id:skyblue_000:20191020113551p:plain

 

⇓各エンチャントの必要レベルと効果一覧

Tips:

hub島にエンチャをする施設がありますが、レベルの低い物しか付かないので使わない方がいいです。

 

Alchemy(醸造)

Level Up Bonus:Intelligence上昇

ポーションを作るとレベルが上がるスキルです。

 自分で醸造台を作って島に置くことで醸造ができます。

Carpentry(大工)

クラフトをするとレベルが上がるスキルです。

大工さんに羊毛を64個渡すことで、Carpentry Tableのレシピが開放され、家具が作れる

ようになります。

 Vip以上でないとレベルが3までしか上がりません。

Runecrafting(ルーンクラフト)

f:id:skyblue_000:20191012210735p:plain

もっと分かりやすいものを載せたかったのですが、ランク持ちではないのでこんなものしかなかったです(◞‸◟)

武器や防具にルーンをつけることができます。

矢の軌道上や敵を倒した時にパーティクルが表示されます。

Vip以上でないとレベルは3までしか上がらないので

ランクを持っていないプレイヤーがつけることのできるルーンは

ほとんどありません。

ルーンをつける場所はReforgeと同じです。

 

終わり。

 

 

「Minecraft」コマンドでの銃の作り方①(ショットガン)

夏が終わったので、簡単なショットガンの作り方を説明していきます。

基本の簡単に作れる銃は下の記事で解説しています。

 

skyblue-000.hatenablog.com

 

 

始めに..

datapack

以下のサイトで私が例として作ったショットガンをダウンロードできます。

詳しいコマンドはこれを見ていただきたい。

 https://ux.getuploader.com/skyblue_/download/2

注意点

私はコマンドが得意ではないので、無駄なコマンドがあったり、負荷がかかることをしている場合があります。また、ゴリ押しでやっている部分がかなりあります。

それらを踏まえた上で読んで頂ければ幸いです。

 

リロードですが、弾を一弾ずつ入れていくタイプです。

 

具体的なコマンド載せてなかったので、

暇がある時に書きます。

 

銃の変更可能な要素

この記事で作る銃では以下の6つの要素の

設定ができます。

・(弾速)

・一度に出る弾の数

・拡散値

・消えるまでの時間(tick)

・装弾数

・リロード時間(tick)

 

作成

全体の流れ

 

特定のアイテムを選択して右クリックをしたことを検知

⬇︎

弾を持っているかリロード中でないかを調べる

⬇︎  (弾が無い又はリロード中だった場合、ここ

⬇︎   で終わらせる。)

⬇︎

弾(armor stand)を召喚

⬇︎

乱数生成

⬇︎

armor standのRotationに乱数を足してそれを代入

⬇︎

弾を消費する

⬇︎

設定した時間になったらkill

 

ここから下では、拡散値、発射数、リロード、弾速についてから説明していく。

 

拡散値

 

指定した範囲の乱数を生成

⬇︎

rotation取得

⬇︎

armor standのrotation+乱数

 

発射数

 

一回撃つときに射出される数を設定します。

 

設定されたスコアが1以上だったら

armor standを召喚する。

⬇︎                               ⬆︎

スコアから1を引く➡︎ (loop)

 

リロード

 

特定のアイテムを持ちQキーを

押したことを検知

⬇︎

reload_timeから毎tick-1

⬇︎                               ⬆︎

reload_timeが0になったらnow_ammo+1

 

銃の機能変更

/scoreboard players set shotgun_now_ammo number [現在の弾数]

 

/scoreboard players set shotgun_max_ammo number [最大の弾数]

 

/scoreboard players set random_rotation number [拡散値] (50000000~200000000)

 

/scoreboard players set sg_count number [発射数]

 

/scoreboard players set shotgun_reload_time number 10 [リロード時間]

 

/scoreboard players set shotgun_time number 10 [消えるまでの時間(tick)]

 

 

 

「Minecraft」ver:1.13〜 コマンドでのmobのHPゲージ(体力表示)の作り方

f:id:skyblue_000:20190620191219p:plain


前置きはいらないのでさっさと本編書いてきます。

適当すぎたのでいつか直します

 

作成

仕組み

ダメージを受けたMobいる?

⬇︎

いた場合、そのMobの最大HPと現在のHPから割合を計算。

⬇︎

割合に応じて、Mobの名前を変更する。 (よって、mobに名前を付けても上書きされます)

 

HPに減るにつれ、ゲージが緑から黄色、赤へと

変化してきます。

 

最初にやること

/scoreboard objectives add hp dummy

/scoreboard objectives add max_hp dummy

/scoreboard objectives add mob_hp_keep dummy

/scoreboard players set 10 hp 10

Functionに書く

functionにコマンドを書いていきます。

コマンドブロックに書いたら負荷がものすごくなってしまったので

書きません。

作り方は割愛。

フォルダー📂はmobhpという名前です。

そのfunctionsの中にcommon.mcfunctionとhp.mcfunctionを作ります

(名前は何でもいいです)

common

execute if entity @e[nbt={HurtTime:10s}] run function mobhp:hp

hp

 

execute as @e[nbt={HurtTime:10s}] at @s store result score @s max_hp run data get entity @s Attributes[0].Base
execute as @e[nbt={HurtTime:10s}] at @s store result score @s hp run data get entity @s Health
execute as @e[nbt={HurtTime:10s}] at @s run scoreboard players operation @s mob_hp_keep = @s hp
execute as @e[nbt={HurtTime:10s}] at @s run scoreboard players operation @s mob_hp_keep *= 10 hp
execute as @e[nbt={HurtTime:10s}] at @s run scoreboard players operation @s mob_hp_keep /= @s max_hp

execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 1 run data merge entity @s {CustomName:"{"text":"■□□□□□□□□□","color":"red"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 2 run data merge entity @s {CustomName:"{"text":"■■□□□□□□□□","color":"red"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 3 run data merge entity @s {CustomName:"{"text":"■■■□□□□□□□","color":"red"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 4 run data merge entity @s {CustomName:"{"text":"■■■■□□□□□□","color":"yellow"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 5 run data merge entity @s {CustomName:"{"text":"■■■■■□□□□□","color":"yellow"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 6 run data merge entity @s {CustomName:"{"text":"■■■■■■□□□□","color":"yellow"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 7 run data merge entity @s {CustomName:"{"text":"■■■■■■■□□□","color":"green"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 8 run data merge entity @s {CustomName:"{"text":"■■■■■■■■□□","color":"green"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 9 run data merge entity @s {CustomName:"{"text":"■■■■■■■■■□","color":"green"}"}
execute as @e[nbt={HurtTime:10s}] run execute if score @s mob_hp_keep matches 10 run data merge entity @s {CustomName:"{"text":"■■■■■■■■■■","color":"green"}"}

 

 

https://ux.getuploader.com/skyblue_/download/1

上記のサイトからダウンロードしてdatapacksフォルダーにいれると

動きます。

「Minecraft」シロクマのコマンドメモ

自分用です。

指定した名前,idのアイテムを持っているのを検知

/execute  if entity @p[nbt={SelectedItem:{id:"minecraft:アイテムID",tag:{"display":{"Name":"{\"text\":\"名前\"}"}}}}]

指定したLoreのアイテムを持っているか

/execute if entity @p[nbt={SelectedItem:{tag:{display:{Lore:["{\"text\":\"LORE\"}"]}}}}]

どの行に書いてあっても検知される。

Lore追加

/data modify entity @e[type=item,limit=1] Item.tag.display.Lore prepend value "{\"text\":\"LORE\"}"

Loreを行で分ける

/give @p stone{display:{Lore:["{\"text\":\"1\"}","{\"text\":\"2\"}","{\"text\":\"3\"}","{\"text\":\"4\"}"]}}

f:id:skyblue_000:20181124141713p:plain

Mobの方を向いているか検知

/execute as @e[tag=TEST] at @s rotated as @p positioned ^ ^ ^10 facing entity @p eyes positioned ^ ^ ^10 positioned ~ ~ ~ run execute at @e[tag=TEST,distance=..0.4] run ~~~

Mobがダメージを受けたか検知

/execute if entity @e[tag=TEST,nbt={HurtTime:10s}]

プレイヤーがダメージを受けたか検知

execute if entity @p[nbt={HurtTime:9s}] 

nbtを看板に代入(例:Lore)

data modify block ~ ~ ~ Text1 set from entity @s SelectedItem.tag.display.Lore[0]

看板の文字をnbtに代入(例:CustomName)

data modify entity @s CustomName set from block ~ ~ ~ Text1

entityの名前をtellrawで表示

tellraw @a [{"selector":"@s"}]

スコアを看板に代入(@sのtestの値を代入)

data modify block ~ ~ ~ Text1 set value "{\"score\":{\"name\":\"@s\",\"objective\":\"test\"}}"

矢のparticleを消す

{Color:-1}

 

 

 

 

 

 

 

 

Minecraft(ver:1.13) HPの割合表示

 

11/23 ※execute if score a number matches 1 というコマンドを知らなかったので、無駄なコマンドを多く書いていました。すみませんでした..

作成

最初にやること

/scoreboard objectives add number dummy

numberというスコアボードをdummyで作ります。

 

 

今のHPの割合を計算する

今のHP*20/最大HP という感じで割合を出します。

  1. scoreboard players operation max_hp_keep number = max_hp number
  2. scoreboard players operation now_hp_keep number = now_hp number
  3. scoreboard players operation now_hp_keep number *= 20 number
  4. scoreboard players operation now_hp_keep number /= max_hp_keep number
  5. scoreboard players operation hp_ratio number = now_hp_keep number

全て常時実行です。

HPの増減をする

次は、計算してでた割合によってオフハンドにアイテムをセットしてHPを増やしたり、減らしたりします。

  1. execute if score hp_ratio number matches 1 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-19,Operation:0,UUIDLeast:531231,UUIDMost:460930}]} 1
  2. execute if score hp_ratio number matches 2 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-18,Operation:0,UUIDLeast:531232,UUIDMost:460930}]} 1
  3. execute if score hp_ratio number matches 3 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-17,Operation:0,UUIDLeast:531233,UUIDMost:460930}]} 1
  4. execute if score hp_ratio number matches 4 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-16,Operation:0,UUIDLeast:531234,UUIDMost:460930}]} 1
  5. execute if score hp_ratio number matches 5 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-15,Operation:0,UUIDLeast:531235,UUIDMost:460930}]} 1
  6. execute if score hp_ratio number matches 6 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-14,Operation:0,UUIDLeast:531236,UUIDMost:460930}]} 1
  7. execute if score hp_ratio number matches 7 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-13,Operation:0,UUIDLeast:531237,UUIDMost:460930}]} 1
  8. execute if score hp_ratio number matches 8 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-12,Operation:0,UUIDLeast:531238,UUIDMost:460930}]} 1
  9. execute if score hp_ratio number matches 9 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-11,Operation:0,UUIDLeast:531239,UUIDMost:460930}]} 1
  10. execute if score hp_ratio number matches 10  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-10,Operation:0,UUIDLeast:531230,UUIDMost:460930}]} 1
  11. execute if score hp_ratio number matches 11  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-9,Operation:0,UUIDLeast:531231,UUIDMost:160930}]} 1
  12. execute if score hp_ratio number matches 12  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-8,Operation:0,UUIDLeast:531231,UUIDMost:260930}]} 1
  13. execute if score hp_ratio number matches 13  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-7,Operation:0,UUIDLeast:531231,UUIDMost:360930}]} 1
  14. execute if score hp_ratio number matches 14  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-6,Operation:0,UUIDLeast:531231,UUIDMost:560930}]} 1
  15. execute if score hp_ratio number matches 15  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-5,Operation:0,UUIDLeast:531231,UUIDMost:660930}]} 1
  16. execute if score hp_ratio number matches 16  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-4,Operation:0,UUIDLeast:531231,UUIDMost:760930}]} 1
  17. execute if score hp_ratio number matches 17  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-3,Operation:0,UUIDLeast:531231,UUIDMost:860930}]} 1
  18. execute if score hp_ratio number matches 18  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-2,Operation:0,UUIDLeast:531231,UUIDMost:960930}]} 1
  19. execute if score hp_ratio number matches 19  run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:-1,Operation:0,UUIDLeast:531231,UUIDMost:120930}]} 1
  20. execute if score hp_ratio number matches 20 run replaceitem entity @p weapon.offhand minecraft:carrot_on_a_stick{AttributeModifiers:[{AttributeName:"generic.maxHealth",Name:"generic.maxHealth",Amount:0,Operation:0,UUIDLeast:531231,UUIDMost:230930}]} 1

これもまた全て常時実行です。

actionbarに表示させる

/title @p actionbar ["",{"text":"HP","bold":true,"color":"green"},{"text":":","bold":true},{"score":{"name":"now_hp","objective":"number"},"bold":true,"color":"green"},{"text":"/","bold":true},{"score":{"name":"max_hp","objective":"number"},"bold":true,"color":"green"}]

最後に..

HPを割合表示することで、様々な事が出来るようになりRPGっぽくなり、

ついでにMobのHPをスコア化してしまえばより楽しくなるでしょう。

 

 

 

Minecraft(ver:1.13) シロクマでも分かるコマンドでの銃の作り方。

[

 

 



寒くなってきたので、Minecraft1.13でのコマンドを使った銃の

作成について書いていきます。

はじめに..

注意点

私はコマンドが得意では無いので無駄な部分や負荷がかかる部分があります。

コマンドの数、軽さなどは考えずに作っています。

ver 1.13で作成しているので、それ以外のバージョンでは動かないかもしれません。

この記事ではfunctionで書いいます。

マルチ対応していません。

以上のことを踏まえた上で読んで頂ければ幸いです。

設定可能な銃の要素

この記事で作る銃は以下の要素の

設定が可能です。

・装弾数

・リロード時間

使い方

左手に人参棒を持つ

⬇︎

銃を右手に持ち、右クリックをする

⬇︎

弾が無くなったらQキーでリロード

 

作成

全体の流れ

発射の流れ

特定のアイテムを持ち右クリックしたのを検知

⬇︎

弾があるか、リロード中でないか検知

⬇︎ (弾が無い又はリロード中の場合はここでス

⬇︎  トップ)

⬇︎

弾(armor stand)を召喚

⬇︎

時間になったらkill

 

1.右クリックを検知する

2.残弾があるか検知

3.プレイヤーの位置にArmorStandを召喚する。

4.ArmorStandの向きをプレイヤーを一緒にする。

5.ArmorStandを飛ばす。

 

リロードの流れ

1.Qキーを押したことを検知する。

2.捨てたアイテムを戻す。

3.リロード時間から1ずつ引いていく。

4.リロード時間が0になったら、今の弾数=最大弾数。

最初に実行するコマンド

前提として、人参棒を使ったのを検知するスコアボード

スコア(定数や弾数等)を保存するスコアボード、時間を計るスコアボードを作ります。を作ります。

2つでもいいのですが、ごちゃごちゃになってしまうことも

あるので3つ作ります。

  1. /scoreboard objectives add UseCarrotStick minecraft.used:minecraft.carrot_on_a_stick
  2. /scoreboard objectives add number dummy
  3. /scoreboard players set 1 number 1
  4. /scoreboard players set 0 number 0

主なコマンド

common(常時実行)

このファイルは常時実行しておく。

execute as @e[tag=gun_test] at @s run tp ^ ^ ^4

execute as @e[tag=gun_test] at @s unless block ~ ~ ~ air kill @s (常時実行)

execute as @a[scores={UseCarrotStick=1..},nbt={SelectedItem:{id:"minecraft:iron_horse_armor",tag:{"display":{"Name":"{"text":"TEST"}"}}}}] at @s run function gun_test:check

runのあとは function gun_test:check

 

次にリロード関連のコマンドもこのfunctionに書きます。

Qキーを押したか検知

execute if entity @e[type=item,limit=1,nbt={Item:{id:"minecraft:iron_horse_armor",tag:{"display":{"Name":"{"text":"TEST"}"}}}}] run function gun_test:relad_check

リロード時間を数える

execute if entity @e[tag=reload] run scoreboard players remove reload_time number 1

リロードが終わったのを検知

execute if entity @a[tag=reload] if score reload_time number = 0 number run execute as @p at @s run function gun_test:reload_finish

持っているアイテムによって弾数を設定する

execute if entity @a[nbt={SelectedItem:{id:"minecraft:iron_horse_armor",tag:{"display":{"Name":"{"text":"homing missile"}"}}}}] run scoreboard players operation now_ammo number = test_now_ammo number

 

execute if entity @a[nbt={SelectedItem:{id:"minecraft:iron_horse_armor",tag:{"display":{"Name":"{"text":"homing missile"}"}}}}] run scoreboard players operation max_ammo number = test_max_ammo number

パーティクルを表示

execute as @e[tag=gun_test] at @s run particle minecraft:crit ~ ~ ~ 0 0 0 0 1

弾数をtitleに表示

title @a actionbar ["",{"text":"弾数","bold":true},{"score":{"name":"now_ammo","objective":"number"},"bold":true,"color":"green"},{"text":"/","bold":true},{"score":{"name":"max_ammo","objective":"number"},"bold":true,"color":"green"}]

時間経過によってkill

execute as @e[tag=gun_test,scores={time=100..}] at @s run kill @s

このファイルに書くコマンドはこれで

終わりです。

残弾があるかチェック

checkの中に以下のようなコマンドを書く。

1.execute if score now_ammo number <= 0 number run tellraw @s "弾がないよ!Qキーで補充しよう!"
2.execute if score now_amoo number <= 0 number run playsound entity.item.break master @p ~ ~ ~ 1 2
3.execute unless score now_ammo number <= 0 number unless entity @s[tag=reload] run execute anchored eyes run function gun_test:summon
4.execute unless score now_ammo number <= 0 number unless entity @s[tag=reload] run scoreboard players operation test_now_ammo number -= 1 number

5.scoreboard players set @a[scores={UseCarrotStick=1..}] useCarrotStick 0

ArmorStandをプレイヤーの位置に召喚

以下はsummonファイルの中に書く。

弾となるArmorStandを召喚する。

summon minecraft:armor_stand ~ ~ ~ {Tags:["gun_test","Time"],Invisible:1,Silent:1,Small:1,Marker:1}

向きをそろえる

tp @e[tag=gun_test,limit=1,sort=nearest] ^ ^ ^ ~ ~

 

玉があり、リロード中でないかをチェックする

ここからはリロード関連のコマンドだよ。

以下はreload_checkファイルの中。

1.execute if score now_ammo number < test_max_ammo number unless entity @p[tag=reload] run function gun_test:reload

2.data merge entity @e[type=item,limit=1,nbt={Item:{id:"minecraft:iron_horse_armor"}}] {PickupDelay:0}

リロード

以下はreloadファイルの中。

1.tag @p add reload
2.execute if entity @a[tag=reload] run scoreboard players operation reload_time number = test_reload_time number
3.execute if entity @a[tag=reload] run playsound minecraft:block.piston.contract master @p ~ ~ ~ 3 1

 

リロードが終わったら

以下はreload_finishファイルの中

1.playsound block.chest.locked master @s ~ ~ ~ 1 2
2.scoreboard players operation test_now_ammo number = test_max_ammo number
3.tag @s remove reload

 

銃のリロードや弾数などを設定する

/scoreboard players set test_now_ammo number 値

/scoreboard players set test_max_ammo number 値

/scoreboard players set test_reload_time number 値 (20tickで1秒)

これで大方終わりです。

出来なかったらすみません(◞‸◟)..

その他

 弾を撃つ間隔の設定の仕方も気が向いたら書きます。

ファイルを上げようと思ったのですが、分からなかったので

ファイルの画像を載せておきます。

common 常時実行するファイルです。

f:id:skyblue_000:20190311200131p:plain

check

f:id:skyblue_000:20190311200203p:plain

summon

f:id:skyblue_000:20190311200247p:plain

reload_check

f:id:skyblue_000:20190311200310p:plain

reload

f:id:skyblue_000:20190311200329p:plain

reload_finish

f:id:skyblue_000:20190311200348p:plain

 

分からない事などあったら気軽にコメントどうぞ。




 

 

 

 

 

 

 

 

 

 

 

Minecraft-command 発射数を設定

魔法を使った時に出る数を操作します。

 

コマンド

角度を求める式

 角度/2(n-1)で何度回ればいいかを求めます。

次は、playerの場所にarmor_stand(tag=point 何でもいいです。)を召喚し、

armor_standのRotation[0]をスコアに代入。

最後に求めた値+Rotation[0]をします。

 

今回は20度にするので10n-10になります。

 

しかし、これだけではarmor_standの向きが変わるだけで何も起こることは

ないです。

召喚する

発射数(n)をarmor_standの適当なスコアと同期させておく(今回はnumber)

  1. execute as @e[tag=point] at @s run execute if entity @s[scores={number=1..}] run summon minecraft:armor_stand ^ ^ ^0.01 {Tags:[test,Time,damage,kill],Invisible:1,Silent:1,Small:1,Marker:1}
  2. execute as @e[tag=point] at @s positioned ^ ^ ^0.01 run teleport @e[tag=test,limit=1,sort=nearest] ~ ~ ~ ~ ~
  3. execute as @e[tag=point] at @s run execute if entity @s[scores={number=1..}] run scoreboard players remove @s number 1
  4. execute as @e[tag=point] at @s run execute if entity @s[scores={number=1..}] run tp @s ~ ~ ~ ~-20 ~

これをあと17回繰り返しています。合計で18回です。(20度の場合)

(functionで一気にすべて実行しています)

この方法しか思いつかなかったので(◞‸◟)...