Skip to content

Repository files navigation

CraftNotes(クラフトノート)

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 秒で「データが古い」表示に切り替わります。

ライブ接続のセットアップ

  1. PC 側: bridge-mod/build/libs/craftnotes-bridge-1.0.0.jar を Windows PC の %appdata%\.minecraft\mods にコピー(Fabric Loader + Fabric API が必要。MC 26.2 向け)
  2. Minecraft を起動してワールドに入ると、チャットに [CraftNotes] スマホアプリから 192.168.x.x:25566 で接続できます と表示される
  3. iPhone 側: ウェイポイントタブの現在地カード →「PCと接続」→ その IP アドレスを入力して「接続する」 (スマホと PC は同じ Wi-Fi に接続しておく。初回はローカルネットワークの許可ダイアログが出る)

接続中は現在地が自動更新され、各ウェイポイントへの距離・方角がリアルタイムに変わります。 アプリを再起動しても前回の接続先へ自動で再接続します。ポートは JVM 引数 -Dcraftnotes.port=XXXXX で変更可能。

Bridge Mod のビルド

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' build

構成

CraftNotes/               # 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=設定)。

TestFlight 配信

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 タブで配信できます。

About

CraftNotes — Minecraft用ゼルダノート風コンパニオンiOSアプリ + Fabric連携Mod

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages