diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/check_projectile.mcfunction b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/check_projectile.mcfunction index a5525466f2..ee29fd3634 100644 --- a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/check_projectile.mcfunction +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/check_projectile.mcfunction @@ -6,7 +6,7 @@ # tripwire execute if entity @s[gamemode=!adventure,predicate=gm4_crossbow_cartridges:items/string,x_rotation=-15..15] align xyz positioned ~0.5 ~ ~0.5 run function gm4_crossbow_cartridges:cables/shoot_arrow -# bucket with fish/axolotl +# bucket with mob execute if entity @s[tag=!gm4_cb_use,predicate=gm4_crossbow_cartridges:items/bucket] run function gm4_crossbow_cartridges:projectile/bucket # torch diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket.mcfunction b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket.mcfunction index 6fb5ff70eb..67c4c4897c 100644 --- a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket.mcfunction +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket.mcfunction @@ -1,19 +1,21 @@ -# Check fish/axolotl and shoot +# Check bucket type and shoot # @s = player using the crossbow # at arrow # run from check_projectile tag @s add gm4_cb_use +execute if predicate gm4_crossbow_cartridges:items/axolotl run function gm4_crossbow_cartridges:projectile/bucket/axolotl execute if predicate gm4_crossbow_cartridges:items/cod run function gm4_crossbow_cartridges:projectile/bucket/cod -execute if predicate gm4_crossbow_cartridges:items/salmon run function gm4_crossbow_cartridges:projectile/bucket/salmon execute if predicate gm4_crossbow_cartridges:items/pufferfish run function gm4_crossbow_cartridges:projectile/bucket/pufferfish -execute if predicate gm4_crossbow_cartridges:items/tropical run function gm4_crossbow_cartridges:projectile/bucket/tropical -execute if predicate gm4_crossbow_cartridges:items/axolotl run function gm4_crossbow_cartridges:projectile/bucket/axolotl +execute if predicate gm4_crossbow_cartridges:items/salmon run function gm4_crossbow_cartridges:projectile/bucket/salmon +execute if predicate gm4_crossbow_cartridges:items/sulfur_cube run function gm4_crossbow_cartridges:projectile/bucket/sulfur_cube execute if predicate gm4_crossbow_cartridges:items/tadpole run function gm4_crossbow_cartridges:projectile/bucket/tadpole +execute if predicate gm4_crossbow_cartridges:items/tropical run function gm4_crossbow_cartridges:projectile/bucket/tropical + +# give advancement for launching mob in a bucket +execute unless predicate gm4_crossbow_cartridges:items/sulfur_cube run advancement grant @s only gm4:crossbow_cartridges_bucket # replace filled bucket in player's offhand with water bucket +execute if predicate gm4_crossbow_cartridges:items/sulfur_cube run return run item replace entity @s[gamemode=!creative] weapon.offhand with minecraft:bucket item replace entity @s[gamemode=!creative] weapon.offhand with minecraft:water_bucket - -# give advancement for launching mob in a bucket -advancement grant @s only gm4:crossbow_cartridges_bucket diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/multishot/sulfur_cube.mcfunction b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/multishot/sulfur_cube.mcfunction new file mode 100644 index 0000000000..18349473a6 --- /dev/null +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/multishot/sulfur_cube.mcfunction @@ -0,0 +1,12 @@ +# Summon sulfur cube +# @s = player using the crossbow +# at @s +# run from projectile/bucket + +# replace arrow with sulfur cube and copy data +summon minecraft:sulfur_cube ~ ~ ~ {FromBucket:1b,Tags:["gm4_cb_projectile"],active_effects:[{id:'minecraft:instant_damage',amplifier:10,duration:1}],Silent:1b,DeathLootTable:"gm4:empty"} + +execute as @e[type=minecraft:sulfur_cube,tag=gm4_cb_projectile,limit=1,distance=..1] run function gm4_crossbow_cartridges:projectile/arrow_motion + +# sulfur cube sound +playsound minecraft:entity.sulfur_cube.squish player @a[distance=..15] ^ ^ ^1 2 1 diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/sulfur_cube.mcfunction b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/sulfur_cube.mcfunction new file mode 100644 index 0000000000..0c131ddf56 --- /dev/null +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/function/projectile/bucket/sulfur_cube.mcfunction @@ -0,0 +1,18 @@ +# Summon sulfur cube +# @s = player using the crossbow +# at arrow +# run from projectile/bucket + +# replace arrow with sulfur cube and copy data +summon minecraft:sulfur_cube ~ ~ ~ {FromBucket:1b,Tags:["gm4_cb_projectile"],active_effects:[{id:'minecraft:regeneration',amplifier:10,duration:200,show_particles:0b}]} + +data modify storage gm4_crossbow_cartridges:temp projectile.Age merge from entity @s equipment.offhand.components."minecraft:bucket_entity_data".age +data modify storage gm4_crossbow_cartridges:temp projectile.AgeLocked merge from entity @s equipment.offhand.components."minecraft:bucket_entity_data".age_locked +data modify storage gm4_crossbow_cartridges:temp projectile.equipment.body set from entity @s equipment.offhand.components."minecraft:sulfur_cube_content" +execute as @e[type=minecraft:sulfur_cube,tag=gm4_cb_projectile,limit=1,distance=..1] run function gm4_crossbow_cartridges:projectile/arrow_motion + +# sulfur cube sound +playsound minecraft:entity.sulfur_cube.squish player @a[distance=..15] ^ ^ ^1 2 1 + +# shoot 2 more if using multishot +execute at @e[tag=gm4_cb_arrow,distance=..1,limit=2] run function gm4_crossbow_cartridges:projectile/bucket/multishot/sulfur_cube diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/bucket.json b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/bucket.json index 01411d2c8a..8312b0a3b1 100644 --- a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/bucket.json +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/bucket.json @@ -1,18 +1,11 @@ { - "condition": "minecraft:entity_properties", - "entity": "this", - "predicate": { - "equipment": { - "offhand": { - "items": [ - "minecraft:cod_bucket", - "minecraft:salmon_bucket", - "minecraft:pufferfish_bucket", - "minecraft:tropical_fish_bucket", - "minecraft:axolotl_bucket", - "minecraft:tadpole_bucket" - ] - } + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "offhand": { + "items": "#gm4_crossbow_cartridges:bucket" + } + } } - } } diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/sulfur_cube.json b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/sulfur_cube.json new file mode 100644 index 0000000000..5158fbb2db --- /dev/null +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/predicate/items/sulfur_cube.json @@ -0,0 +1,13 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "offhand": { + "items": [ + "minecraft:sulfur_cube_bucket" + ] + } + } + } +} diff --git a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/tags/item/bucket.json b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/tags/item/bucket.json index 1437bb8e1f..2e37537f17 100644 --- a/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/tags/item/bucket.json +++ b/gm4_crossbow_cartridges/data/gm4_crossbow_cartridges/tags/item/bucket.json @@ -1,10 +1,11 @@ { "values": [ + "minecraft:axolotl_bucket", "minecraft:cod_bucket", - "minecraft:salmon_bucket", "minecraft:pufferfish_bucket", - "minecraft:tropical_fish_bucket", - "minecraft:axolotl_bucket", - "minecraft:tadpole_bucket" + "minecraft:salmon_bucket", + "minecraft:sulfur_cube_bucket", + "minecraft:tadpole_bucket", + "minecraft:tropical_fish_bucket" ] }