Minecraft の冒険を手元で記録する、ゼルダノート風コンパニオン iOS アプリ。 プレイ中にスマホで開いて、座標のメモ・ナビ・進捗管理・冒険日記をひとつで。 PC の Minecraft とライブ接続すれば、現在地はリアルタイムに自動更新されます。
- 冒険者の地図(v2.0) — ウェイポイントとライブ現在地をズーム/パン可能な俯瞰マップに表示。チャンク/リージョン単位のグリッド、ネザー⇔OW換算オーバーレイ、ライブ接続中の移動軌跡(足あと)、目的地への進路ライン。タップで詳細、空きマスのタップでその座標にウェイポイント追加
- 目的地ナビ + Live Activity(v2.0) — ウェイポイントを「目的地」にセットすると、マップに進路が引かれ、ライブ接続中はロック画面と Dynamic Island に距離・方角・現在座標を常時表示
- ウィジェット(v2.0) — 最寄りウェイポイントをホーム画面/ロック画面ウィジェットで
- Siri・ショートカット(v2.0) — 「CraftNotesで現在地を記録」「目的地をセット/解除」を音声・ショートカットから
- ライブ接続 — PC の Minecraft(Java + Fabric)に同梱 Mod「CraftNotes Bridge」を入れると、同じ Wi-Fi のスマホに現在地・ディメンションを毎秒配信。死んだ場所は💀ウェイポイントとして自動登録。Realms・マルチ・シングル全対応(クライアント側 Mod なのでサーバー権限不要)
- ウェイポイント — 拠点・村・トラップなどの座標を登録。ネザー⇔オーバーワールドの換算座標を常時表示。現在地(ライブまたは手入力)からの距離と方角をコンパス付きでナビ。検索・ディメンション/カテゴリフィルタ・距離順ソート対応
- 複数ワールド — ワールド/サーバーごとにデータを分けて管理。各画面のツールバーから切替
- バックアップ — 全データを JSON でエクスポート/インポート
データは端末内(App Group コンテナの craftnotes.json。v1 の Documents 保存からは初回起動時に自動移行)に保存し、iCloud Key-Value Store へ自動バックアップ。アプリを削除したり機種変更しても、同じ Apple ID なら初回起動時に自動復元されます(移動軌跡は対象外)。サーバー・アカウント登録は不要。
メモ: ライブ更新はアプリがフォアグラウンドの間のみ(iOS のバックグラウンド実行制限のため)。設定の「接続中は画面をスリープしない」を有効にすると、充電スタンドに置いたまま常時ナビとして使えます。ロック中は Live Activity が 90 秒で「データが古い」表示に切り替わります。
- PC 側:
bridge-mod/build/libs/craftnotes-bridge-1.0.0.jarを Windows PC の%appdata%\.minecraft\modsにコピー(Fabric Loader + Fabric API が必要。MC 26.2 向け) - Minecraft を起動してワールドに入ると、チャットに
[CraftNotes] スマホアプリから 192.168.x.x:25566 で接続できますと表示される - iPhone 側: ウェイポイントタブの現在地カード →「PCと接続」→ その IP アドレスを入力して「接続する」 (スマホと PC は同じ Wi-Fi に接続しておく。初回はローカルネットワークの許可ダイアログが出る)
接続中は現在地が自動更新され、各ウェイポイントへの距離・方角がリアルタイムに変わります。
アプリを再起動しても前回の接続先へ自動で再接続します。ポートは JVM 引数 -Dcraftnotes.port=XXXXX で変更可能。
cd bridge-mod
./gradlew build # → build/libs/craftnotes-bridge-1.0.0.jar配信内容は GET /status の JSON のみ(座標・ディメンション・直近の死亡地点)。LAN 内配信で、外部への送信はありません。
- SwiftUI / iOS 17+ / 依存ライブラリなし
CraftNotes.xcodeprojを Xcode で開いてそのまま実行
CLI でビルドする場合(xcode-select が CommandLineTools を向いている環境向け):
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild -project CraftNotes.xcodeproj -scheme CraftNotes \
-destination 'platform=iOS Simulator,name=iPhone 17' buildCraftNotes/ # iOS アプリ (SwiftUI)
CraftNotesApp.swift # エントリポイント(ストア注入・App Intents依存登録)
ContentView.swift # タブ構成 + ワールド切替メニュー + Live Activity配線
AppStore.swift # @Observable ストア + JSON 永続化(App Group)+ Widgetスナップショット
LiveLink.swift # Bridge へのポーリング・現在地/死亡地点/軌跡の自動反映
LiveLinkSheet.swift # 接続設定シート
TrailStore.swift # 移動軌跡の記録(デバウンス保存)
MapTab.swift # 冒険者の地図タブ
MapProjection.swift # ワールド⇔スクリーン座標変換(純粋型)
MapCanvasView.swift # Canvas描画・パン/ズーム/タップ
NavigationActivityController.swift # Live Activity の開始/更新/終了
AppIntents.swift # Siri・ショートカット
WaypointsTab.swift # ウェイポイント一覧・現在地ナビ・目的地
WaypointForm.swift # 追加/編集フォーム
SettingsTab.swift # ワールド管理・ライブ設定・バックアップ
CraftNotesShared/ # アプリ + Widget 共有(両ターゲット所属)
Models.swift # World / Waypoint / JournalEntry など(Codable)
Geo.swift # 距離・方角・ネザー座標換算(純粋関数)
Trail.swift # 移動軌跡のモデル
SharedStorage.swift # App Group のファイル配置 + Widgetスナップショット
NavigationActivityAttributes.swift # Live Activity の属性
CraftNotesWidgets/ # Widget Extension
CraftNotesWidgetsBundle.swift # WidgetBundle + スナップショットProvider
NearestWaypointWidget.swift # 最寄りウェイポイントウィジェット
NavigationLiveActivity.swift # ロック画面 + Dynamic Island の UI
bridge-mod/ # Fabric クライアント Mod (MC 26.2 / Java 25)
src/main/java/dev/yhakamay/craftnotes/bridge/
CraftNotesBridge.java # クライアントtickで座標取得・死亡検知
StatusServer.java # 軽量HTTPサーバー (GET /status)
メモ: 座標系は Minecraft 準拠(-Z=北・+X=東)。ネザー換算は x/8, z/8(floor)。
スクリーンショット用に -initialTab N 起動引数で初期タブを指定できます(0=ウェイポイント / 4=マップ / 3=設定)。
Xcode にチーム(AZHMSV7C5P)の Apple ID を登録した状態で:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
xcodebuild -project CraftNotes.xcodeproj -scheme CraftNotes \
-destination 'generic/platform=iOS' -archivePath build/CraftNotes.xcarchive \
archive -allowProvisioningUpdates
xcodebuild -exportArchive -archivePath build/CraftNotes.xcarchive \
-exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates-allowProvisioningUpdates が App ID の capability(App Groups / iCloud KVS)登録と
プロファイル生成を自動で行い、destination: upload で App Store Connect に直接
アップロードされます。処理完了後、App Store Connect の TestFlight タブで配信できます。