Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

libraries

quikku edited this page May 11, 2022 · 47 revisions

乱数ライブラリ

疑似乱数生成

乱数を取得します

使い方

execute store result ... run function lib:random/

乱数として生成される値は0~65535までの範囲です。

注: このライブラリはもやんのせいでfunction内以外から実行すると6しか取得できません。function内で実行する分には問題ないからバグ報告しないでね☆

# 25%の確率で「excellent!」,50%の確率で「great」,25%の確率で「miss」と出力するコマンド
 # 疑似乱数取得
 execute store result score $Random Temporary run function lib:random/
 # ほしい範囲に剰余算
 scoreboard players operation $Random Temporary %= 100ドル Const
 # メッセージ出力
 execute if score $Random Temporary matches 00..24 run say excellent!
 execute if score $Random Temporary matches 25..74 run say great
 execute if score $Random Temporary matches 75..99 run say miss
 # リセット
 scoreboard players reset $Random Temporary

固定確率predicates

指定した確率でtrueを返すpredicateです。

使い方

execute if predicate lib:random_pass_per/<確率>

@a[predicate=lib:random_pass_per/<確率>

確率に指定可能な値は1 ~ 99までの範囲です。

# 30%の確率で「pass!」と出力するコマンド
 execute if predicate lib:random_pass_per/30 run say pass!

攻撃元Entity探索実装

そのtickにそのプレイヤー攻撃したEntityを特定する実装です。
使用可能な個所にて@e[type=#lib:living,type=!player,tag=Attacker]
で対象にすることが可能です。

攻撃先Entity探索実装

そのtickにそのプレイヤー攻撃したEntityを特定する実装です。
使用可能な個所にて@e[type=#lib:living,type=!player,tag=Victim]
で対象にすることが可能です。

天候チェックpredicates

指定した天候の場合trueを返すpredicateです。

使い方

execute if predicate lib:weather/is_<sunny|raining|thundering>

# 天候が雨の場合のみ「rain!」と出力するコマンド
 execute if predicate lib:weather/is_raining run say rain!

ディメンションチェックpredicate

実行ワールドが指定したディメンションの場合trueを返すpredicateです。

使い方

execute if predicate lib:dimension/is_<overworld|nether|end>

# ディメンションがendの場合のみ「ending!」と出力するコマンド
 execute if predicate lib:dimension/is_end run say ending!

MotionLib

実行Entity(type=!player)に実行方向のArgument.VectorMagnitude分のMotionを付与します。
at,rotatedと併用してください

引数

要求データ 必須 説明 デフォルト
実行者 o Entity 動かす実行者 -
Argument.VectorMagnitude o double 実行位置からどのくらい離すか -
Argument.KnockbackResist ×ばつ boolean ノックバック耐性を考慮するか false

使い方

function lib:motion/

# 5m以内のEntityに1Block分の視点方向のMotionをかけるコマンド
 data modify storage lib: Argument.VectorMagnitude set value 1
 execute as @e[type=!player,distance=..5] at @s run function lib:motion/
 data remove storage lib: Argument
# ノックバック耐性を考慮して5m以内のEntityが自分めがけて飛んでくるコマンド
 data modify storage lib: Argument.VectorMagnitude set value 5
 data modify storage lib: Argument.KnockbackResist set value true
 execute as @e[type=!player,distance=..5] at @s facing entity @p feet run function lib:motion/
 data remove storage lib: Argument

前方拡散Lib

実行entityを実行方向のランダムな位置に移動させます。

また、それ用途のスニペット(forwardSpreadLib)がTheSkyBlockリポジトリに登録されています

引数

要求データ 必須 説明 デフォルト
実行者 o Entity 動かす実行者 -
Argument.Distance o double 実行位置からどのくらい離すか -
Argument.Spread o double 離れた位置でどのくらい拡散するか -

note: Spreadの値が-4.634~4.634の範囲を出る場合、内部処理でオーバーフローし正常に動作しなくなります。

使い方

function lib:forward_spreader/<square|circle>

# 10mで2.5mのブレが発生する矢を放つコマンド
 #> SpreadLib
 # @private
 #declare tag SpreadMarker
 # 拡散させるEntityを召喚する
 summon marker ~ ~ ~ {Tags:["SpreadMarker"]}
 # ステータス設定
 data modify storage lib: Argument.Distance set value 10
 data modify storage lib: Argument.Spread set value 2.5
 # 拡散
 execute as @e[type=marker,tag=SpreadMarker,limit=1] run function lib:forward_spreader/circle
 # 矢を召喚して飛ばす
 execute anchor eyes run summon arrow ^ ^ ^ {Tags:[ArrowInit]}
 scoreboard players set $VectorMagnitude 250
 execute as @e[type=arrow,tag=ArrowInit,distance=..2] at @s facing entity @e[type=marker,tag=SpreadMarker,limit=1] feet anchored eyes positioned ^ ^ ^ run function lib:motion/
 # リセット
 tag @e[type=arrow,tag=ArrowInit,distance=..2] remove ArrowInit
 kill @e[type=marker,tag=SpreadMarker]

Entity拡散Lib

実行Entityを実行座標を中心としたランダムな座標へ移動させます。

引数

要求データ 必須 説明 デフォルト
実行者 o Entity 動かす対象Entity -
実行座標 o Pos 移動の中心座標 -
Argument.Bounds o double[2][3] X,Y,Zの-,+方向の最大移動範囲 -

使い方

function function lib:spread_entity/

# 実行座標を中心として-x方向に1、+x方向に1、-y方向に0.2、+y方向に0.8、-z方向に1、+z方向に1の立方体内のランダムな位置にmarkerを移動
 summon marker ~ ~0.5 ~ {Tags:["Exemple"]}
 data modify storage lib: Argument.Bounds set value [[1d,1d],[0.2d,0.8d],[1d,1d]]
 execute as @e[type=marker,tag=Exemple] at @s run function lib:spread_entity/

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /