I'm completely new to Forge, and what I'm trying to do is extremely simple : I want to create a block that damages the player when they break it. But when testing my mod, the world crashes every time I break my block. The error is " io.netty.handler.codec.EncoderException: Failed to encode packet 'clientbound/minecraft:damage_event' "
Here is my code :
public class DamagerBlock extends Block {
public DamagerBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
public void playerDestroy(Level level, Player p, BlockPos pos, BlockState state, @Nullable BlockEntity bentity, ItemStack stack) {
p.awardStat(Stats.BLOCK_MINED.get(this));
p.causeFoodExhaustion(0.005F);
System.out.println("The player is taking damage !"); //Just to check that the method is called
if (!level.isClientSide()) {
p.hurt(new DamageSource(new Holder.Direct<DamageType>(new DamageType("magic", 0.F, DamageEffects.HURT))), 5);
}
dropResources(state, level, pos, bentity, p, stack, false);
}
}
I think I'm actually missing a lot of knowledge about client/server communication, but I just don't know how to properly tell the client that the player takes damage...