package joshie.progression.criteria.triggers;
import joshie.progression.Progression;
import joshie.progression.api.ProgressionAPI;
import joshie.progression.api.criteria.ITrigger;
import joshie.progression.api.criteria.ProgressionRule;
import joshie.progression.api.special.DisplayMode;
import joshie.progression.api.special.ICustomDescription;
import joshie.progression.api.special.ICustomWidth;
import joshie.progression.helpers.DimensionHelper;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent;
@ProgressionRule(name="changeDimension", color=0xFF4C0000, meta="onChangeDimension")
public class TriggerChangeDimension extends TriggerBaseCounter implements ICustomDescription, ICustomWidth {
public boolean checkFrom = false;
public int from = 0;
public boolean checkTo = true;
public int to = -1;
@Override
public ITrigger copy() {
TriggerChangeDimension trigger = new TriggerChangeDimension();
trigger.checkFrom = checkFrom;
trigger.from = from;
trigger.checkTo = checkTo;
trigger.to = to;
return copyCounter(trigger);
}
@Override
public String getDescription() {
StringBuilder builder = new StringBuilder();
if (checkTo) builder.append(Progression.translate("trigger.changeDimension.go") + " " + DimensionHelper.getDimensionNameFromID(to));
if (checkFrom && checkTo) builder.append("\n");
if (checkFrom) builder.append(Progression.translate("trigger.changeDimension.leave")+ " " + DimensionHelper.getDimensionNameFromID(from));
if (!checkTo && !checkFrom) builder.append(Progression.translate("trigger.changeDimension.change"));
return builder.toString();
}
@Override
public int getWidth(DisplayMode mode) {
return mode == DisplayMode.EDIT ? 100 : 80;
}
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onEvent(PlayerChangedDimensionEvent event) {
ProgressionAPI.registry.fireTrigger(event.player, getProvider().getUnlocalisedName(), event.fromDim, event.toDim);
}
@Override
protected boolean canIncrease(Object... data) {
int fromDim = (Integer) data[0];
int toDim = (Integer) data[1];
if (checkFrom) {
if (from != fromDim) return false;
}
if (checkTo) {
if (to != toDim) return false;
}
return true;
}
}