es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La modificación de mi Minecraft, mis efectos no están funcionando.

Mi problema es que, como has visto en el título, mis efectos no funcionan cuando los pongo en mi jugador.
Este es mi código:

@SubscribeEvent
public void onCopperBlockSneak(InputUpdateEvent event)
{
if (event.getMovementInput().sneaking)
{
PlayerEntity player = event.getPlayer();

    ItemStack mainHand = player.getHeldItemMainhand();

    BlockPos blockPos = player.getPosition().down();
    BlockState block = player.world.getBlockState(blockPos);

    if (block.getBlock() == ModBlocks.COPPER_BLOCK.get())
    {
        if (mainHand.getItem() == ModItems.COPPER_WIRE.get()) {
            player.addPotionEffect(new EffectInstance(Effects.STRENGTH, 100));
            player.addPotionEffect(new EffectInstance(Effects.REGENERATION, 100));
            player.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 100));

            mainHand.shrink(1);

            String msg = TextFormatting.RED + "¡¡¡HAS ENTRADO EN MODO DIOS!!!";
            player.sendMessage(new StringTextComponent(msg), player.getUniqueID());
        }
    }
}

}

¿Alguien puede ayudarme por favor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que los efectos no estén funcionando debido a que la duración de los efectos de la poción solo está establecida a 100 ticks, lo que equivale a unos 5 segundos. Puedes intentar aumentar la duración de los efectos aumentando el segundo parámetro de cada constructor de EffectInstance.

    Por ejemplo, puedes cambiar:

    player.addPotionEffect(new EffectInstance(Effects.STRENGTH, 100));
    player.addPotionEffect(new EffectInstance(Effects.REGENERATION, 100));
    player.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 100));
    

    a:

    player.addPotionEffect(new EffectInstance(Effects.STRENGTH, 600, 1));
    player.addPotionEffect(new EffectInstance(Effects.REGENERATION, 600, 1));
    player.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 600, 1));
    

    Esto establecerá la duración de cada efecto en 30 segundos.

    Además, asegúrate de que tu jugador no esté ya en el nivel máximo de efecto de poción para ninguno de los efectos que estés intentando aplicar. Por ejemplo, si el jugador ya tiene Fuerza II, añadir Fuerza I no tendrá efecto. Puedes comprobar los efectos de poción activos del jugador abriendo el inventario y mirando los iconos de los efectos de estado.

    Finalmente, asegúrate de estar llamando correctamente a este evento y de que se esté registrando correctamente en tu mod. Puedes probar a poner una instrucción de impresión en el método del manejador de eventos para verificar si se está llamando cuando se espera.

Comments are closed.