package openblocks.enchantments.flimflams;
import com.google.common.collect.Lists;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import openblocks.api.IFlimFlamAction;
public class EffectFlimFlam implements IFlimFlamAction {
private static final Random RANDOM = new Random();
private final List<EffectMeta> EFFECTS = Lists.newArrayList();
{
EFFECTS.add(new EffectMeta(Potion.blindness, 1, 1, seconds(15), seconds(60)));
EFFECTS.add(new EffectMeta(Potion.confusion, 1, 1, seconds(15), seconds(60)));
EFFECTS.add(new EffectMeta(Potion.digSlowdown, 50, 100, seconds(15), seconds(60)));
EFFECTS.add(new EffectMeta(Potion.jump, 30, 50, seconds(5), seconds(15)));
EFFECTS.add(new EffectMeta(Potion.moveSpeed, 50, 100, seconds(5), seconds(15)));
EFFECTS.add(new EffectMeta(Potion.moveSlowdown, 4, 7, seconds(5), seconds(15)));
}
private static int seconds(int s) {
return s * 20;
}
private static class EffectMeta {
public final int potionId;
public final int levelMin;
public final int levelRange;
public final int durationMin;
public final int durationRange;
public EffectMeta(Potion potion, int levelMin, int levelMax, int durationMin, int durationMax) {
this.potionId = potion.id;
this.levelMin = levelMin;
this.levelRange = levelMax - levelMin + 1;
this.durationMin = durationMin;
this.durationRange = durationMax - durationMin + 1;
}
}
@Override
public boolean execute(EntityPlayerMP target) {
Collections.shuffle(EFFECTS);
for (int i = 0; i < 2; i++) {
EffectMeta selected = EFFECTS.get(i);
int duration = selected.durationMin + RANDOM.nextInt(selected.durationRange);
int level = selected.levelMin + RANDOM.nextInt(selected.levelRange);
target.addPotionEffect(new PotionEffect(selected.potionId, duration, level));
}
return true;
}
}