はんぐどブログ

マインクラフト脱出マップの制作状況、背景などを自由気ままに綴ります。

近況報告をば。(2022年5月)

ども、ハングドです。
皆様ご無沙汰しております。

大風車を公開してから、はや半年ちょっと。ここ最近は失踪気味でしたので、久々にブログ記事を書こうと思い立ちました。取り敢えず、現状の報告と今後の計画について軽く述べたいと思います。なお、計画についてはきちんと遂行した試しがありません。半ば願望みたいなものということで、ご了承下さい。


進行中の作業

新マップ作り

鋭意、制作中です。90%くらいは完成しているので(ホントだよ)、マイクラのアップデートが入って少し経ったくらいに公開しようと思います。
前作の反省点として、謎の構成とギミックを複雑にし過ぎて製作者自身の手に負えなくなった、という点が挙げられます。そこで、今回は「プレイヤーにとっても作者自身にとってもやさしい」作品を目指しました。
詳細については後ほど...。

過去作の改築

新マップが一段落したら、「明かずの山荘」の作り直しをやろうと思います。本当はこちらの作業を先に進めるつもりでした(Twitterにもそう呟いた気がします)が、新マップを作りたいという欲が優ってしまいました。そろそろいい加減に憂いを断ちたいので、再公開に向けて少しずつ工事を進めていきます。リアルの忙しさがどうなるかにもよりますが...



ということで、ちょびちょびと作業を続けていきたいと思います。ではでは。

【マインクラフトJE1.17.1】ナンバーロックの作り方② 〜解説編〜

f:id:hanged_logger:20211115094356p:plain

 

ども、ハングドです。

ナンバーロックの作り方の後編です。

 

本解説は二つのパートに分かれています。

今回は解説編です。制作編を既に読まれているという前提で進めますので、未読の方は先に目を通しておきましょう。また、本編はコマンド及びデータパックの基本的知識がある方を対象にしています。

 

使用するデータパックはこちらからダウンロードできます。なお、本記事を執筆するにあたりいくつか修正しましたので、本日(2021/11/21)の時点で既にダウンロードした方はデータパックを改めてダウンロードして下さい。

 

 

仕組み

装置の構造

ナンバーロックの基本的な構造は以下のようになっています。

f:id:hanged_logger:20211121012447p:plain

ここで、はワールド内のブロック、は function、は storage、水色は scoreboard を表しています。それでは、それぞれの役割について詳しく見ていきます。

 

看板

各数字を入力する為のボタンの役割を担います。右クリックされた時に function(lock:code1、code2、code3)を実行します。これはボタン+コマンドブロックで代用出来ます。

 

プレイヤーの頭

現在入力されているパスコードを表示します。NBTデータを変更することで様々なテクスチャを貼り付けることが出来る為、様々なワールドで装飾として取り入れられています。看板に書かれた文字と比べて大きくて見やすくデザイン性が高いことから、ここでは数字を表示するディスプレイとして利用します。

 

ボタン

パスコードの確認ボタンです。このボタンが押された時に function(lock:check)を実行し、入力されたパスコードの正誤をチェックします。もちろん看板等でも代用できます。

 

scoreboard

この装置では unlocked、code1、code2、code3 の四つの値を使用します。unlocked にはナンバーロックの状態が保存されます。ロックが解除されていない時は値が0ですが、解除された場合に1になります。code1、code2、code3 はそれぞれ入力されたパスコードの百の位、十の位、一の位が保存されます。

 

storage

プレイヤーの頭のテクスチャデータ(ブロックのNBTデータ)を保存します。プレイヤーの頭のNBTデータは非常に長いので予め storage に保存しておき、必要に応じて参照します。このようにすることで、 function 内のコマンドが短くなり可読性が向上します。また、テクスチャを変更する場合にコマンドを一箇所書き換えるだけで済むようになります。

 

function

scoreboard や storage に保存された情報を元に装置を動かします。それぞれのファイルの中身を見ていきましょう。

<reset.mcfunction>

