PK NBT pack.mcmeta{ "pack": { "pack_format": 8, "description": "A Gamemode 4 Module" }, "module_name": "Liquid Minecarts", "module_id": "liquid_minecarts", "site_description": "Allows Minecarts to move fluids between Liquid Tanks", "site_categories": [ "Liquid Tanks" ], "video_link": "", "wiki_link": "https://wiki.gm4.co/wiki/Liquid_Tanks/Liquid_Minecarts", "required_modules": [ "liquid_tanks" ], "recommended_modules": [ "potion_liquids" ], "credits": { "Creator": [ { "name": "Sparks", "links": [ "https://twitter.com/SparksTheGamer" ] } ], "Icon Design": [ { "name": "DuckJr", "links": [ "https://twitter.com/DuckJr94" ] } ] } } PK GBT[@ɺ " data/gm4/functions/init.mcfunction#This function runs if gamemode 4 has never been used before. #It adds global scoreboards and other gamemode 4 base code. tellraw @a [{"translate": "%1$s%3427655$s","with":["[GM4]: ",{"translate": "text.gm4.prefix"}],"color":"green"},{"translate": "%1$s%3427655$s","with":["Welcome to Gamemode 4. Initialising...",{"translate": "text.gm4.modules.init"}],"color":"green"}] execute unless entity @a[limit=1] run say [GM4]: Welcome to Gamemode 4. Initialising... #declare and initialise scoreboards and settings scoreboard objectives add gm4_clock_tick dummy scoreboard objectives add gm4_modules dummy scoreboard players set gm4 gm4_up_check 1 scoreboard players set update_happened gm4_up_check 1 PK GBTB| " data/gm4/functions/load.mcfunction#This function runs every time a world/server is restarted or /reload is run. #It waits for a player to be online before checking for updates. execute if entity @a[limit=1] run function gm4:update execute unless entity @a[limit=1] run schedule function gm4:load 1t PK GBT~ ) data/gm4/functions/out_of_date.mcfunction#print out-of-date message tellraw @a [{"translate":"%1$s%3427655$s","with":["[GM4]: ",{"translate":"text.gm4.prefix"}],"color":"aqua"},{"translate":"%1$s%3427655$s","with":[["Some of your modules are outdated: ",{"selector":"@e[type=area_effect_cloud,tag=gm4_update_message]","color":"gold"}],{"translate":"text.gm4.modules.outdated","with":[{"selector":"@e[type=area_effect_cloud,tag=gm4_update_message]","color":"gold"}]}]}] tellraw @a [{"translate": "%1$s%3427655$s","with":["[GM4]: ",{"translate": "text.gm4.prefix"}],"color":"aqua"},{"translate": "%1$s%3427655$s","with":["Click to visit our site with the latest versions.",{"translate": "text.gm4.modules.outdated_link"}],"color":"white","underlined":true,"clickEvent":{"action":"open_url","value":"https://www.gm4.co/modules/"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"translate":"%1$s%3427655$s","with":["Click to visit gm4.co/modules/",{"translate":"text.gm4.modules.update.hover_text"}],"color":"aqua"}]}}}] kill @e[type=area_effect_cloud,tag=gm4_update_message] PK GBT0,Z " data/gm4/functions/tick.mcfunction#runs every tick scoreboard players add current_tick gm4_clock_tick 1 execute if score current_tick gm4_clock_tick matches 16.. run scoreboard players set current_tick gm4_clock_tick 0 function #gm4:pulse_check PK GBTΦ $ data/gm4/functions/update.mcfunction#This function runs every time after world/server is restarted or /reload is run and a player is online. #It checks for new modules, tells them to initialise and informs the player. tellraw @a [{"translate": "%1$s%3427655$s","with":["[GM4]: ",{"translate": "text.gm4.prefix"}],"color":"aqua"},{"translate": "%1$s%3427655$s","with":["Checking for updates...",{"translate": "text.gm4.modules.update.check"}],"color":"aqua"}] execute unless entity @a[limit=1] run say [GM4]: Checking for updates... #set update_happened to false until proven otherwise scoreboard objectives add gm4_up_check dummy scoreboard players set update_happened gm4_up_check 0 #check if GM4 has been used here before execute unless score gm4 gm4_up_check matches 1.. run function gm4:init #get all modules to check if they need installing scoreboard players set installed_modules gm4_up_check 0 function #gm4:init_check #announce success of update if one happened. execute if score update_happened gm4_up_check matches 0 run tellraw @a [{"translate": "%1$s%3427655$s","with":["[GM4]: ",{"translate": "text.gm4.prefix"}],"color":"aqua"},{"translate": "%1$s%3427655$s","with":["No updates found.",{"translate": "text.gm4.modules.update.none_found"}],"color":"aqua"}] execute unless entity @a[limit=1] run execute if score update_happened gm4_up_check matches 0 run say [GM4]: No updates found. execute if score update_happened gm4_up_check matches 1 run tellraw @a [{"translate": "%1$s%3427655$s","with":["[GM4]: ",{"translate": "text.gm4.prefix"}],"color":"aqua"},{"translate": "%1$s%3427655$s","with":["Updates completed.",{"translate": "text.gm4.modules.update.completed"}],"color":"aqua"}] execute unless entity @a[limit=1] run execute if score update_happened gm4_up_check matches 1 run say [GM4]: Updates completed. #prints scheduled out-of-date messages to chat execute if score current_tick gm4_clock_tick matches 0 if entity @a[limit=1] if entity @e[type=area_effect_cloud,tag=gm4_update_message,limit=1] run function gm4:out_of_date PK GBTT7 7 ' data/gm4/tags/functions/init_check.json{ "values":[ "liquid_minecarts:init_check" ] } PK GBTRpCE E ( data/gm4/tags/functions/pulse_check.json{ "values":[ "liquid_minecarts:pulse_check" ] } PK GBT_, , ' data/minecraft/tags/functions/load.json{ "values":[ "gm4:load" ] } PK GBT"s, , ' data/minecraft/tags/functions/tick.json{ "values":[ "gm4:tick" ] } PK GBT > data/liquid_minecarts/functions/compare_load_liquid.mcfunction#@s = liquid minecart containing a liquid with a liquid tank containing liquid pointed at it #run from try_to_load summon area_effect_cloud ~ ~ ~ {Tags:["gm4_liquid_minecart_compare"],Duration:1} data modify entity @e[type=area_effect_cloud,limit=1,sort=nearest,tag=gm4_liquid_minecart_compare] CustomName set from block ~ ~ ~ CustomName execute store success score @s gm4_lm_data run data modify entity @e[type=area_effect_cloud,limit=1,sort=nearest,tag=gm4_liquid_minecart_compare] CustomName set from entity @s CustomName execute if score @s gm4_lm_data matches 0 run function liquid_minecarts:load_liquid kill @e[type=area_effect_cloud,tag=g4m_liquid_minecart_compare] PK GBTq>ͩ @ data/liquid_minecarts/functions/compare_unload_liquid.mcfunction#@s = liquid minecart containing a liquid with a liquid tank containing liquid below it #run from try_to_unload summon area_effect_cloud ~ ~ ~ {Tags:["gm4_liquid_minecart_compare"],Duration:1} data modify entity @e[type=area_effect_cloud,limit=1,sort=nearest,tag=gm4_liquid_minecart_compare] CustomName set from block ~ ~ ~ CustomName execute store success score @s gm4_lm_data run data modify entity @e[type=area_effect_cloud,limit=1,sort=nearest,tag=gm4_liquid_minecart_compare] CustomName set from entity @s CustomName execute if score @s gm4_lm_data matches 0 run function liquid_minecarts:unload_liquid kill @e[type=area_effect_cloud,tag=g4m_liquid_minecart_compare] PK GBTM 1 data/liquid_minecarts/functions/create.mcfunction#@s = hopper minecart with upgrade recipe inside #run from main summon command_block_minecart ~ ~ ~ {Command:"execute if score @s gm4_lt_value matches 1.. run function liquid_minecarts:drain_minecart",Tags:["gm4_liquid_minecart","gm4_liquid_minecart_empty"],CustomDisplayTile:1,DisplayState:{"Name":"minecraft:hopper"},Passengers:[{id:"minecraft:armor_stand",Tags:["gm4_liquid_minecart_display","gm4_no_edit"],Invisible:1b,DisabledSlots:2039583,Small:1b,ArmorItems:[{},{},{},{}],Pose:{Head:[180.0f,0.0f,0.0f],RightArm:[0.0f,-90.0f,0.0f]}}]} execute as @e[type=command_block_minecart,distance=..0,tag=gm4_liquid_minecart_empty] run function liquid_minecarts:liquid_value_update data merge entity @s {Items:[]} kill @s PK GBT7 2 data/liquid_minecarts/functions/destroy.mcfunction#@s = display armor_stand without a liquid minecart #run from main loot spawn ~ ~ ~ loot liquid_minecarts:destroy_liquid_minecart kill @s PK GBT+؋x] ] 9 data/liquid_minecarts/functions/drain_minecart.mcfunction#@s = liquid minecart going over active activator rail #run from command_block_minecart (liquid minecart) scoreboard players set @s gm4_lt_value 0 data merge entity @s {Tags:["gm4_liquid_minecart","gm4_liquid_minecart_empty"]} function liquid_minecarts:liquid_value_update playsound minecraft:block.brewing_stand.brew block @a ~ ~ ~ 1.0 0.0 PK NBT*+ *+ / data/liquid_minecarts/functions/init.mcfunction#announce module installation tellraw @a[gamemode=creative] ["",{"text":"[GM4]: Installing Liquid Minecarts..."}] execute unless entity @p run say GM4: Installing Liquid Minecarts... #declare and initialise scoreboards and settings scoreboard players set update_happened gm4_up_check 1 scoreboard players set liquid_minecarts gm4_modules 14001 scoreboard players set liquid_minecarts gm4_clock_tick 0 scoreboard objectives add gm4_lm_data dummy scoreboard players set #5 gm4_lm_data 5 scoreboard players set #2 gm4_lm_data 2 scoreboard players set #100 gm4_lm_data 100 #announce success tellraw @a[gamemode=creative] ["",{"text":"[GM4]: Liquid Minecarts Installed!"}] execute unless entity @p run say GM4: Liquid Minecarts Installed! #check other modules to make sure they're up to date. # Module update list kill @e[tag=gm4_update_message] execute if score ambrosia gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Ambrosia"",Tags:["gm4_update_message"],Duration:2000} execute if score bat_grenades gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Bat Grenades"",Tags:["gm4_update_message"],Duration:2000} execute if score better_armour_stands gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Better Armour Stands"",Tags:["gm4_update_message"],Duration:2000} execute if score better_fire gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Better Fire"",Tags:["gm4_update_message"],Duration:2000} execute if score block_compressors gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Block Compressors"",Tags:["gm4_update_message"],Duration:2000} execute if score boots_of_ostara gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Boots of Ostara"",Tags:["gm4_update_message"],Duration:2000} execute if score cement_mixers gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Cement Mixers"",Tags:["gm4_update_message"],Duration:2000} execute if score chairs gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Chairs"",Tags:["gm4_update_message"],Duration:2000} execute if score cooler_caves gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Cooler Caves"",Tags:["gm4_update_message"],Duration:2000} execute if score crossbow_cartridges gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Crossbow Cartridges"",Tags:["gm4_update_message"],Duration:2000} execute if score custom_crafters gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Custom Crafters"",Tags:["gm4_update_message"],Duration:2000} execute if score dangerous_dungeons gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Dangerous Dungeons"",Tags:["gm4_update_message"],Duration:2000} execute if score desire_lines gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Desire Lines"",Tags:["gm4_update_message"],Duration:2000} execute if score disassemblers gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Disassemblers"",Tags:["gm4_update_message"],Duration:2000} execute if score enchantment_extractors gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Enchantment Extractors"",Tags:["gm4_update_message"],Duration:2000} execute if score end_fishing gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""End Fishing"",Tags:["gm4_update_message"],Duration:2000} execute if score ender_hoppers gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Ender Hoppers"",Tags:["gm4_update_message"],Duration:2000} execute if score enderman_support_class gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Enderman Support Class"",Tags:["gm4_update_message"],Duration:2000} execute if score heart_canisters gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Heart Canisters"",Tags:["gm4_update_message"],Duration:2000} execute if score holographic_tags gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Holographic Tags"",Tags:["gm4_update_message"],Duration:2000} execute if score ink_spitting_squid gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Ink Spitting Squid"",Tags:["gm4_update_message"],Duration:2000} execute if score lightning_rods gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Lightning Rods"",Tags:["gm4_update_message"],Duration:2000} execute if score liquid_minecarts gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Liquid Minecarts"",Tags:["gm4_update_message"],Duration:2000} execute if score liquid_tanks gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Liquid Tanks"",Tags:["gm4_update_message"],Duration:2000} execute if score master_crafting gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Master Crafting"",Tags:["gm4_update_message"],Duration:2000} execute if score mending_tanks gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Mending Tanks"",Tags:["gm4_update_message"],Duration:2000} execute if score metallurgy gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Metallurgy"",Tags:["gm4_update_message"],Duration:2000} execute if score mob_conversion gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Mob Conversion"",Tags:["gm4_update_message"],Duration:2000} execute if score moneo_shamir gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Moneo Shamir"",Tags:["gm4_update_message"],Duration:2000} execute if score mysterious_midnights gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Mysterious Midnights"",Tags:["gm4_update_message"],Duration:2000} execute if score note_block_interface gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Note Block Interface"",Tags:["gm4_update_message"],Duration:2000} execute if score orbis gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Orbis"",Tags:["gm4_update_message"],Duration:2000} execute if score orbis_pre_gen gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Orbis Pre-gen"",Tags:["gm4_update_message"],Duration:2000} execute if score particles_pack gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Particles Pack"",Tags:["gm4_update_message"],Duration:2000} execute if score phantom_scarecrows gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Phantom Scarecrows"",Tags:["gm4_update_message"],Duration:2000} execute if score pig_tractors gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Pig Tractors"",Tags:["gm4_update_message"],Duration:2000} execute if score poses_pack gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Poses Pack"",Tags:["gm4_update_message"],Duration:2000} execute if score potion_liquids gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Potion Liquids"",Tags:["gm4_update_message"],Duration:2000} execute if score potion_swords gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Potion Swords"",Tags:["gm4_update_message"],Duration:2000} execute if score record_crafting gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Record Crafting"",Tags:["gm4_update_message"],Duration:2000} execute if score relocators gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Relocators"",Tags:["gm4_update_message"],Duration:2000} execute if score scuba_gear gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Scuba Gear"",Tags:["gm4_update_message"],Duration:2000} execute if score shroomites gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Shroomites"",Tags:["gm4_update_message"],Duration:2000} execute if score spawner_minecarts gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Spawner Minecarts"",Tags:["gm4_update_message"],Duration:2000} execute if score speed_paths gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Speed Paths"",Tags:["gm4_update_message"],Duration:2000} execute if score standard_crafting gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Standard Crafting"",Tags:["gm4_update_message"],Duration:2000} execute if score sunken_treasure gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Sunken Treasure"",Tags:["gm4_update_message"],Duration:2000} execute if score tinkering_compressors gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Tinkering Compressors"",Tags:["gm4_update_message"],Duration:2000} execute if score tower_structures gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Tower Structures"",Tags:["gm4_update_message"],Duration:2000} execute if score trapped_signs gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Trapped Signs"",Tags:["gm4_update_message"],Duration:2000} execute if score undead_players gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Undead Players"",Tags:["gm4_update_message"],Duration:2000} execute if score vertical_rails gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Vertical Rails"",Tags:["gm4_update_message"],Duration:2000} execute if score weighted_armour gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Weighted Armour"",Tags:["gm4_update_message"],Duration:2000} execute if score xp_storage gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""XP Storage"",Tags:["gm4_update_message"],Duration:2000} execute if score zauber_cauldrons gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Zauber Cauldrons"",Tags:["gm4_update_message"],Duration:2000} execute if score zauber_liquids gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Zauber Liquids"",Tags:["gm4_update_message"],Duration:2000} execute if score ziprails gm4_modules matches ..14000 run summon minecraft:area_effect_cloud ~ ~ ~ {CustomName:""Ziprails"",Tags:["gm4_update_message"],Duration:2000} PK NBT: 5 data/liquid_minecarts/functions/init_check.mcfunction#unless the module is already initialized execute unless score liquid_minecarts gm4_modules matches 14001.. run function liquid_minecarts:init scoreboard players add installed_modules gm4_up_check 1 PK GBTt4 6 data/liquid_minecarts/functions/init_liquid.mcfunction#@s = empty liquid minecart next to a liquid tank pointed at it containing liquid #run from liquid_minecarts:try_to_unload data modify entity @s CustomName set from block ~ ~ ~ CustomName data modify entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] HandItems[0] set from entity @e[type=armor_stand,tag=gm4_liquid_tank_display,limit=1,sort=nearest] ArmorItems[3] data modify entity @s Tags set from entity @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest] Tags tag @s remove gm4_lt_idle tag @s remove gm4_lt_drain tag @s remove gm4_lt_fill tag @s remove gm4_liquid_tank tag @s add gm4_liquid_minecart #set tank max based on 40% of hopper max scoreboard players operation @s gm4_lt_max = @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest] gm4_lt_max scoreboard players operation @s gm4_lt_max /= #5 gm4_lm_data scoreboard players operation @s gm4_lt_max *= #2 gm4_lm_data #fill the tank function liquid_minecarts:load_liquid PK GBTxzr r 4 data/liquid_minecarts/functions/init_tank.mcfunction#@s = liquid minecart #run from try_to_unload data modify block ~ ~ ~ CustomName set from entity @s CustomName summon armor_stand ~ ~-.45 ~ {CustomName:"\"gm4_liquid_tank_display\"",Tags:["gm4_no_edit","gm4_liquid_tank_display","gm4_lm_needs_texture"],NoGravity:1,Marker:1,Invisible:1,Invulnerable:1,Small:1,DisabledSlots:2039583,Fire:20000} data modify entity @e[type=armor_stand,tag=gm4_lm_needs_texture,limit=1,sort=nearest] ArmorItems[3] set from entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] HandItems[0] tag @e[type=armor_stand] remove gm4_lm_needs_texture scoreboard players operation @s gm4_lm_data = @s gm4_lt_max scoreboard players operation @s gm4_lm_data *= #5 gm4_lm_data scoreboard players operation @s gm4_lm_data /= #2 gm4_lm_data scoreboard players operation @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest,distance=..0.5] gm4_lt_max = @s gm4_lm_data scoreboard players operation @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest,distance=..0.5] gm4_lt_value = @s gm4_lt_value scoreboard players set @s gm4_lt_value 0 #apply liquid tag tag @s remove gm4_liquid_minecart tag @s add gm4_lm_to_lt data modify entity @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest,distance=..0.5] Tags set from entity @s Tags data merge entity @s {Tags:["gm4_liquid_minecart","gm4_liquid_minecart_empty"]} playsound minecraft:block.brewing_stand.brew block @a ~ ~ ~ 1.0 1.5 execute as @e[type=armor_stand,tag=gm4_lm_to_lt,limit=1,sort=nearest,distance=..0.5] run function liquid_minecarts:minecart_to_tank_init function liquid_minecarts:liquid_value_update PK GBTm 7 data/liquid_minecarts/functions/level_report.mcfunction#@s = players looking at liquid minecart #run from level_report_ray execute as @e[type=command_block_minecart,tag=gm4_liquid_minecart,distance=..1,limit=1,sort=nearest] run function liquid_minecarts:liquid_value_update title @s actionbar ["",{"score":{"name":"@e[type=command_block_minecart,tag=gm4_liquid_minecart,distance=..1,limit=1,sort=nearest]","objective":"gm4_lm_data"},"color":"dark_green"},{"text":"% Full","color":"dark_green"}] tag @s add gm4_lt_found_tank PK GBTQ@ ; data/liquid_minecarts/functions/level_report_ray.mcfunction#@s = all players at @s #run from main execute anchored eyes positioned ^ ^ ^.5 if entity @e[distance=..1,type=command_block_minecart,tag=gm4_liquid_minecart,limit=1,sort=nearest] run function liquid_minecarts:level_report execute unless entity @s[tag=gm4_lt_found_tank] anchored eyes positioned ^ ^ ^1.5 if entity @e[distance=..1,type=command_block_minecart,tag=gm4_liquid_minecart,limit=1,sort=nearest] run function liquid_minecarts:level_report execute unless entity @s[tag=gm4_lt_found_tank] anchored eyes positioned ^ ^ ^2.5 if entity @e[distance=..1,type=command_block_minecart,tag=gm4_liquid_minecart,limit=1,sort=nearest] run function liquid_minecarts:level_report execute unless entity @s[tag=gm4_lt_found_tank] anchored eyes positioned ^ ^ ^3.5 if entity @e[distance=..1,type=command_block_minecart,tag=gm4_liquid_minecart,limit=1,sort=nearest] run function liquid_minecarts:level_report tag @s remove gm4_lt_found_tank PK GBT{q!\& & > data/liquid_minecarts/functions/liquid_value_update.mcfunction#@s = liquid minecart #run from load_liquid, unload_liquid and create #calculate tank fullness percentage scoreboard players operation @s gm4_lm_data = @s gm4_lt_value scoreboard players operation @s gm4_lm_data *= #100 gm4_lm_data scoreboard players operation @s gm4_lm_data /= @s gm4_lt_max #1%-50% execute if score @s gm4_lt_value matches 1.. if score @s gm4_lm_data matches 0..50 run data merge entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] {ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{SkullOwner:{Id:"42ceac16-1b02-4889-8d85-f8b7a167b0b3",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTEzNjg2ZjIxMDY1YTRiZTZjYzU3MDYxZDhlNzM2MDQ3MzQ2YzU4NmEzYTU1OWMwMzdhMDMxNGJjNDUyOTA4MSJ9fX0="}]}}}}]} #51%-99% execute unless score @s gm4_lt_value = @s gm4_lt_max if score @s gm4_lm_data matches 51..100 run data merge entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] {ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{SkullOwner:{Id:"ec98f0b8-97a1-47a0-9786-7071ed229a0e",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFjOTBjM2ZmNWI5NzBhNTIyNTliNTdhNDlmMjFmOGE1NTdmZmIxYTM2ZmNjNDkwMDQyMTQzNDZkOWViN2RmZCJ9fX0="}]}}}}]} #100% execute if score @s gm4_lt_value = @s gm4_lt_max run data merge entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] {ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{SkullOwner:{Id:"ff983ce0-57a7-4ec6-9cdf-6090de1adc6d",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2M5OTI4ODgxNGY1ODVjN2JjMmU1NWQ0NDY0ZDUzOGQwZDlkOWM4YjE4NzRiZTA5ZDc4Yjk3YzA3YzAwYWIxYSJ9fX0="}]}}}}]} #0% execute if score @s gm4_lt_value matches 0 run data merge entity @e[type=armor_stand,tag=gm4_liquid_minecart_display,limit=1,sort=nearest] {ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1b,tag:{SkullOwner:{Id:"0720bc21-0c53-4856-bd45-d8d5e0f96f78",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjhiMjU1MjJjMzFiZmU0Y2VhMTAxMDA4MGQ1YTFiOWIwOGU3NWJhZTUzOGRhODk3MmNiZGQ2YTk0Mzk5MjEyYSJ9fX0="}]}}}}]} PK GBT A( 5 data/liquid_minecarts/functions/load_check.mcfunction#@s = liquid minecart #run from main #load execute if block ~1 ~ ~ hopper[facing=west] align xyz positioned ~1.5 ~ ~0.5 run function liquid_minecarts:try_to_load execute if block ~-1 ~ ~ hopper[facing=east] align xyz positioned ~-0.5 ~ ~0.5 run function liquid_minecarts:try_to_load execute if block ~ ~ ~1 hopper[facing=north] align xyz positioned ~0.5 ~ ~1.5 run function liquid_minecarts:try_to_load execute if block ~ ~ ~-1 hopper[facing=south] align xyz positioned ~0.5 ~ ~-0.5 run function liquid_minecarts:try_to_load execute if block ~ ~1 ~ hopper[facing=down] positioned ~ ~1 ~ run function liquid_minecarts:try_to_load #unload execute if block ~ ~-1 ~ hopper positioned ~ ~-1 ~ run function liquid_minecarts:try_to_unload PK GBTg饩 6 data/liquid_minecarts/functions/load_liquid.mcfunction#@s liquid minecart that can accept the current tank's liquid #run from compare_load_liquid and init_liquid #take all the liquid in the tank (or as much as the minecart can hold) (amount of liquid to take stored in gm4_lm_data) #get remaining space in minecart scoreboard players operation @s gm4_lm_data = @s gm4_lt_max scoreboard players operation @s gm4_lm_data -= @s gm4_lt_value #lower lm_data if tank has less liquid than the remaining space scoreboard players operation @s gm4_lm_data < @e[type=armor_stand,limit=1,sort=nearest,tag=gm4_liquid_tank] gm4_lt_value #add liquid to minecart scoreboard players operation @s gm4_lt_value += @s gm4_lm_data #take liquid from tank scoreboard players operation @e[type=armor_stand,limit=1,sort=nearest,tag=gm4_liquid_tank] gm4_lt_buffer -= @s gm4_lm_data #update display function liquid_minecarts:liquid_value_update playsound minecraft:block.brewing_stand.brew block @a PK GBTg g / data/liquid_minecarts/functions/main.mcfunction#create liquid minecarts from hopper minecart execute as @e[type=hopper_minecart,tag=!gm4_liquid_minecart,nbt={Items:[{id:"minecraft:hopper",Count:1b},{id:"minecraft:iron_trapdoor",Count:1b},{id:"minecraft:comparator",Count:1b},{id:"minecraft:dispenser",Count:1b},{id:"minecraft:bucket",Count:1b}]}] at @s run function liquid_minecarts:create #detect destroyed liquid minecarts execute as @e[type=armor_stand,tag=gm4_liquid_minecart_display] at @s unless entity @e[type=command_block_minecart,tag=gm4_liquid_minecart,distance=..0.5] run function liquid_minecarts:destroy #look for hoppers pointing into or below the liquid minecart execute as @e[type=command_block_minecart,tag=gm4_liquid_minecart] at @s run function liquid_minecarts:load_check #minecart level report execute as @a[gamemode=!spectator] at @s run function liquid_minecarts:level_report_ray PK GBTq @ data/liquid_minecarts/functions/minecart_to_tank_init.mcfunction#@s = liquid tank that a minecart is putting a new liquid into #run from init_tank tag @s add gm4_liquid_tank tag @s add gm4_lt_idle tag @s add gm4_no_edit tag @s remove gm4_lt_empty tag @s remove gm4_lm_to_lt PK GBT {s 6 data/liquid_minecarts/functions/pulse_check.mcfunction#compares assigned run tick to current tick and calls main function #liquid_minecarts:tick execute if score current_tick gm4_clock_tick = liquid_minecarts gm4_clock_tick run function liquid_minecarts:main PK GBTTlUr r 6 data/liquid_minecarts/functions/try_to_load.mcfunction#@s = liquid minecart with a hopper pointing at it #run from liquid_minecarts:load_check #if the minecart has a liquid in it and the tank does too execute if entity @s[scores={gm4_lt_value=1..}] if entity @e[type=armor_stand,distance=..0.1,tag=gm4_liquid_tank,scores={gm4_lt_value=1..}] if score @s gm4_lt_value < @s gm4_lt_max run function liquid_minecarts:compare_load_liquid #if the minecart is empty and the tank has contents execute if entity @s[tag=gm4_liquid_minecart_empty] if entity @e[type=armor_stand,distance=..0.1,tag=gm4_liquid_tank,scores={gm4_lt_value=1..}] run function liquid_minecarts:init_liquid PK GBT% 8 data/liquid_minecarts/functions/try_to_unload.mcfunction#@s = liquid minecart with a hopper below it #run from load_check #if the minecart has a liquid in it and the tank does too execute if entity @s[scores={gm4_lt_value=1..}] if entity @e[type=armor_stand,distance=..0.1,tag=gm4_liquid_tank,scores={gm4_lt_value=1..}] align xyz positioned ~.5 ~ ~.5 if score @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest] gm4_lt_value < @e[type=armor_stand,tag=gm4_liquid_tank,limit=1,sort=nearest] gm4_lt_max run function liquid_minecarts:compare_unload_liquid #if the minecart has liquid but the tank is empty execute if entity @s[scores={gm4_lt_value=1..}] if entity @e[type=armor_stand,distance=..0.1,tag=gm4_liquid_tank,scores={gm4_lt_value=0}] align xyz positioned ~.5 ~ ~.5 run function liquid_minecarts:init_tank PK GBTu 8 data/liquid_minecarts/functions/unload_liquid.mcfunction#@s liquid minecart above a liquid tank that can accept the liquid #run from compare_unload_liquid and #take all the liquid in the tank (or as much as the minecart can hold) (amount of liquid to take stored in gm4_lm_data) #get remaining space in minecart scoreboard players operation @s gm4_lm_data = @e[type=armor_stand,limit=1,sort=nearest,tag=gm4_liquid_tank] gm4_lt_max scoreboard players operation @s gm4_lm_data -= @e[type=armor_stand,limit=1,sort=nearest,tag=gm4_liquid_tank] gm4_lt_value #lower lm_data if tank has less space than minecart's liquid level scoreboard players operation @s gm4_lm_data < @s gm4_lt_value #remove liquid from minecart scoreboard players operation @s gm4_lt_value -= @s gm4_lm_data #give liquid to tank scoreboard players operation @e[type=armor_stand,limit=1,sort=nearest,tag=gm4_liquid_tank] gm4_lt_buffer += @s gm4_lm_data #update display function liquid_minecarts:liquid_value_update playsound minecraft:block.brewing_stand.brew block @a ~ ~ ~ 1.0 1.5 #clear liquid tags execute if score @s gm4_lt_value matches 0 run data merge entity @s {Tags:["gm4_liquid_minecart","gm4_liquid_minecart_empty"]} PK GBTf f > data/liquid_minecarts/loot_tables/destroy_liquid_minecart.json{ "type": "minecraft:generic", "pools": [ { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:comparator" } ] }, { "rolls": 2, "entries": [ { "type": "minecraft:item", "name": "minecraft:hopper" } ] }, { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:bucket" } ] }, { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:dispenser" } ] }, { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:iron_trapdoor" } ] } ] } PK NBT pack.mcmetaPK GBT[@ɺ " 0 data/gm4/functions/init.mcfunctionPK GBTB| " * data/gm4/functions/load.mcfunctionPK GBT~ ) s data/gm4/functions/out_of_date.mcfunctionPK GBT0,Z " data/gm4/functions/tick.mcfunctionPK GBTΦ $ data/gm4/functions/update.mcfunctionPK GBTT7 7 ' data/gm4/tags/functions/init_check.jsonPK GBTRpCE E ( data/gm4/tags/functions/pulse_check.jsonPK GBT_, , ' data/minecraft/tags/functions/load.jsonPK GBT"s, , ' data/minecraft/tags/functions/tick.jsonPK GBT > data/liquid_minecarts/functions/compare_load_liquid.mcfunctionPK GBTq>ͩ @ data/liquid_minecarts/functions/compare_unload_liquid.mcfunctionPK GBTM 1 data/liquid_minecarts/functions/create.mcfunctionPK GBT7 2 # data/liquid_minecarts/functions/destroy.mcfunctionPK GBT+؋x] ] 9 ! data/liquid_minecarts/functions/drain_minecart.mcfunctionPK NBT*+ *+ / " data/liquid_minecarts/functions/init.mcfunctionPK NBT: 5 .N data/liquid_minecarts/functions/init_check.mcfunctionPK GBTt4 6 HO data/liquid_minecarts/functions/init_liquid.mcfunctionPK GBTxzr r 4 S data/liquid_minecarts/functions/init_tank.mcfunctionPK GBTm 7 HZ data/liquid_minecarts/functions/level_report.mcfunctionPK GBTQ@ ; y\ data/liquid_minecarts/functions/level_report_ray.mcfunctionPK GBT{q!\& & > ` data/liquid_minecarts/functions/liquid_value_update.mcfunctionPK GBT A( 5 j data/liquid_minecarts/functions/load_check.mcfunctionPK GBTg饩 6 >m data/liquid_minecarts/functions/load_liquid.mcfunctionPK GBTg g / ;q data/liquid_minecarts/functions/main.mcfunctionPK GBTq @ t data/liquid_minecarts/functions/minecart_to_tank_init.mcfunctionPK GBT {s 6 (v data/liquid_minecarts/functions/pulse_check.mcfunctionPK GBTTlUr r 6 Lw data/liquid_minecarts/functions/try_to_load.mcfunctionPK GBT% 8 z data/liquid_minecarts/functions/try_to_unload.mcfunctionPK GBTu 8 m} data/liquid_minecarts/functions/unload_liquid.mcfunctionPK GBTf f > J data/liquid_minecarts/loot_tables/destroy_liquid_minecart.jsonPK y