Files
common/src/main/java/org/saturnclient/feature/Feature.java
T
2026-03-20 20:56:37 +01:00

60 lines
1.4 KiB
Java

package org.saturnclient.feature;
import org.saturnclient.common.ref.asset.IdentifierRef;
import org.saturnclient.config.ConfigManager;
import org.saturnclient.config.property.NamedProperty;
import org.saturnclient.ui.RenderScope;
import org.saturnclient.ui.resources.Textures;
public abstract class Feature {
private final FeatureDetails details;
private final ConfigManager configManager;
public Feature(FeatureDetails details, NamedProperty... props) {
this.details = details;
configManager = new ConfigManager(details.name);
for (NamedProperty prop : props) {
configManager.property(prop.name, prop.prop);
}
}
public void render(RenderScope scope) {
}
public void tick() {
}
public abstract boolean isEnabled();
public final void setEnabled(boolean e) {
onEnabled(e);
FeatureManager.updateEnabledModules();
}
public abstract void onEnabled(boolean e);
public final String getName() {
return details.name;
}
public IdentifierRef getIconTexture() {
return Textures.getModIcon(details.namespace);
}
public ConfigManager getConfig() {
return configManager;
}
public String getDescription() {
return details.description;
}
public String[] getTags() {
return details.tags;
}
public String getVersion() {
return details.version;
}
}