package me.km.effects.active; import me.km.KajetansMod; import me.km.effects.ActiveEffectBase; import me.km.effects.EffectAirBlockChanger; import me.km.effects.EffectUtils; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; public class BlockExplosion extends ActiveEffectBase { @Override protected boolean executeEffect(EntityPlayerMP p, int power) { WorldServer w = p.getServerWorld(); EntityItem item = new EntityItem(w, p.posX, p.posY, p.posZ, new ItemStack(Blocks.TNT)); item.setInfinitePickupDelay(); w.spawnEntity(item); BlockPos mid = p.getPosition(); EffectAirBlockChanger e = new EffectAirBlockChanger(w); power = Math.max(0, Math.min(power, 6)); int radius2 = power * power; for(int x = -power; x <= power; x++) { for(int y = -power; y <= power; y++) { for(int z = -power; z <= power; z++) { if(x * x + y * y + z * z <= radius2) { e.addBlock(mid.add(x, y, z)); } } } } KajetansMod.scheduler.scheduleTask(() -> { item.setDead(); EffectUtils.spawnParticle(w, EnumParticleTypes.EXPLOSION_LARGE, item, 1); e.run(300); }, 60); return true; } }