package openblocks.enchantments.flimflams;
import com.google.common.base.Throwables;
import java.util.Random;
import net.minecraft.entity.DataWatcher;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.player.EntityPlayerMP;
import openblocks.api.IFlimFlamAction;
import openmods.reflection.FieldAccess;
public class DummyCreepersFlimFlam implements IFlimFlamAction {
private static final Random random = new Random();
private static final FieldAccess<Integer> EXPLOSION_RADIUS = FieldAccess.create(EntityCreeper.class, "explosionRadius", "field_82226_g");
private static final FieldAccess<DataWatcher> DATA_WATCHER = FieldAccess.create(EntityCreeper.class, "dataWatcher", "field_70180_af");
@Override
public boolean execute(EntityPlayerMP target) {
for (int i = 0; i < 15; i++) {
EntityCreeper creeper = new EntityCreeper(target.worldObj);
try {
EXPLOSION_RADIUS.set(creeper, 0);
DataWatcher watcher = DATA_WATCHER.get(creeper);
watcher.updateObject(17, (byte)1); // Powered
} catch (Throwable t) {
throw Throwables.propagate(t);
}
creeper.setPosition(target.posX + 20 * (random.nextFloat() - 0.5),
target.posY + 5 * (1 + random.nextFloat()),
target.posZ + 20 * (random.nextFloat() - 0.5));
target.worldObj.spawnEntityInWorld(creeper);
}
return true;
}
}