package net.t7seven7t.craftfx.data.effect;
import net.t7seven7t.craftfx.CraftFX;
import net.t7seven7t.craftfx.data.AbstractData;
import net.t7seven7t.craftfx.data.Data;
import net.t7seven7t.util.EnumUtil;
import org.bukkit.entity.EntityType;
/**
*
*/
public class TargetSelectorData extends AbstractData {
private final String modeDef;
private final int limitDef;
private final double aoeRadiusDef;
private String mode;
private int limit;
private EntityType entityType;
private double aoeRadius;
public TargetSelectorData(String modeDef, int limitDef, double aoeRadiusDef) {
this.modeDef = modeDef;
this.limitDef = limitDef;
this.aoeRadiusDef = aoeRadiusDef;
}
public int getLimit() {
return limit;
}
public double getAoeRadius() {
return aoeRadius;
}
public String getMode() {
return mode;
}
public EntityType getEntityType() {
return entityType;
}
@Override
public void onDataHolderUpdate() {
this.mode = get("target-mode", String.class, modeDef);
this.limit = get("target-limit", Integer.class, limitDef);
this.entityType = EnumUtil.matchEnumValue(EntityType.class,
get("target-entity-type", String.class, ""));
this.aoeRadius = get("target-aoe-radius", Double.class, aoeRadiusDef);
if (!CraftFX.instance().getTargetSelectorRegistry().getSpec(mode).isPresent()) {
CraftFX.log().warning("You have selected a mode that is not registered. " +
"Defaulting to 'self' mode. Details: effect = %s, mode = %s",
getHolder().get(), mode);
}
}
@Override
public Data getCopy() {
return new TargetSelectorData(modeDef, limitDef, aoeRadiusDef);
}
}