#スコアをリセット
scoreboard objectives add unlocked dummy
scoreboard objectives add code1 dummy
scoreboard objectives add code2 dummy
scoreboard objectives add code3 dummy
scoreboard players set #lock unlocked 0
scoreboard players set #lock code1 0
scoreboard players set #lock code2 0
scoreboard players set #lock code3 0

scoreboard の作成と値のリセットを行います。

#頭のテクスチャを保存
data merge storage lock:head/0 {...
data merge storage lock:head/1 {...
data merge storage lock:head/2 {...
data merge storage lock:head/3 {...
data merge storage lock:head/4 {...
data merge storage lock:head/5 {...
data merge storage lock:head/6 {...
data merge storage lock:head/7 {...
data merge storage lock:head/8 {...
data merge storage lock:head/9 {...

storage にプレイヤーの頭のテクスチャデータ(ブロックのNBTデータ)を保存します。

#ブロックをリセット
#看板
data merge block <看板1の座標> {...
data merge block <看板2の座標> {...
data merge block <看板3の座標> {...

#プレイヤーの頭
data modify block <頭1の座標> SkullOwner set from storage lock:head/0
data modify block <頭2の座標> SkullOwner set from storage lock:head/0
data modify block <頭3の座標> SkullOwner set from storage lock:head/0

#扉をロック
setblock <赤羊毛の座標> minecraft:air

マップ上の看板、プレイヤーの頭、扉を開ける為のレッドストーンをリセットします。

<code1.mcfunction>

#カウントを1進める
scoreboard players add #lock code1 1
#カウントが10ならば0に戻す
execute if score #lock code1 matches 10.. run scoreboard players set #lock code1 0

scoreboard の code1 を 1 増加させます。もし code1 が 10 の時は 0 に戻します。

#頭のテクスチャを変更
execute if score #lock code1 matches 0 run data modify ...
execute if score #lock code1 matches 1 run data modify ...
execute if score #lock code1 matches 2 run data modify ...
execute if score #lock code1 matches 3 run data modify ...
execute if score #lock code1 matches 4 run data modify ...
execute if score #lock code1 matches 5 run data modify ...
execute if score #lock code1 matches 6 run data modify ...
execute if score #lock code1 matches 7 run data modify ...
execute if score #lock code1 matches 8 run data modify ...
execute if score #lock code1 matches 9 run data modify ...

code1 の値に応じて、storageのデータを用いてプレイヤーの頭のテクスチャを変更します。

code2.mcfunction, code3.mcfunction も同じ構造です。

<check.mcfunction>

#パスコードをチェック
execute if score #lock unlocked matches 0 if score #lock code1 matches <数字1> ...

unlocked の値が0(ロックが解除されていない)かつ code1、code2、code3 があらかじめ設定した値に等しいとき、function(lock:unlocked)を実行します。

<unlock.mcfunction>

scoreboard players set #lock unlocked 1

#扉をアンロック
setblock <赤羊毛の座標> minecraft:redstone_torch

unlocked の値を1にします。また、ロックが解除された時の挙動を指定します。ここでは、解除時に扉が開くようにレッドストーントーチを設置します。

 

応用例

例①

f:id:hanged_logger:20211120111751p:plain

正しいコードに合わせるとトラップドアが開き、奥のチェストの中を見ることができます。

変更点

・プレイヤーの頭のテクスチャ

reset.mcfunction の

#頭のテクスチャを保存
data merge storage lock:head/0 {{Id:[I;xxx,xxx,xxx,xxx],Properties:{textures:[{Value:"xxx"}]}}
data merge storage lock:head/1 ...

橙色の部分を変更したいテクスチャのデータに置き換えます。プレイヤーの頭のテクスチャはこちらのサイト 等から探すことができます。

 

・看板の文字

reset.mcfunction の

#ブロックをリセット
#看板
data merge block <看板1の座標> {Text2:'{"text":"右クリック","clickEvent":{"action":"run_command","value":"/execute if score #lock unlocked matches 0 positioned <頭1の座標> run function example:lock/code1"}}'}
data merge block <看板2の座標> ...

橙色の部分を変更します。"右クリック"を"RIGHT CLICK" にし、文字の色を変更する為に "color":"white" を書き足します。

 

・トラップドアの挙動

上の画像のようにトラップドアを金庫の扉として使用する場合は、扉の時とは異なりロック解除前にレッドストーントーチを設置し、解除後に撤去する必要があります。従って、unlock.mcfunction を次のように書き換えます。

scoreboard players set #lock unlocked 1

#扉をアンロック
setblock <赤羊毛の座標> minecraft:air

 

また逆に reset.mcfunction の minecraft:airminecraft:redstone_torch に書き換えます。

 

例②

f:id:hanged_logger:20211120141021p:plain

脱出マップで実際に採用したナンバーロックです。正しいパスコードを入力すると梯子が降りてきます。

 

変更点

・パスコードの桁を増加

パスコードをこれまでより一桁多い4桁にしています。変更箇所が多いので詳細は省きますが、 code4.mcfunction のファイルを作り、reset.mcfunction、check.mcfunction を修正します。コマンドを一から書く必要はなく code1 ~ code3 のものを流用すればよいので、そこまで難しくはないと思います。

 

まとめ

さて、二回にわたってナンバーロックの作り方を解説しましたが、いかがだったでしょうか?今回の装置は色々と応用が利きやすいと思いますので、是非ご自身のマップに取り入れてみて下さい。感想をお待ちしております。

 

 

 

【マインクラフトJE1.17.1】ナンバーロックの作り方① 〜制作編〜

f:id:hanged_logger:20211103180356p:plain

 

ども、ハングドです。

今回は、僕が脱出マップでよく使っているナンバーロックの作り方を解説しようと思います。

 

本解説は二つのパートに分かれています。

  • 制作編:装置の概要、作り方
  • 解説編:仕組みの解説、応用

hanged-logger.hatenablog.com

今回は制作編です。

 

この解説ではコマンド及びデータパックを使います。でもご安心下さい!!コマンドに触れたことがない、という方でも理解出来る内容にしている(つもりです)ので、是非試してみて下さい。また、マインクラフトJE版ver1.17.1で遊ぶ方を対象としています。統合版には対応していませんので、ご了承下さい。

 

(2021/11/21)解説編を公開するにあたりデータパックを少し修正しました。それに伴い、本編の解説を多少変更しています。

 

 

概要

下の図のような装置を作ります。

f:id:hanged_logger:20211103121221p:plain

 

看板を右クリックして正しい数字に合わせ、ボタンを押すと扉が開きます。

f:id:hanged_logger:20211103121223p:plain

 

作り方

データパックの準備

まずは下のリンクをクリックし、今回使用するデータパックをダウンロードしましょう。

 

データパック

 

ダウンロードしたデータパックを導入します。

マインクラフトを起動し、装置を使いたいワールドを選択します。次に、編集 → ワールドフォルダーを開く をクリックすると、ワールドのデータフォルダが開きます。その中の datapacks フォルダに、先ほどダウンロードしたデータパックを入れます。

 

ブロックの設置

ワールドに入り、図のようにブロックを設置しましょう。

f:id:hanged_logger:20211103131210p:plain

青枠はプレイヤーの頭、緑枠はコマンドブロック、赤枠の赤羊毛はレッドストーントーチが設置される場所です。銅ブロック等は好きなブロックに置き換えても大丈夫です。

次にプレイヤーの頭、看板、赤羊毛の座標を記録します。F3ボタンを押してブロックに焦点を当てると、下図の赤で囲った箇所に座標が表示されます。これをメモしておきましょう。

f:id:hanged_logger:20211103132529p:plain

 

今回は下の図のようになりました。f:id:hanged_logger:20211103135132p:plain

座標を間違えると装置が上手く起動しません。ミスがないかを確認しながらメモを取りましょう。

 

コマンドブロックを右クリックし、コマンドを入力します。f:id:hanged_logger:20211103135402p:plain

 

<入力するコマンド>

function example:lock/check

上のコマンドを打ち込んだ後、 完了 をクリックして下さい。

 

データパックの編集

先程の datapacks フォルダを開き、number_lock → data → example → functions → lock と進んでいくと .mcfunction の拡張子がついたファイルが6つ入っていると思います。このファイルの中身を、先ほどメモした座標を使って書き換えていきます。

 

<reset.mcfunction>

~~~ 省略 ~~~

#ブロックをリセット
#看板
data merge block 167 81 -41 {Text2:'{"text":"右クリック","underlined":false,"clickEvent":{"action":"run_command","value":"/execute if score #lock unlocked matches 0 positioned 167 82 -42 run function example:lock/code1"}}'}
data merge block 168 81 -41 {Text2:'{"text":"右クリック","underlined":false,"clickEvent":{"action":"run_command","value":"/execute if score #lock unlocked matches 0 positioned 168 82 -42 run function example:lock/code2"}}'}
data merge block 169 81 -41 {Text2:'{"text":"右クリック","underlined":false,"clickEvent":{"action":"run_command","value":"/execute if score #lock unlocked matches 0 positioned 169 82 -42 run function example:lock/code3"}}'}

#プレイヤーの頭
data modify block 167 82 -42 SkullOwner set from storage mech:lock/0
data modify block 168 82 -42 SkullOwner set from storage mech:lock/0
data modify block 169 82 -42 SkullOwner set from storage mech:lock/0

#扉
setblock 172 79 -42 minecraft:air

後半部分の座標を変更します。メモをした座標をもとに上から順に

#看板

  • 看板①の座標
  • 頭①の座標
  • 看板②の座標
  • 頭②の座標
  • 看板③の座標
  • 頭③の座標

#プレイヤーの頭

  • 頭①の座標
  • 頭②の座標
  • 頭③の座標

#扉

  • 赤羊毛の座標

に変更して下さい。

 

<check.mcfunction>

#パスコードをチェック
execute if score #lock unlocked matches 0 if score #lock code1 matches 4 if score #lock code2 matches 5 if score #lock code3 matches 6 run function example:lock/unlock

色付けされた数字がパスコードになります。この場合であれば、パスコードは「456」です。もしパスコードを変更したい場合は、数字を適宜変更して下さい。各数字は必ず一桁(0~9)になるようにして下さい。

 

<unlock.mcfunction>

scoreboard players set #lock unlocked 1

#扉をアンロック
setblock 172 79 -42 minecraft:redstone_torch

赤色の部分を赤羊毛の座標に変更して下さい。

 

仕上げ

イクラのチャット欄に

/reload
/function example:lock/reset

と打ち込みます。プレイヤーの頭が「0」になり、看板に文字が追加されていれば完成です!

穴を塞いだ後は、設定したパスコードで扉が開くかどうかを確認しましょう。

 

リセットしたい場合はもう一度チャット欄に

/function example:lock/reset

と打ち込んで下さい。

 

まとめ

今回はデータパックを使ったナンバーロックの作り方を解説しました。次回は、この装置がどのような仕組みで動いているのかについて解説します。装置の応用例も紹介するつもりですので、お楽しみに!

現状報告(2021年10月)

ども、ハングドです。

最近マイクラ脱出マップの制作が少々行き詰まっております...。そこで、気分転換に記事を書くことにしました。取り敢えず今回は、現状報告と今後やりたいことをリストアップしようと思います。

 

現在進行中の作業

新マップの作成

マップテーマと流れは大体固まっています。後は細かい謎が思い付けば、制作作業に移ろうと思います。とは言っても、これからリアルの方が忙しくなると思うので配布は今年度末になりそうです。

 

今後やりたいこと

脱出マップの改築

最近「明かずの山荘」というマップを公開しましたが、一旦配布を停止することにしました。理由としては、個人的に納得のいかない箇所があったからです。恐らく今、改築作業をしても上手くいかないと思うので、少し寝かせておこうと思います。もしかすれば後日、詳細をブログに書くかもしれません。

 

ブログの更新・整備

新しい記事を全く更新しておらず、単なるマップ配布場所と化していたので、もう少し執筆にも力を入れようと思います。折角なのでウェブデザインも改良していきたいですね。何か記事にして欲しいことがあれば教えて下さい(_ _)

 

イクラ脱出サーバー

3~4人位でプレイするマップを作り、サーバー上で遊べるようにしようかと思います。イメージはリアル脱出ゲームやマーダーミステリーです。敢えてマップを配布しないことで、プレイヤーが普段と違った体験を得られるかも...。

 

SkyStoneのアップデート

イクラver1.17で面白いアイテムが色々追加されたので、それらを生かしたマップ構成に作り直したいです。但し他にもしたいことが山ほどあるので、ここまで手が回らないかもしれません。

 

 

以上、現状報告と今後やりたいことリストでした。これからは、ぼちぼちと記事を更新していこうと思います。ではでは。

 

 

【マインクラフト】ストップウォッチ(脱出マップ用)データパック配布

※本データパックはPC版(Java Edition)専用です。

※本来のマップに影響がないようできる限り配慮していますが、導入する際は自己責任でお願いします。

 

内容

ストップウォッチ機能

時間を計測します。任意のタイミングで計測を始めることができます。

累計プレイ時間のカウント

データパックを導入してからのプレイ時間を計測します。プレイ前に予め導入しておくことで、そのマップのプレイ時間の合計が分かります。

 

導入方法

1. 以下のリンクからzipファイルをダウンロード

2. プレイするマップのdatapacksフォルダに、解凍したデータをそのまま入れる。(datapacksフォルダがない場合は新しく作ってください。)

3.コマンドを使用するため、必要に応じてop権限を取得しておいて下さい。シングルプレイで場合は、LAN公開(メニュー画面)等をするとコマンドを使用できます。

 

使い方

コマンド一覧を表示:/function stopwatch:help

現在のタイムを表示:/function stopwatch:show

計測を開始    :/function stopwatch:start

計測を一時停止  :/function stopwatch:stop

タイムをリセット :/function stopwatch:reset

オプション設定  :/function stopwatch:option

 

ダウンロード

Minecraft JE 1.6.x

Dropbox - Stopwatch_Add-on_1.0.0.zip - Simplify your life

【マインクラフト】配布マップ一覧

  • 配布マップは全てJE版(PC版)になります。
  • 難易度・推定クリア時間はマップ内にある説明書の記載と異なる場合があります。

 

遊び方

1.各マップのダウンロードURLをクリックし、ファイルをダウンロード

2.解凍したファイルを丸ごと minecraft の saves フォルダに入れる

 

マップ一覧

脱出マップ

灰かぶりの天象台

Minecraft JE 1.20.1

難易度:簡単

推定クリア時間:1~2時間

ダウンロード(最新版:ver1.0.3): Dropbox 

 

かぜなき谷の大風車

Minecraft JE 1.19.4

難易度:難しい

推定クリア時間:4~6時間

ダウンロード(最新版:ver1.1.0):Dropbox

 

絡繰仕掛けの灯台

Minecraft JE 1.16.5

難易度:普通

推定クリア時間:1~2時間

ダウンロード(最新版:ver1.0.8): Dropbox

 

SunkenLeviathan

Minecraft JE 1.14.4

難易度:難しい

推定クリア時間:3時間

ダウンロード(最新版:ver1.1.4): Dropbox

 

MAGIS -魔法な家からの脱出-

Minecraft JE 1.13.2

難易度:簡単

推定クリア時間:30分~1時間

ダウンロード(最新版:ver1.0.4): Dropbox

 

FrozenHut

Minecraft JE 1.13.2

難易度:普通

推定クリア時間:3時間

ダウンロード(最新版:ver1.7.2): Dropbox

 

サバイバル

SkyblockStoneTech

Minecraft JE 1.16.5

 

ダウンロード(最新版:ver1.0.2)

-現在配布停止中-

 

<パッチの導入方法>

1.パッチのダウンロードURLをクリックし、ファイルをダウンロード

2.現在遊んでいるマップのdatapacksフォルダに、解凍したファイルを既存のファイルと置き換える(前のバージョンのパッチは破棄)