From 0a22196ea65e0ae8d12c586538831854e623bd26 Mon Sep 17 00:00:00 2001 From: Darto KLoning Date: Sat, 20 Jun 2026 20:58:13 +0700 Subject: [PATCH] Initial import --- data/allrecipes/functions/load.mcfunction | 5 + data/armorstand/functions/tick.mcfunction | 5 + data/gamerules/functions/load.mcfunction | 1 + .../entities/armor_sets/armor.json | 65 +++++++++++ data/homingloot/functions/emerald.mcfunction | 14 +++ data/homingloot/functions/load.mcfunction | 1 + data/homingloot/functions/orb.mcfunction | 14 +++ data/homingloot/functions/tick.mcfunction | 2 + .../predicates/allowed_dimension.json | 6 + data/info/functions/load.mcfunction | 5 + data/lobby/functions/tick.mcfunction | 15 +++ data/lobby/predicates/allowed_dimension.json | 6 + data/minecraft/tags/functions/load.json | 12 ++ data/minecraft/tags/functions/tick.json | 10 ++ data/mobcaptains/functions/load.mcfunction | 3 + data/nof3/functions/load.mcfunction | 1 + .../functions/arena/reset.mcfunction | 19 +++ .../functions/entities/count.mcfunction | 10 ++ .../entities/spawn/check_payment.mcfunction | 6 + .../entities/spawn/request.mcfunction | 6 + .../entities/spawn/slot_1.mcfunction | 4 + .../entities/spawn/slot_2.mcfunction | 4 + .../entities/spawn/slot_3.mcfunction | 4 + .../entities/spawn/slot_4.mcfunction | 4 + .../entities/spawn/slot_5.mcfunction | 4 + .../entities/spawn/slot_6.mcfunction | 4 + .../entities/spawn/slot_7.mcfunction | 4 + .../entities/spawn/slot_8.mcfunction | 4 + .../entities/spawn/slot_9.mcfunction | 4 + .../entities/spawn/try_slots.mcfunction | 17 +++ .../functions/game/check_result.mcfunction | 31 +++++ .../game/fireworks_clear_anchor.mcfunction | 1 + .../game/fireworks_perfect.mcfunction | 4 + .../game/fireworks_perfect_1.mcfunction | 5 + .../game/fireworks_perfect_2.mcfunction | 5 + .../game/fireworks_perfect_3.mcfunction | 5 + .../game/fireworks_survived.mcfunction | 4 + .../game/fireworks_survived_1.mcfunction | 4 + .../game/fireworks_survived_2.mcfunction | 4 + .../game/fireworks_survived_3.mcfunction | 4 + .../game/fireworks_victory.mcfunction | 4 + .../game/fireworks_victory_1.mcfunction | 4 + .../game/fireworks_victory_2.mcfunction | 4 + .../game/fireworks_victory_3.mcfunction | 4 + .../functions/game/villager_lost.mcfunction | 8 ++ .../functions/load.mcfunction | 43 +++++++ .../functions/tick.mcfunction | 53 +++++++++ .../functions/wave/countdown/start.mcfunction | 6 + .../functions/wave/countdown/tick.mcfunction | 37 ++++++ .../functions/wave/progress/wave_1.mcfunction | 6 + .../functions/wave/progress/wave_2.mcfunction | 6 + .../functions/wave/progress/wave_3.mcfunction | 6 + .../functions/wave/progress/wave_4.mcfunction | 6 + .../functions/wave/start/wave_1.mcfunction | 11 ++ .../functions/wave/start/wave_2.mcfunction | 11 ++ .../functions/wave/start/wave_3.mcfunction | 11 ++ .../functions/wave/start/wave_4.mcfunction | 11 ++ .../functions/wave/tick.mcfunction | 33 ++++++ .../predicates/allowed_dimension.json | 6 + .../move_slot_26_to_empty.mcfunction | 109 ++++++++++++++++++ .../functions/save_slot_26.mcfunction | 20 ++++ data/trashslot/functions/tick.mcfunction | 41 +++++++ .../predicates/allowed_dimension.json | 47 ++++++++ data/xaerominimap/functions/load.mcfunction | 8 ++ .../predicates/allowed_dimension.json | 35 ++++++ data/zombiiattack/dimension/creative.json | 11 ++ data/zombiiattack/dimension/csgo.json | 13 +++ data/zombiiattack/dimension/lobby.json | 18 +++ .../dimension/protect_villagers.json | 13 +++ data/zombiiattack/dimension/saving_ryan.json | 13 +++ .../zombiiattack/dimension/the_labyrinth.json | 13 +++ data/zombiiattack/dimension_type/arena.json | 25 ++++ .../zombiiattack/dimension_type/creative.json | 25 ++++ data/zombiiattack/dimension_type/lobby.json | 26 +++++ pack.mcmeta | 6 + pack.png | Bin 0 -> 96522 bytes 76 files changed, 1019 insertions(+) create mode 100644 data/allrecipes/functions/load.mcfunction create mode 100644 data/armorstand/functions/tick.mcfunction create mode 100644 data/gamerules/functions/load.mcfunction create mode 100644 data/guardvillagers/loot_tables/entities/armor_sets/armor.json create mode 100644 data/homingloot/functions/emerald.mcfunction create mode 100644 data/homingloot/functions/load.mcfunction create mode 100644 data/homingloot/functions/orb.mcfunction create mode 100644 data/homingloot/functions/tick.mcfunction create mode 100644 data/homingloot/predicates/allowed_dimension.json create mode 100644 data/info/functions/load.mcfunction create mode 100644 data/lobby/functions/tick.mcfunction create mode 100644 data/lobby/predicates/allowed_dimension.json create mode 100644 data/minecraft/tags/functions/load.json create mode 100644 data/minecraft/tags/functions/tick.json create mode 100644 data/mobcaptains/functions/load.mcfunction create mode 100644 data/nof3/functions/load.mcfunction create mode 100644 data/protect_villagers/functions/arena/reset.mcfunction create mode 100644 data/protect_villagers/functions/entities/count.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/check_payment.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/request.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_1.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_2.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_3.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_4.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_5.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_6.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_7.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_8.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/slot_9.mcfunction create mode 100644 data/protect_villagers/functions/entities/spawn/try_slots.mcfunction create mode 100644 data/protect_villagers/functions/game/check_result.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_clear_anchor.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_perfect.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_perfect_1.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_perfect_2.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_perfect_3.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_survived.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_survived_1.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_survived_2.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_survived_3.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_victory.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_victory_1.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_victory_2.mcfunction create mode 100644 data/protect_villagers/functions/game/fireworks_victory_3.mcfunction create mode 100644 data/protect_villagers/functions/game/villager_lost.mcfunction create mode 100644 data/protect_villagers/functions/load.mcfunction create mode 100644 data/protect_villagers/functions/tick.mcfunction create mode 100644 data/protect_villagers/functions/wave/countdown/start.mcfunction create mode 100644 data/protect_villagers/functions/wave/countdown/tick.mcfunction create mode 100644 data/protect_villagers/functions/wave/progress/wave_1.mcfunction create mode 100644 data/protect_villagers/functions/wave/progress/wave_2.mcfunction create mode 100644 data/protect_villagers/functions/wave/progress/wave_3.mcfunction create mode 100644 data/protect_villagers/functions/wave/progress/wave_4.mcfunction create mode 100644 data/protect_villagers/functions/wave/start/wave_1.mcfunction create mode 100644 data/protect_villagers/functions/wave/start/wave_2.mcfunction create mode 100644 data/protect_villagers/functions/wave/start/wave_3.mcfunction create mode 100644 data/protect_villagers/functions/wave/start/wave_4.mcfunction create mode 100644 data/protect_villagers/functions/wave/tick.mcfunction create mode 100644 data/protect_villagers/predicates/allowed_dimension.json create mode 100644 data/trashslot/functions/move_slot_26_to_empty.mcfunction create mode 100644 data/trashslot/functions/save_slot_26.mcfunction create mode 100644 data/trashslot/functions/tick.mcfunction create mode 100644 data/trashslot/predicates/allowed_dimension.json create mode 100644 data/xaerominimap/functions/load.mcfunction create mode 100644 data/xaerominimap/predicates/allowed_dimension.json create mode 100644 data/zombiiattack/dimension/creative.json create mode 100644 data/zombiiattack/dimension/csgo.json create mode 100644 data/zombiiattack/dimension/lobby.json create mode 100644 data/zombiiattack/dimension/protect_villagers.json create mode 100644 data/zombiiattack/dimension/saving_ryan.json create mode 100644 data/zombiiattack/dimension/the_labyrinth.json create mode 100644 data/zombiiattack/dimension_type/arena.json create mode 100644 data/zombiiattack/dimension_type/creative.json create mode 100644 data/zombiiattack/dimension_type/lobby.json create mode 100644 pack.mcmeta create mode 100644 pack.png diff --git a/data/allrecipes/functions/load.mcfunction b/data/allrecipes/functions/load.mcfunction new file mode 100644 index 0000000..ff11835 --- /dev/null +++ b/data/allrecipes/functions/load.mcfunction @@ -0,0 +1,5 @@ +# Runs periodically so newly joined players receive recipes, +# but each player is granted recipes only once to avoid packet spam. +schedule function allrecipes:load 10s replace +execute as @a[tag=!allrecipes_given] run recipe give @s * +tag @a[tag=!allrecipes_given] add allrecipes_given diff --git a/data/armorstand/functions/tick.mcfunction b/data/armorstand/functions/tick.mcfunction new file mode 100644 index 0000000..6dd9480 --- /dev/null +++ b/data/armorstand/functions/tick.mcfunction @@ -0,0 +1,5 @@ +execute as @a at @s run tag @e[type=minecraft:armor_stand,distance=..4,tag=!zombiiattack_armorstand] add zombiiattack_armorstand + +execute as @e[type=minecraft:armor_stand,tag=zombiiattack_armorstand,tag=!zombiiattack_armorstand_arm] run data merge entity @s {ShowArms:1b} + +execute as @e[type=minecraft:armor_stand,tag=zombiiattack_armorstand,tag=!zombiiattack_armorstand_arm] run tag @s add zombiiattack_armorstand_arm \ No newline at end of file diff --git a/data/gamerules/functions/load.mcfunction b/data/gamerules/functions/load.mcfunction new file mode 100644 index 0000000..28aabe3 --- /dev/null +++ b/data/gamerules/functions/load.mcfunction @@ -0,0 +1 @@ +gamerule playersSleepingPercentage 1 \ No newline at end of file diff --git a/data/guardvillagers/loot_tables/entities/armor_sets/armor.json b/data/guardvillagers/loot_tables/entities/armor_sets/armor.json new file mode 100644 index 0000000..54403e8 --- /dev/null +++ b/data/guardvillagers/loot_tables/entities/armor_sets/armor.json @@ -0,0 +1,65 @@ +{ + "type": "guardvillagers:slot", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "lrarmor:defender_helmet" + } + ], + "functions": [ + { + "function": "guardvillagers:slot", + "slot": "head" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "lrarmor:defender_chestplate" + } + ], + "functions": [ + { + "function": "guardvillagers:slot", + "slot": "chest" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "lrarmor:defender_leggings" + } + ], + "functions": [ + { + "function": "guardvillagers:slot", + "slot": "legs" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "lrarmor:defender_boots" + } + ], + "functions": [ + { + "function": "guardvillagers:slot", + "slot": "feet" + } + ] + } + ] +} \ No newline at end of file diff --git a/data/homingloot/functions/emerald.mcfunction b/data/homingloot/functions/emerald.mcfunction new file mode 100644 index 0000000..8d495dd --- /dev/null +++ b/data/homingloot/functions/emerald.mcfunction @@ -0,0 +1,14 @@ +scoreboard players add @s homingloot_count 1 + +execute if score @s homingloot_count matches 20 run data remove entity @s Motion +execute if score @s homingloot_count matches 20 run data modify entity @s NoGravity set value 1b + +execute if score @s homingloot_count matches 20.. run particle dust_color_transition 0.000 1.000 0.000 1 0.031 0.451 1.000 ~ ~ ~ 0 0 0 1 0 force @a[distance=..96] + +execute if score @s homingloot_count matches 20.. at @s run tp @s ^ ^ ^0.25 facing entity @p[gamemode=!spectator,distance=..96] feet +execute if score @s homingloot_count matches 20.. at @s run tp @s ^ ^ ^0.25 facing entity @p[gamemode=!spectator,distance=..96] feet + +execute if score @s homingloot_count matches 30.. run particle dust_color_transition 0.000 1.000 0.000 1 1.000 1.000 1.000 ~ ~ ~ 0 0 0 1 0 force @a[distance=..96] + +execute if score @s homingloot_count matches 30.. at @s run tp @s ^ ^ ^0.30 facing entity @p[gamemode=!spectator,distance=..96] feet +execute if score @s homingloot_count matches 30.. at @s run tp @s ^ ^ ^0.30 facing entity @p[gamemode=!spectator,distance=..96] feet \ No newline at end of file diff --git a/data/homingloot/functions/load.mcfunction b/data/homingloot/functions/load.mcfunction new file mode 100644 index 0000000..c2d3eb6 --- /dev/null +++ b/data/homingloot/functions/load.mcfunction @@ -0,0 +1 @@ +scoreboard objectives add homingloot_count dummy \ No newline at end of file diff --git a/data/homingloot/functions/orb.mcfunction b/data/homingloot/functions/orb.mcfunction new file mode 100644 index 0000000..cfc7cec --- /dev/null +++ b/data/homingloot/functions/orb.mcfunction @@ -0,0 +1,14 @@ +scoreboard players add @s homingloot_count 1 + +execute if score @s homingloot_count matches 20 run data remove entity @s Motion +execute if score @s homingloot_count matches 20 run data modify entity @s NoGravity set value 1b + +execute if score @s homingloot_count matches 20.. run particle dust_color_transition 0.969 1.000 0.000 1 0.031 0.451 1.000 ~ ~ ~ 0 0 0 1 0 force @a[distance=..96] + +execute if score @s homingloot_count matches 20.. at @s run tp @s ^ ^ ^.3 facing entity @p[gamemode=!spectator,distance=..96] feet +execute if score @s homingloot_count matches 20.. at @s run tp @s ^ ^ ^.3 facing entity @p[gamemode=!spectator,distance=..96] feet + +execute if score @s homingloot_count matches 30.. run particle dust_color_transition 0.969 1.000 0.000 1 0.031 0.451 1.000 ~ ~ ~ 0 0 0 1 0 force @a[distance=..96] + +execute if score @s homingloot_count matches 30.. at @s run tp @s ^ ^ ^.3 facing entity @p[gamemode=!spectator,distance=..96] feet +execute if score @s homingloot_count matches 30.. at @s run tp @s ^ ^ ^.3 facing entity @p[gamemode=!spectator,distance=..96] feet \ No newline at end of file diff --git a/data/homingloot/functions/tick.mcfunction b/data/homingloot/functions/tick.mcfunction new file mode 100644 index 0000000..6810dde --- /dev/null +++ b/data/homingloot/functions/tick.mcfunction @@ -0,0 +1,2 @@ +execute as @e[type=minecraft:experience_orb] at @s run function homingloot:orb +execute in zombiiattack:protect_villagers as @e[type=minecraft:item,nbt={Item:{id:"minecraft:emerald"}}] at @s if predicate homingloot:allowed_dimension run function homingloot:emerald \ No newline at end of file diff --git a/data/homingloot/predicates/allowed_dimension.json b/data/homingloot/predicates/allowed_dimension.json new file mode 100644 index 0000000..7ffca29 --- /dev/null +++ b/data/homingloot/predicates/allowed_dimension.json @@ -0,0 +1,6 @@ +{ + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:protect_villagers" + } +} \ No newline at end of file diff --git a/data/info/functions/load.mcfunction b/data/info/functions/load.mcfunction new file mode 100644 index 0000000..06470b6 --- /dev/null +++ b/data/info/functions/load.mcfunction @@ -0,0 +1,5 @@ +say §9============================================ +say §d§lKLoningSpoon §7presents: +say §a§lZombii§b§lAttack §7- §c§lGames §7§lof §e§lThe Apocalypse +say §3§lDatapacks §8§lversion: §6§l2026.06.20.1914 +say §9============================================ \ No newline at end of file diff --git a/data/lobby/functions/tick.mcfunction b/data/lobby/functions/tick.mcfunction new file mode 100644 index 0000000..a67d109 --- /dev/null +++ b/data/lobby/functions/tick.mcfunction @@ -0,0 +1,15 @@ +# Lobby effects +# Logic: +# - Effect lobby diberikan hanya 1x saat player masuk lobby. +# - Durasi dibuat sangat panjang supaya icon effect tidak refresh/berkedip terus. +# - Saat player keluar lobby, effect lobby dibersihkan 1x lalu tag dihapus. + +# Player baru masuk lobby: beri semua effect lobby sekali saja. +execute as @a[tag=!lobby_effects] at @s if predicate lobby:allowed_dimension run effect give @s minecraft:saturation infinite 2 true +execute as @a[tag=!lobby_effects] at @s if predicate lobby:allowed_dimension run effect give @a minecraft:instant_health infinite 2 true +execute as @a[tag=!lobby_effects] at @s if predicate lobby:allowed_dimension run tag @s add lobby_effects + +# Saat player sudah bukan di lobby, bersihkan effect lobby sekali lalu hapus tag. +execute as @a[tag=lobby_effects] at @s unless predicate lobby:allowed_dimension run effect clear @s minecraft:saturation +execute as @a[tag=lobby_effects] at @s unless predicate lobby:allowed_dimension run effect clear @s minecraft:instant_health +execute as @a[tag=lobby_effects] at @s unless predicate lobby:allowed_dimension run tag @s remove lobby_effects diff --git a/data/lobby/predicates/allowed_dimension.json b/data/lobby/predicates/allowed_dimension.json new file mode 100644 index 0000000..c90d202 --- /dev/null +++ b/data/lobby/predicates/allowed_dimension.json @@ -0,0 +1,6 @@ +{ + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:lobby" + } +} \ No newline at end of file diff --git a/data/minecraft/tags/functions/load.json b/data/minecraft/tags/functions/load.json new file mode 100644 index 0000000..c80b442 --- /dev/null +++ b/data/minecraft/tags/functions/load.json @@ -0,0 +1,12 @@ +{ + "values": [ + "homingloot:load", + "info:load", + "xaerominimap:load", + "allrecipes:load", + "gamerules:load", + "mobcaptains:load", + "protect_villagers:load", + "nof3:load" + ] +} \ No newline at end of file diff --git a/data/minecraft/tags/functions/tick.json b/data/minecraft/tags/functions/tick.json new file mode 100644 index 0000000..b773eb3 --- /dev/null +++ b/data/minecraft/tags/functions/tick.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "homingloot:tick", + "trashslot:tick", + "lobby:tick", + "armorstand:tick", + "protect_villagers:tick" + ] +} \ No newline at end of file diff --git a/data/mobcaptains/functions/load.mcfunction b/data/mobcaptains/functions/load.mcfunction new file mode 100644 index 0000000..dae0e63 --- /dev/null +++ b/data/mobcaptains/functions/load.mcfunction @@ -0,0 +1,3 @@ +scoreboard players set .notify_on_spawn ps-mob.config 0 +scoreboard players set .notify_with_sound ps-mob.config 0 +scoreboard players set .beam_on_spawn ps-mob.config 0 \ No newline at end of file diff --git a/data/nof3/functions/load.mcfunction b/data/nof3/functions/load.mcfunction new file mode 100644 index 0000000..b1f7732 --- /dev/null +++ b/data/nof3/functions/load.mcfunction @@ -0,0 +1 @@ +gamerule reducedDebugInfo true \ No newline at end of file diff --git a/data/protect_villagers/functions/arena/reset.mcfunction b/data/protect_villagers/functions/arena/reset.mcfunction new file mode 100644 index 0000000..c965758 --- /dev/null +++ b/data/protect_villagers/functions/arena/reset.mcfunction @@ -0,0 +1,19 @@ +scoreboard players set #arena arena_reset_lock 1 + +# Karena function ini dipanggil "as @a at @s if predicate protect_villagers:allowed_dimension", +# command clone di bawah ini berjalan di dimensi zombiiattack:protect_villagers tanpa perlu "execute in". + +# sign +clone 62 72 300 64 94 344 62 72 -22 replace + +# arena war +clone -1 62 306 60 74 338 -1 62 -16 replace + +execute as @a at @s if predicate protect_villagers:allowed_dimension run title @s times 10 70 20 +execute as @a at @s if predicate protect_villagers:allowed_dimension run title @s title {"text":"Resetting...","color":"aqua","bold":true} +execute as @a at @s if predicate protect_villagers:allowed_dimension run title @s subtitle [{"text":"Arena ","color":"yellow","bold":true},{"text":"Protect Villagers ","color":"green","bold":true},{"text":"telah di reset.","color":"gray"}] + +# Volume dan pitch dibuat lebih jelas untuk seluruh player di dimensi Protect Villagers. +execute as @a at @s if predicate protect_villagers:allowed_dimension run playsound minecraft:block.beacon.activate player @s ~ ~ ~ 2.0 1.0 +execute as @a at @s if predicate protect_villagers:allowed_dimension run playsound minecraft:block.conduit.activate player @s ~ ~ ~ 1.5 1.2 +execute as @a at @s if predicate protect_villagers:allowed_dimension run playsound minecraft:block.end_portal_frame.fill player @s ~ ~ ~ 1.2 0.8 diff --git a/data/protect_villagers/functions/entities/count.mcfunction b/data/protect_villagers/functions/entities/count.mcfunction new file mode 100644 index 0000000..0550524 --- /dev/null +++ b/data/protect_villagers/functions/entities/count.mcfunction @@ -0,0 +1,10 @@ +scoreboard players set #villager pv_villagers 0 +scoreboard players set #guard pv_guards 0 +scoreboard players set #alive pv_alive 0 + +execute store result score #villager pv_villagers run execute if entity @e[type=minecraft:villager,x=-1,y=64,z=-9,dx=2,dy=2,dz=18] + +execute store result score #guard pv_guards run execute if entity @e[type=guardvillagers:guard,x=-1,y=64,z=-9,dx=2,dy=2,dz=18] + +scoreboard players operation #alive pv_alive = #villager pv_villagers +scoreboard players operation #alive pv_alive += #guard pv_guards \ No newline at end of file diff --git a/data/protect_villagers/functions/entities/spawn/check_payment.mcfunction b/data/protect_villagers/functions/entities/spawn/check_payment.mcfunction new file mode 100644 index 0000000..f622357 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/check_payment.mcfunction @@ -0,0 +1,6 @@ +execute store result score @s pv_emeralds run clear @s minecraft:emerald 0 + +execute if score @s pv_emeralds matches ..49 run tellraw @s [{"text":"Emerald tidak cukup. Butuh ","color":"red"},{"text":"50 Emerald","color":"green","bold":true},{"text":" untuk spawn Villager.","color":"red"}] +execute if score @s pv_emeralds matches ..49 run playsound minecraft:block.note_block.bass player @s ~ ~ ~ 0.8 0.8 + +execute if score @s pv_emeralds matches 50.. run function protect_villagers:entities/spawn/try_slots diff --git a/data/protect_villagers/functions/entities/spawn/request.mcfunction b/data/protect_villagers/functions/entities/spawn/request.mcfunction new file mode 100644 index 0000000..42fbc91 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/request.mcfunction @@ -0,0 +1,6 @@ +scoreboard players set #button pv_button_lock 1 + +execute if score @s pv_spawn_cd matches 1.. run tellraw @s {"text":"Villager spawn masih cooldown. Tunggu sebentar...","color":"red"} +execute if score @s pv_spawn_cd matches 1.. run playsound minecraft:block.note_block.bass player @s ~ ~ ~ 0.8 0.7 + +execute unless score @s pv_spawn_cd matches 1.. run function protect_villagers:entities/spawn/check_payment diff --git a/data/protect_villagers/functions/entities/spawn/slot_1.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_1.mcfunction new file mode 100644 index 0000000..dff0487 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_1.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 -8 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 -8 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 -8 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_2.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_2.mcfunction new file mode 100644 index 0000000..7d92798 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_2.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 -6 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 -6 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 -6 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_3.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_3.mcfunction new file mode 100644 index 0000000..634fd6c --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_3.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 -4 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 -4 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 -4 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_4.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_4.mcfunction new file mode 100644 index 0000000..7209269 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_4.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 -2 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 -2 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 -2 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_5.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_5.mcfunction new file mode 100644 index 0000000..ca21b95 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_5.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 0 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 0 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 0 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_6.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_6.mcfunction new file mode 100644 index 0000000..2c51c66 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_6.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 2 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 2 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 2 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_7.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_7.mcfunction new file mode 100644 index 0000000..03502a9 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_7.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 4 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 4 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 4 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_8.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_8.mcfunction new file mode 100644 index 0000000..ac9326d --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_8.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 6 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 6 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 6 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/slot_9.mcfunction b/data/protect_villagers/functions/entities/spawn/slot_9.mcfunction new file mode 100644 index 0000000..dd23fde --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/slot_9.mcfunction @@ -0,0 +1,4 @@ +summon minecraft:villager 0 65 8 +scoreboard players set #spawn pv_spawn_done 1 +particle minecraft:happy_villager 0 66 8 0.4 0.6 0.4 0.02 20 force +playsound minecraft:entity.villager.yes player @a[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] 0 65 8 1.0 1.0 diff --git a/data/protect_villagers/functions/entities/spawn/try_slots.mcfunction b/data/protect_villagers/functions/entities/spawn/try_slots.mcfunction new file mode 100644 index 0000000..eaa2d75 --- /dev/null +++ b/data/protect_villagers/functions/entities/spawn/try_slots.mcfunction @@ -0,0 +1,17 @@ +scoreboard players set #spawn pv_spawn_done 0 + +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 -8 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_1 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 -6 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_2 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 -4 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_3 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 -2 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_4 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 0 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_5 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 2 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_6 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 4 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_7 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 6 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_8 +execute if score #spawn pv_spawn_done matches 0 positioned 0 65 8 unless entity @e[type=minecraft:villager,distance=..0.8] unless entity @e[type=guardvillagers:guard,distance=..0.8] run function protect_villagers:entities/spawn/slot_9 + +execute if score #spawn pv_spawn_done matches 0 run tellraw @s {"text":"Semua slot Villager sudah terisi.","color":"yellow"} +execute if score #spawn pv_spawn_done matches 1 run clear @s minecraft:emerald 50 +execute if score #spawn pv_spawn_done matches 1 run scoreboard players set @s pv_spawn_cd 300 +execute if score #spawn pv_spawn_done matches 1 run tellraw @s [{"text":"Villager baru berhasil dipanggil. ","color":"green"},{"text":"-50 Emerald","color":"yellow"}] +execute if score #spawn pv_spawn_done matches 1 run playsound minecraft:entity.villager.celebrate player @s ~ ~ ~ 1.2 1.0 \ No newline at end of file diff --git a/data/protect_villagers/functions/game/check_result.mcfunction b/data/protect_villagers/functions/game/check_result.mcfunction new file mode 100644 index 0000000..38e8b7f --- /dev/null +++ b/data/protect_villagers/functions/game/check_result.mcfunction @@ -0,0 +1,31 @@ +scoreboard players set #result pv_result_lock 1 + +function protect_villagers:entities/count + +# Pakai player di arena sebagai anchor supaya fireworks terjadwal tetap muncul di dimensi protect_villagers. +tag @a remove pv_firework_anchor +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run tag @s add pv_firework_anchor + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s times 20 140 60 + +execute if score #alive pv_alive matches 9.. run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s title {"text":"Perfect Victory!","color":"aqua","bold":true} +execute if score #alive pv_alive matches 9.. run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s subtitle [{"text":"Every villager survived. ","color":"white"},{"text":"Legendary defense!","color":"gold","bold":true}] + +execute if score #alive pv_alive matches 7..8 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s title {"text":"Victory!","color":"green","bold":true} +execute if score #alive pv_alive matches 7..8 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s subtitle [{"text":"The village stands. ","color":"yellow"},{"text":"Your defense held!","color":"green","bold":true}] + +execute if score #alive pv_alive matches 5..6 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s title {"text":"Survived!","color":"yellow","bold":true} +execute if score #alive pv_alive matches 5..6 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s subtitle [{"text":"Barely alive... ","color":"gold"},{"text":"but the village endures.","color":"gray"}] + +execute if score #alive pv_alive matches ..4 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s title {"text":"Defeat!","color":"red","bold":true} +execute if score #alive pv_alive matches ..4 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s subtitle [{"text":"Too many villagers have fallen.","color":"dark_red"}] + +execute if score #alive pv_alive matches 9.. run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run give @s minecraft:diamond 3 +execute if score #alive pv_alive matches 7..8 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run give @s minecraft:emerald 8 +execute if score #alive pv_alive matches 5..6 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run give @s minecraft:emerald 4 +execute if score #alive pv_alive matches ..4 run execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run give @s minecraft:bread 3 + +execute if score #alive pv_alive matches 9.. run function protect_villagers:game/fireworks_perfect +execute if score #alive pv_alive matches 7..8 run function protect_villagers:game/fireworks_victory +execute if score #alive pv_alive matches 5..6 run function protect_villagers:game/fireworks_survived +execute if score #alive pv_alive matches ..4 run playsound minecraft:entity.wither.death player @a[tag=pv_firework_anchor] ~ ~ ~ 0.8 0.7 diff --git a/data/protect_villagers/functions/game/fireworks_clear_anchor.mcfunction b/data/protect_villagers/functions/game/fireworks_clear_anchor.mcfunction new file mode 100644 index 0000000..9a269b1 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_clear_anchor.mcfunction @@ -0,0 +1 @@ +tag @a remove pv_firework_anchor diff --git a/data/protect_villagers/functions/game/fireworks_perfect.mcfunction b/data/protect_villagers/functions/game/fireworks_perfect.mcfunction new file mode 100644 index 0000000..044abe9 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_perfect.mcfunction @@ -0,0 +1,4 @@ +function protect_villagers:game/fireworks_perfect_1 +schedule function protect_villagers:game/fireworks_perfect_2 20t +schedule function protect_villagers:game/fireworks_perfect_3 40t +schedule function protect_villagers:game/fireworks_clear_anchor 80t diff --git a/data/protect_villagers/functions/game/fireworks_perfect_1.mcfunction b/data/protect_villagers/functions/game/fireworks_perfect_1.mcfunction new file mode 100644 index 0000000..f2354e4 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_perfect_1.mcfunction @@ -0,0 +1,5 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 70 0 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:4b,Colors:[I;15790320,16766720,11743532],FadeColors:[I;16777215],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 10 70 5 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:1b,Colors:[I;14602026,15435844,16776960],FadeColors:[I;15790320],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 20 70 -5 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:2b,Colors:[I;4312372,8073150,11743532],FadeColors:[I;16777215],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 70 8 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:4b,Colors:[I;16777215,16766720,14602026],FadeColors:[I;15435844],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_perfect_2.mcfunction b/data/protect_villagers/functions/game/fireworks_perfect_2.mcfunction new file mode 100644 index 0000000..e461835 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_perfect_2.mcfunction @@ -0,0 +1,5 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 5 70 0 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:1b,Colors:[I;16777215,11743532,4312372],FadeColors:[I;16766720],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 25 70 0 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:4b,Colors:[I;15790320,8073150,16766720],FadeColors:[I;16777215],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 70 -10 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:2b,Colors:[I;14602026,15435844,16776960],FadeColors:[I;15790320],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 73 10 {LifeTime:55,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:4b,Colors:[I;16766720,11743532,16777215],FadeColors:[I;4312372],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_perfect_3.mcfunction b/data/protect_villagers/functions/game/fireworks_perfect_3.mcfunction new file mode 100644 index 0000000..3609515 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_perfect_3.mcfunction @@ -0,0 +1,5 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 8 71 -7 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:4b,Colors:[I;15790320,16777215,16766720],FadeColors:[I;11743532],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 22 71 7 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:4b,Colors:[I;11743532,4312372,8073150],FadeColors:[I;16777215],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 72 0 {LifeTime:60,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:2b,Colors:[I;14602026,15435844,16776960,16777215],FadeColors:[I;16766720],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 75 0 {LifeTime:70,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:4b,Explosions:[{Type:4b,Colors:[I;16777215,16766720,15790320],FadeColors:[I;14602026],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_survived.mcfunction b/data/protect_villagers/functions/game/fireworks_survived.mcfunction new file mode 100644 index 0000000..d7db56a --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_survived.mcfunction @@ -0,0 +1,4 @@ +function protect_villagers:game/fireworks_survived_1 +schedule function protect_villagers:game/fireworks_survived_2 20t +schedule function protect_villagers:game/fireworks_survived_3 40t +schedule function protect_villagers:game/fireworks_clear_anchor 80t diff --git a/data/protect_villagers/functions/game/fireworks_survived_1.mcfunction b/data/protect_villagers/functions/game/fireworks_survived_1.mcfunction new file mode 100644 index 0000000..0e02da8 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_survived_1.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 0.9 0.8 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 70 0 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:1b,Explosions:[{Type:0b,Colors:[I;16755200,16766720,14602026],FadeColors:[I;16776960],Flicker:0b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 12 70 4 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:1b,Explosions:[{Type:1b,Colors:[I;11743532,15435844,16755200],FadeColors:[I;14602026],Flicker:0b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 18 70 -4 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:1b,Explosions:[{Type:0b,Colors:[I;14602026,16766720],FadeColors:[I;11743532],Flicker:0b,Trail:0b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_survived_2.mcfunction b/data/protect_villagers/functions/game/fireworks_survived_2.mcfunction new file mode 100644 index 0000000..082518b --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_survived_2.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 0.9 0.8 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 10 70 -5 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:1b,Explosions:[{Type:0b,Colors:[I;16755200,14602026,11743532],FadeColors:[I;16766720],Flicker:0b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 20 70 5 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:1b,Colors:[I;15435844,16755200,16766720],FadeColors:[I;14602026],Flicker:0b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 72 0 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:0b,Colors:[I;11743532,14602026,16755200],FadeColors:[I;16776960],Flicker:0b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_survived_3.mcfunction b/data/protect_villagers/functions/game/fireworks_survived_3.mcfunction new file mode 100644 index 0000000..3eeb4e6 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_survived_3.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 0.9 0.8 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 72 0 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:1b,Colors:[I;16755200,16766720,14602026],FadeColors:[I;11743532],Flicker:0b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 8 71 0 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:0b,Colors:[I;15435844,11743532],FadeColors:[I;16755200],Flicker:0b,Trail:0b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 22 71 0 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:0b,Colors:[I;14602026,16766720],FadeColors:[I;11743532],Flicker:0b,Trail:0b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_victory.mcfunction b/data/protect_villagers/functions/game/fireworks_victory.mcfunction new file mode 100644 index 0000000..05fda58 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_victory.mcfunction @@ -0,0 +1,4 @@ +function protect_villagers:game/fireworks_victory_1 +schedule function protect_villagers:game/fireworks_victory_2 20t +schedule function protect_villagers:game/fireworks_victory_3 40t +schedule function protect_villagers:game/fireworks_clear_anchor 80t diff --git a/data/protect_villagers/functions/game/fireworks_victory_1.mcfunction b/data/protect_villagers/functions/game/fireworks_victory_1.mcfunction new file mode 100644 index 0000000..4e1b153 --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_victory_1.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 70 0 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:1b,Colors:[I;3887386,4312372,8073150],FadeColors:[I;11250603],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 10 70 5 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:2b,Colors:[I;2437522,2651799,4312372],FadeColors:[I;3887386],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 20 70 -5 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:4b,Colors:[I;4312372,3887386,11743532],FadeColors:[I;15790320],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_victory_2.mcfunction b/data/protect_villagers/functions/game/fireworks_victory_2.mcfunction new file mode 100644 index 0000000..2659c4a --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_victory_2.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 7 70 -4 {LifeTime:35,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:2b,Explosions:[{Type:1b,Colors:[I;3887386,2437522,2651799],FadeColors:[I;4312372],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 23 70 4 {LifeTime:40,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:2b,Colors:[I;4312372,8073150,11250603],FadeColors:[I;15790320],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 72 8 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:4b,Colors:[I;3887386,4312372,11743532],FadeColors:[I;8073150],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/fireworks_victory_3.mcfunction b/data/protect_villagers/functions/game/fireworks_victory_3.mcfunction new file mode 100644 index 0000000..985894b --- /dev/null +++ b/data/protect_villagers/functions/game/fireworks_victory_3.mcfunction @@ -0,0 +1,4 @@ +playsound minecraft:entity.firework_rocket.launch player @a[tag=pv_firework_anchor] ~ ~ ~ 1.2 1.0 +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 15 72 0 {LifeTime:45,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:4b,Colors:[I;3887386,4312372,8073150,15790320],FadeColors:[I;11250603],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 10 72 -8 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:1b,Colors:[I;2437522,2651799,3887386],FadeColors:[I;4312372],Flicker:1b,Trail:1b}]}}}} +execute as @a[tag=pv_firework_anchor,limit=1] at @s if predicate protect_villagers:allowed_dimension run summon minecraft:firework_rocket 20 72 8 {LifeTime:50,FireworksItem:{id:"minecraft:firework_rocket",Count:1b,tag:{Fireworks:{Flight:3b,Explosions:[{Type:2b,Colors:[I;4312372,11743532,8073150],FadeColors:[I;15790320],Flicker:1b,Trail:1b}]}}}} diff --git a/data/protect_villagers/functions/game/villager_lost.mcfunction b/data/protect_villagers/functions/game/villager_lost.mcfunction new file mode 100644 index 0000000..9e4f837 --- /dev/null +++ b/data/protect_villagers/functions/game/villager_lost.mcfunction @@ -0,0 +1,8 @@ +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s times 10 60 20 + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s title {"text":"A Soul Has Fallen","color":"dark_red","bold":true} + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s subtitle [{"text":"The village grows weaker... ","color":"gray"},{"text":"Protect the survivors!","color":"red","bold":true}] + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run playsound minecraft:entity.wither.spawn player @s ~ ~ ~ 0.8 1.6 +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run playsound minecraft:entity.villager.death player @s ~ ~ ~ 1.0 0.7 diff --git a/data/protect_villagers/functions/load.mcfunction b/data/protect_villagers/functions/load.mcfunction new file mode 100644 index 0000000..c6d9fb7 --- /dev/null +++ b/data/protect_villagers/functions/load.mcfunction @@ -0,0 +1,43 @@ +scoreboard objectives add daytime dummy +scoreboard objectives add arena_reset_lock dummy + +# Pastikan lock punya nilai awal supaya kondisi "matches 0" bisa lolos. +scoreboard players set #arena arena_reset_lock 0 + +scoreboard objectives add pv_villagers dummy +scoreboard objectives add pv_guards dummy +scoreboard objectives add pv_alive dummy +scoreboard objectives add pv_result_lock dummy + +scoreboard players set #result pv_result_lock 0 + + +scoreboard objectives add pv_prev_alive dummy +scoreboard objectives add pv_death_lock dummy + +scoreboard players set #prev_alive pv_prev_alive 9 +scoreboard players set #death pv_death_lock 0 + +# Villager spawn button system +scoreboard objectives add pv_spawn_cd dummy +scoreboard objectives add pv_spawn_done dummy +scoreboard objectives add pv_emeralds dummy +scoreboard objectives add pv_button_lock dummy + +scoreboard players set #spawn pv_spawn_done 0 +scoreboard players set #button pv_button_lock 0 + +scoreboard objectives add pv_sidebar_villagers dummy +scoreboard objectives add pv_sidebar_guards dummy + +# Protect Villagers wave visual system +scoreboard objectives add pv_wave_lock dummy +scoreboard objectives add pv_wave_countdown dummy +scoreboard objectives add pv_wave_bar dummy +scoreboard players set #wave pv_wave_lock 0 +scoreboard players set #countdown pv_wave_countdown 0 +scoreboard players set #bar pv_wave_bar 0 +bossbar add protect_villagers:wave {"text":"Protect Villagers Wave","color":"gold","bold":true} +bossbar set protect_villagers:wave color red +bossbar set protect_villagers:wave style progress +bossbar set protect_villagers:wave visible false diff --git a/data/protect_villagers/functions/tick.mcfunction b/data/protect_villagers/functions/tick.mcfunction new file mode 100644 index 0000000..8a15580 --- /dev/null +++ b/data/protect_villagers/functions/tick.mcfunction @@ -0,0 +1,53 @@ +# Minecraft time: +# 06:00 = 0 +# 06:30 = 500 +# 07:00 = 1000 +# 08:00 = 2000 + +execute store result score #time daytime run time query daytime + +# Sistem visual wave: title, countdown, dan bossbar. +function protect_villagers:wave/tick + +# Hitung villager dan guard villager. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run function protect_villagers:entities/count + +# Kurangi cooldown spawn villager untuk player. +scoreboard players remove @a[scores={pv_spawn_cd=1..}] pv_spawn_cd 1 + +# Button spawn villager di -10 68 0. +# Hanya 1 player terdekat dari button yang diproses per sekali tekan. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] if block -10 68 0 minecraft:stone_button[powered=true] if score #button pv_button_lock matches 0 positioned -10 68 0 as @p[distance=..8] run function protect_villagers:entities/spawn/request + +# Buka lock button lagi setelah tombol tidak powered. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] unless block -10 68 0 minecraft:stone_button[powered=true] run scoreboard players set #button pv_button_lock 0 + +# Deteksi jika ada villager/guard yang mati. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] if score #alive pv_alive < #prev_alive pv_prev_alive run function protect_villagers:game/villager_lost + +# Simpan jumlah hidup terbaru. +scoreboard players operation #prev_alive pv_prev_alive = #alive pv_alive + +# Hitung emerald player setiap tick +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] store result score @s pv_emeralds run clear @s minecraft:emerald 0 + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run scoreboard players operation @s pv_sidebar_villagers = #villager pv_villagers + +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run scoreboard players operation @s pv_sidebar_guards = #guard pv_guards + +# Tampilkan actionbar hanya untuk player di arena. +# execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run title @s actionbar [{"text":"Villager: ","color":"yellow"},{"score":{"name":"#villager","objective":"pv_villagers"},"color":"white"},{"text":" | ","color":"gray"},{"text":"Guard Villagers: ","color":"green"},{"score":{"name":"#guard","objective":"pv_guards"},"color":"white"}] + +# Cek hasil game jam 06:30. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] if score #time daytime matches 500..510 if score #result pv_result_lock matches 0 run function protect_villagers:game/check_result + +# Reset arena jam 07:00. +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] if score #time daytime matches 1000..1010 if score #arena arena_reset_lock matches 0 run function protect_villagers:arena/reset + +# Buka lock hasil game setelah lewat jendela 06:30. +execute if score #time daytime matches 511..23999 run scoreboard players set #result pv_result_lock 0 +execute if score #time daytime matches 0..499 run scoreboard players set #result pv_result_lock 0 + +# Buka lock reset arena setelah lewat jendela 07:00. +execute if score #time daytime matches 1011..23999 run scoreboard players set #arena arena_reset_lock 0 +execute if score #time daytime matches 0..999 run scoreboard players set #arena arena_reset_lock 0 \ No newline at end of file diff --git a/data/protect_villagers/functions/wave/countdown/start.mcfunction b/data/protect_villagers/functions/wave/countdown/start.mcfunction new file mode 100644 index 0000000..01b6cd8 --- /dev/null +++ b/data/protect_villagers/functions/wave/countdown/start.mcfunction @@ -0,0 +1,6 @@ +scoreboard players set #countdown pv_wave_countdown 180 +scoreboard players set #wave pv_wave_lock -1 +title @a[tag=pv_wave_viewer] times 0 20 0 +title @a[tag=pv_wave_viewer] subtitle {"text":"Monster mulai spawn pukul 19:20. Bersiap!","color":"gold"} +title @a[tag=pv_wave_viewer] title {"text":"Night Incoming","color":"red","bold":true} +playsound minecraft:block.bell.use master @a[tag=pv_wave_viewer] -10 68 0 1 0.7 diff --git a/data/protect_villagers/functions/wave/countdown/tick.mcfunction b/data/protect_villagers/functions/wave/countdown/tick.mcfunction new file mode 100644 index 0000000..a1d607e --- /dev/null +++ b/data/protect_villagers/functions/wave/countdown/tick.mcfunction @@ -0,0 +1,37 @@ +execute if score #countdown pv_wave_countdown matches 180 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 180 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 180 run title @a[tag=pv_wave_viewer] title {"text":"9","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 180 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 160 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 160 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 160 run title @a[tag=pv_wave_viewer] title {"text":"8","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 160 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 140 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 140 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 140 run title @a[tag=pv_wave_viewer] title {"text":"7","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 140 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 120 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 120 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 120 run title @a[tag=pv_wave_viewer] title {"text":"6","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 120 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 100 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 100 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 100 run title @a[tag=pv_wave_viewer] title {"text":"5","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 100 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 80 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 80 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 80 run title @a[tag=pv_wave_viewer] title {"text":"4","color":"gold","bold":true} +execute if score #countdown pv_wave_countdown matches 80 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 60 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 60 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 60 run title @a[tag=pv_wave_viewer] title {"text":"3","color":"red","bold":true} +execute if score #countdown pv_wave_countdown matches 60 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 40 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 40 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 40 run title @a[tag=pv_wave_viewer] title {"text":"2","color":"red","bold":true} +execute if score #countdown pv_wave_countdown matches 40 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +execute if score #countdown pv_wave_countdown matches 20 run title @a[tag=pv_wave_viewer] times 0 20 0 +execute if score #countdown pv_wave_countdown matches 20 run title @a[tag=pv_wave_viewer] subtitle {"text":"Siapkan villager dan guard villagers!","color":"yellow"} +execute if score #countdown pv_wave_countdown matches 20 run title @a[tag=pv_wave_viewer] title {"text":"1","color":"red","bold":true} +execute if score #countdown pv_wave_countdown matches 20 run playsound minecraft:block.note_block.pling master @a[tag=pv_wave_viewer] -10 68 0 1 1 +scoreboard players remove #countdown pv_wave_countdown 1 diff --git a/data/protect_villagers/functions/wave/progress/wave_1.mcfunction b/data/protect_villagers/functions/wave/progress/wave_1.mcfunction new file mode 100644 index 0000000..18d7ff0 --- /dev/null +++ b/data/protect_villagers/functions/wave/progress/wave_1.mcfunction @@ -0,0 +1,6 @@ +bossbar set protect_villagers:wave visible true +scoreboard players operation #bar pv_wave_bar = #time daytime +scoreboard players remove #bar pv_wave_bar 14000 +execute if score #bar pv_wave_bar matches ..0 run scoreboard players set #bar pv_wave_bar 0 +execute if score #bar pv_wave_bar matches 3500.. run scoreboard players set #bar pv_wave_bar 3500 +execute store result bossbar protect_villagers:wave value run scoreboard players get #bar pv_wave_bar diff --git a/data/protect_villagers/functions/wave/progress/wave_2.mcfunction b/data/protect_villagers/functions/wave/progress/wave_2.mcfunction new file mode 100644 index 0000000..7ce2b0e --- /dev/null +++ b/data/protect_villagers/functions/wave/progress/wave_2.mcfunction @@ -0,0 +1,6 @@ +bossbar set protect_villagers:wave visible true +scoreboard players operation #bar pv_wave_bar = #time daytime +scoreboard players remove #bar pv_wave_bar 18000 +execute if score #bar pv_wave_bar matches ..0 run scoreboard players set #bar pv_wave_bar 0 +execute if score #bar pv_wave_bar matches 3667.. run scoreboard players set #bar pv_wave_bar 3667 +execute store result bossbar protect_villagers:wave value run scoreboard players get #bar pv_wave_bar diff --git a/data/protect_villagers/functions/wave/progress/wave_3.mcfunction b/data/protect_villagers/functions/wave/progress/wave_3.mcfunction new file mode 100644 index 0000000..ae276fa --- /dev/null +++ b/data/protect_villagers/functions/wave/progress/wave_3.mcfunction @@ -0,0 +1,6 @@ +bossbar set protect_villagers:wave visible true +scoreboard players operation #bar pv_wave_bar = #time daytime +scoreboard players remove #bar pv_wave_bar 22000 +execute if score #bar pv_wave_bar matches ..0 run scoreboard players set #bar pv_wave_bar 0 +execute if score #bar pv_wave_bar matches 833.. run scoreboard players set #bar pv_wave_bar 833 +execute store result bossbar protect_villagers:wave value run scoreboard players get #bar pv_wave_bar diff --git a/data/protect_villagers/functions/wave/progress/wave_4.mcfunction b/data/protect_villagers/functions/wave/progress/wave_4.mcfunction new file mode 100644 index 0000000..173bc11 --- /dev/null +++ b/data/protect_villagers/functions/wave/progress/wave_4.mcfunction @@ -0,0 +1,6 @@ +bossbar set protect_villagers:wave visible true +scoreboard players operation #bar pv_wave_bar = #time daytime +scoreboard players remove #bar pv_wave_bar 23000 +execute if score #bar pv_wave_bar matches ..0 run scoreboard players set #bar pv_wave_bar 0 +execute if score #bar pv_wave_bar matches 917.. run scoreboard players set #bar pv_wave_bar 917 +execute store result bossbar protect_villagers:wave value run scoreboard players get #bar pv_wave_bar diff --git a/data/protect_villagers/functions/wave/start/wave_1.mcfunction b/data/protect_villagers/functions/wave/start/wave_1.mcfunction new file mode 100644 index 0000000..b179e6c --- /dev/null +++ b/data/protect_villagers/functions/wave/start/wave_1.mcfunction @@ -0,0 +1,11 @@ +scoreboard players set #wave pv_wave_lock 1 +title @a[tag=pv_wave_viewer] times 10 50 10 +title @a[tag=pv_wave_viewer] subtitle {"text":"First Howl","color":"red","bold":true} +title @a[tag=pv_wave_viewer] title {"text":"Wave 1","color":"gold","bold":true} +playsound minecraft:entity.ender_dragon.growl master @a[tag=pv_wave_viewer] -10 68 0 0.7 1 +bossbar set protect_villagers:wave name {"text":"Wave 1 - First Howl","color":"red","bold":true} +bossbar set protect_villagers:wave max 3500 +bossbar set protect_villagers:wave value 0 +bossbar set protect_villagers:wave color red +bossbar set protect_villagers:wave visible true +bossbar set protect_villagers:wave players @a[tag=pv_wave_viewer] diff --git a/data/protect_villagers/functions/wave/start/wave_2.mcfunction b/data/protect_villagers/functions/wave/start/wave_2.mcfunction new file mode 100644 index 0000000..9e30ac5 --- /dev/null +++ b/data/protect_villagers/functions/wave/start/wave_2.mcfunction @@ -0,0 +1,11 @@ +scoreboard players set #wave pv_wave_lock 2 +title @a[tag=pv_wave_viewer] times 10 50 10 +title @a[tag=pv_wave_viewer] subtitle {"text":"Midnight Siege","color":"purple","bold":true} +title @a[tag=pv_wave_viewer] title {"text":"Wave 2","color":"gold","bold":true} +playsound minecraft:entity.ender_dragon.growl master @a[tag=pv_wave_viewer] -10 68 0 0.7 1 +bossbar set protect_villagers:wave name {"text":"Wave 2 - Midnight Siege","color":"purple","bold":true} +bossbar set protect_villagers:wave max 3667 +bossbar set protect_villagers:wave value 0 +bossbar set protect_villagers:wave color purple +bossbar set protect_villagers:wave visible true +bossbar set protect_villagers:wave players @a[tag=pv_wave_viewer] diff --git a/data/protect_villagers/functions/wave/start/wave_3.mcfunction b/data/protect_villagers/functions/wave/start/wave_3.mcfunction new file mode 100644 index 0000000..8242c62 --- /dev/null +++ b/data/protect_villagers/functions/wave/start/wave_3.mcfunction @@ -0,0 +1,11 @@ +scoreboard players set #wave pv_wave_lock 3 +title @a[tag=pv_wave_viewer] times 10 50 10 +title @a[tag=pv_wave_viewer] subtitle {"text":"Dead Hour","color":"blue","bold":true} +title @a[tag=pv_wave_viewer] title {"text":"Wave 3","color":"gold","bold":true} +playsound minecraft:entity.ender_dragon.growl master @a[tag=pv_wave_viewer] -10 68 0 0.7 1 +bossbar set protect_villagers:wave name {"text":"Wave 3 - Dead Hour","color":"blue","bold":true} +bossbar set protect_villagers:wave max 833 +bossbar set protect_villagers:wave value 0 +bossbar set protect_villagers:wave color purple +bossbar set protect_villagers:wave visible true +bossbar set protect_villagers:wave players @a[tag=pv_wave_viewer] diff --git a/data/protect_villagers/functions/wave/start/wave_4.mcfunction b/data/protect_villagers/functions/wave/start/wave_4.mcfunction new file mode 100644 index 0000000..522ab5d --- /dev/null +++ b/data/protect_villagers/functions/wave/start/wave_4.mcfunction @@ -0,0 +1,11 @@ +scoreboard players set #wave pv_wave_lock 4 +title @a[tag=pv_wave_viewer] times 10 50 10 +title @a[tag=pv_wave_viewer] subtitle {"text":"Dawn Breaker","color":"yellow","bold":true} +title @a[tag=pv_wave_viewer] title {"text":"Wave 4","color":"gold","bold":true} +playsound minecraft:entity.ender_dragon.growl master @a[tag=pv_wave_viewer] -10 68 0 0.7 1 +bossbar set protect_villagers:wave name {"text":"Wave 4 - Dawn Breaker","color":"yellow","bold":true} +bossbar set protect_villagers:wave max 917 +bossbar set protect_villagers:wave value 0 +bossbar set protect_villagers:wave color yellow +bossbar set protect_villagers:wave visible true +bossbar set protect_villagers:wave players @a[tag=pv_wave_viewer] diff --git a/data/protect_villagers/functions/wave/tick.mcfunction b/data/protect_villagers/functions/wave/tick.mcfunction new file mode 100644 index 0000000..71e5200 --- /dev/null +++ b/data/protect_villagers/functions/wave/tick.mcfunction @@ -0,0 +1,33 @@ +# Tandai player yang sedang berada di arena Protect Villagers. +# Ini lebih aman untuk custom dimension, karena pengecekan area dilakukan dari posisi player sendiri. +tag @a remove pv_wave_viewer +execute as @a at @s if predicate protect_villagers:allowed_dimension if entity @s[x=-39,y=57,z=-27,dx=108,dy=42,dz=54] run tag @s add pv_wave_viewer + +# Update target player bossbar hanya untuk player di arena. +bossbar set protect_villagers:wave players @a[tag=pv_wave_viewer] + +# Countdown persiapan 9 detik sebelum monster mulai spawn sekitar 19:20. +execute if score #time daytime matches 13153..13333 if score #countdown pv_wave_countdown matches 0 if score #wave pv_wave_lock matches 0 run function protect_villagers:wave/countdown/start +execute if score #countdown pv_wave_countdown matches 1.. run function protect_villagers:wave/countdown/tick + +# Trigger title wave. Jika server /reload atau player masuk saat wave sudah berjalan, sistem tetap recover. +execute if score #time daytime matches 14000..17500 unless score #wave pv_wave_lock matches 1 run function protect_villagers:wave/start/wave_1 +execute if score #time daytime matches 18000..21667 unless score #wave pv_wave_lock matches 2 run function protect_villagers:wave/start/wave_2 +execute if score #time daytime matches 22000..22833 unless score #wave pv_wave_lock matches 3 run function protect_villagers:wave/start/wave_3 +execute if score #time daytime matches 23000..23917 unless score #wave pv_wave_lock matches 4 run function protect_villagers:wave/start/wave_4 + +# Progress bossbar aktif sesuai rentang wave. +execute if score #time daytime matches 14000..17500 run function protect_villagers:wave/progress/wave_1 +execute if score #time daytime matches 18000..21667 run function protect_villagers:wave/progress/wave_2 +execute if score #time daytime matches 22000..22833 run function protect_villagers:wave/progress/wave_3 +execute if score #time daytime matches 23000..23917 run function protect_villagers:wave/progress/wave_4 + +# Sembunyikan bossbar ketika sedang jeda antar wave. +execute if score #time daytime matches 17501..17999 run bossbar set protect_villagers:wave visible false +execute if score #time daytime matches 21668..21999 run bossbar set protect_villagers:wave visible false +execute if score #time daytime matches 22834..22999 run bossbar set protect_villagers:wave visible false +execute if score #time daytime matches 23918..23999 run bossbar set protect_villagers:wave visible false +execute if score #time daytime matches 0..13999 run bossbar set protect_villagers:wave visible false + +# Reset harian sebelum malam berikutnya. +execute if score #time daytime matches 12000..13000 if score #wave pv_wave_lock matches 4 run scoreboard players set #wave pv_wave_lock 0 diff --git a/data/protect_villagers/predicates/allowed_dimension.json b/data/protect_villagers/predicates/allowed_dimension.json new file mode 100644 index 0000000..7ffca29 --- /dev/null +++ b/data/protect_villagers/predicates/allowed_dimension.json @@ -0,0 +1,6 @@ +{ + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:protect_villagers" + } +} \ No newline at end of file diff --git a/data/trashslot/functions/move_slot_26_to_empty.mcfunction b/data/trashslot/functions/move_slot_26_to_empty.mcfunction new file mode 100644 index 0000000..110e94f --- /dev/null +++ b/data/trashslot/functions/move_slot_26_to_empty.mcfunction @@ -0,0 +1,109 @@ +# Cari slot kosong pertama, lalu salin item dari inventory.26 ke slot tersebut. +# Patch: ts_moved hanya dipasang jika command item replace benar-benar sukses, +# bukan sekadar karena slot target terdeteksi berisi item. Ini mencegah false-positive +# yang membuat actionbar muncul tetapi item asli kemudian hilang. +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:9b}] store success score @s trashslot_success run item replace entity @s inventory.0 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:10b}] store success score @s trashslot_success run item replace entity @s inventory.1 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:11b}] store success score @s trashslot_success run item replace entity @s inventory.2 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:12b}] store success score @s trashslot_success run item replace entity @s inventory.3 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:13b}] store success score @s trashslot_success run item replace entity @s inventory.4 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:14b}] store success score @s trashslot_success run item replace entity @s inventory.5 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:15b}] store success score @s trashslot_success run item replace entity @s inventory.6 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:16b}] store success score @s trashslot_success run item replace entity @s inventory.7 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:17b}] store success score @s trashslot_success run item replace entity @s inventory.8 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:18b}] store success score @s trashslot_success run item replace entity @s inventory.9 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:19b}] store success score @s trashslot_success run item replace entity @s inventory.10 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:20b}] store success score @s trashslot_success run item replace entity @s inventory.11 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:21b}] store success score @s trashslot_success run item replace entity @s inventory.12 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:22b}] store success score @s trashslot_success run item replace entity @s inventory.13 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:23b}] store success score @s trashslot_success run item replace entity @s inventory.14 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:24b}] store success score @s trashslot_success run item replace entity @s inventory.15 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:25b}] store success score @s trashslot_success run item replace entity @s inventory.16 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:26b}] store success score @s trashslot_success run item replace entity @s inventory.17 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:27b}] store success score @s trashslot_success run item replace entity @s inventory.18 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:28b}] store success score @s trashslot_success run item replace entity @s inventory.19 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:29b}] store success score @s trashslot_success run item replace entity @s inventory.20 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:30b}] store success score @s trashslot_success run item replace entity @s inventory.21 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:31b}] store success score @s trashslot_success run item replace entity @s inventory.22 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:32b}] store success score @s trashslot_success run item replace entity @s inventory.23 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:33b}] store success score @s trashslot_success run item replace entity @s inventory.24 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:34b}] store success score @s trashslot_success run item replace entity @s inventory.25 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:0b}] store success score @s trashslot_success run item replace entity @s hotbar.0 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:1b}] store success score @s trashslot_success run item replace entity @s hotbar.1 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:2b}] store success score @s trashslot_success run item replace entity @s hotbar.2 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:3b}] store success score @s trashslot_success run item replace entity @s hotbar.3 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:4b}] store success score @s trashslot_success run item replace entity @s hotbar.4 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:5b}] store success score @s trashslot_success run item replace entity @s hotbar.5 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:6b}] store success score @s trashslot_success run item replace entity @s hotbar.6 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:7b}] store success score @s trashslot_success run item replace entity @s hotbar.7 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 +execute unless entity @s[tag=ts_moved] unless data entity @s Inventory[{Slot:8b}] store success score @s trashslot_success run item replace entity @s hotbar.8 from entity @s inventory.26 +execute unless entity @s[tag=ts_moved] if score @s trashslot_success matches 1.. run tag @s add ts_moved +scoreboard players set @s[tag=!ts_moved] trashslot_success 0 diff --git a/data/trashslot/functions/save_slot_26.mcfunction b/data/trashslot/functions/save_slot_26.mcfunction new file mode 100644 index 0000000..11941f8 --- /dev/null +++ b/data/trashslot/functions/save_slot_26.mcfunction @@ -0,0 +1,20 @@ +# Simpan jumlah item sebelum slot 26 dikosongkan. +execute store result score @s trashslot_count run data get entity @s Inventory[{Slot:35b}].Count + +# Flag internal agar item hanya dipindahkan satu kali. +scoreboard players set @s trashslot_success 0 +tag @s remove ts_moved +tag @s remove ts_slot26_protected + +# Coba pindahkan item dari slot 26 ke slot kosong pertama. +function trashslot:move_slot_26_to_empty + +# Beri pesan jika berhasil. Nama item ditampilkan sebagai item id agar selalu muncul, termasuk item tanpa custom name. +execute if entity @s[tag=ts_moved] run title @s actionbar [{"score":{"name":"@s","objective":"trashslot_count"}},{"text":" "},{"nbt":"Inventory[{Slot:35b}].id","entity":"@s"},{"text":" telah dipindahkan.","color":"green"}] + +# Kosongkan slot 26 setelah item berhasil disalin ke slot kosong. +execute if entity @s[tag=ts_moved] run item replace entity @s inventory.26 with air + +# Kalau inventory penuh, jangan timpa item. Trash Slot akan aktif setelah player mengosongkan/memindahkan slot 26. +execute unless entity @s[tag=ts_moved] run tag @s add ts_slot26_protected +execute unless entity @s[tag=ts_moved] run title @s actionbar {"text":"Trash Slot belum aktif: inventory penuh, item di slot 26 tidak dipindahkan.","color":"red"} diff --git a/data/trashslot/functions/tick.mcfunction b/data/trashslot/functions/tick.mcfunction new file mode 100644 index 0000000..cc2f1fa --- /dev/null +++ b/data/trashslot/functions/tick.mcfunction @@ -0,0 +1,41 @@ +# Objective untuk menampilkan jumlah item yang dipindahkan dari slot 26. +# Aman walaupun dijalankan berulang; jika objective sudah ada, command ini hanya gagal diam-diam. +scoreboard objectives add trashslot_count dummy +scoreboard objectives add trashslot_success dummy + +# Tandai player yang sedang berada di mode bebas. +# Tag ini dipakai untuk mendeteksi transisi dari creative/spectator ke survival/adventure. +tag @a[gamemode=creative] add ts_free_mode +tag @a[gamemode=spectator] add ts_free_mode +tag @a[gamemode=creative] remove ts_transition_checked +tag @a[gamemode=spectator] remove ts_transition_checked +tag @a[gamemode=creative] remove ts_slot26_protected +tag @a[gamemode=spectator] remove ts_slot26_protected + +# Hapus hanya icon Trash Slot saat player masuk creative/spectator. +# Jangan pakai item replace inventory.26 with air tanpa kondisi, karena itu akan +# menghapus item apa pun yang ditaruh player di slot 26 setiap tick. +clear @a[gamemode=creative] minecraft:barrier{CustomModelData:87274} 1 +clear @a[gamemode=spectator] minecraft:barrier{CustomModelData:87274} 1 + +# Bersihkan item trash lama dari player survival/adventure. +clear @a[gamemode=!creative,gamemode=!spectator] minecraft:barrier{CustomModelData:87274} + +# Saat baru pindah dari creative/spectator ke survival/adventure, selamatkan item asli di slot 26 satu kali saja. +# NBT Slot 35b = command slot inventory.26. +execute as @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=!ts_transition_checked] at @s if predicate trashslot:allowed_dimension if data entity @s Inventory[{Slot:35b}] unless data entity @s Inventory[{Slot:35b,id:"minecraft:barrier",tag:{CustomModelData:87274}}] run function trashslot:save_slot_26 +tag @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=!ts_transition_checked] add ts_transition_checked +tag @a[gamemode=!creative,gamemode=!spectator,tag=ts_free_mode,tag=ts_transition_checked] remove ts_free_mode + +# Jika player survival/adventure memang membuang item ke slot 26 saat Trash Slot aktif, hapus diam-diam. +# Ini tidak menampilkan actionbar, dan tidak menjalankan fungsi pemindahan item. +execute as @a[gamemode=!creative,gamemode=!spectator,tag=!ts_slot26_protected] at @s if predicate trashslot:allowed_dimension if data entity @s Inventory[{Slot:35b}] unless data entity @s Inventory[{Slot:35b,id:"minecraft:barrier",tag:{CustomModelData:87274}}] run item replace entity @s inventory.26 with air + +# Jika sebelumnya slot 26 dilindungi karena inventory penuh, lepaskan proteksi setelah slot 26 kosong. +execute as @a[gamemode=!creative,gamemode=!spectator,tag=ts_slot26_protected] unless data entity @s Inventory[{Slot:35b}] run tag @s remove ts_slot26_protected + +# Pasang trash slot hanya kalau slot 26 kosong, supaya item asli tidak tertimpa. +execute as @a[gamemode=!creative,gamemode=!spectator] at @s if predicate trashslot:allowed_dimension unless data entity @s Inventory[{Slot:35b}] run item replace entity @s inventory.26 with minecraft:barrier{CustomModelData:87274,HideFlags:32,display:{Name:'{"text":"Trash Slot","color":"dark_red","italic":false}',Lore:['{"text":"ZombiiAttack","color":"gray","italic":true}']}} + +# Hancurkan item trash yang terlempar ke world jika berupa item icon Trash Slot. +kill @e[type=item,nbt={Item:{tag:{display:{Name:'{"extra":[{"italic":false,"color":"dark_red","text":"Trash Slot"}],"text":""}'}}}}] diff --git a/data/trashslot/predicates/allowed_dimension.json b/data/trashslot/predicates/allowed_dimension.json new file mode 100644 index 0000000..4a73e4e --- /dev/null +++ b/data/trashslot/predicates/allowed_dimension.json @@ -0,0 +1,47 @@ +{ + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:overworld" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:the_nether" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:the_end" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:csgo" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:protect_villagers" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:saving_ryan" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:the_labyrinth" + } + } + ] +} \ No newline at end of file diff --git a/data/xaerominimap/functions/load.mcfunction b/data/xaerominimap/functions/load.mcfunction new file mode 100644 index 0000000..59e7f4c --- /dev/null +++ b/data/xaerominimap/functions/load.mcfunction @@ -0,0 +1,8 @@ +schedule function xaerominimap:load 20t replace + +# Bypass: player dengan tag xaero_bypass selalu boleh memakai minimap di semua dimensi. +execute as @a[tag=xaero_bypass] run effect clear @s xaerominimap:no_minimap + +# Non-bypass: minimap hanya boleh aktif di dimensi yang masuk predicate allowed_dimension. +execute as @a[tag=!xaero_bypass] at @s if predicate xaerominimap:allowed_dimension run effect clear @s xaerominimap:no_minimap +execute as @a[tag=!xaero_bypass] at @s unless predicate xaerominimap:allowed_dimension run effect give @s xaerominimap:no_minimap 3 0 true \ No newline at end of file diff --git a/data/xaerominimap/predicates/allowed_dimension.json b/data/xaerominimap/predicates/allowed_dimension.json new file mode 100644 index 0000000..f93b14d --- /dev/null +++ b/data/xaerominimap/predicates/allowed_dimension.json @@ -0,0 +1,35 @@ +{ + "condition": "minecraft:any_of", + "terms": [ + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:overworld" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:the_nether" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "minecraft:the_end" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:csgo" + } + }, + { + "condition": "minecraft:location_check", + "predicate": { + "dimension": "zombiiattack:saving_ryan" + } + } + ] +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/creative.json b/data/zombiiattack/dimension/creative.json new file mode 100644 index 0000000..237f6ed --- /dev/null +++ b/data/zombiiattack/dimension/creative.json @@ -0,0 +1,11 @@ +{ + "type": "zombiiattack:creative", + "generator": { + "type": "minecraft:noise", + "settings": "minecraft:overworld", + "biome_source": { + "type": "minecraft:multi_noise", + "preset": "minecraft:overworld" + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/csgo.json b/data/zombiiattack/dimension/csgo.json new file mode 100644 index 0000000..93e7847 --- /dev/null +++ b/data/zombiiattack/dimension/csgo.json @@ -0,0 +1,13 @@ +{ + "type": "zombiiattack:arena", + "generator": { + "type": "minecraft:flat", + "settings": { + "biome": "minecraft:plains", + "features": false, + "lakes": false, + "layers": [], + "structure_overrides": [] + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/lobby.json b/data/zombiiattack/dimension/lobby.json new file mode 100644 index 0000000..5106cc7 --- /dev/null +++ b/data/zombiiattack/dimension/lobby.json @@ -0,0 +1,18 @@ +{ + "type": "zombiiattack:lobby", + "generator": { + "type": "minecraft:flat", + "settings": { + "biome": "minecraft:plains", + "features": false, + "lakes": false, + "structure_overrides": [], + "layers": [ + { + "block": "minecraft:air", + "height": 1 + } + ] + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/protect_villagers.json b/data/zombiiattack/dimension/protect_villagers.json new file mode 100644 index 0000000..93e7847 --- /dev/null +++ b/data/zombiiattack/dimension/protect_villagers.json @@ -0,0 +1,13 @@ +{ + "type": "zombiiattack:arena", + "generator": { + "type": "minecraft:flat", + "settings": { + "biome": "minecraft:plains", + "features": false, + "lakes": false, + "layers": [], + "structure_overrides": [] + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/saving_ryan.json b/data/zombiiattack/dimension/saving_ryan.json new file mode 100644 index 0000000..93e7847 --- /dev/null +++ b/data/zombiiattack/dimension/saving_ryan.json @@ -0,0 +1,13 @@ +{ + "type": "zombiiattack:arena", + "generator": { + "type": "minecraft:flat", + "settings": { + "biome": "minecraft:plains", + "features": false, + "lakes": false, + "layers": [], + "structure_overrides": [] + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension/the_labyrinth.json b/data/zombiiattack/dimension/the_labyrinth.json new file mode 100644 index 0000000..93e7847 --- /dev/null +++ b/data/zombiiattack/dimension/the_labyrinth.json @@ -0,0 +1,13 @@ +{ + "type": "zombiiattack:arena", + "generator": { + "type": "minecraft:flat", + "settings": { + "biome": "minecraft:plains", + "features": false, + "lakes": false, + "layers": [], + "structure_overrides": [] + } + } +} \ No newline at end of file diff --git a/data/zombiiattack/dimension_type/arena.json b/data/zombiiattack/dimension_type/arena.json new file mode 100644 index 0000000..8343617 --- /dev/null +++ b/data/zombiiattack/dimension_type/arena.json @@ -0,0 +1,25 @@ +{ + "ultrawarm": false, + "natural": true, + "coordinate_scale": 1.0, + "piglin_safe": false, + "respawn_anchor_works": false, + "bed_works": true, + "has_raids": true, + "has_skylight": true, + "has_ceiling": false, + "ambient_light": 0.0, + "logical_height": 384, + "infiniburn": "#minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "min_y": -64, + "height": 384, + "monster_spawn_light_level": { + "type": "minecraft:uniform", + "value": { + "min_inclusive": 0, + "max_inclusive": 7 + } + }, + "monster_spawn_block_light_limit": 0 +} \ No newline at end of file diff --git a/data/zombiiattack/dimension_type/creative.json b/data/zombiiattack/dimension_type/creative.json new file mode 100644 index 0000000..6df7ed8 --- /dev/null +++ b/data/zombiiattack/dimension_type/creative.json @@ -0,0 +1,25 @@ +{ + "ultrawarm": false, + "natural": true, + "coordinate_scale": 1.0, + "has_skylight": true, + "has_ceiling": false, + "ambient_light": 0.0, + "piglin_safe": false, + "bed_works": true, + "respawn_anchor_works": false, + "has_raids": true, + "logical_height": 384, + "min_y": -64, + "height": 384, + "infiniburn": "#minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "monster_spawn_light_level": { + "type": "minecraft:uniform", + "value": { + "min_inclusive": 0, + "max_inclusive": 7 + } + }, + "monster_spawn_block_light_limit": 0 +} \ No newline at end of file diff --git a/data/zombiiattack/dimension_type/lobby.json b/data/zombiiattack/dimension_type/lobby.json new file mode 100644 index 0000000..b890c5a --- /dev/null +++ b/data/zombiiattack/dimension_type/lobby.json @@ -0,0 +1,26 @@ +{ + "ultrawarm": false, + "natural": false, + "coordinate_scale": 1.0, + "has_skylight": true, + "has_ceiling": false, + "ambient_light": 0.0, + "fixed_time": 6000, + "piglin_safe": true, + "bed_works": false, + "respawn_anchor_works": false, + "has_raids": false, + "logical_height": 384, + "min_y": -64, + "height": 384, + "infiniburn": "#minecraft:infiniburn_overworld", + "effects": "minecraft:overworld", + "monster_spawn_light_level": { + "type": "minecraft:uniform", + "value": { + "min_inclusive": 0, + "max_inclusive": 0 + } + }, + "monster_spawn_block_light_limit": 0 +} \ No newline at end of file diff --git a/pack.mcmeta b/pack.mcmeta new file mode 100644 index 0000000..7a069d4 --- /dev/null +++ b/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 15, + "description": "KLoningSpoon presents: ZombiiAttack" + } +} \ No newline at end of file diff --git a/pack.png b/pack.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4fe05d67d3c90b249f2f636d111cee48493909 GIT binary patch literal 96522 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