Skip to content

Instantly share code, notes, and snippets.

@shenjackyuanjie
Created October 3, 2024 07:11
Show Gist options
  • Save shenjackyuanjie/1883bc5a98c09dd688aa9325a103228e to your computer and use it in GitHub Desktop.
Save shenjackyuanjie/1883bc5a98c09dd688aa9325a103228e to your computer and use it in GitHub Desktop.
火球术
// by shenjackyuanjie
// 20231003
// v1.0.0
// 编写版本: fabric-carpet 1.16.5 1.4.44+v210714
// 还原起床战争中的火球效果
// 火球效果大小
global_power = 2;
// 火球加速度 比 玩家朝向的方向 倍率
global_speed = 0.1;
__on_player_uses_item(player, item_tuple, hand) -> (
// 检测物品是否是火球
// 检测是不是主手
if(item_tuple:0 != 'fire_charge', return());
if(hand != 'mainhand', return());
// 在玩家面前召唤一个火球
// 向玩家面向方向偏移
spawn_pos = pos(player) + query(player, 'look');
spawn_pos = spawn_pos + [0, 1, 0];
// scarpet 的计算真的好离谱 我直接 += 会给我加到后面去
// + 才能直接相加
player_look = query(player, 'look');
if(player_look:0 == 0, player_look = [-0.0, player_look:1, player_look:2]);
if(player_look:1 == 0, player_look = [player_look:0, -0.0, player_look:2]);
if(player_look:2 == 0, player_look = [player_look:0, player_look:1, -0.0]);
nbt_data = {
'ExplosionPower' -> global_power,
'Motion' -> query(player, 'look'), // 提供初始速度
'power' -> player_look * global_speed, // 加速度
};
fire_ball = spawn('minecraft:fireball', spawn_pos);
modify(fire_ball, 'nbt_merge', nbt_data);
// 将玩家手中的火球减少一个
// 如果是创造模式 忽略
if(query(player, 'gamemode') == 'creative', return());
slot = query(player, 'selected_slot');
inventory_set(player, slot, item_tuple:1 - 1, item_tuple:0);
);
__command()->(
print('火球效果 by shenjackyuanjie');
print('使用方法: 手持火球, 点击鼠标右键');
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment