Refactored spec and management
This commit is contained in:
@@ -4,5 +4,5 @@ public class Providers {
|
||||
public static RefConstructorProvider refConstructor;
|
||||
public static SaturnProvider saturn;
|
||||
public static GLFWProvider GLFW;
|
||||
public static FeatureProvider module;
|
||||
public static FeatureProvider feature;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.saturnclient.mod;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.saturnclient.common.ref.asset.IdentifierRef;
|
||||
import org.saturnclient.config.ConfigManager;
|
||||
import org.saturnclient.config.property.NamedProperty;
|
||||
@@ -7,12 +9,12 @@ import org.saturnclient.ui.RenderScope;
|
||||
import org.saturnclient.ui.resources.Textures;
|
||||
|
||||
public abstract class Mod {
|
||||
private final ModSpec details;
|
||||
private final ModSpec spec;
|
||||
private final ConfigManager configManager;
|
||||
|
||||
public Mod(ModSpec details, NamedProperty... props) {
|
||||
this.details = details;
|
||||
configManager = new ConfigManager(details.name);
|
||||
public Mod(ModSpec spec, NamedProperty... props) {
|
||||
this.spec = spec;
|
||||
configManager = new ConfigManager(spec.name);
|
||||
for (NamedProperty prop : props) {
|
||||
configManager.property(prop.name, prop.prop);
|
||||
}
|
||||
@@ -34,11 +36,11 @@ public abstract class Mod {
|
||||
public abstract void onEnabled(boolean e);
|
||||
|
||||
public final String getName() {
|
||||
return details.name;
|
||||
return spec.name;
|
||||
}
|
||||
|
||||
public IdentifierRef getIconTexture() {
|
||||
return Textures.getModIcon(details.namespace);
|
||||
return Textures.getModIcon(spec.namespace);
|
||||
}
|
||||
|
||||
public ConfigManager getConfig() {
|
||||
@@ -46,14 +48,24 @@ public abstract class Mod {
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return details.description;
|
||||
return spec.description;
|
||||
}
|
||||
|
||||
public String[] getTags() {
|
||||
return details.tags;
|
||||
return spec.tags;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return details.version;
|
||||
return spec.version;
|
||||
}
|
||||
|
||||
public boolean isSupported() {
|
||||
for (Supplier<?> supplier : spec.requiresFeature) {
|
||||
if (supplier.get() == null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ import org.saturnclient.mod.mods.*;
|
||||
|
||||
public class ModManager {
|
||||
public static List<Mod> ENABLED_MODS = new ArrayList<>();
|
||||
public static Mod[] MODS = {
|
||||
public static List<Mod> MODS = new ArrayList<>(List.of(
|
||||
new ArmorDisplayMod(), new DayCounterMod(), new KeystrokesMod(), new StatusEffectsMod(),
|
||||
new AutoSprintMod(), new FpsMod(), new NametagsMod(), new TpsMod(),
|
||||
new ClockMod(), new FreelookMod(), new NoFogMod(), new ZoomMod(),
|
||||
new CoordinatesMod(), new FullbrightMod(), new PingMod(),
|
||||
new CrosshairMod(), new HealthDisplayMod(), new SpeedometerMod(),
|
||||
};
|
||||
new CrosshairMod(), new HealthDisplayMod(), new SpeedometerMod()));
|
||||
|
||||
public static void init() {
|
||||
MODS.removeIf(mod -> !mod.isSupported());
|
||||
updateEnabledModules();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package org.saturnclient.mod;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ModSpec {
|
||||
public String name;
|
||||
public String namespace;
|
||||
public String description;
|
||||
public String version;
|
||||
public String[] tags = {};
|
||||
public Supplier<?>[] requiresFeature = {};
|
||||
|
||||
public ModSpec(String name, String namespace) {
|
||||
this.name = name;
|
||||
@@ -36,4 +39,9 @@ public class ModSpec {
|
||||
this.tags = tags;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModSpec requires(Supplier<?>... suppliers) {
|
||||
this.requiresFeature = suppliers;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.saturnclient.mod.mods;
|
||||
|
||||
import org.saturnclient.common.feature.PlayerFeature;
|
||||
import org.saturnclient.common.provider.FeatureProvider;
|
||||
import org.saturnclient.common.provider.Providers;
|
||||
import org.saturnclient.common.ref.game.ItemStackRef;
|
||||
import org.saturnclient.config.property.BoolProperty;
|
||||
@@ -28,7 +29,8 @@ public class ArmorDisplayMod extends Mod implements HudMod {
|
||||
new ModSpec("Armor Display", "armor")
|
||||
.description("Displays armor durability")
|
||||
.version("v0.2.0")
|
||||
.tags("Utility"),
|
||||
.tags("Utility")
|
||||
.requires(Providers.feature::player),
|
||||
enabled.named("Enabled"),
|
||||
useMainHand.named("Use Main Hand"),
|
||||
layout.prop());
|
||||
@@ -40,7 +42,7 @@ public class ArmorDisplayMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
PlayerFeature player = Providers.module.player();
|
||||
PlayerFeature player = Providers.feature.player();
|
||||
renderArmor(scope,
|
||||
player.getMainHand(),
|
||||
player.getHelmet(),
|
||||
@@ -51,7 +53,7 @@ public class ArmorDisplayMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderDummy(RenderScope scope) {
|
||||
PlayerFeature player = Providers.module.player();
|
||||
PlayerFeature player = Providers.feature.player();
|
||||
renderArmor(scope,
|
||||
player.getDummyMainHand(),
|
||||
player.getDummyHelmet(),
|
||||
|
||||
@@ -31,8 +31,8 @@ public class AutoSprintMod extends Mod {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
PlayerFeature player = Providers.module.player();
|
||||
NetworkFeature network = Providers.module.network();
|
||||
PlayerFeature player = Providers.feature.player();
|
||||
NetworkFeature network = Providers.feature.network();
|
||||
|
||||
if (!player.hasPlayer() || !network.hasNetwork()) {
|
||||
return;
|
||||
|
||||
@@ -43,9 +43,9 @@ public class CoordinatesMod extends Mod implements HudMod {
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
renderCoords(
|
||||
Providers.module.player().getX(),
|
||||
Providers.module.player().getY(),
|
||||
Providers.module.player().getZ(),
|
||||
Providers.feature.player().getX(),
|
||||
Providers.feature.player().getY(),
|
||||
Providers.feature.player().getZ(),
|
||||
scope);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ public class CrosshairMod extends Mod {
|
||||
|
||||
@Override
|
||||
public void render(RenderScope scope) {
|
||||
if (!enabled.value || !Providers.module.entity().isTargetingLivingEntity()) {
|
||||
if (!enabled.value || !Providers.feature.entity().isTargetingLivingEntity()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderFeature render = Providers.module.render();
|
||||
RenderFeature render = Providers.feature.render();
|
||||
int x = (render.getScaledWindowWidth() - CROSSHAIR_SIZE) / 2;
|
||||
int y = (render.getScaledWindowHeight() - CROSSHAIR_SIZE) / 2;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public class DayCounterMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
renderDay(Providers.module.world().getDay(), scope);
|
||||
renderDay(Providers.feature.world().getDay(), scope);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -36,7 +36,7 @@ public class FpsMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
renderFps(Providers.module.render().getFps(), scope);
|
||||
renderFps(Providers.feature.render().getFps(), scope);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -75,7 +75,7 @@ public class FreelookMod extends Mod {
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
private void startFreelook() {
|
||||
RenderFeature render = Providers.module.render();
|
||||
RenderFeature render = Providers.feature.render();
|
||||
wasFirstPerson = render.isFirstPerson();
|
||||
render.setThirdPersonBack();
|
||||
isFreeLooking = true;
|
||||
@@ -83,7 +83,7 @@ public class FreelookMod extends Mod {
|
||||
|
||||
private void stopFreelook() {
|
||||
if (wasFirstPerson) {
|
||||
Providers.module.render().setFirstPerson();
|
||||
Providers.feature.render().setFirstPerson();
|
||||
}
|
||||
isFreeLooking = false;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class HealthDisplayMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
float health = Providers.module.player().getHealth();
|
||||
float health = Providers.feature.player().getHealth();
|
||||
if (displayMode.value == 1)
|
||||
health /= 2f; // convert to hearts
|
||||
renderHealth(health, scope);
|
||||
|
||||
@@ -67,7 +67,7 @@ public class KeystrokesMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
PlayerFeature player = Providers.module.player();
|
||||
PlayerFeature player = Providers.feature.player();
|
||||
w = player.isForwardPressed();
|
||||
a = player.isLeftPressed();
|
||||
s = player.isBackPressed();
|
||||
|
||||
@@ -35,7 +35,7 @@ public class PingMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
renderPing(Providers.module.network().getPing(), scope);
|
||||
renderPing(Providers.feature.network().getPing(), scope);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -45,7 +45,7 @@ public class SpeedometerMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
PlayerFeature player = Providers.module.player();
|
||||
PlayerFeature player = Providers.feature.player();
|
||||
PlayerFeature.Velocity v = player.getVelocity();
|
||||
boolean onGround = player.isOnGround();
|
||||
|
||||
|
||||
@@ -43,12 +43,12 @@ public class StatusEffectsMod extends Mod implements HudMod {
|
||||
|
||||
@Override
|
||||
public void renderHud(RenderScope scope) {
|
||||
renderEffects(scope, Providers.module.player().getActiveEffects());
|
||||
renderEffects(scope, Providers.feature.player().getActiveEffects());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderDummy(RenderScope scope) {
|
||||
renderEffects(scope, Providers.module.player().getDummyEffects());
|
||||
renderEffects(scope, Providers.feature.player().getDummyEffects());
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user