Je cherche un moyen de faire en sorte que lorsque quelqu'un est à l'extérieur pendant la journée, il soit tué. J'ai cherché pendant longtemps et j'ai essayé plusieurs choses différentes, mais elles finissent par vous tuer même si vous êtes en sécurité.
Réponses
Trop de publicités?Il peut sembler être la meilleure idée d'utiliser un capteur de luminosité pour cela, mais cela comporte de nombreux petits problèmes, comme étant visible lorsque placé à l'emplacement du joueur, potentiellement écrasant des blocs (comme de l'herbe), ne pouvant pas vérifier son niveau de sortie directement, …
Je suggérerais simplement de vérifier la présence d'air dans une colonne allant de la tête du joueur à la limite de construction.
Assurez-vous d'abord d'avoir une colonne d'air à une position connue, par exemple 0 0 (de préférence dans les chunks de spawn):
/fill 0 0 0 0 255 0 air
Chaque fois que vous voulez vérifier si tout au-dessus du joueur est de l'air, vous n'avez qu'à comparer avec des coordonnées partiellement relatives:
execute if blocks ~ ~ ~ ~ 255 ~ 0 ~ 0 all run
L'inconvénient de cela est que tous les blocs sauf l'air protègent un joueur, y compris le verre, les boutons, les panneaux, …
Eh bien, la partie initiale est facile. Vous pourriez connecter un capteur de lumière à un bloc de commande, pour déclencher la commande de nuire en appliquant l'effet "Instant_Damage" constamment, ou les tuer directement
/effect minecraft:instant_damage
/kill @p
Le dommage instantané inflige 3 dégâts à chaque fois qu'il est appliqué, il faudrait donc mettre en place une horloge.
Cependant, je ne sais pas comment vous pourriez être amené à vérifier si quelqu'un est "à l'extérieur", en dehors de vérifier les joueurs qui se trouvent dans une zone d'un certain niveau de lumière, et vous devriez déterminer quel est ce niveau de lumière, car l'exposition à différentes sources de lumière pourrait perturber cela un peu
Je pense que ce serait mieux si vous faisiez un datapack pour ça. Dans un datapack, vous pouvez avoir vos propres alias, donc vous
pouvez en créer un comme 'not_protect', puis vérifier si la zone '~ ~2 ~ ~ 255 ~' contient quelque chose d'autre que ce qui est spécifié dans votre alias,
et ensuite, au moins, exécuter votre commande.
J'espère que c'est ce que vous cherchez.
Voici une preuve de concept pour une solution très légère. Vous avez besoin d'une entité marqueur, invoquée comme suit :
/summon minecraft:armor_stand -114.60 90.00 221.33 {Marker: 1b, Invulnerable: 1b, Invisible: 1b, Tags: ["sun-burner"]}
Ensuite, vous avez besoin d'un bloc de commande "repeating" et de deux blocs de commande enchaînés, qui contiennent dans l'ordre :
execute as @e[tag = sun-burner] at @p run spreadplayers ~ ~ 0 1 false @s
execute at @e[tag = sun-burner] run effect give @p[distance = ..1] minecraft:wither 5 1 true
# Juste pour l'aspect
execute at @e[tag = sun-burner] at @p[distance = ..1] run particle minecraft:flame ~ ~1 ~ 0.5 1 0.5 0.1 32 normal
Cela utilise spreadplayers
pour téléporter le marqueur à la surface à la position du joueur, puis vérifie s'il a atteint le joueur (c'est-à-dire que le joueur est également à la surface). Dans ce cas, le joueur est atteint de wither.
Notes et précautions :
-
Cela ne fonctionne que pour un seul joueur. Pour plusieurs joueurs, la meilleure solution est probablement de mettre le code de
spreadplayers
+ de détection dans une seule fonction, et d'exécuter la fonctionas @a
. -
Cela ne ciblera pas de manière fiable les joueurs se tenant dans l'eau (je ne sais pas pourquoi cela fonctionne parfois, mais cela pourrait être une fonctionnalité pour vous) ou dans la lave (mais je suppose qu'ils auraient d'autres soucis à régler).
-
Cela ne ciblera pas les joueurs dans les airs, ce qui pourrait poser un problème.
-
L'effet atteint actuellement un bloc dans les surplombs. Vous pouvez supprimer ce "débordement" en modifiant la deuxième commande pour lire
@p[distance = ..0.5]
, mais je trouve ça sympa.
1 votes
S'agit-il d'une carte d'aventure, ou d'une carte qui peut être affectée par le joueur dans une grande mesure (en gros, pourront-ils construire leur propre maison, ou abri, ou est-ce prédéfini pour eux?)
0 votes
Que voulez-vous dire par "ils finissent par vous tuer même si vous êtes en sécurité"?
0 votes
Donc je devrais supposer imiter les Zombies/Squelettes ? Si vous vous trouvez quelque part où il n'y a rien au-dessus de votre tête, vous mourez ? (Ils meurent en prenant feu, mais je suppose que vous pourriez augmenter les dégâts si vous intégrez une fonction 'IsStandingInSun' ?)
0 votes
Essayez de vérifier s'il n'y a pas de bloc au-dessus d'un joueur.