Skip to content

cooltime

rukky321 edited this page May 24, 2025 · 4 revisions

クールタイムの実装について

実装方法

アイテム使用時に使用した時間とCTを記録する

(現在の時間) >= (使用した時間) + (CT) となっていれば CTが終わっていると判定できる

使用方法

  1. アイテムの使用時にsystem:cooltime/general/check_ct_< mainhand / slot >を実行してクールタイムが終了しているかを確認する
  2. 返り値が1であればクールタイムが終了しているので処理を行う
  3. 返り値が0であればまだクールタイムが終了していないのでそれを表示する
  4. アイテムの使用後にsystem:cooltime/general/set_ct_< mainhand / slot >を実行してクールタイムを再設定する

使用例

check.mcfunction

# メインハンドのCTが終わってるか調べる
execute store result score $check main run function system:cooltime/general/check_ct_mainhand

# CTが終わっていればスキル実行
execuite if score $check main matches 1 run function <スキル関数>

# CTが終わっていなければそれを表示
execuite unless score $check main matches 1 run function <CT中表示関数>

skill.mcfunction (スキル関数)

# スキルごとの処理
function nanka:skill

# スキルによるCTを計算してストレージに入れる
execute store result storage example: tmp.cooltime int 1 run function ct:keisan

# CTを設定する
function system:cooltime/general/set_ct_mainhand with storage example: tmp

データ

データ構造や関係する関数を書いてく

スコア

スコアホルダー オブジェクト 値の説明 備考
$ct_timer main ctカウント用のタイマー 0~ 999,999,999で1tickごとに増加

アイテムのタグ

minecraft:custom_data.cpvp.cooltime以下に保存しています

以下、アイテムタグ一覧

タグ名 値の範囲 値の説明 備考
time_use int型 0~2147483647 アイテムを使用したtick タイマースコアの値が入る
cooltime int型 0~2147483647 そのアイテムのcooltime(tick) スキル効果などでcooltimeを減らす場合はここをいじってる

関数

アイテム作ったりする中で使う可能性があると思う関数(実装予定含む)の説明を書いて行きます
system/cooltime/general/(関数名)で呼び出す

処理系

関数名(パス) 説明 引数 対象 返り値 詳細
set_ct_mainhand メインハンドにCTを設定 int cooltime クールタイム 実行者 失敗 : 0
成功 : 1
なし
set_ct_by_slot 特定のスロットアイテムにCTを設定 マクロ
int slot アイテムスロット
int cooltime クールタイム
実行者 失敗 : 0
成功 : 1
なし

データ取得系

関数名(パス) 説明 引数 対象 返り値 詳細
get_ct_mainhand メインハンドの残りCT取得 なし 実行者 失敗 : 0
成功 : 残りCT(tick)
CTの残り時間をtickで取得
get_ct_by_slot 特定のスロットの残りCT取得 マクロ
int slot 取得するスロット
実行者 失敗 : 0
成功 : 残りCT(tick)
CTの残り時間をtickで取得
check_ct_mainhand メインハンドのCTチェック なし 実行者 失敗 : 0
成功 : 1
CTが終わったかを取得
check_ct_by_slot 特定のスロットCTチェック マクロ
int slot 取得するスロット
実行者 失敗 : 0
成功 : 1
CTが終わったかを取得

データ変更系(未実装)

関数名(パス) 説明 引数 対象 詳細
reset_all 全CTリセット なし 実行者 全てのスロットに対して実行するのでそれなりに重い
reset_mainhand メインハンドのCTリセット なし 実行者 なし
reset_slot 特定のスロットのアイテムのCTリセット マクロ
int slot 取得するスロット
実行者 なし
reduce_slot 特定のスロットのアイテムのCTを減らす マクロ
int slot 対象スロット
int time 減らす時間(tick)
実行者 残り時間以上の値を入れても問題なく動く

要望あるなら言ってくれれば追加します

Clone this wiki locally