Sistema de correo en un comando
Por Champicreeper
Especificaciones
Necesitas estar en las coordenadas 100 50 100 o cerca y ejecutar el comando /setworldspawn.
Funcionamiento
Como funciona es muy simple, tienes que tirar un item para que ejecute sus respectivos comandos (Enviar correo o recibir correo) y después activar el botón para enviarlo o desaparecer el dispensador con el cual recibiste el correo
Cuando envías el correo, el dispensador es clonado hasta las coordenadas 100 100 100, cuando lo recibes es clonado hacia tí.
¿Qué incluye?
Hay un bloqueo si alguien está checando su correo, nadie más podrá recibir correo hasta que se presione el botón.
Hay también otro bloqueo si alguien está enviando correo, nadie más podrá enviar correo hasta que se presione el botón.
Si el botón no se presiona en 1000 ticks, el correo recibido o que se va a enviar será autodestruido pero los items seguirán adentro.
Bugs conocidos
Un fallo es cuando activas en el botón para enviar se "dispensa" el item, vuelve a activarlo y debería enviarse o desaparecer.
Este comando lo que hace es añadir un sistema de correo muy, muy simple, hecho en muy poco tiempo sin mucho detalle. Sólo lo cree para hacer un ejemplo para Minecience.
Comando:
/summon MinecartCommandBlock ~ ~1 ~ {Command:kill @e[type=MinecartCommandBlock,r=1],Riding:{id:MinecartCommandBlock,Command:setblock ~ ~-1 ~1 redstone_block,Riding:{id:MinecartCommandBlock,Command:setblock ~ ~ ~1 command_block 0 replace {Command:fill ~ ~-3 ~-1 ~ ~ ~ air},Riding:{id:MinecartCommandBlock,Command:"scoreboard objectives add Autodest dummy",Riding:{id:MinecartCommandBlock,Command:"scoreboard objectives add ExistenteI dummy",Riding:{id:MinecartCommandBlock,Command:"scoreboard objectives add Existente dummy",Riding:{id:MinecartCommandBlock,Command:"scoreboard objectives add Recibir dummy Recibir correo",Riding:{id:MinecartCommandBlock,Command:"scoreboard objectives add Enviar dummy Enviar correo",Riding:{id:MinecartCommandBlock,Command:"/give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:RecibirCorreo},ench:[{id:0,lvl:1}]}",Riding:{id:MinecartCommandBlock,Command:"/give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:EnviarCorreo},ench:[{id:0,lvl:1}]}",Riding:{id:MinecartCommandBlock,Command:"summon ArmorStand ~ ~ ~ {CustomName:CorreoExistenteInvertido,Invisible:1,Marker:1}",Riding:{id:MinecartCommandBlock,Command:"summon ArmorStand ~ ~ ~ {CustomName:CorreoExistente,Invisible:1,Marker:1}",Riding:{id:MinecartCommandBlock,Command:"tellraw @a {text:\"Necesitas estar en las coordenadas 100 50 100 y ejecutar el comando /setworldspawn, si no estás ahí, por favor destruye esta máquina y vuelva a instalarla en esas cordenadas. - Creado por Champicreeper\",color:green}",Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~-2 ~-1 {Command:fill ~ ~ ~1 ~5 ~3 ~1 stone},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~-2 ~1 {Command:fill ~ ~ ~-1 ~5 ~3 ~-1 redstone_block},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~-2 ~-1 {Command:"scoreboard players set @e[type=Item] Enviar 1 {Item:{id:\\\"minecraft:sapling\\\",Count:1b,tag:{ench:[0:{lvl:1,id:0}],HideFlags:1,display:{Name:\\\"EnviarCorreo\\\"}},Damage:0s}}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~-2 ~1 {Command:"execute @e[score_Enviar_min=1] ~ ~ ~ give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:EnviarCorreo},ench:[{id:0,lvl:1}]}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~-2 ~-1 {Command:"execute @e[name=Cartero] ~ ~ ~ scoreboard players set @e[name=CorreoExistente] Existente 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~-2 ~1 {Command:"execute @e[name=CarteroInvertido] ~ ~ ~ scoreboard players set @e[name=CorreoExistenteInvertido] ExistenteI 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~-2 ~-1 {Command:"execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~ ~ dispenser 1 0 {CustomName:\\\"Correo\\\"}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~-2 ~1 {Command:"execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:CarteroInvertido,Invisible:1,Marker:1}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~-2 ~-1 {Command:"execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~1 ~ stone_button 5"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~-2 ~1 {Command:"execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~-1 ~ minecraft:command_block 1 0 {Command:\\\"summon ArmorStand ~ ~1 ~ {CustomName:CofreLleno,Invisible:1,Marker:1}\\\"}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~-2 ~-1 {Command:"execute @e[name=CofreLleno] ~ ~ ~ clone ~ ~ ~ ~ ~ ~ 100 100 100"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~-2 ~1 {Command:"execute @e[name=CofreLleno] ~ ~ ~ setblock ~ ~-1 ~ grass"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~-1 ~-1 {Command:"execute @e[name=CofreLleno] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~-1 ~1 {Command:"execute @e[name=CofreLleno] ~ ~ ~ kill @e[name=CarteroInvertido,r=5]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~-1 ~-1 {Command:"execute @e[name=CofreLleno] ~ ~ ~ playsound random.orb @a[r=5] 1 1 1 1 2 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~-1 ~1 {Command:"scoreboard players set @e[type=Item] Recibir 1 {Item:{id:\\\"minecraft:sapling\\\",Count:1b,tag:{ench:[0:{lvl:1,id:0}],HideFlags:1,display:{Name:\\\"RecibirCorreo\\\"}},Damage:0s}}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~-1 ~-1 {Command:"execute @e[score_Recibir_min=1] ~ ~ ~ give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:RecibirCorreo},ench:[{id:0,lvl:1}]}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~-1 ~1 {Command:"execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ clone 100 100 100 100 100 100 ~ ~-1 ~"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~-1 ~-1 {Command:"execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:Autodestruccion,Invisible:1,Marker:1}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~-1 ~1 {Command:"execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ setblock ~ ~ ~ stone_button 5"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~-1 ~-1 {Command:"execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ setblock ~ ~-2 ~ command_block 1 0 {Command:\\\"summon ArmorStand ~ ~1 ~ {CustomName:CorreoRecibido,Invisible:1,Marker:1}\\\"}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~-1 ~1 {Command:"execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ summon ArmorStand ~-1 ~ ~-1 {CustomName:\\\"Cartero\\\",CustomNameVisible:1,ShowArms:1,Marker:1b,Invulnerable:1,NoBasePlate:1,Equipment:[{id:skull,Damage:3,Count:1,tag:{SkullOwner:{Id:\\\"587ca83a-8db0-499f-b58d-9c19fb05eb2d\\\",Properties:{textures:[{Value:\\\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGM3ZjY4NGQzYWMzYTU5YTljNzY2MjMzNDIzYjQ2NDUxYmZmN2I5NjQyYmI1ODlhN2VkYzVhZWY0NTdlNyJ9fX0=\\\"}]}}}},{id:leather_boots,Count:1},{id:leather_leggings,Count:1},{id:leather_chestplate,Count:1,tag:{display:{color:16776700}}},{id:skull,Damage:3,Count:1,tag:{SkullOwner:Bruno___}}]}"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~-1 ~-1 {Command:"execute @e[name=CorreoRecibido] ~ ~ ~ playsound random.orb @a[r=5] 1 1 1 1 0 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~-1 ~1 {Command:"execute @e[name=CorreoRecibido] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~ ~-1 {Command:"execute @e[name=CorreoRecibido] ~ ~ ~ setblock ~ ~-1 ~ grass"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~ ~1 {Command:"execute @e[name=CorreoRecibido] ~ ~ ~ kill @e[name=Cartero,r=5]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~ ~-1 {Command:"execute @e[name=CorreoRecibido] ~ ~ ~ kill @e[name=Autodestruccion,r=5]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~ ~1 {Command:"scoreboard players add @e[name=Autodestruccion] Autodest 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~ ~-1 {Command:"scoreboard players add @e[name=CarteroInvertido] Autodest 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~5 ~ ~1 {Command:"execute @e[score_Autodest_min=1000] ~ ~ ~ playsound mob.blaze.death @a[r=5] 1 1 1 1 0 1"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~ ~-1 {Command:"execute @e[score_Autodest_min=1000] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air"},Riding:{id:MinecartCommandBlock,Command:blockdata ~6 ~ ~1 {Command:"execute @e[score_Autodest_min=1000] ~ ~ ~ setblock ~ ~-1 ~ grass"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~ ~-1 {Command:"execute @e[score_Autodest_min=1000] ~ ~ ~ kill @e[name=Cartero,r=5]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~7 ~ ~1 {Command:"execute @e[score_Autodest_min=1000] ~ ~ ~ kill @e[score_Autodest_min=1000,r=5]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~ ~-1 {Command:"kill @e[score_Enviar_min=1]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~8 ~ ~1 {Command:"kill @e[score_Recibir_min=1]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~1 ~-1 {Command:"kill @e[name=CofreLleno]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~3 ~1 ~1 {Command:"kill @e[name=CorreoRecibido]"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~1 ~-1 {Command:"scoreboard players set @e[name=CorreoExistente] Existente 0"},Riding:{id:MinecartCommandBlock,Command:blockdata ~4 ~1 ~1 {Command:"scoreboard players set @e[name=CorreoExistenteInvertido] ExistenteI 0"},Riding:{id:MinecartCommandBlock,Command:setblock ~3 ~-2 ~ redstone_block,Riding:{id:MinecartCommandBlock,Command:fill ~3 ~-2 ~-1 ~4 ~1 ~-1 command_block,Riding:{id:MinecartCommandBlock,Command:fill ~3 ~-2 ~-1 ~8 ~ ~-1 command_block,Riding:{id:MinecartCommandBlock,Command:fill ~3 ~-2 ~1 ~4 ~1 ~1 command_block,Riding:{id:MinecartCommandBlock,Command:fill ~3 ~-2 ~1 ~8 ~ ~1 command_block,Riding:{id:MinecartCommandBlock,Command:setblock ~1 ~ ~ wall_sign 4 replace {Text2:"{text:\\\"Destruir\\\",color:black,clickEvent:{action:\\\"run_command\\\",value:\\\"kill @e[name=CorreoExistente]\\\"}}",Text3:"{text:\\\"maquina\\\",color:black}",Text4:"{text:\\\"\\\",clickEvent:{action:\\\"run_command\\\",value:\\\"fill ~ ~-3 ~-2 ~9 ~4 ~2 air\\\"}}"},Riding:{id:MinecartCommandBlock,Command:fill ~2 ~-2 ~-2 ~9 ~1 ~2 stained_glass 3 replace stained_hardened_clay 3,Riding:{id:MinecartCommandBlock,Command:fill ~2 ~-3 ~-2 ~9 ~2 ~2 stained_hardened_clay 3 hollow,Riding:{id:MinecartCommandBlock,Command:gamerule commandBlockOutput false,Riding:{id:MinecartCommandBlock,Riding:{id:FallingSand,Block:activator_rail,Time:1,Riding:{id:FallingSand,Block:redstone_block,Time:1,Riding:{id:FallingSand,Block:stone,Time:1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
INIT:tellraw @a {text:"Necesitas estar en las coordenadas 100 50 100 y ejecutar el comando /setworldspawn, si no estás ahí, por favor destruye esta máquina y vuelva a instalarla en esas cordenadas. - Creado por Champicreeper",color:green}
INIT:summon ArmorStand ~ ~ ~ {CustomName:CorreoExistente,Invisible:1,Marker:1}
INIT:summon ArmorStand ~ ~ ~ {CustomName:CorreoExistenteInvertido,Invisible:1,Marker:1}
INIT:/give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:EnviarCorreo},ench:[{id:0,lvl:1}]}
INIT:/give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:RecibirCorreo},ench:[{id:0,lvl:1}]}
INIT:scoreboard objectives add Enviar dummy Enviar correo
INIT:scoreboard objectives add Recibir dummy Recibir correo
INIT:scoreboard objectives add Existente dummy
INIT:scoreboard objectives add ExistenteI dummy
INIT:scoreboard objectives add Autodest dummy
#
scoreboard players set @e[type=Item] Enviar 1 {Item:{id:"minecraft:sapling",Count:1b,tag:{ench:[0:{lvl:1,id:0}],HideFlags:1,display:{Name:"EnviarCorreo"}},Damage:0s}}
execute @e[score_Enviar_min=1] ~ ~ ~ give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:EnviarCorreo},ench:[{id:0,lvl:1}]}
#
execute @e[name=Cartero] ~ ~ ~ scoreboard players set @e[name=CorreoExistente] Existente 1
#
execute @e[name=CarteroInvertido] ~ ~ ~ scoreboard players set @e[name=CorreoExistenteInvertido] ExistenteI 1
#
execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~ ~ dispenser 1 0 {CustomName:"Correo"}
#
execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:CarteroInvertido,Invisible:1,Marker:1}
#
execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~1 ~ stone_button 5
#
execute @e[score_ExistenteI_min=0,score_ExistenteI=0] ~ ~ ~ execute @e[score_Enviar_min=1] ~ ~ ~ execute @p ~ ~ ~ setblock ~ ~-1 ~ minecraft:command_block 1 0 {Command:"summon ArmorStand ~ ~1 ~ {CustomName:CofreLleno,Invisible:1,Marker:1}"}
#
execute @e[name=CofreLleno] ~ ~ ~ clone ~ ~ ~ ~ ~ ~ 100 100 100
execute @e[name=CofreLleno] ~ ~ ~ setblock ~ ~-1 ~ grass
execute @e[name=CofreLleno] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air
execute @e[name=CofreLleno] ~ ~ ~ kill @e[name=CarteroInvertido,r=5]
execute @e[name=CofreLleno] ~ ~ ~ playsound random.orb @a[r=5] 1 1 1 1 2 1
#
scoreboard players set @e[type=Item] Recibir 1 {Item:{id:"minecraft:sapling",Count:1b,tag:{ench:[0:{lvl:1,id:0}],HideFlags:1,display:{Name:"RecibirCorreo"}},Damage:0s}}
execute @e[score_Recibir_min=1] ~ ~ ~ give @p minecraft:sapling 1 0 {HideFlags:1,display:{Name:RecibirCorreo},ench:[{id:0,lvl:1}]}
#
execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ clone 100 100 100 100 100 100 ~ ~-1 ~
execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:Autodestruccion,Invisible:1,Marker:1}
execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ setblock ~ ~ ~ stone_button 5
execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ setblock ~ ~-2 ~ command_block 1 0 {Command:"summon ArmorStand ~ ~1 ~ {CustomName:CorreoRecibido,Invisible:1,Marker:1}"}
#
execute @e[score_Existente_min=0,score_Existente=0] ~ ~ ~ execute @e[score_Recibir_min=1] ~ ~ ~ summon ArmorStand ~-1 ~0 ~-1 {CustomName:"Cartero",CustomNameVisible:1,ShowArms:1,Marker:1b,Invulnerable:1,NoBasePlate:1,Equipment:[{id:skull,Damage:3,Count:1,tag:{SkullOwner:{Id:"587ca83a-8db0-499f-b58d-9c19fb05eb2d",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGM3ZjY4NGQzYWMzYTU5YTljNzY2MjMzNDIzYjQ2NDUxYmZmN2I5NjQyYmI1ODlhN2VkYzVhZWY0NTdlNyJ9fX0="}]}}}},{id:leather_boots,Count:1},{id:leather_leggings,Count:1},{id:leather_chestplate,Count:1,tag:{display:{color:16776700}}},{id:skull,Damage:3,Count:1,tag:{SkullOwner:Bruno___}}]}
#
execute @e[name=CorreoRecibido] ~ ~ ~ playsound random.orb @a[r=5] 1 1 1 1 0 1
execute @e[name=CorreoRecibido] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air
execute @e[name=CorreoRecibido] ~ ~ ~ setblock ~ ~-1 ~ grass
execute @e[name=CorreoRecibido] ~ ~ ~ kill @e[name=Cartero,r=5]
execute @e[name=CorreoRecibido] ~ ~ ~ kill @e[name=Autodestruccion,r=5]
#
scoreboard players add @e[name=Autodestruccion] Autodest 1
scoreboard players add @e[name=CarteroInvertido] Autodest 1
#
execute @e[score_Autodest_min=1000] ~ ~ ~ playsound mob.blaze.death @a[r=5] 1 1 1 1 0 1
execute @e[score_Autodest_min=1000] ~ ~ ~ fill ~ ~ ~ ~ ~1 ~ air
execute @e[score_Autodest_min=1000] ~ ~ ~ setblock ~ ~-1 ~ grass
execute @e[score_Autodest_min=1000] ~ ~ ~ kill @e[name=Cartero,r=5]
execute @e[score_Autodest_min=1000] ~ ~ ~ kill @e[score_Autodest_min=1000,r=5]
#
kill @e[score_Enviar_min=1]
kill @e[score_Recibir_min=1]
kill @e[name=CofreLleno]
kill @e[name=CorreoRecibido]
scoreboard players set @e[name=CorreoExistente] Existente 0
scoreboard players set @e[name=CorreoExistenteInvertido] ExistenteI 0

Un saludo, Champicreeper.
Linkback: https://minecraftmin.net/index.php?topic=10856.0