1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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;
- }
- }
|