forked from RepoMirrors/kami-blue
Enum settings, converted some old settings to new
This commit is contained in:
parent
0383356584
commit
1c80af14d0
|
@ -7,6 +7,7 @@ import me.zeroeightsix.kami.event.ForgeEventProcessor;
|
|||
import me.zeroeightsix.kami.gui.kami.KamiGUI;
|
||||
import me.zeroeightsix.kami.module.Module;
|
||||
import me.zeroeightsix.kami.module.ModuleManager;
|
||||
import me.zeroeightsix.kami.setting.config.Configuration;
|
||||
import me.zeroeightsix.kami.util.Friends;
|
||||
import me.zeroeightsix.kami.util.LagCompensator;
|
||||
import me.zeroeightsix.kami.util.Wrapper;
|
||||
|
@ -66,11 +67,11 @@ public class KamiMod {
|
|||
|
||||
commandManager = new CommandManager();
|
||||
|
||||
File file = new File("kami.settings");
|
||||
Friends.INSTANCE.initSettings();
|
||||
File file = new File("KAMISettings.json");
|
||||
Friends.initFriends();
|
||||
if (file.exists()) {
|
||||
try {
|
||||
SettingsPool.load(file);
|
||||
Configuration.loadConfiguration(file);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -82,10 +83,10 @@ public class KamiMod {
|
|||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
try {
|
||||
File f = new File("kami.settings");
|
||||
if (!f.exists())
|
||||
f.createNewFile();
|
||||
SettingsPool.save(f);
|
||||
File outputFile = new File("kami.settings");
|
||||
if (!outputFile.exists())
|
||||
outputFile.createNewFile();
|
||||
Configuration.saveConfiguration(outputFile);
|
||||
ModuleManager.getModules().forEach(Module::destroy);
|
||||
}catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -8,7 +8,8 @@ import me.zeroeightsix.kami.gui.rgui.poof.IPoof;
|
|||
import me.zeroeightsix.kami.gui.rgui.poof.PoofInfo;
|
||||
import me.zeroeightsix.kami.gui.rgui.render.ComponentUI;
|
||||
import me.zeroeightsix.kami.gui.rgui.render.theme.Theme;
|
||||
import me.zeroeightsix.kami.setting.ISetting;
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.Settings;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
@ -28,8 +29,7 @@ public abstract class AbstractComponent implements Component {
|
|||
int maxHeight = Integer.MAX_VALUE;
|
||||
|
||||
protected int priority = 0;
|
||||
@ISetting(name = "Visible")
|
||||
private boolean visible = true;
|
||||
private Setting<Boolean> visible = Settings.b("Visible", true);
|
||||
float opacity = 1f;
|
||||
private boolean focus = false;
|
||||
ComponentUI ui;
|
||||
|
@ -190,12 +190,12 @@ public abstract class AbstractComponent implements Component {
|
|||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
return visible.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
this.visible = visible;
|
||||
this.visible.setValue(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -205,7 +205,7 @@ public abstract class AbstractComponent implements Component {
|
|||
|
||||
@Override
|
||||
public void kill() {
|
||||
visible = false;
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
private boolean isMouseOver() {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package me.zeroeightsix.kami.module;
|
||||
|
||||
import com.google.common.base.Converter;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import me.zeroeightsix.kami.KamiMod;
|
||||
import me.zeroeightsix.kami.event.events.RenderEvent;
|
||||
import me.zeroeightsix.kami.module.modules.movement.Sprint;
|
||||
|
@ -150,14 +152,15 @@ public class Module {
|
|||
*/
|
||||
public void destroy(){};
|
||||
|
||||
private class BindConverter extends Converter<Bind, String> {
|
||||
private class BindConverter extends Converter<Bind, JsonElement> {
|
||||
@Override
|
||||
protected String doForward(Bind bind) {
|
||||
return bind.toString();
|
||||
protected JsonElement doForward(Bind bind) {
|
||||
return new JsonPrimitive(bind.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Bind doBackward(String s) {
|
||||
protected Bind doBackward(JsonElement jsonElement) {
|
||||
String s = jsonElement.getAsString();
|
||||
s = s.toLowerCase();
|
||||
if (s.equals("None")) return Bind.none();
|
||||
boolean ctrl = false, alt = false, shift = false;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package me.zeroeightsix.kami.module.modules.misc;
|
||||
|
||||
import me.zeroeightsix.kami.module.Module;
|
||||
import me.zeroeightsix.kami.setting.ISetting;
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.Settings;
|
||||
import net.minecraft.entity.player.EnumPlayerModelParts;
|
||||
|
||||
import java.util.Random;
|
||||
|
@ -12,8 +13,8 @@ import java.util.Random;
|
|||
@Module.Info(name = "SkinFlicker", description = "Toggle the jacket layer rapidly for a cool skin effect", category = Module.Category.MISC)
|
||||
public class SkinFlicker extends Module {
|
||||
|
||||
@ISetting(name = "Mode") private static FlickerMode mode = FlickerMode.HORIZONTAL;
|
||||
@ISetting(name = "Slowness", min = 1) private int slowness = 2;
|
||||
private Setting<FlickerMode> mode = register(Settings.e("Mode", FlickerMode.HORIZONTAL));
|
||||
private Setting<Integer> slowness = register(Settings.integerBuilder().withName("Slowness").withValue(2).withMinimum(1).build());
|
||||
|
||||
private final static EnumPlayerModelParts[] PARTS_HORIZONTAL = new EnumPlayerModelParts[]{
|
||||
EnumPlayerModelParts.LEFT_SLEEVE,
|
||||
|
@ -38,20 +39,20 @@ public class SkinFlicker extends Module {
|
|||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
switch (mode) {
|
||||
switch (mode.getValue()) {
|
||||
case RANDOM:
|
||||
if (mc.player.ticksExisted%slowness!=0) return;
|
||||
if (mc.player.ticksExisted % slowness.getValue() != 0) return;
|
||||
mc.gameSettings.switchModelPartEnabled(EnumPlayerModelParts.values()[r.nextInt(len)]);
|
||||
break;
|
||||
case VERTICAL:
|
||||
case HORIZONTAL:
|
||||
int i = (mc.player.ticksExisted/slowness)%(PARTS_HORIZONTAL.length*2); // *2 for on/off
|
||||
int i = (mc.player.ticksExisted / slowness.getValue()) % (PARTS_HORIZONTAL.length * 2); // *2 for on/off
|
||||
boolean on = false;
|
||||
if (i >= PARTS_HORIZONTAL.length) {
|
||||
on = true;
|
||||
i -= PARTS_HORIZONTAL.length;
|
||||
}
|
||||
mc.gameSettings.setModelPartEnabled(mode==FlickerMode.VERTICAL ? PARTS_VERTICAL[i] : PARTS_HORIZONTAL[i], on);
|
||||
mc.gameSettings.setModelPartEnabled(mode.getValue() == FlickerMode.VERTICAL ? PARTS_VERTICAL[i] : PARTS_HORIZONTAL[i], on);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ import me.zero.alpine.listener.EventHandler;
|
|||
import me.zero.alpine.listener.Listener;
|
||||
import me.zeroeightsix.kami.event.events.PacketEvent;
|
||||
import me.zeroeightsix.kami.module.Module;
|
||||
import me.zeroeightsix.kami.setting.ISetting;
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.Settings;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.*;
|
||||
|
||||
|
@ -14,20 +15,20 @@ import net.minecraft.network.play.server.*;
|
|||
@Module.Info(name = "NoRender", category = Module.Category.RENDER, description = "Ignore entity spawn packets")
|
||||
public class NoRender extends Module {
|
||||
|
||||
@ISetting(name = "Mob") private boolean mob = true;
|
||||
@ISetting(name = "GEntity") private boolean gentity = true;
|
||||
@ISetting(name = "Object") private boolean object = true;
|
||||
@ISetting(name = "XP") private boolean xp = true;
|
||||
@ISetting(name = "Painting") private boolean paint = true;
|
||||
private Setting<Boolean> mob = register(Settings.b("Mob"));
|
||||
private Setting<Boolean> gentity = register(Settings.b("GEntity"));
|
||||
private Setting<Boolean> object = register(Settings.b("Object"));
|
||||
private Setting<Boolean> xp = register(Settings.b("XP"));
|
||||
private Setting<Boolean> paint = register(Settings.b("Paintings"));
|
||||
|
||||
@EventHandler
|
||||
public Listener<PacketEvent.Receive> receiveListener = new Listener<>(event -> {
|
||||
Packet packet = event.getPacket();
|
||||
if ((packet instanceof SPacketSpawnMob && mob) ||
|
||||
(packet instanceof SPacketSpawnGlobalEntity && gentity) ||
|
||||
(packet instanceof SPacketSpawnObject && object) ||
|
||||
(packet instanceof SPacketSpawnExperienceOrb && xp) ||
|
||||
(packet instanceof SPacketSpawnPainting && paint))
|
||||
if ((packet instanceof SPacketSpawnMob && mob.getValue()) ||
|
||||
(packet instanceof SPacketSpawnGlobalEntity && gentity.getValue()) ||
|
||||
(packet instanceof SPacketSpawnObject && object.getValue()) ||
|
||||
(packet instanceof SPacketSpawnExperienceOrb && xp.getValue()) ||
|
||||
(packet instanceof SPacketSpawnPainting && paint.getValue()))
|
||||
event.cancel();
|
||||
});
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import me.zeroeightsix.kami.setting.builder.numerical.FloatSettingBuilder;
|
|||
import me.zeroeightsix.kami.setting.builder.numerical.IntegerSettingBuilder;
|
||||
import me.zeroeightsix.kami.setting.builder.numerical.NumericalSettingBuilder;
|
||||
import me.zeroeightsix.kami.setting.builder.primitive.BooleanSettingBuilder;
|
||||
import me.zeroeightsix.kami.setting.builder.primitive.EnumSettingBuilder;
|
||||
import me.zeroeightsix.kami.setting.builder.primitive.StringSettingBuilder;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
|
@ -37,6 +38,38 @@ public class Settings {
|
|||
return new StringSettingBuilder();
|
||||
}
|
||||
|
||||
public static EnumSettingBuilder enumBuilder() {
|
||||
return new EnumSettingBuilder();
|
||||
}
|
||||
|
||||
public static Setting<Float> f(String name, float value) {
|
||||
return floatBuilder(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static Setting<Float> d(String name, double value) {
|
||||
return doubleBuilder(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static Setting<Float> i(String name, int value) {
|
||||
return integerBuilder(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static Setting<Boolean> b(String name, boolean value) {
|
||||
return booleanBuilder(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static Setting<Boolean> b(String name) {
|
||||
return booleanBuilder(name).withValue(true).build();
|
||||
}
|
||||
|
||||
public static Setting<String> s(String name, String value) {
|
||||
return stringBuilder(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static <T extends Enum> Setting<T> e(String name, Enum value) {
|
||||
return enumBuilder().withName(name).withValue(value).build();
|
||||
}
|
||||
|
||||
public static NumericalSettingBuilder<Float> floatBuilder(String name) {
|
||||
return new FloatSettingBuilder().withName(name);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package me.zeroeightsix.kami.setting.builder.primitive;
|
||||
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.builder.SettingBuilder;
|
||||
import me.zeroeightsix.kami.setting.impl.EnumSetting;
|
||||
|
||||
/**
|
||||
* Created by 086 on 14/10/2018.
|
||||
*/
|
||||
public class EnumSettingBuilder<T extends Enum> extends SettingBuilder<T> {
|
||||
@Override
|
||||
public Setting<T> build() {
|
||||
return new EnumSetting<>(initialValue, predicate(), consumer(), name, visibilityPredicate());
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package me.zeroeightsix.kami.setting.config;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.*;
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.SettingsRegister;
|
||||
import me.zeroeightsix.kami.setting.converter.Convertable;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
@ -13,11 +13,11 @@ import java.util.Map;
|
|||
*/
|
||||
public class Configuration {
|
||||
|
||||
public JsonObject produceConfig() {
|
||||
public static JsonObject produceConfig() {
|
||||
return produceConfig(SettingsRegister.ROOT);
|
||||
}
|
||||
|
||||
private JsonObject produceConfig(SettingsRegister register) {
|
||||
private static JsonObject produceConfig(SettingsRegister register) {
|
||||
JsonObject object = new JsonObject();
|
||||
for (Map.Entry<String, SettingsRegister> entry : register.registerHashMap.entrySet()) {
|
||||
object.add(entry.getKey(), produceConfig(entry.getValue()));
|
||||
|
@ -25,12 +25,37 @@ public class Configuration {
|
|||
for (Map.Entry<String, Setting> entry : register.settingHashMap.entrySet()) {
|
||||
Setting setting = entry.getValue();
|
||||
if (!(setting instanceof Convertable)) continue;
|
||||
object.add(entry.getKey(), ((Convertable<Object, JsonElement>) setting).converter().convert(setting.getValue()));
|
||||
object.add(entry.getKey(), (JsonElement) ((Convertable) setting).converter().convert(setting.getValue()));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
public void loadConfiguration(SettingsRegister register, JsonObject input) {
|
||||
public static void saveConfiguration(File file) throws IOException {
|
||||
saveConfiguration(new FileOutputStream(file));
|
||||
}
|
||||
|
||||
public static void saveConfiguration(OutputStream stream) throws IOException {
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
String json = gson.toJson(produceConfig());
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stream));
|
||||
writer.write(json);
|
||||
}
|
||||
|
||||
public static void loadConfiguration(File file) throws IOException {
|
||||
InputStream stream = new FileInputStream(file);
|
||||
loadConfiguration(stream);
|
||||
stream.close();
|
||||
}
|
||||
|
||||
public static void loadConfiguration(InputStream stream) {
|
||||
loadConfiguration(new JsonParser().parse(new InputStreamReader(stream)).getAsJsonObject());
|
||||
}
|
||||
|
||||
public static void loadConfiguration(JsonObject input) {
|
||||
loadConfiguration(SettingsRegister.ROOT, input);
|
||||
}
|
||||
|
||||
private static void loadConfiguration(SettingsRegister register, JsonObject input) {
|
||||
for (Map.Entry<String, JsonElement> entry : input.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
JsonElement element = entry.getValue();
|
||||
|
@ -38,10 +63,9 @@ public class Configuration {
|
|||
loadConfiguration(register.subregister(key), element.getAsJsonObject());
|
||||
} else {
|
||||
Setting setting = register.getSetting(key);
|
||||
setting.setValue(((Convertable<Object, JsonElement>) setting).converter().reverse().convert(element));
|
||||
setting.setValue(((Convertable) setting).converter().reverse().convert(element));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package me.zeroeightsix.kami.setting.converter;
|
||||
|
||||
import com.google.common.base.Converter;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
|
||||
/**
|
||||
* Created by 086 on 14/10/2018.
|
||||
*/
|
||||
public class EnumConverter extends Converter<Enum, JsonElement> {
|
||||
|
||||
Class<? extends Enum> clazz;
|
||||
|
||||
public EnumConverter(Class<? extends Enum> clazz) {
|
||||
this.clazz = clazz;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JsonElement doForward(Enum anEnum) {
|
||||
return new JsonPrimitive(anEnum.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Enum doBackward(JsonElement jsonElement) {
|
||||
return Enum.valueOf(clazz, jsonElement.getAsString());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package me.zeroeightsix.kami.setting.impl;
|
||||
|
||||
import com.google.common.base.Converter;
|
||||
import me.zeroeightsix.kami.setting.AbstractSetting;
|
||||
import me.zeroeightsix.kami.setting.converter.EnumConverter;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* Created by 086 on 14/10/2018.
|
||||
*/
|
||||
public class EnumSetting<T extends Enum> extends AbstractSetting<T> {
|
||||
|
||||
private EnumConverter converter;
|
||||
|
||||
public EnumSetting(T value, Predicate<T> restriction, BiConsumer<T, T> consumer, String name, Predicate<T> visibilityPredicate) {
|
||||
super(value, restriction, consumer, name, visibilityPredicate);
|
||||
this.converter = new EnumConverter((Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Converter converter() {
|
||||
return converter;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +1,37 @@
|
|||
package me.zeroeightsix.kami.util;
|
||||
|
||||
import com.google.common.base.Converter;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import me.zeroeightsix.kami.setting.ISetting;
|
||||
import me.zeroeightsix.kami.setting.Setting;
|
||||
import me.zeroeightsix.kami.setting.Settings;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Created by 086 on 13/12/2017.
|
||||
*/
|
||||
public class Friends extends SettingsClass {
|
||||
public class Friends {
|
||||
public static final Friends INSTANCE = new Friends();
|
||||
|
||||
@ISetting(name = "Friends", converter = FriendListConverter.class)
|
||||
public List<Friend> friends = new ArrayList<>();
|
||||
private static Setting<ArrayList<Friend>> friends;
|
||||
|
||||
public Friends() {
|
||||
private Friends() {
|
||||
}
|
||||
|
||||
public static void initFriends() {
|
||||
friends = Settings.custom("Friends", new ArrayList<Friend>(), new FriendListConverter()).buildAndRegister("friends");
|
||||
}
|
||||
|
||||
public static boolean isFriend(String name) {
|
||||
return INSTANCE.friends.stream().anyMatch(friend -> friend.username.equalsIgnoreCase(name));
|
||||
return friends.getValue().stream().anyMatch(friend -> friend.username.equalsIgnoreCase(name));
|
||||
}
|
||||
|
||||
public static class Friend {
|
||||
|
@ -44,23 +48,22 @@ public class Friends extends SettingsClass {
|
|||
}
|
||||
}
|
||||
|
||||
public static class FriendListConverter implements FieldConverter {
|
||||
public static class FriendListConverter extends Converter<ArrayList<Friend>, JsonElement> {
|
||||
public FriendListConverter() {}
|
||||
|
||||
@Override
|
||||
public JsonElement toJson(StaticSetting setting) {
|
||||
protected JsonElement doForward(ArrayList<Friend> list) {
|
||||
StringBuilder present = new StringBuilder();
|
||||
ArrayList<Friend> friends = (ArrayList<Friend>) setting.getValue();
|
||||
for (Friend friend : friends)
|
||||
for (Friend friend : list)
|
||||
present.append(String.format("%s;%s$", friend.username, friend.uuid.toString()));
|
||||
return new JsonPrimitive(present.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object fromJson(StaticSetting setting, JsonElement value) {
|
||||
String v = value.getAsString();
|
||||
protected ArrayList<Friend> doBackward(JsonElement jsonElement) {
|
||||
String v = jsonElement.getAsString();
|
||||
String[] pairs = v.split(Pattern.quote("$"));
|
||||
List<Friend> friends = new ArrayList<>();
|
||||
ArrayList<Friend> friends = new ArrayList<>();
|
||||
for (String pair : pairs) {
|
||||
try {
|
||||
String[] split = pair.split(";");
|
||||
|
|
Loading…
Reference in New Issue