8 votos

¿Cómo puedo desactivar el daño de los bloques de TNT?

Estoy haciendo un mapa y va a haber muchas explosiones y no quiero que dañen los bloques.

He hecho /gamerule mobGriefing false pero todavía habrá daño de bloque de TNT.

¿Hay alguna forma de desactivar eso también?

0 votos

También puedes utilizar roca madre u obsidiana. Son bloques indestructibles.

0 votos

Pero tengo una habitación circular con una cúpula de cristal y ambas son altamente destructibles y si las cambio por roca madre u obsidiana se verá feo

0 votos

¿Quieres daños por explosión?

11voto

Monroecheeseman Puntos 825

Así que esto es complicado, pero no mucho peor que impedir que un jugador fabrique una espada de diamante . La mayor diferencia aquí es que todo debe ocurren en el mismo momento, y debe ocurren cada vez que hay un tic. Esto excluye la estrategia que utilicé en la respuesta enlazada; un reloj de relleno de 20hz es prácticamente una necesidad, mientras que podría utilizar un reloj más lento y sencillo en esa otra respuesta. Para que esto funcione, todavía vas a querer deshabilitar el mob griefing, ya que estoy usando bolas de fuego ghast para crear la explosión real. También es posible tener el efecto, pero causar 0 daño a los jugadores u otras entidades, y voy a añadir los comandos para que al final.

El primer paso es establecer un objetivo de marcador para rastrear la TNT que está a punto de explotar:

/scoreboard objectives add TNTGoBoom dummy

A continuación, tenemos que configurar un fill reloj. Necesitarás dos bloques de comandos en una columna con un bloque de aire separándolos. En la parte inferior, introduce el siguiente comando:

fill ~ ~1 ~ ~3 ~1 ~ air

y en la superior, introduce este comando:

fill ~ ~-1 ~ ~3 ~-1 ~ redstone_block

Pon un bloque de piedra roja entre los dos, y tendrás tu reloj de relleno. Lo ideal es que no esté cerca del límite de un chunk, pero el mío lo estaba y seguía funcionando bien. Pueden empezar a ocurrir cosas raras si parte de un reloj de relleno se descarga de la memoria, pero si es un chunk de spawn o siempre estás cerca del reloj, no tienes que preocuparte.

Deberías ver otros tres bloques de piedra roja por un lado. Vas a poner otros tres bloques de mando adyacentes a los bloques de redstone (preferiblemente por encima o por debajo). En orden de cercanía a los dos primeros bloques de comando, los comandos que quieres usar son:

scoreboard players set @e[type=PrimedTnt] TNTGoBoom 1 {Fuse:0b}
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ summon Fireball ~ ~ ~ {direction:[0.0,-1.0,0.0],ExplosionPower:4,Fuse:0,Time:-1,TileEntityData:{CustomName:"TNT"},ActiveEffects:[{Id:14,Duration:10,Amplifier:10,Ambient:1}]}
kill @e[type=PrimedTnt,score_TNTGoBoom=1]

Bien, repasemos esos tres comandos. El primero establece el valor del marcador para el objetivo TNTGoBoom a 1 por cada TNT que esté lista para explotar en el siguiente tick. Así es como se rastrea la TNT. El siguiente comando invoca una bola de fuego invisible en el lugar exacto de la TNT, moviéndose directamente hacia abajo, y con el mismo poder explosivo de un trozo de TNT. Esto es lo que realmente causará el efecto de la explosión y el daño a los jugadores/entidades, pero como el mob griefing está desactivado no dañará el terreno. Por último kill (eliminar efectivamente) el TNT que está a punto de explotar para que it no daña el terreno.


Ahora bien, si quieres seguir teniendo el efecto de explosión sin causar ningún daño, entonces tienes que sustituir el comando de invocación de la bola de fuego por 2 bloques de comando (y, por tanto, ampliar tu reloj de llenado en un bloque más):

execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ particle hugeexplosion ~ ~ ~ 0 0 0 1
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ playsound random.explode @a ~ ~ ~

Estos dos comandos crean el efecto de partículas y el sonido de la explosión de TNT, pero eso es todo. No hay daño al mundo, a los jugadores o a las entidades si usas esto en lugar del método de la bola de fuego.


Apéndice: Esto realmente va a estropear cosas como los cañones de TNT. Tenía esto funcionando en mi mundo creativo donde estaba probando previamente un cañón de TNT infinito y aunque funciona un poco (el proyectil TNT sigue saliendo disparado), tiene tendencia a enviar una bola de fuego al cielo. Además, usar esto significa que cada bloque de TNT tiene que ser encendido individualmente, ya que con el mob-griefing desactivado, la bola de fuego no encenderá a los demás cercanos. Estoy seguro de que hay una manera de evitar esto con un poco más de comando-block-fu. En realidad, sé que hay una manera de hacerlo, sólo que no estoy al 100% en los detalles todavía.

0 votos

Lo he intentado y no ha funcionado, ¿hay algo que se me escapa como que los 3 comandos tienen que estar en un orden específico? ¿También se supone que los bloques de piedra roja son intermitentes?

0 votos

Nvm lo tengo. Gracias

0 votos

Hay alguna forma de hacer que la bola de fuego haga más daño o en vez de una bola de fuego hacerla una enredadera porque no hace suficiente daño para que se pueda usar como un arma eficiente

1voto

Frederick Marcoux Puntos 472

Esta es una teoría que he tenido, es un poco confusa y todavía estoy trabajando en hacerla funcionar. Si usted puede hacer que un comando de bloques encuentra el TNT (con la prueba de comando) y lo hace para que desove una enredadera con un retraso de la explosión, y hace que la explosión de la enredadera fuera (regla del juego mob griefing off). Después de que se genera lo hace de manera que la entidad de TNT encendida se mata. En resumen, si enciendes una TNT, ésta desaparece y se sustituye por una criatura que explota al instante.

0 votos

¿Podría explicarlo?

0voto

Christian Correa Puntos 1048

No en Vanilla Minecraft, no.

Necesitarías un plugin de servidor o un mod (preferiblemente WorldGuard) para hacerlo.

Hay una buena pregunta aquí que muestra cómo se puede hacer esto con World Guard.


Fuente

0voto

elzapp Puntos 831

Haz un artilugio que haga que un bloque de comandos se encienda y se apague y se apague y se encienda, etc, etc. ahora, escribe /kill @e[type=PrimedTnt] en el bloque de comandos. Esto destruirá a tnt en cuanto se ponga. ¡SIMPLE!

0 votos

Quiero que haga daño al jugador y al mob.

0 votos

Si miras mi respuesta, verás que estoy haciendo esto, y mucho más.

0voto

ledy Puntos 190

No utilices TNT, simplemente utiliza un enredador que explote al instante utilizando /invocar enredadera x y z {Fusible:0} o si quieres que todo el TNT no dañe ningún bloque usa

invocar una enredadera cargada en el lugar de la TNT poniendo /ejecutar @e[type=PrimedTNT] ~ ~ ~ invocar enredadera ~ ~ {Fuse:0} en un reloj, y usar /kill @e[type=PrimedTNT] en un reloj también

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X