# Christmas present delivery game (Present Couriers - PrCo)
# Global stuff
# Set sendCommandFeedback to false
INIT:gamerule sendCommandFeedback false
# Global scoreboard (multiple uses)
INIT:scoreboard objectives add PCg dummy
# Global armorstand
#INIT:kill @e[type=ArmorStand,name=PRCOGlobal]
#INIT:summon ArmorStand ~ ~ ~ {CustomName:PRCOGlobal,Invisible:1,Marker:1,NoGravity:1}
# Stripes on the box
INIT:summon ArmorStand ~ ~-5 ~-6 {CustomName:PCsi,Invisible:1,NoGravity:1}
execute @e[type=ArmorStand,name=PCsi] ~ ~ ~ fill ~ ~ ~ ~30 ~12 ~ stained_hardened_clay 0 replace stained_hardened_clay 14
tp @e[type=ArmorStand,name=PCsi] ~ ~ ~2
scoreboard players add @e[type=ArmorStand,name=PCsi] PCg 1
kill @e[type=ArmorStand,name=PCsi,score_PCg_min=10]
# Floor crafting
INIT:scoreboard objectives add PCi dummy
scoreboard players set @e[type=Item] PCi 1 {Item:{id:"minecraft:end_rod"},OnGround:1b}
scoreboard players set @e[type=Item] PCi 2 {Item:{id:"minecraft:redstone_torch"},OnGround:1b}
execute @e[score_PCi_min=1,score_PCi=1] ~ ~ ~ execute @e[r=1,score_PCi_min=2,score_PCi=2] ~ ~ ~ summon Item ~ ~ ~ {Item:{id:minecraft:armor_stand,Count:1,tag:{EntityTag:{CustomName:PCsw},ench:[{id:unbreaking,lvl:1}],display:{Name:"The North Pole"}}}}
execute @e[score_PCi_min=1,score_PCi=1] ~ ~ ~ execute @e[r=1,score_PCi_min=2,score_PCi=2] ~ ~ ~ particle blockcrack 312 56 -1207 0.5 0 0.5 1 100 force @a 80
execute @e[score_PCi_min=1,score_PCi=1] ~ ~ ~ execute @e[r=1,score_PCi_min=2,score_PCi=2] ~ ~ ~ kill @e[type=Item,r=3,score_PCi_min=1,score_PCi=2]
# Summoning the "North Pole"
scoreboard players tag @e[type=ArmorStand,name=PCsw] add PCpe
execute @e[tag=PCpe] ~ ~ ~ particle snowballpoof ~ ~ ~ 0.2 1 0.2 1 1000
execute @e[tag=PCpe] ~ ~ ~ summon ArmorStand ~ ~-.66 ~ {CustomName:PCpa,Invisible:1,NoGravity:1,Small:1,ArmorItems:[{},{},{},{id:stained_hardened_clay,Damage:14}],DisabledSlots:1}
execute @e[tag=PCpe] ~ ~ ~ summon ArmorStand ~ ~-.2225 ~ {CustomName:PCpa,Invisible:1,NoGravity:1,Small:1,ArmorItems:[{},{},{},{id:quartz_block}]}
execute @e[tag=PCpe] ~ ~ ~ summon ArmorStand ~ ~.215 ~ {CustomName:PCpa,Invisible:1,NoGravity:1,Small:1,ArmorItems:[{},{},{},{id:stained_hardened_clay,Damage:14}],DisabledSlots:1}
execute @e[tag=PCpe] ~ ~ ~ summon ArmorStand ~ ~.6525 ~ {CustomName:PCpa,Invisible:1,NoGravity:1,Small:1,ArmorItems:[{},{},{},{id:quartz_block}],DisabledSlots:1}
execute @e[tag=PCpe] ~ ~ ~ summon ArmorStand ~ ~.4 ~ {CustomName:PCppl,Invisible:1,NoGravity:1,ArmorItems:[{},{},{},{id:gold_block}],DisabledSlots:1}
execute @e[tag=PCpe] ~ ~ ~ scoreboard players set @e[type=ArmorStand,name=PCppl] PCg 300
scoreboard players tag @e[type=ArmorStand,name=PCppl] add PCma
kill @e[tag=PCpe]
# Rotate the top of the pole
tp @e[type=ArmorStand,name=PCppl] ~ ~ ~ ~3 ~
# Snow generator
execute @e[tag=PCma,score_PCg_min=1] ~ ~ ~
scoreboard players remove @e[tag=PCma,score_PCg_min=-60] PCg 1
execute @e[tag=PCma,score_PCg=0] ~ ~ ~ tp @e[type=ArmorStand,name=PCpa,r=6,c=5] ~ ~-0.05 ~
tp @e[tag=PCma,score_PCg=0] ~ ~-0.05 ~
# Randomize snow layers via /spreadplayers
execute @e[tag=PCma,score_PCg_min=1] ~ ~ ~ spreadplayers ~ ~ 1 12 false @e[type=ArmorStand,name=PCsn]
execute @e[type=ArmorStand,name=PCsn] ~ ~ ~ setblock ~ ~ ~ snow_layer
execute @e[type=ArmorStand,name=PCsn] ~ ~ ~ fill ~-1 ~-1 ~ ~1 ~-1 ~ snow
execute @e[type=ArmorStand,name=PCsn] ~ ~ ~ fill ~ ~-1 ~-1 ~ ~-1 ~1 snow
execute @e[type=ArmorStand,name=PCsn] ~ ~ ~ detect ~ ~-1 ~ snow_layer -1 fill ~ ~ ~ ~ ~ ~ air 0 replace snow_layer
execute @e[type=ArmorStand,name=PCsn] ~ ~ ~ detect ~ ~-1 ~ snow_layer -1 setblock ~ ~-1 ~ snow_layer 1
kill @e[type=ArmorStand,name=PCsn]
execute @e[tag=PCma,score_PCg_min=1] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:PCsn,Invisible:1,NoGravity:1}
# Keep the pole on top of the snow
execute @e[type=ArmorStand,name=PCppl,score_PCg_min=1] ~ ~ ~ detect ~ ~ ~ snow -1 tp @e[type=ArmorStand,r=5] ~ ~.5 ~
# Santa sleigh
# Initial creation of the sleigh
# Sleigh part id tracker scoreboard objective
INIT:scoreboard objectives add PrCoCurID dummy
scoreboard players set @e[tag=PCma,score_PCg_min=1,score_PCg=1] PrCoCurID 0
# One of these groups of commands must be added for each block type (also, I should test all of this tomorrow, because I haven't actually tested it yet, with the scoreboard players operation stuff)
scoreboard players add @e[tag=PCma,score_PCg_min=-30,score_PCg=1] PrCoCurID 1
execute @e[tag=PCma,score_PCg_min=-19,score_PCg=0] ~ ~ ~ summon ArmorStand ~-60 ~30 ~ {CustomName:PCpt,Passengers:[{id:FallingSand,CustomName:PRCOfs,Time:1,Block:stained_hardened_clay,Data:14}],NoGravity:1,Invisible:1,DisabledSlots:1}
execute @e[tag=PCma,score_PCg_min=-19,score_PCg=0] ~ ~ ~ scoreboard players add @e[type=ArmorStand,name=PCpt] PCg 0
execute @e[tag=PCma,score_PCg_min=-19,score_PCg=0] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=PCpt,score_PCg=0] PCg = @e[tag=PCma] PrCoCurID
scoreboard players add @e[tag=PCma,score_PCg_min=-30,score_PCg=1] PrCoCurID 1
execute @e[tag=PCma,score_PCg_min=-7,score_PCg=0] ~ ~ ~ summon ArmorStand ~-60 ~30 ~ {CustomName:PCpt,ArmorItems:[{},{},{},{id:iron_bars}],NoGravity:1,Pose:{Head:[0f,0f,90f]},Invisible:1,DisabledSlots:1}
execute @e[tag=PCma,score_PCg_min=-19,score_PCg=0] ~ ~ ~ scoreboard players add @e[type=ArmorStand,name=PCpt] PCg 0
execute @e[tag=PCma,score_PCg_min=-19,score_PCg=0] ~ ~ ~ scoreboard players operation @e[type=ArmorStand,name=PCpt,score_PCg=0] PCg = @e[tag=PCma] PrCoCurID
execute @e[tag=PCma,score_PCg_min=10,score_PCg=10] ~ ~ ~ summon ArmorStand ~-60 ~30 ~ {CustomName:PCsg,NoGravity:1,Invisible:1,DisabledSlots:1,Marker:1}
execute @e[tag=PCma,score_PCg_min=-9,score_PCg=-9] ~ ~ ~ summon EntityHorse ~-60 ~30 ~ {CustomName:Reindeer,NoAI:1,Variant:3}
execute @e[tag=PCma,score_PCg_min=-9,score_PCg=-9] ~ ~ ~ summon MinecartRideable ~-60 ~30 ~ {CustomName:PCst,NoAI:1,ActiveEffects:[{Id:14,Amplifier:0,Duration:1000000,ShowParticles:0b}]}
# Randomizer armorstands
execute @e[tag=PCma,score_PCg_min=-9,score_PCg=-9] ~ ~ ~ summon ArmorStand ~-60 ~30 ~ {CustomName:PCr1,NoGravity:1,Invisible:1,Marker:1}
execute @e[tag=PCma,score_PCg_min=-9,score_PCg=-9] ~ ~ ~ summon ArmorStand ~-60 ~30 ~ {CustomName:PCr2,NoGravity:1,Invisible:1,Marker:1}
scoreboard players tag @e[type=ArmorStand,name=PCr1] add PrCoR
scoreboard players tag @e[type=ArmorStand,name=PCr2] add PrCoR
scoreboard players tag @e[tag=PrCoR] add PCpt
execute @e[tag=PCma,score_PCg_min=-9,score_PCg=-9] ~ ~ ~ scoreboard players set @a PrCoP 0
# Keep the time always at 1 on the falling sand so it doesn't pop off
entitydata @e[type=FallingSand,name=PRCOfs] {Time:1}
# Constantly add 1 to the sleigh's global score (-30 is less than it needs to be, just to be safe)
scoreboard players add @e[tag=PCs] PCg 0
scoreboard players add @e[tag=PCs,score_PCg=210] PCg 1
# Always keep the sleigh parts in their correct locations around the name=PCsg armor stand (tag=PCs)
scoreboard players tag @e[type=ArmorStand,name=PCsg] add PCs
execute @e[tag=PCs,score_PCg_min=40] ~ ~ ~ tp @e[tag=PCpt,type=!MinecartRideable] @e[tag=PCs,c=1,r=1]
scoreboard players tag @e[type=ArmorStand,name=PCpt] add PCpt
scoreboard players tag @e[type=EntityHorse,name=Reindeer] add PCpt
scoreboard players tag @e[type=MinecartRideable,name=PCst] add PCpt
# Second from bottom layer of blocks on the sleigh (all red stained clay blocks)
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=3,score_PCg=3,c=1] ~-2 ~ ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=5,score_PCg=5,c=1] ~-2 ~ ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=7,score_PCg=7,c=1] ~-2 ~ ~1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=9,score_PCg=9,c=1] ~-1 ~-.1 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=11,score_PCg=11,c=1] ~-1 ~-.1 ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=13,score_PCg=13,c=1] ~-1 ~-.1 ~1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=15,score_PCg=15,c=1] ~ ~-.2 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=17,score_PCg=17,c=1] ~ ~-.2 ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=19,score_PCg=19,c=1] ~ ~-.2 ~1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=21,score_PCg=21,c=1] ~1 ~-.3 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=23,score_PCg=23,c=1] ~1 ~-.3 ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=25,score_PCg=25,c=1] ~1 ~-.3 ~1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=27,score_PCg=27,c=1] ~1.5 ~.3 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=29,score_PCg=29,c=1] ~1.5 ~.3 ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=31,score_PCg=31,c=1] ~1.5 ~.3 ~1
# Third from bottom layer
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=33,score_PCg=33,c=1] ~-2 ~1 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=35,score_PCg=35,c=1] ~-2 ~1 ~
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=37,score_PCg=37,c=1] ~-2 ~1 ~1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=39,score_PCg=39,c=1] ~-1 ~.9 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=41,score_PCg=41,c=1] ~-1 ~.9 ~1
# Iron Bars
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=4,score_PCg=4,c=1] ~-2 ~-.4 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=6,score_PCg=6,c=1] ~-2 ~-.4 ~1.6
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=8,score_PCg=8,c=1] ~-1 ~-.4 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=10,score_PCg=10,c=1] ~-1 ~-.4 ~1.6
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=12,score_PCg=12,c=1] ~ ~-.4 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=14,score_PCg=14,c=1] ~ ~-.4 ~1.6
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=16,score_PCg=16,c=1] ~1 ~-.2 ~-1
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[tag=PCpt,score_PCg_min=18,score_PCg=18,c=1] ~1 ~-.2 ~1.6
# Reindeer
execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ tp @e[type=EntityHorse,name=Reindeer] ~3.8 ~1.2 ~ -90 ~
# Seat (first person view and side-view)
execute @a[score_PCv=0] ~ ~ ~ execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ teleport @e[type=MinecartRideable,name=PCst] ~ ~2 ~ -90 ~
execute @a[score_PCv_min=1] ~ ~ ~ execute @e[tag=PCs,score_PCg_min=26] ~ ~ ~ teleport @e[type=MinecartRideable,name=PCst] ~ ~-1 ~-9 0 20
# Make reindeer and seat invincible
effect @e[tag=PCpt,type=MinecartRideable] resistance 99999 5 true
# Sleigh movement & stages for spawning in
# Keep the area around the sleigh free of blocks
execute @e[tag=PCs] ~ ~ ~ fill ~-3 ~1 ~-2 ~5 ~6 ~2 air 0 destroy
# Sleigh stages
tp @e[tag=PCs,score_PCg_min=50,score_PCg=100] ~.4 ~-.4 ~
tp @e[tag=PCs,score_PCg_min=101,score_PCg=140] ~.4 ~-.2 ~
tp @e[tag=PCs,score_PCg_min=141,score_PCg=210] ~.3 ~-.048 ~
# Control panel in chat
tellraw @a[score_PCg_min=1] [{"text":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Switch View ] ","color":"green","clickEvent":{"action":"run_command","value":"/scoreboard players set @p[score_PCg_min=1,r=1] PCg 2"}},{"text":" [ Drop Present ] ","color":"red","clickEvent":{"action":"run_command","value":"/scoreboard players set @p[score_PCg_min=1,r=1] PCg 3"}},{"text":" Presents Delivered: ","color":"dark_red"},{"score":{"name":"@a[score_PCg_min=1]","objective":"PrCoP"},"color":"yellow"},{"text":"\n"}]
scoreboard players set @a[score_PCg=0] PCv 0
# Players with PCg=2 are switching view
# Players with PCg=3 are dropping a present
# View switching while riding the sleigh
INIT:scoreboard objectives add PCv dummy
scoreboard players add @a PCv 0
scoreboard players add @a[score_PCg_min=2,score_PCg=2] PCv 1
scoreboard players set @a[score_PCv_min=2] PCv 0
# Dropping a present
execute @a[score_PCg_min=3,score_PCe=0] ~ ~ ~ playsound block.piston.extend @p ~ ~ ~ 0.5 1
execute @a[score_PCg_min=3,score_PCe=0] ~ ~ ~ execute @e[tag=PCs,c=1,r=16] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:PCp,Invisible:1,ArmorItems:[{},{},{},{id:skull,Damage:3,tag:{SkullOwner:Hannah4848}}]}
scoreboard players set @a[score_PCg_min=3,score_PCe=0] PCe 15
scoreboard players add @a PCe 0
scoreboard players remove @a[score_PCe_min=1] PCe 1
# Destroy presents that missed
scoreboard players add @e[type=ArmorStand,name=PCp] PCe 1 {OnGround:1b}
execute @e[type=ArmorStand,name=PCp,score_PCe_min=4] ~ ~ ~ particle smoke ~ ~ ~ 0 0 0 0.1 400
execute @e[type=ArmorStand,name=PCp,score_PCe_min=4] ~ ~ ~ execute @a ~ ~ ~ playsound block.fire.extinguish @p ~ ~ ~ 0.5 1.5
kill @e[type=ArmorStand,name=PCp,score_PCe_min=4]
# Detect riding sleigh
scoreboard players set @a PCg 0
scoreboard players set @a PCg 1 {RootVehicle:{Entity:{id:MinecartRideable,CustomName:PCst}}}
# The sleigh movement for the game
# Make the counter continue if the player is riding
execute @a[score_PCg_min=1] ~ ~ ~ scoreboard players set @e[tag=PCs,score_PCg_min=211,score_PCg=211] PCg 212
scoreboard players add @e[tag=PCs,score_PCg_min=212,score_PCe=0] PCg 1
tp @e[tag=PCs,score_PCg_min=232,score_PCg=285,score_PCe=0] ~.2 ~.2 ~
tp @e[tag=PCs,score_PCg_min=286,score_PCg=330,score_PCe=0] ~.25 ~.36 ~
execute @a[score_PCtm_min=1] ~ ~ ~ tp @e[tag=PCs,score_PCg_min=331,score_PCe=0] ~.3 ~ ~
# House spawning
execute @a[score_PCtm_min=100] ~ ~ ~ scoreboard players add @e[tag=PCs,score_PCg_min=332] PCv 1
# Placing the armorstand
execute @e[tag=PCs,score_PCv_min=160] ~ ~ ~ summon ArmorStand ~70 ~-10 ~ {CustomName:PCh,Invisible:1,Marker:1}
scoreboard players set @e[tag=PCs,score_PCv_min=160] PCv 0
# Detect when the armorstand hits the ground
scoreboard players add @e[type=ArmorStand,name=PCh] PCv 1
execute @e[type=ArmorStand,name=PCh] ~ ~ ~ detect ~ ~-1 ~ air 0 scoreboard players set @e[name=PCh,c=1,r=1] PCv 0
# Place a house when it hits the ground
scoreboard players set @e[tag=PrCoR] PCg 0
execute @e[type=ArmorStand,name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ scoreboard players set @r[type=ArmorStand,tag=PrCoR] PCg 1
execute @e[name=PCr1,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~-6 ~ ~-3 ~6 ~5 ~3 stained_hardened_clay 5 hollow
execute @e[name=PCr2,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~-6 ~ ~-3 ~6 ~5 ~3 stained_hardened_clay 14 hollow
execute @e[type=ArmorStand,name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~-7 ~6 ~-4 ~7 ~6 ~4 stonebrick
execute @e[name=PCr1,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~2 ~6 ~-1 ~5 ~8 ~1 brick_block 0 hollow
execute @e[name=PCr2,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~3 ~6 ~-1 ~5 ~8 ~1 brick_block 0 hollow
execute @e[name=PCr1,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ fill ~3 ~8 ~ ~4 ~8 ~ air
execute @e[name=PCr2,score_PCg_min=1] ~ ~ ~ execute @e[name=PCh,score_PCv_min=1,score_PCv=1] ~ ~ ~ setblock ~4 ~8 ~ air
execute @e[name=PCh,score_PCv_min=450] ~ ~ ~ fill ~-7 ~ ~-4 ~7 ~8 ~4 air
kill @e[name=PCh,score_PCv_min=450]
# Check for presents in chimneys
execute @e[type=ArmorStand,name=PCh] ~3 ~7 ~ execute @e[type=ArmorStand,name=PCp,r=1] ~ ~ ~ particle heart ~ ~ ~ .8 1.3 .8 1 1000
execute @e[type=ArmorStand,name=PCh] ~3 ~7 ~ execute @e[type=ArmorStand,name=PCp,r=1] ~ ~ ~ execute @a ~ ~ ~ playsound entity.experience_orb.touch @p
execute @e[type=ArmorStand,name=PCh] ~3 ~7 ~ execute @e[type=ArmorStand,name=PCp,r=1] ~ ~ ~ execute @a ~ ~ ~ playsound entity.villager.yes @a
execute @e[type=ArmorStand,name=PCh] ~3 ~7 ~ execute @e[type=ArmorStand,name=PCp,r=1] ~ ~ ~ scoreboard players add @p PrCoP 1
execute @e[type=ArmorStand,name=PCh] ~3 ~7 ~ kill @e[type=ArmorStand,name=PCp,r=1]
# Points
INIT:scoreboard objectives add PrCoP dummy
# Force the player back into the sleigh if they jump out mid-game
# scoreboard to track ejected state (scoreboard objective is also used to track present dropping cooldown)
INIT:scoreboard objectives add PCe dummy
scoreboard players set @e[tag=PCs] PCe 0
execute @a[score_PCg=0] ~ ~ ~ scoreboard players set @e[tag=PCs,score_PCg_min=332,r=30] PCe 1
execute @e[tag=PCs,score_PCe_min=1] ~ ~ ~ tp @p[r=12] @e[tag=PCpt,name=PCst,c=1,r=12]
execute @e[tag=PCs,score_PCe_min=1] ~ ~ ~ tp @e[name=PCst] ~ ~5.5 ~
execute @e[tag=PCs,score_PCe_min=1] ~ ~ ~ tp @p[r=12] ~ ~5 ~
execute @e[tag=PCs,score_PCe_min=1] ~ ~ ~ tellraw @p[r=12] {"text":"\n\n\n\n\n\n\n\n\n Right click to get back into the sleigh!\n","color":"yellow"}
# Timer
INIT:scoreboard objectives add PCtm dummy
execute @e[tag=PCs,score_PCg_min=232,score_PCg=232] ~ ~ ~ scoreboard players set @p PCtm 3600
execute @e[tag=PCs,score_PCg_min=233,score_PCe=0] ~ ~ ~ scoreboard players remove @p PCtm 1
# Ending
execute @a[score_PCtm=0] ~ ~ ~ detect ~ ~-2 ~ air 0 tp @e[tag=PCs] ~0.2 ~-0.2 ~
tellraw @a[score_PCtm=1] [{"text":"\n\n\n\n\n\n\n\n\n\n\n\nYou delivered ","color":"green"},{"score":{"name":"@a[score_PCg_min=1]","objective":"PrCoP"},"color":"red"},{"text":" presents in 3 minutes!\n"}]
tp @a[score_PCtm=-120] ~ ~ ~
execute @a[score_PCtm=-120] ~ ~ ~ tp @e[tag=PCpt,r=16] ~ ~-1000 ~
execute @a[score_PCtm=-120] ~ ~ ~ tp @e[tag=PCs,r=16] ~ ~-1000 ~
execute @a[score_PCtm=-120] ~ ~ ~ execute @e[name=PCpa] ~ ~ ~ kill @e[type=ArmorStand,r=6]
scoreboard players set @a[score_PCtm=-120] PCg 0
scoreboard players reset @a[score_PCtm=-120] PCtm