From e290359c166a96139f7e901092b78f38e748099b Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 18:24:17 +0700
Subject: [PATCH 1/8] Switch Crystal data to records and codecs, fix null
pointer.
---
.../andromeda/base/ModuleManager.java | 2 +-
.../dragon_fight/EnderDragonManager.java | 78 +++++++++----------
.../modules/mechanics/dragon_fight/Main.java | 15 +++-
3 files changed, 50 insertions(+), 45 deletions(-)
diff --git a/src/main/java/me/melontini/andromeda/base/ModuleManager.java b/src/main/java/me/melontini/andromeda/base/ModuleManager.java
index d6cdc022..25bfb8c4 100644
--- a/src/main/java/me/melontini/andromeda/base/ModuleManager.java
+++ b/src/main/java/me/melontini/andromeda/base/ModuleManager.java
@@ -272,7 +272,7 @@ public class ModuleManager {
}
/**
- * Quickly returns a module of the given class. Useful for mixins and registration.
+ * Quickly returns a module of the given class. Useful for mixins and registration. Must never be used in non-mixin static fields and class initializers.
*
This will throw an {@link IllegalStateException} if the module is not loaded.
* @param cls the module class.
* @return the module instance.
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/EnderDragonManager.java b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/EnderDragonManager.java
index bd67e264..c0ebca8d 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/EnderDragonManager.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/EnderDragonManager.java
@@ -1,14 +1,13 @@
package me.melontini.andromeda.modules.mechanics.dragon_fight;
+import com.mojang.serialization.Codec;
+import com.mojang.serialization.codecs.RecordCodecBuilder;
import lombok.Getter;
-import me.melontini.andromeda.common.util.MiscUtil;
-import me.melontini.andromeda.util.AndromedaLog;
+import me.melontini.andromeda.base.ModuleManager;
import me.melontini.dark_matter.api.base.util.MakeSure;
import me.melontini.dark_matter.api.minecraft.world.PersistentStateHelper;
import me.melontini.dark_matter.api.minecraft.world.interfaces.DeserializableState;
import me.melontini.dark_matter.api.minecraft.world.interfaces.TickableState;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LightningEntity;
import net.minecraft.entity.attribute.EntityAttributeInstance;
@@ -17,30 +16,27 @@ import net.minecraft.entity.boss.dragon.EnderDragonEntity;
import net.minecraft.entity.decoration.EndCrystalEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtList;
+import net.minecraft.nbt.NbtOps;
import net.minecraft.network.packet.s2c.play.ParticleS2CPacket;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
-import net.minecraft.util.Pair;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.PersistentState;
-import net.minecraft.world.World;
import org.apache.commons.lang3.mutable.MutableInt;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
@Getter
public class EnderDragonManager extends PersistentState implements DeserializableState, TickableState {
- private static DragonFight MODULE;
-
public static final String ID = "andromeda_ender_dragon_fight";
+ private final DragonFight module = ModuleManager.quick(DragonFight.class);
+ private final List crystals = new ArrayList<>();
private final ServerWorld world;
- private final Set> list = ConcurrentHashMap.newKeySet();
private int maxPlayers = 1;
public EnderDragonManager(ServerWorld world) {
@@ -58,27 +54,26 @@ public class EnderDragonManager extends PersistentState implements Deserializabl
int i = MathHelper.clamp(world.getPlayers().size(), 1, maxPlayers);
if (i > maxPlayers) maxPlayers = i;
- for (Pair pair : list) {
- if (pair.getLeft().decrementAndGet() <= 0) {
+ for (Crystal pair : crystals) {
+ if (pair.timer().decrementAndGet() <= 0) {
LightningEntity lightning = new LightningEntity(EntityType.LIGHTNING_BOLT, world);
lightning.setCosmetic(true);
- lightning.setPos(pair.getRight().x, pair.getRight().y, pair.getRight().z);
+ lightning.setPos(pair.pos().x, pair.pos().y, pair.pos().z);
world.spawnEntity(lightning);
- ParticleS2CPacket particleS2CPacket = new ParticleS2CPacket(ParticleTypes.END_ROD, true, pair.getRight().x, pair.getRight().y, pair.getRight().z, 0.5f, 0.5f, 0.5f, 0.5f, 100);
+ ParticleS2CPacket particleS2CPacket = new ParticleS2CPacket(ParticleTypes.END_ROD, true, pair.pos().x, pair.pos().y, pair.pos().z, 0.5f, 0.5f, 0.5f, 0.5f, 100);
for (int j = 0; j < world.getPlayers().size(); ++j) {
ServerPlayerEntity serverPlayerEntity = world.getPlayers().get(j);
- world.sendToPlayerIfNearby(serverPlayerEntity, true, pair.getRight().x, pair.getRight().y, pair.getRight().z, particleS2CPacket);
+ world.sendToPlayerIfNearby(serverPlayerEntity, true, pair.pos().x, pair.pos().y, pair.pos().z, particleS2CPacket);
}
- EndCrystalEntity endCrystalEntity = new EndCrystalEntity(world, pair.getRight().x, pair.getRight().y, pair.getRight().z);
+ EndCrystalEntity endCrystalEntity = new EndCrystalEntity(world, pair.pos().x, pair.pos().y, pair.pos().z);
world.spawnEntity(endCrystalEntity);
- list.remove(pair);
- AndromedaLog.devInfo("respawned crystal at [{}]", MiscUtil.vec3dAsString(pair.getRight()));
+ crystals.remove(pair);
}
}
markDirty();
- if (MODULE.config().scaleHealthByMaxPlayers) {
+ if (module.config().scaleHealthByMaxPlayers) {
for (EnderDragonEntity dragon : dragons) {
EntityAttributeInstance inst = dragon.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH);
MakeSure.notNull(inst, "Ender Dragon has no attributes?").setBaseValue(Math.floor((Math.sqrt(500 * i)) * 10));
@@ -90,47 +85,44 @@ public class EnderDragonManager extends PersistentState implements Deserializabl
}
public void queueRespawn(MutableInt mutableInt, Vec3d vec3d) {
- list.add(new Pair<>(mutableInt, vec3d));
- AndromedaLog.devInfo("scheduled crystal at [{}] for respawn in {} ticks", MiscUtil.vec3dAsString(vec3d), mutableInt.getValue());
+ var crystal = new Crystal(mutableInt, vec3d);
+ if (!crystals.contains(crystal)) crystals.add(crystal);
}
public void readNbt(NbtCompound tag) {
- if (tag.contains("players")) {
+ if (tag.contains("crystals")) {
NbtList listTag = tag.getList("crystals", 10);
for (int i = 0; i < listTag.size(); i++) {
NbtCompound crystal = listTag.getCompound(i);
MutableInt mutableInt = new MutableInt(crystal.getInt("timer"));
Vec3d vec3d = new Vec3d(crystal.getDouble("x"), crystal.getDouble("y"), crystal.getDouble("z"));
- list.add(new Pair<>(mutableInt, vec3d));
+ crystals.add(new Crystal(mutableInt, vec3d));
}
}
+
+ if (tag.contains("crystalData"))
+ crystals.addAll(Crystal.LIST_CODEC.parse(NbtOps.INSTANCE, tag.getCompound("crystalData"))
+ .getOrThrow(false, string -> {
+ throw new IllegalStateException(string);
+ }));
if (tag.contains("players")) maxPlayers = tag.getInt("players");
}
@Override
public NbtCompound writeNbt(NbtCompound nbt) {
- NbtList listTag = new NbtList();
- for (Pair pair : list) {
- NbtCompound crystal = new NbtCompound();
- crystal.putInt("timer", pair.getLeft().getValue());
- crystal.putDouble("x", pair.getRight().x);
- crystal.putDouble("y", pair.getRight().y);
- crystal.putDouble("z", pair.getRight().z);
- listTag.add(crystal);
- }
- if (!listTag.isEmpty()) nbt.put("crystals", listTag);
+ if (!crystals.isEmpty()) nbt.put("crystalData", Crystal.LIST_CODEC.encodeStart(NbtOps.INSTANCE, crystals)
+ .getOrThrow(false, string -> {
+ throw new IllegalStateException(string);
+ }));
if (maxPlayers > 1) nbt.putInt("players", maxPlayers);
return nbt;
}
- public static void init() {
- ServerWorldEvents.LOAD.register((server, world) -> {
- if (world.getRegistryKey() == World.END) EnderDragonManager.get(world);
- });
-
- ServerTickEvents.END_WORLD_TICK.register(world -> {
- if (world.getRegistryKey() == World.END) PersistentStateHelper.consumeIfLoaded(world, EnderDragonManager.ID,
- (world1, s) -> EnderDragonManager.get(world1), TickableState::tick);
- });
+ public record Crystal(MutableInt timer, Vec3d pos) {
+ public static final Codec CODEC = RecordCodecBuilder.create(data -> data.group(
+ Codec.INT.fieldOf("timer").xmap(MutableInt::new, MutableInt::getValue).forGetter(Crystal::timer),
+ Vec3d.CODEC.fieldOf("pos").forGetter(Crystal::pos)
+ ).apply(data, Crystal::new));
+ public static final Codec> LIST_CODEC = CODEC.listOf();
}
}
\ No newline at end of file
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/Main.java b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/Main.java
index 11e0786a..52d88a2a 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/Main.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/Main.java
@@ -1,7 +1,20 @@
package me.melontini.andromeda.modules.mechanics.dragon_fight;
+import me.melontini.dark_matter.api.minecraft.world.PersistentStateHelper;
+import me.melontini.dark_matter.api.minecraft.world.interfaces.TickableState;
+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
+import net.minecraft.world.World;
+
public class Main {
Main() {
- EnderDragonManager.init();
+ ServerWorldEvents.LOAD.register((server, world) -> {
+ if (world.getRegistryKey() == World.END) EnderDragonManager.get(world);
+ });
+
+ ServerTickEvents.END_WORLD_TICK.register(world -> {
+ if (world.getRegistryKey() == World.END) PersistentStateHelper.consumeIfLoaded(world, EnderDragonManager.ID,
+ (world1, s) -> EnderDragonManager.get(world1), TickableState::tick);
+ });
}
}
--
2.51.2
From 6e8d8f587300b789a55a55830bfca56e1eb01749 Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 21:04:46 +0700
Subject: [PATCH 2/8] Clean up uploading again
---
.../common/mixin/CrashReportMixin.java | 11 +-
.../andromeda/util/CrashHandler.java | 141 +++++-------------
.../util/exceptions/AndromedaException.java | 28 ++--
3 files changed, 59 insertions(+), 121 deletions(-)
diff --git a/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java b/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
index 405010dd..2c69c36b 100644
--- a/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
+++ b/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
@@ -1,6 +1,5 @@
package me.melontini.andromeda.common.mixin;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.util.CrashHandler;
import me.melontini.andromeda.util.exceptions.AndromedaException;
import net.minecraft.util.crash.CrashReport;
@@ -14,13 +13,9 @@ abstract class CrashReportMixin {
@Inject(at = @At("TAIL"), method = "", require = 0)
private void andromeda$init(String message, Throwable cause, CallbackInfo ci) {
- if (CrashHandler.hasInstance(cause)) {
- var sec = ((CrashReport) (Object) this).addElement("Andromeda Statuses");
- sec.trimStackTraceEnd(sec.getStackTrace().length);
-
- JsonObject statuses = CrashHandler.traverse(cause);
- sec.add("statuses", "\n" + (statuses == null ? "Unavailable" : AndromedaException.toString(statuses)));
- }
+ var sec = ((CrashReport) (Object) this).addElement("Andromeda Statuses");
+ sec.trimStackTraceEnd(sec.getStackTrace().length);
+ sec.add("statuses", "\n" + AndromedaException.toString(CrashHandler.traverse(cause).orElseGet(AndromedaException::defaultStatuses)));
CrashHandler.sanitizeTrace(cause);
}
diff --git a/src/main/java/me/melontini/andromeda/util/CrashHandler.java b/src/main/java/me/melontini/andromeda/util/CrashHandler.java
index eadfa4f2..ca654894 100644
--- a/src/main/java/me/melontini/andromeda/util/CrashHandler.java
+++ b/src/main/java/me/melontini/andromeda/util/CrashHandler.java
@@ -4,16 +4,13 @@ import com.google.common.collect.Sets;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import me.melontini.andromeda.base.AndromedaConfig;
-import me.melontini.andromeda.base.Bootstrap;
import me.melontini.andromeda.util.exceptions.AndromedaException;
import me.melontini.dark_matter.api.base.util.classes.Context;
import me.melontini.dark_matter.api.crash_handler.Crashlytics;
-import me.melontini.dark_matter.api.crash_handler.Prop;
import me.melontini.dark_matter.api.crash_handler.uploading.Mixpanel;
import me.melontini.dark_matter.api.crash_handler.uploading.Uploader;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.impl.util.StringUtil;
-import net.minecraft.util.crash.CrashReport;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
import java.io.IOException;
@@ -24,39 +21,23 @@ import java.util.*;
public class CrashHandler {
private static final Mixpanel MIXPANEL = Mixpanel.get(new String(Base64.getDecoder().decode("NGQ3YWVhZGRjN2M5M2JkNzhiODRmNDViZWI3Y2NlOTE=")), true);
+ private static final Set IMPORTANT_MODS = Sets.newHashSet("andromeda", "minecraft", "fabric-api", "fabricloader", "connectormod", "forge");
- private static boolean findAndromedaInTrace(Throwable cause) {
- if (cause instanceof AndromedaException e && e.shouldReport()) return true;
-
- for (StackTraceElement element : cause.getStackTrace()) {
- if (element.isNativeMethod()) continue;
- String cls = element.getClassName();
- if (cls.startsWith("me.melontini.andromeda.")) return true;
- if (cls.startsWith("net.minecraft.")) {
- String mthd = element.getMethodName();
- if ((mthd.contains("$andromeda$") || mthd.contains(".andromeda$")))
- return true;
- }
- }
- return cause.getCause() != null && findAndromedaInTrace(cause.getCause());
- }
-
- public static boolean hasInstance(Throwable cause) {
- if (cause instanceof AndromedaException) return true;
- return cause.getCause() != null && hasInstance(cause.getCause());
+ private static boolean shouldReportRecursive(Throwable cause) {
+ if (cause instanceof AndromedaException e && !e.shouldReport()) return false;
+ return cause.getCause() != null && shouldReportRecursive(cause.getCause());
}
- public static JsonObject traverse(Throwable cause) {
+ public static Optional traverse(Throwable cause) {
if (cause instanceof AndromedaException e) {
JsonObject s = e.getStatuses();
- if (cause.getCause() != null) {
- var r = traverse(cause.getCause());
- if (r != null) s.add("cause", r);
+ if (e.getCause() != null) {
+ traverse(e.getCause()).ifPresent(object -> s.add("cause", object));
}
- return s;
+ return Optional.ofNullable(s);
}
if (cause.getCause() != null) return traverse(cause.getCause());
- return null;
+ return Optional.empty();
}
private static final Set BAD_PREFIXES = Set.of(
@@ -81,96 +62,48 @@ public class CrashHandler {
return;
}
- if (context.get(IMixinInfo.class, Crashlytics.Keys.MIXIN_INFO).map(info -> info.getClassName().startsWith("me.melontini.andromeda")).orElse(false) || findAndromedaInTrace(cause)) {
- AndromedaLog.warn("Found Andromeda in trace, collecting and uploading crash report...");
-
- JsonObject object = new JsonObject();
-
- sanitizeTrace(cause);
+ if (!context.get(IMixinInfo.class, Crashlytics.Keys.MIXIN_INFO).map(info -> info.getClassName().startsWith("me.melontini.andromeda")).orElse(false) && !shouldReportRecursive(cause))
+ return;
+ AndromedaLog.warn("Found Andromeda in trace, collecting and uploading crash report...");
- String message = "Something terrible happened!";
- if (context.get(Object.class, Crashlytics.Keys.CRASH_REPORT).isPresent()) {
- message = getFromCrashReport(context);
- }
-
- //fill trace.
- JsonArray stackTrace = new JsonArray();
- for (String string : getCauseAsString(cause, message).lines().flatMap(s -> StringUtil.wrapLines(s, 190).lines()).toList())
- stackTrace.add(string);
- object.add("stackTrace", stackTrace);
-
- JsonObject statuses;
- if (!hasInstance(cause)) {
- statuses = new JsonObject();
-
- MIXPANEL.attachProps(statuses, Prop.ENVIRONMENT, Prop.OS, Prop.JAVA_VERSION, Prop.JAVA_VENDOR);
- statuses.addProperty("platform", CommonValues.platform().toString().toLowerCase());
- statuses.addProperty("bootstrap_status", Bootstrap.Status.get().toString());
- } else {
- statuses = traverse(cause);
- if (statuses == null) statuses = new JsonObject();
- }
- object.add("statuses", statuses);
+ sanitizeTrace(cause);
- JsonArray mods = new JsonArray();
- Set importantMods = Sets.newHashSet("andromeda", "minecraft", "fabric-api", "fabricloader", "connectormod", "forge");
+ JsonObject object = new JsonObject();
+ //fill trace.
+ JsonArray stackTrace = new JsonArray();
+ for (String string : getCauseAsString(cause).lines().flatMap(s -> StringUtil.wrapLines(s, 190).lines()).toList())
+ stackTrace.add(string);
+ object.add("stackTrace", stackTrace);
- for (String importantMod : importantMods) {
- FabricLoader.getInstance().getModContainer(importantMod).ifPresent(mod -> mods.add(importantMod + " (" + mod.getMetadata().getVersion().getFriendlyString() + ")"));
- }
-
- object.add("mods", mods);
+ object.add("statuses", traverse(cause).orElseGet(AndromedaException::defaultStatuses));
- Runnable r = () -> MIXPANEL.upload(new Mixpanel.Context("Crash", object)).handle((unused, throwable) -> {
- if (throwable != null)
- System.err.printf("Failed to upload crash report! %s: %s%n", throwable.getClass().getSimpleName(), throwable.getMessage());
- return null;
- });
+ JsonArray mods = new JsonArray();
+ for (String importantMod : IMPORTANT_MODS) {
+ FabricLoader.getInstance().getModContainer(importantMod).ifPresent(mod -> mods.add(importantMod + " (" + mod.getMetadata().getVersion().getFriendlyString() + ")"));
+ }
+ object.add("mods", mods);
- if (context.get(Boolean.class, "andromeda:skip_service").orElse(false)) {
- r.run();
- } else {
- Uploader.SERVICE.submit(r);
- }
+ if (context.get(Boolean.class, "andromeda:skip_service").orElse(false)) {
+ upload(object);
+ } else {
+ Uploader.SERVICE.submit(() -> upload(object));
}
}
- private static String getFromCrashReport(Context context) {
- return CrashReportProcessor.accept(context);
+ private static void upload(JsonObject object) {
+ MIXPANEL.upload(new Mixpanel.Context("Crash", object)).handle((unused, throwable) -> {
+ if (throwable != null)
+ System.err.printf("Failed to upload crash report! %s: %s%n", throwable.getClass().getSimpleName(), throwable.getMessage());
+ return null;
+ });
}
- private static String getCauseAsString(Throwable cause, String message) {
- Throwable throwable = getThrowable(cause, message);
-
+ private static String getCauseAsString(Throwable cause) {
try(var stringWriter = new StringWriter(); var printWriter = new PrintWriter(stringWriter)) {
- throwable.printStackTrace(printWriter);
+ cause.printStackTrace(printWriter);
return stringWriter.toString();
} catch (IOException e) {
return "Failed to get cause: " + e.getMessage();
}
}
-
- private static Throwable getThrowable(Throwable cause, String message) {
- Throwable throwable = cause;
- if (throwable.getMessage() == null) {
- if (throwable instanceof NullPointerException) {
- throwable = new NullPointerException(message);
- } else if (throwable instanceof StackOverflowError) {
- throwable = new StackOverflowError(message);
- } else if (throwable instanceof OutOfMemoryError) {
- throwable = new OutOfMemoryError(message);
- }
-
- throwable.setStackTrace(cause.getStackTrace());
- }
- return throwable;
- }
-
- private static class CrashReportProcessor {
-
- public static String accept(Context context) {
- CrashReport report = context.get(CrashReport.class, Crashlytics.Keys.CRASH_REPORT).orElseThrow();
- return report.getMessage();
- }
- }
}
diff --git a/src/main/java/me/melontini/andromeda/util/exceptions/AndromedaException.java b/src/main/java/me/melontini/andromeda/util/exceptions/AndromedaException.java
index 9e216431..4b7620f2 100644
--- a/src/main/java/me/melontini/andromeda/util/exceptions/AndromedaException.java
+++ b/src/main/java/me/melontini/andromeda/util/exceptions/AndromedaException.java
@@ -15,7 +15,7 @@ import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
+import java.util.Map;
import java.util.function.Consumer;
@CustomLog
@@ -60,8 +60,12 @@ public class AndromedaException extends RuntimeException {
return report;
}
+ //referenced by name in MixinProcessor$Plugin#wrapNodeWithErrorHandling
+ @SuppressWarnings("unused")
public static AndromedaException moduleException(Throwable t, String module) {
- return AndromedaException.builder().cause(t).add("module", module).build();
+ return AndromedaException.builder()
+ .message("Andromeda module caught a mixin handler exception! There's no guarantee that this is Andromeda's fault.")
+ .cause(t).add("module", module).build();
}
public static void run(ThrowingRunnable runnable, Consumer consumer) {
@@ -82,11 +86,19 @@ public class AndromedaException extends RuntimeException {
return new Builder();
}
+ public static JsonObject defaultStatuses() {
+ return new Builder().statuses;
+ }
+
public static class Builder {
- private static final Set DEFAULT_KEYS = Set.of(
- "bootstrap_status", "platform",
- prop(Prop.ENVIRONMENT), prop(Prop.OS), prop(Prop.JAVA_VERSION), prop(Prop.JAVA_VENDOR)
+ private static final Map> DEFAULT_KEYS = Map.of(
+ "bootstrap_status", b -> b.add("bootstrap_status", Bootstrap.Status.get()),
+ "platform", b -> b.add("platform", CommonValues.platform()),
+ prop(Prop.ENVIRONMENT), b -> b.add(Prop.ENVIRONMENT),
+ prop(Prop.OS), b -> b.add(Prop.OS),
+ prop(Prop.JAVA_VERSION), b -> b.add(Prop.JAVA_VERSION),
+ prop(Prop.JAVA_VENDOR), b -> b.add(Prop.JAVA_VENDOR)
);
private static String prop(Prop prop) {
@@ -100,9 +112,7 @@ public class AndromedaException extends RuntimeException {
private final JsonObject statuses = new JsonObject();
private Builder() {
- add(Prop.ENVIRONMENT, Prop.OS, Prop.JAVA_VERSION, Prop.JAVA_VENDOR);
- add("platform", CommonValues.platform());
- add("bootstrap_status", Bootstrap.Status.get());
+ DEFAULT_KEYS.values().forEach(c -> c.accept(this));
}
public Builder message(String message) {
@@ -149,7 +159,7 @@ public class AndromedaException extends RuntimeException {
private void disableInHierarchy(Throwable cause) {
if (cause == null) return;
if (cause instanceof AndromedaException e) {
- for (String defaultKey : DEFAULT_KEYS) {
+ for (String defaultKey : DEFAULT_KEYS.keySet()) {
e.statuses.remove(defaultKey);
}
}
--
2.51.2
From 24b4b744f26776697ff30676694959381c0cf52a Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 21:38:25 +0700
Subject: [PATCH 3/8] Copy FileSystemUtil from fabric-loader to optionally
close filesystems.
---
.../melontini/andromeda/util/ClassPath.java | 17 ++--
.../andromeda/util/FileSystemUtil.java | 86 +++++++++++++++++++
2 files changed, 93 insertions(+), 10 deletions(-)
create mode 100644 src/main/java/me/melontini/andromeda/util/FileSystemUtil.java
diff --git a/src/main/java/me/melontini/andromeda/util/ClassPath.java b/src/main/java/me/melontini/andromeda/util/ClassPath.java
index 15ec3918..71011260 100644
--- a/src/main/java/me/melontini/andromeda/util/ClassPath.java
+++ b/src/main/java/me/melontini/andromeda/util/ClassPath.java
@@ -7,7 +7,10 @@ import me.melontini.dark_matter.api.base.util.Exceptions;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
-import java.nio.file.*;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
@@ -75,15 +78,9 @@ public final class ClassPath {
@SneakyThrows
private void scanJar(Path path) {
- FileSystem fs = Exceptions.supply(() -> {
- try {
- return FileSystems.getFileSystem(path.toUri());
- } catch (Exception e) {
- return FileSystems.newFileSystem(path, Collections.emptyMap());
- }
- });
-
- scan(fs.getRootDirectories().iterator().next());
+ try (var delegate = FileSystemUtil.getJarFileSystem(path, false)) {
+ scan(delegate.get().getRootDirectories().iterator().next());
+ }
}
@SneakyThrows
diff --git a/src/main/java/me/melontini/andromeda/util/FileSystemUtil.java b/src/main/java/me/melontini/andromeda/util/FileSystemUtil.java
new file mode 100644
index 00000000..ebe3bec6
--- /dev/null
+++ b/src/main/java/me/melontini/andromeda/util/FileSystemUtil.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2016 FabricMC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package me.melontini.andromeda.util;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.*;
+import java.util.Collections;
+import java.util.Map;
+import java.util.zip.ZipError;
+
+//Copied directly from Fabric Loader to avoid depending on loader internals.
+public final class FileSystemUtil {
+ public static class FileSystemDelegate implements AutoCloseable {
+ private final FileSystem fileSystem;
+ private final boolean owner;
+
+ public FileSystemDelegate(FileSystem fileSystem, boolean owner) {
+ this.fileSystem = fileSystem;
+ this.owner = owner;
+ }
+
+ public FileSystem get() {
+ return fileSystem;
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (owner) {
+ fileSystem.close();
+ }
+ }
+ }
+
+ private FileSystemUtil() { }
+
+ private static final Map jfsArgsCreate = Collections.singletonMap("create", "true");
+ private static final Map jfsArgsEmpty = Collections.emptyMap();
+
+ public static FileSystemDelegate getJarFileSystem(Path path, boolean create) throws IOException {
+ return getJarFileSystem(path.toUri(), create);
+ }
+
+ public static FileSystemDelegate getJarFileSystem(URI uri, boolean create) throws IOException {
+ URI jarUri;
+
+ try {
+ jarUri = new URI("jar:" + uri.getScheme(), uri.getHost(), uri.getPath(), uri.getFragment());
+ } catch (URISyntaxException e) {
+ throw new IOException(e);
+ }
+
+ boolean opened = false;
+ FileSystem ret;
+
+ try {
+ ret = FileSystems.getFileSystem(jarUri);
+ } catch (FileSystemNotFoundException ignore) {
+ try {
+ ret = FileSystems.newFileSystem(jarUri, create ? jfsArgsCreate : jfsArgsEmpty);
+ opened = true;
+ } catch (FileSystemAlreadyExistsException ignore2) {
+ ret = FileSystems.getFileSystem(jarUri);
+ } catch (IOException | ZipError e) {
+ throw new IOException("Error accessing "+uri+": "+e, e);
+ }
+ }
+
+ return new FileSystemDelegate(ret, opened);
+ }
+}
--
2.51.2
From 407a1650d438db6c72aea15686d3b600d82ce4d5 Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 21:43:50 +0700
Subject: [PATCH 4/8] Return to attaching statuses only if andromeda is present
in the trace.
---
.../andromeda/common/mixin/CrashReportMixin.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java b/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
index 2c69c36b..b78450f8 100644
--- a/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
+++ b/src/main/java/me/melontini/andromeda/common/mixin/CrashReportMixin.java
@@ -13,9 +13,11 @@ abstract class CrashReportMixin {
@Inject(at = @At("TAIL"), method = "", require = 0)
private void andromeda$init(String message, Throwable cause, CallbackInfo ci) {
- var sec = ((CrashReport) (Object) this).addElement("Andromeda Statuses");
- sec.trimStackTraceEnd(sec.getStackTrace().length);
- sec.add("statuses", "\n" + AndromedaException.toString(CrashHandler.traverse(cause).orElseGet(AndromedaException::defaultStatuses)));
+ CrashHandler.traverse(cause).ifPresent(statuses -> {
+ var sec = ((CrashReport) (Object) this).addElement("Andromeda Statuses");
+ sec.trimStackTraceEnd(sec.getStackTrace().length);
+ sec.add("statuses", "\n" + AndromedaException.toString(statuses));
+ });
CrashHandler.sanitizeTrace(cause);
}
--
2.51.2
From 85620847c190e53b6f8a52ededc6be3a9eb7890d Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 22:18:41 +0700
Subject: [PATCH 5/8] Fixed some init points.
---
.../modules/items/pouches/Merged.java | 13 +++++++++
.../modules/items/pouches/client/Client.java | 12 --------
.../mechanics/throwable_items/Main.java | 7 +++--
.../data/ItemBehaviorData.java | 8 ------
.../CustomTraderManager.java | 19 -------------
.../mechanics/trading_goat_horn/Main.java | 28 +++++++++++++++++++
6 files changed, 46 insertions(+), 41 deletions(-)
create mode 100644 src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/Main.java
diff --git a/src/main/java/me/melontini/andromeda/modules/items/pouches/Merged.java b/src/main/java/me/melontini/andromeda/modules/items/pouches/Merged.java
index 2aa093c7..db328f2e 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/pouches/Merged.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/pouches/Merged.java
@@ -1,8 +1,21 @@
package me.melontini.andromeda.modules.items.pouches;
+import me.melontini.andromeda.common.conflicts.CommonRegistries;
+import me.melontini.andromeda.util.AndromedaLog;
+import me.melontini.andromeda.util.Debug;
+
public class Merged {
Merged() {
Main.testBlocks();
+
+ if (Debug.Keys.PRINT_DEBUG_MESSAGES.isPresent()) {
+ StringBuilder b = new StringBuilder();
+ b.append("Viewable block entities:");
+ Main.VIEWABLE_BLOCKS.forEach((blockEntityType, field) -> {
+ b.append('\n').append(CommonRegistries.blockEntityTypes().getId(blockEntityType)).append(": ").append(field.getName());
+ });
+ AndromedaLog.info(b);
+ }
}
}
diff --git a/src/main/java/me/melontini/andromeda/modules/items/pouches/client/Client.java b/src/main/java/me/melontini/andromeda/modules/items/pouches/client/Client.java
index e7e65df3..231b737c 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/pouches/client/Client.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/pouches/client/Client.java
@@ -1,9 +1,6 @@
package me.melontini.andromeda.modules.items.pouches.client;
-import me.melontini.andromeda.common.conflicts.CommonRegistries;
import me.melontini.andromeda.modules.items.pouches.Main;
-import me.melontini.andromeda.util.AndromedaLog;
-import me.melontini.andromeda.util.Debug;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.minecraft.client.render.entity.FlyingItemEntityRenderer;
@@ -11,14 +8,5 @@ public class Client {
Client() {
EntityRendererRegistry.register(Main.POUCH.orThrow(), FlyingItemEntityRenderer::new);
-
- if (Debug.Keys.PRINT_DEBUG_MESSAGES.isPresent()) {
- StringBuilder b = new StringBuilder();
- b.append("Viewable block entities:");
- Main.VIEWABLE_BLOCKS.forEach((blockEntityType, field) -> {
- b.append('\n').append(CommonRegistries.blockEntityTypes().getId(blockEntityType)).append(": ").append(field.getName());
- });
- AndromedaLog.info(b);
- }
}
}
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/Main.java b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/Main.java
index 1b8af948..12a2b32b 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/Main.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/Main.java
@@ -2,7 +2,7 @@ package me.melontini.andromeda.modules.mechanics.throwable_items;
import me.melontini.andromeda.common.conflicts.CommonRegistries;
import me.melontini.andromeda.common.registries.Keeper;
-import me.melontini.andromeda.modules.mechanics.throwable_items.data.ItemBehaviorData;
+import me.melontini.andromeda.modules.mechanics.throwable_items.data.BehaviorLoader;
import me.melontini.andromeda.modules.mechanics.throwable_items.data.ItemBehaviorManager;
import me.melontini.dark_matter.api.content.RegistryUtil;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
@@ -11,6 +11,7 @@ import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
+import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.minecraft.block.dispenser.ProjectileDispenserBehavior;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityType;
@@ -22,6 +23,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
+import net.minecraft.resource.ResourceType;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Position;
@@ -67,7 +69,8 @@ public class Main {
}
});
- ItemBehaviorData.init();
+ ServerLifecycleEvents.SERVER_STOPPED.register(server -> ItemBehaviorManager.clear());
+ ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(new BehaviorLoader());
}
private static PacketByteBuf sendItemsS2CPacket() {
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/data/ItemBehaviorData.java b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/data/ItemBehaviorData.java
index 6f564843..0202362b 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/data/ItemBehaviorData.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/data/ItemBehaviorData.java
@@ -7,10 +7,7 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.JsonOps;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import me.melontini.andromeda.common.conflicts.CommonRegistries;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
-import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.minecraft.item.Item;
-import net.minecraft.resource.ResourceType;
import java.util.Collections;
import java.util.List;
@@ -69,9 +66,4 @@ public record ItemBehaviorData(List- items, boolean disabled, boolean overr
throw new RuntimeException(string);
});
}
-
- public static void init() {
- ServerLifecycleEvents.SERVER_STOPPED.register(server -> ItemBehaviorManager.clear());
- ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(new BehaviorLoader());
- }
}
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/CustomTraderManager.java b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/CustomTraderManager.java
index 939d33a1..6e5375a8 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/CustomTraderManager.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/CustomTraderManager.java
@@ -5,9 +5,6 @@ import me.melontini.dark_matter.api.base.util.MathStuff;
import me.melontini.dark_matter.api.minecraft.world.PersistentStateHelper;
import me.melontini.dark_matter.api.minecraft.world.interfaces.DeserializableState;
import me.melontini.dark_matter.api.minecraft.world.interfaces.TickableState;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
-import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.SpawnReason;
import net.minecraft.entity.SpawnRestriction;
@@ -122,20 +119,4 @@ public class CustomTraderManager extends PersistentState implements Deserializab
return true;
}
-
- public static void init() {
- ServerWorldEvents.LOAD.register((server, world) -> {
- if (world.getRegistryKey() == World.OVERWORLD) CustomTraderManager.get(world);
- });
-
- ServerLifecycleEvents.SERVER_STOPPING.register(server -> {
- PersistentStateHelper.consumeIfLoaded(MakeSure.notNull(server.getWorld(World.OVERWORLD)), CustomTraderManager.ID,
- (world1, s) -> CustomTraderManager.get(world1), PersistentState::markDirty);
- });
-
- ServerTickEvents.END_WORLD_TICK.register(world -> {
- if (world.getRegistryKey() == World.OVERWORLD) PersistentStateHelper.consumeIfLoaded(world, CustomTraderManager.ID,
- (world1, s) -> CustomTraderManager.get(world1), TickableState::tick);
- });
- }
}
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/Main.java b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/Main.java
new file mode 100644
index 00000000..13ed0431
--- /dev/null
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/Main.java
@@ -0,0 +1,28 @@
+package me.melontini.andromeda.modules.mechanics.trading_goat_horn;
+
+import me.melontini.dark_matter.api.base.util.MakeSure;
+import me.melontini.dark_matter.api.minecraft.world.PersistentStateHelper;
+import me.melontini.dark_matter.api.minecraft.world.interfaces.TickableState;
+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
+import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
+import net.minecraft.world.PersistentState;
+import net.minecraft.world.World;
+
+public class Main {
+ Main() {
+ ServerWorldEvents.LOAD.register((server, world) -> {
+ if (world.getRegistryKey() == World.OVERWORLD) CustomTraderManager.get(world);
+ });
+
+ ServerLifecycleEvents.SERVER_STOPPING.register(server -> {
+ PersistentStateHelper.consumeIfLoaded(MakeSure.notNull(server.getWorld(World.OVERWORLD)), CustomTraderManager.ID,
+ (world1, s) -> CustomTraderManager.get(world1), PersistentState::markDirty);
+ });
+
+ ServerTickEvents.END_WORLD_TICK.register(world -> {
+ if (world.getRegistryKey() == World.OVERWORLD) PersistentStateHelper.consumeIfLoaded(world, CustomTraderManager.ID,
+ (world1, s) -> CustomTraderManager.get(world1), TickableState::tick);
+ });
+ }
+}
--
2.51.2
From 02813d2e90f3802ffb98bb9b6121a2010a2d746f Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Tue, 13 Feb 2024 22:57:26 +0700
Subject: [PATCH 6/8] Removed legacy config migration.
---
.../melontini/andromeda/base/Bootstrap.java | 16 +---------
.../me/melontini/andromeda/base/Module.java | 12 --------
.../andromeda/base/ModuleManager.java | 7 +----
.../base/annotations/OldConfigKey.java | 15 ----------
.../base/events/LegacyConfigEvent.java | 10 -------
.../modules/blocks/bed/power/Power.java | 2 --
.../modules/blocks/bed/safe/Safe.java | 2 --
.../modules/blocks/bed/unsafe/Unsafe.java | 2 --
.../BetterFletchingTable.java | 2 --
.../cactus_bottle_filling/CactusFiller.java | 2 --
.../campfire_effects/CampfireEffects.java | 26 ----------------
.../falling_propagule/FallingPropagule.java | 2 --
.../blocks/guarded_loot/GuardedLoot.java | 11 -------
.../modules/blocks/incubator/Incubator.java | 11 -------
.../blocks/leaf_slowdown/LeafSlowdown.java | 2 --
.../advancement_shadow/AdvancementShadow.java | 2 --
.../BeeFlowerDuplication.java | 6 ----
.../BetterFurnaceMinecart.java | 7 -----
.../modules/entities/boats/Boats.java | 13 --------
.../modules/entities/minecarts/Minecarts.java | 12 --------
.../modules/entities/slimes/Slimes.java | 13 --------
.../entities/snowball_tweaks/Snowballs.java | 15 ----------
.../VillagersFollowEmeralds.java | 2 --
.../entities/zombie/all_pick_up/Pickup.java | 2 --
.../entities/zombie/clean_pickup/Pickup.java | 9 ------
.../gui/gui_particles/GuiParticles.java | 16 ----------
.../ItemFrameTooltips.java | 2 --
.../gui/name_tooltips/NameTooltips.java | 2 --
.../no_more_adventure/NoMoreAdventure.java | 2 --
.../balanced_mending/BalancedMending.java | 2 --
.../items/better_names/BetterNames.java | 2 --
.../items/infinite_totem/InfiniteTotem.java | 11 -------
.../modules/items/lockpick/Lockpick.java | 14 ---------
.../MinecartBlockPicking.java | 6 ----
.../modules/items/tooltips/Tooltips.java | 13 --------
.../mechanics/dragon_fight/DragonFight.java | 13 --------
.../throwable_items/ThrowableItems.java | 13 --------
.../mechanics/trading_goat_horn/GoatHorn.java | 2 --
.../villager_gifting/VillagerGifting.java | 2 --
.../MinorInconvenience.java | 2 --
.../AdvancementGeneration.java | 30 -------------------
.../misc/translations/Translations.java | 2 --
.../modules/misc/unknown/Unknown.java | 2 --
.../world/auto_planting/AutoPlanting.java | 21 -------------
.../crop_temperature/PlantTemperature.java | 2 --
.../falling_beenests/CanBeeNestsFall.java | 2 --
.../modules/world/quick_fire/QuickFire.java | 2 --
47 files changed, 2 insertions(+), 364 deletions(-)
delete mode 100644 src/main/java/me/melontini/andromeda/base/annotations/OldConfigKey.java
delete mode 100644 src/main/java/me/melontini/andromeda/base/events/LegacyConfigEvent.java
diff --git a/src/main/java/me/melontini/andromeda/base/Bootstrap.java b/src/main/java/me/melontini/andromeda/base/Bootstrap.java
index 49b936ad..1dc88785 100644
--- a/src/main/java/me/melontini/andromeda/base/Bootstrap.java
+++ b/src/main/java/me/melontini/andromeda/base/Bootstrap.java
@@ -112,20 +112,6 @@ public class Bootstrap {
Class.forName(Exceptions.class.getName());
});
- AtomicReference oldCfg = new AtomicReference<>();
- var oldCfgPath = FabricLoader.getInstance().getConfigDir().resolve("andromeda.json");
- if (Files.exists(oldCfgPath)) {
- if (!Files.exists(CommonValues.configPath())) {
- wrapIO(() -> {
- oldCfg.set(JsonParser.parseReader(Files.newBufferedReader(oldCfgPath)).getAsJsonObject());
- Files.createDirectories(CommonValues.configPath().getParent());
- Files.move(oldCfgPath, CommonValues.configPath());
- }, "Couldn't rename pre-1.0.0 config!");
- } else {
- wrapIO(() -> Files.delete(oldCfgPath), "Couldn't delete pre-1.0.0 config!");
- }
- }
-
AndromedaConfig.save();
Status.update();
@@ -154,7 +140,7 @@ public class Bootstrap {
ModuleManager m;
try {
- m = new ModuleManager(sorted, oldCfg.get());
+ m = new ModuleManager(sorted);
} catch (Throwable t) {//Manager constructor does a lot of heavy-lifting, so we want to catch any errors.
throw AndromedaException.builder()
.cause(t).message("Failed to initialize ModuleManager!!!")
diff --git a/src/main/java/me/melontini/andromeda/base/Module.java b/src/main/java/me/melontini/andromeda/base/Module.java
index cf1830c7..0ed4fe2e 100644
--- a/src/main/java/me/melontini/andromeda/base/Module.java
+++ b/src/main/java/me/melontini/andromeda/base/Module.java
@@ -5,10 +5,7 @@ import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.events.Bus;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.melontini.andromeda.util.exceptions.AndromedaException;
import me.melontini.dark_matter.api.base.config.ConfigManager;
import me.melontini.dark_matter.api.base.reflect.Reflect;
@@ -45,15 +42,6 @@ public abstract class Module {
protected Module() {
ModuleInfo info1 = this.getClass().getAnnotation(ModuleInfo.class);
this.info = new Metadata(info1.name(), info1.category(), info1.environment());
-
- if (this.getClass().isAnnotationPresent(OldConfigKey.class)) {
- OldConfigKey key = this.getClass().getAnnotation(OldConfigKey.class);
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has(key.value())) {
- JsonOps.ifPresent(config, key.value(), e -> this.config().enabled = e.getAsBoolean());
- }
- });
- }
}
public final Metadata meta() {
diff --git a/src/main/java/me/melontini/andromeda/base/ModuleManager.java b/src/main/java/me/melontini/andromeda/base/ModuleManager.java
index 25bfb8c4..b9774df6 100644
--- a/src/main/java/me/melontini/andromeda/base/ModuleManager.java
+++ b/src/main/java/me/melontini/andromeda/base/ModuleManager.java
@@ -1,12 +1,10 @@
package me.melontini.andromeda.base;
-import com.google.gson.JsonObject;
import lombok.CustomLog;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Unscoped;
import me.melontini.andromeda.base.events.Bus;
import me.melontini.andromeda.base.events.ConfigEvent;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
import me.melontini.andromeda.util.Debug;
import me.melontini.dark_matter.api.base.config.ConfigManager;
import me.melontini.dark_matter.api.base.util.MakeSure;
@@ -14,7 +12,6 @@ import me.melontini.dark_matter.api.base.util.Utilities;
import net.fabricmc.api.EnvType;
import net.fabricmc.loader.api.FabricLoader;
import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.lang.reflect.ParameterizedType;
@@ -46,7 +43,7 @@ public class ModuleManager {
final Map> mixinConfigs = new HashMap<>();
- ModuleManager(List zygotes, @Nullable JsonObject oldCfg) {
+ ModuleManager(List zygotes) {
if (Bootstrap.INSTANCE != null) throw new IllegalStateException("ModuleManager already initialized!");
Bootstrap.INSTANCE = this;
@@ -72,8 +69,6 @@ public class ModuleManager {
module.defaultConfig = Utilities.cast(module.manager.createDefault());
});
- if (oldCfg != null) LegacyConfigEvent.BUS.invoker().acceptLegacy(oldCfg);
-
if (Debug.Keys.ENABLE_ALL_MODULES.isPresent())
sorted.forEach(module -> module.config().enabled = true);
fixScopes(sorted);
diff --git a/src/main/java/me/melontini/andromeda/base/annotations/OldConfigKey.java b/src/main/java/me/melontini/andromeda/base/annotations/OldConfigKey.java
deleted file mode 100644
index 91a97b1a..00000000
--- a/src/main/java/me/melontini/andromeda/base/annotations/OldConfigKey.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package me.melontini.andromeda.base.annotations;
-
-import org.jetbrains.annotations.ApiStatus;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@ApiStatus.Internal
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface OldConfigKey {
- String value();
-}
diff --git a/src/main/java/me/melontini/andromeda/base/events/LegacyConfigEvent.java b/src/main/java/me/melontini/andromeda/base/events/LegacyConfigEvent.java
deleted file mode 100644
index 2988cbfb..00000000
--- a/src/main/java/me/melontini/andromeda/base/events/LegacyConfigEvent.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package me.melontini.andromeda.base.events;
-
-import com.google.gson.JsonObject;
-
-public interface LegacyConfigEvent {
-
- Bus BUS = new Bus<>(events -> config -> events.forEach(event -> event.acceptLegacy(config)));
-
- void acceptLegacy(JsonObject config);
-}
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java b/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java
index d5e08fbb..eb908ef3 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.blocks.bed.power;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("enableBedExplosionPower")
@ModuleInfo(name = "bed/power", category = "blocks", environment = Environment.SERVER)
public class Power extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/bed/safe/Safe.java b/src/main/java/me/melontini/andromeda/modules/blocks/bed/safe/Safe.java
index 5f17ae93..eb514cd3 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/bed/safe/Safe.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/bed/safe/Safe.java
@@ -2,9 +2,7 @@ package me.melontini.andromeda.modules.blocks.bed.safe;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("safeBeds")
@ModuleInfo(name = "bed/safe", category = "blocks")
public class Safe extends Module {
}
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java b/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java
index a78fdb1d..5e9e3b40 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java
@@ -4,7 +4,6 @@ import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.ModuleManager;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.events.BlockadesEvent;
import me.melontini.andromeda.base.events.ConfigEvent;
import me.melontini.andromeda.modules.blocks.bed.safe.Safe;
@@ -12,7 +11,6 @@ import me.melontini.andromeda.modules.blocks.bed.safe.Safe;
import java.util.concurrent.CompletableFuture;
import java.util.function.BooleanSupplier;
-@OldConfigKey("bedsExplodeEverywhere")
@ModuleInfo(name = "bed/unsafe", category = "blocks", environment = Environment.SERVER)
public class Unsafe extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/better_fletching_table/BetterFletchingTable.java b/src/main/java/me/melontini/andromeda/modules/blocks/better_fletching_table/BetterFletchingTable.java
index 1b5733b1..a6b0d912 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/better_fletching_table/BetterFletchingTable.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/better_fletching_table/BetterFletchingTable.java
@@ -2,11 +2,9 @@ package me.melontini.andromeda.modules.blocks.better_fletching_table;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.annotations.Unscoped;
@Unscoped
-@OldConfigKey("usefulFletching")
@ModuleInfo(name = "better_fletching_table", category = "blocks")
public class BetterFletchingTable extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/cactus_bottle_filling/CactusFiller.java b/src/main/java/me/melontini/andromeda/modules/blocks/cactus_bottle_filling/CactusFiller.java
index 7a3e836d..7ffbb932 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/cactus_bottle_filling/CactusFiller.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/cactus_bottle_filling/CactusFiller.java
@@ -2,9 +2,7 @@ package me.melontini.andromeda.modules.blocks.cactus_bottle_filling;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("cactusBottleFilling")
@ModuleInfo(name = "cactus_bottle_filling", category = "blocks")
public class CactusFiller extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java b/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java
index 08f2058a..96948d3b 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java
@@ -1,44 +1,18 @@
package me.melontini.andromeda.modules.blocks.campfire_effects;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ModuleInfo(name = "campfire_effects", category = "blocks", environment = Environment.SERVER)
public class CampfireEffects extends Module {
- CampfireEffects() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("campfireTweaks")) {
- JsonObject campfireTweaks = config.getAsJsonObject("campfireTweaks");
-
- JsonOps.ifPresent(campfireTweaks, "campfireEffects", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(campfireTweaks, "campfireEffectsPassive", e -> this.config().affectsPassive = e.getAsBoolean());
- JsonOps.ifPresent(campfireTweaks, "campfireEffectsRange", e -> this.config().effectsRange = e.getAsInt());
-
- JsonOps.ifPresent(campfireTweaks, "effectsList", element -> {
- List effects = new ArrayList<>();
- for (JsonElement e : element.getAsJsonArray()) {
- JsonObject o = e.getAsJsonObject();
- effects.add(new Config.Effect(o.get("identifier").getAsString(), o.get("amplifier").getAsInt()));
- }
- this.config().effectList = effects;
- });
- }
- });
- }
-
public static class Config extends BaseConfig {
public boolean affectsPassive = true;
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java b/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java
index 9db111d7..56eaf7f6 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.blocks.falling_propagule;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("fallingPropagule")
@ModuleInfo(name = "falling_propagule", category = "blocks", environment = Environment.SERVER)
public class FallingPropagule extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/guarded_loot/GuardedLoot.java b/src/main/java/me/melontini/andromeda/modules/blocks/guarded_loot/GuardedLoot.java
index c34ed92b..b765c8ae 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/guarded_loot/GuardedLoot.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/guarded_loot/GuardedLoot.java
@@ -1,23 +1,12 @@
package me.melontini.andromeda.modules.blocks.guarded_loot;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "guarded_loot", category = "blocks")
public class GuardedLoot extends Module {
GuardedLoot() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("guardedLoot")) {
- JsonObject guardedLoot = config.getAsJsonObject("guardedLoot");
-
- JsonOps.ifPresent(guardedLoot, "enabled", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(guardedLoot, "range", e -> this.config().range = e.getAsInt());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/incubator/Incubator.java b/src/main/java/me/melontini/andromeda/modules/blocks/incubator/Incubator.java
index 1eb2405d..0de1090d 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/incubator/Incubator.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/incubator/Incubator.java
@@ -1,27 +1,16 @@
package me.melontini.andromeda.modules.blocks.incubator;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.SpecialEnvironment;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@Unscoped
@ModuleInfo(name = "incubator", category = "blocks")
public class Incubator extends Module {
Incubator() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("incubatorSettings")) {
- JsonObject incubator = config.getAsJsonObject("incubatorSettings");
-
- JsonOps.ifPresent(incubator, "enableIncubator", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(incubator, "incubatorRandomness", e -> this.config().randomness = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java b/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java
index c760f393..0a757543 100644
--- a/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java
+++ b/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.blocks.leaf_slowdown;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("leafSlowdown")
@ModuleInfo(name = "leaf_slowdown", category = "blocks", environment = Environment.SERVER)
public class LeafSlowdown extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/bugfixes/advancement_shadow/AdvancementShadow.java b/src/main/java/me/melontini/andromeda/modules/bugfixes/advancement_shadow/AdvancementShadow.java
index d575f209..f06abc18 100644
--- a/src/main/java/me/melontini/andromeda/modules/bugfixes/advancement_shadow/AdvancementShadow.java
+++ b/src/main/java/me/melontini/andromeda/modules/bugfixes/advancement_shadow/AdvancementShadow.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.bugfixes.advancement_shadow;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("frameIndependentAdvancementShadow")
@ModuleInfo(name = "advancement_shadow", category = "bugfixes", environment = Environment.CLIENT)
public class AdvancementShadow extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java b/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java
index c8444650..55155594 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java
@@ -3,17 +3,11 @@ package me.melontini.andromeda.modules.entities.bee_flower_duplication;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "bee_flower_duplication", category = "entities", environment = Environment.SERVER)
public class BeeFlowerDuplication extends Module {
BeeFlowerDuplication() {
- LegacyConfigEvent.BUS.listen(config -> {
- JsonOps.ifPresent(config, "beeFlowerDuplication", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(config, "beeTallFlowerDuplication", e -> this.config().tallFlowers = e.getAsBoolean());
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java b/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java
index 245b4de4..d0fbd628 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java
@@ -4,19 +4,12 @@ import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@Unscoped
@ModuleInfo(name = "better_furnace_minecart", category = "entities", environment = Environment.SERVER)
public class BetterFurnaceMinecart extends Module {
BetterFurnaceMinecart() {
- LegacyConfigEvent.BUS.listen(config -> {
- JsonOps.ifPresent(config, "betterFurnaceMinecart", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(config, "maxFurnaceMinecartFuel", e -> this.config().maxFuel = e.getAsInt());
- JsonOps.ifPresent(config, "furnaceMinecartTakeFuelWhenLow", e -> this.config().takeFuelWhenLow = e.getAsBoolean());
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/boats/Boats.java b/src/main/java/me/melontini/andromeda/modules/entities/boats/Boats.java
index 298e70e4..34c95a71 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/boats/Boats.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/boats/Boats.java
@@ -1,13 +1,10 @@
package me.melontini.andromeda.modules.entities.boats;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.SpecialEnvironment;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
@Unscoped
@@ -15,16 +12,6 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry;
public class Boats extends Module {
Boats() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("newBoats")) {
- JsonObject newBoats = config.getAsJsonObject("newBoats");
-
- JsonOps.ifPresent(newBoats, "isFurnaceBoatOn", e -> this.config().isFurnaceBoatOn = e.getAsBoolean());
- JsonOps.ifPresent(newBoats, "isTNTBoatOn", e -> this.config().isTNTBoatOn = e.getAsBoolean());
- JsonOps.ifPresent(newBoats, "isJukeboxBoatOn", e -> this.config().isJukeboxBoatOn = e.getAsBoolean());
- JsonOps.ifPresent(newBoats, "isHopperBoatOn", e -> this.config().isHopperBoatOn = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/minecarts/Minecarts.java b/src/main/java/me/melontini/andromeda/modules/entities/minecarts/Minecarts.java
index 9baecee0..312cc74a 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/minecarts/Minecarts.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/minecarts/Minecarts.java
@@ -1,13 +1,10 @@
package me.melontini.andromeda.modules.entities.minecarts;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.SpecialEnvironment;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
@Unscoped
@@ -15,15 +12,6 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry;
public class Minecarts extends Module {
Minecarts() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("newMinecarts")) {
- JsonObject newMinecarts = config.getAsJsonObject("newMinecarts");
-
- JsonOps.ifPresent(newMinecarts, "isAnvilMinecartOn", e -> this.config().isAnvilMinecartOn = e.getAsBoolean());
- JsonOps.ifPresent(newMinecarts, "isNoteBlockMinecartOn", e -> this.config().isNoteBlockMinecartOn = e.getAsBoolean());
- JsonOps.ifPresent(newMinecarts, "isJukeboxMinecartOn", e -> this.config().isJukeboxMinecartOn = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java b/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java
index c7961772..a2e545bf 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java
@@ -1,26 +1,13 @@
package me.melontini.andromeda.modules.entities.slimes;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "slimes", category = "entities", environment = Environment.SERVER)
public class Slimes extends Module {
Slimes() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("slimes")) {
- JsonObject slimes = config.getAsJsonObject("slimes");
-
- JsonOps.ifPresent(slimes, "flee", e -> this.config().flee = e.getAsBoolean());
- JsonOps.ifPresent(slimes, "merge", e -> this.config().merge = e.getAsBoolean());
- JsonOps.ifPresent(slimes, "maxMerge", e -> this.config().maxMerge = e.getAsInt());
- JsonOps.ifPresent(slimes, "slowness", e -> this.config().slowness = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java b/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java
index fb3af59b..b8b805b7 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java
@@ -1,28 +1,13 @@
package me.melontini.andromeda.modules.entities.snowball_tweaks;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "snowball_tweaks", category = "entities", environment = Environment.SERVER)
public class Snowballs extends Module {
Snowballs() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("snowballs")) {
- JsonObject snowballs = config.getAsJsonObject("snowballs");
-
- JsonOps.ifPresent(snowballs, "freeze", e -> this.config().freeze = e.getAsBoolean());
- JsonOps.ifPresent(snowballs, "extinguish", e -> this.config().extinguish = e.getAsBoolean());
- JsonOps.ifPresent(snowballs, "melt", e -> this.config().melt = e.getAsBoolean());
- JsonOps.ifPresent(snowballs, "layers", e -> this.config().layers = e.getAsBoolean());
- JsonOps.ifPresent(snowballs, "enableCooldown", e -> this.config().enableCooldown = e.getAsBoolean());
- JsonOps.ifPresent(snowballs, "cooldown", e -> this.config().cooldown = e.getAsInt());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java b/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java
index d5522f4d..272005a5 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.entities.villagers_follow_emeralds;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("villagersFollowEmeraldBlocks")
@ModuleInfo(name = "villagers_follow_emeralds", category = "entities", environment = Environment.SERVER)
public class VillagersFollowEmeralds extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java b/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java
index 2ec75f37..1b606069 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.entities.zombie.all_pick_up;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("allZombiesCanPickUpItems")
@ModuleInfo(name = "zombie/all_pick_up", category = "entities", environment = Environment.SERVER)
public class Pickup extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java b/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java
index 3b1bf9c3..65352178 100644
--- a/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java
+++ b/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java
@@ -1,21 +1,12 @@
package me.melontini.andromeda.modules.entities.zombie.clean_pickup;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
@ModuleInfo(name = "zombie/clean_pickup", category = "entities", environment = Environment.SERVER)
public class Pickup extends Module {
Pickup() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("newThrowableItems")) {
- JsonObject o = config.get("newThrowableItems").getAsJsonObject();
- this.config().enabled = o.has("enable") && o.get("enable").getAsBoolean()
- && o.has("preventUselessItems") && o.get("preventUselessItems").getAsBoolean();
- }
- });
}
}
diff --git a/src/main/java/me/melontini/andromeda/modules/gui/gui_particles/GuiParticles.java b/src/main/java/me/melontini/andromeda/modules/gui/gui_particles/GuiParticles.java
index bd907e51..9ee862a4 100644
--- a/src/main/java/me/melontini/andromeda/modules/gui/gui_particles/GuiParticles.java
+++ b/src/main/java/me/melontini/andromeda/modules/gui/gui_particles/GuiParticles.java
@@ -1,29 +1,13 @@
package me.melontini.andromeda.modules.gui.gui_particles;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "gui_particles", category = "gui", environment = Environment.CLIENT)
public class GuiParticles extends Module {
GuiParticles() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("guiParticles")) {
- JsonObject guiParticles = config.getAsJsonObject("guiParticles");
-
- this.config().enabled = true;
- JsonOps.ifPresent(guiParticles, "anvilScreenParticles", e -> this.config().anvilScreenParticles = e.getAsBoolean());
- JsonOps.ifPresent(guiParticles, "enchantmentScreenParticles", e -> this.config().enchantmentScreenParticles = e.getAsBoolean());
- JsonOps.ifPresent(guiParticles, "furnaceScreenParticles", e -> this.config().furnaceScreenParticles = e.getAsBoolean());
- JsonOps.ifPresent(guiParticles, "creativeScreenParticles", e -> this.config().creativeScreenParticles = e.getAsBoolean());
- JsonOps.ifPresent(guiParticles, "creativeScreenParticlesVelX", e -> this.config().creativeScreenParticlesVelX = e.getAsDouble());
- JsonOps.ifPresent(guiParticles, "gameModeSwitcherParticles", e -> this.config().gameModeSwitcherParticles = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/gui/item_frame_tooltips/ItemFrameTooltips.java b/src/main/java/me/melontini/andromeda/modules/gui/item_frame_tooltips/ItemFrameTooltips.java
index f3b6f427..87c04fbc 100644
--- a/src/main/java/me/melontini/andromeda/modules/gui/item_frame_tooltips/ItemFrameTooltips.java
+++ b/src/main/java/me/melontini/andromeda/modules/gui/item_frame_tooltips/ItemFrameTooltips.java
@@ -3,7 +3,6 @@ package me.melontini.andromeda.modules.gui.item_frame_tooltips;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.events.BlockadesEvent;
import me.melontini.andromeda.base.events.ConfigEvent;
@@ -11,7 +10,6 @@ import java.util.function.BooleanSupplier;
import static me.melontini.andromeda.base.Bootstrap.testModVersion;
-@OldConfigKey("itemFrameTooltips")
@ModuleInfo(name = "item_frame_tooltips", category = "gui", environment = Environment.CLIENT)
public class ItemFrameTooltips extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/gui/name_tooltips/NameTooltips.java b/src/main/java/me/melontini/andromeda/modules/gui/name_tooltips/NameTooltips.java
index c356cb1f..2eea8762 100644
--- a/src/main/java/me/melontini/andromeda/modules/gui/name_tooltips/NameTooltips.java
+++ b/src/main/java/me/melontini/andromeda/modules/gui/name_tooltips/NameTooltips.java
@@ -3,7 +3,6 @@ package me.melontini.andromeda.modules.gui.name_tooltips;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.events.BlockadesEvent;
import me.melontini.andromeda.base.events.ConfigEvent;
@@ -11,7 +10,6 @@ import java.util.function.BooleanSupplier;
import static me.melontini.andromeda.base.Bootstrap.testModVersion;
-@OldConfigKey("tooltipNotName")
@ModuleInfo(name = "name_tooltips", category = "gui", environment = Environment.CLIENT)
public class NameTooltips extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/gui/no_more_adventure/NoMoreAdventure.java b/src/main/java/me/melontini/andromeda/modules/gui/no_more_adventure/NoMoreAdventure.java
index 46111729..ad401bc3 100644
--- a/src/main/java/me/melontini/andromeda/modules/gui/no_more_adventure/NoMoreAdventure.java
+++ b/src/main/java/me/melontini/andromeda/modules/gui/no_more_adventure/NoMoreAdventure.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.gui.no_more_adventure;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("noMoreAdventure")
@ModuleInfo(name = "no_more_adventure", category = "gui", environment = Environment.CLIENT)
public class NoMoreAdventure extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/balanced_mending/BalancedMending.java b/src/main/java/me/melontini/andromeda/modules/items/balanced_mending/BalancedMending.java
index 1232912c..507b020c 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/balanced_mending/BalancedMending.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/balanced_mending/BalancedMending.java
@@ -2,11 +2,9 @@ package me.melontini.andromeda.modules.items.balanced_mending;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.annotations.Unscoped;
@Unscoped
-@OldConfigKey("balancedMending")
@ModuleInfo(name = "balanced_mending", category = "items")
public class BalancedMending extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/better_names/BetterNames.java b/src/main/java/me/melontini/andromeda/modules/items/better_names/BetterNames.java
index 7077beab..fbe0a175 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/better_names/BetterNames.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/better_names/BetterNames.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.items.better_names;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("slightlyBetterItemNames")
@ModuleInfo(name = "better_names", category = "items", environment = Environment.CLIENT)
public class BetterNames extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/infinite_totem/InfiniteTotem.java b/src/main/java/me/melontini/andromeda/modules/items/infinite_totem/InfiniteTotem.java
index 49896ded..c7aa5863 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/infinite_totem/InfiniteTotem.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/infinite_totem/InfiniteTotem.java
@@ -1,23 +1,12 @@
package me.melontini.andromeda.modules.items.infinite_totem;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "infinite_totem", category = "items")
public class InfiniteTotem extends Module {
InfiniteTotem() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("totemSettings")) {
- JsonObject totemSettings = config.getAsJsonObject("totemSettings");
-
- JsonOps.ifPresent(totemSettings, "enableInfiniteTotem", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(totemSettings, "enableTotemAscension", e -> this.config().enableAscension = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/lockpick/Lockpick.java b/src/main/java/me/melontini/andromeda/modules/items/lockpick/Lockpick.java
index 6b9c4f7f..b15f5056 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/lockpick/Lockpick.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/lockpick/Lockpick.java
@@ -1,11 +1,8 @@
package me.melontini.andromeda.modules.items.lockpick;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.melontini.dark_matter.api.base.util.MathStuff;
@Unscoped
@@ -13,17 +10,6 @@ import me.melontini.dark_matter.api.base.util.MathStuff;
public class Lockpick extends Module {
Lockpick() {
- LegacyConfigEvent.BUS.listen(config -> {
- JsonOps.ifPresent(config, "lockpickEnabled", e -> this.config().enabled = e.getAsBoolean());
-
- if (config.has("lockpick")) {
- JsonObject lockpick = config.getAsJsonObject("lockpick");
-
- JsonOps.ifPresent(lockpick, "chance", e -> this.config().chance = e.getAsInt());
- JsonOps.ifPresent(lockpick, "breakAfterUse", e -> this.config().breakAfterUse = e.getAsBoolean());
- JsonOps.ifPresent(lockpick, "villagerInventory", e -> this.config().villagerInventory = e.getAsBoolean());
- }
- });
}
public boolean rollLockpick() {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java b/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java
index bb7100ff..1670f903 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java
@@ -3,18 +3,12 @@ package me.melontini.andromeda.modules.items.minecart_block_picking;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@Unscoped
@ModuleInfo(name = "minecart_block_picking", category = "items")
public class MinecartBlockPicking extends Module {
MinecartBlockPicking() {
- LegacyConfigEvent.BUS.listen(config -> {
- JsonOps.ifPresent(config, "minecartBlockPicking", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(config, "minecartSpawnerPicking", e -> this.config().spawnerPicking = e.getAsBoolean());
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/items/tooltips/Tooltips.java b/src/main/java/me/melontini/andromeda/modules/items/tooltips/Tooltips.java
index 742ffcee..e73ad9e9 100644
--- a/src/main/java/me/melontini/andromeda/modules/items/tooltips/Tooltips.java
+++ b/src/main/java/me/melontini/andromeda/modules/items/tooltips/Tooltips.java
@@ -1,26 +1,13 @@
package me.melontini.andromeda.modules.items.tooltips;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@ModuleInfo(name = "tooltips", category = "items", environment = Environment.CLIENT)
public class Tooltips extends Module {
Tooltips() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("tooltips")) {
- JsonObject tooltips = config.getAsJsonObject("tooltips");
-
- this.config().enabled = true;
- JsonOps.ifPresent(tooltips, "clock", e -> this.config().clock = e.getAsBoolean());
- JsonOps.ifPresent(tooltips, "compass", e -> this.config().compass = e.getAsBoolean());
- JsonOps.ifPresent(tooltips, "recoveryCompass", e -> this.config().recoveryCompass = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java
index 14e3e1bf..ffe3ab2f 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java
@@ -1,12 +1,9 @@
package me.melontini.andromeda.modules.mechanics.dragon_fight;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
@Unscoped
@@ -14,16 +11,6 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry;
public class DragonFight extends Module {
DragonFight() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("dragonFight")) {
- JsonObject dragonFight = config.getAsJsonObject("dragonFight");
-
- JsonOps.ifPresent(dragonFight, "respawnCrystals", e -> this.config().respawnCrystals = e.getAsBoolean());
- JsonOps.ifPresent(dragonFight, "scaleHealthByMaxPlayers", e -> this.config().scaleHealthByMaxPlayers = e.getAsBoolean());
- JsonOps.ifPresent(dragonFight, "shorterCrystalTrackRange", e -> this.config().shorterCrystalTrackRange = e.getAsBoolean());
- JsonOps.ifPresent(dragonFight, "shorterSpikes", e -> this.config().shorterSpikes = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/ThrowableItems.java b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/ThrowableItems.java
index a7a17fdd..30463704 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/ThrowableItems.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/throwable_items/ThrowableItems.java
@@ -1,29 +1,16 @@
package me.melontini.andromeda.modules.mechanics.throwable_items;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.SpecialEnvironment;
import me.melontini.andromeda.base.annotations.Unscoped;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
@Unscoped
@ModuleInfo(name = "throwable_items", category = "mechanics")
public class ThrowableItems extends Module {
ThrowableItems() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("newThrowableItems")) {
- JsonObject newThrowableItems = config.getAsJsonObject("newThrowableItems");
-
- JsonOps.ifPresent(newThrowableItems, "enable", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(newThrowableItems, "canZombiesThrowItems", e -> this.config().canZombiesThrowItems = e.getAsBoolean());
- JsonOps.ifPresent(newThrowableItems, "zombieThrowInterval", e -> this.config().zombieThrowInterval = e.getAsInt());
- JsonOps.ifPresent(newThrowableItems, "tooltip", e -> this.config().tooltip = e.getAsBoolean());
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java
index 431e1e5f..07486d14 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.mechanics.trading_goat_horn;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("tradingGoatHorn")
@ModuleInfo(name = "trading_goat_horn", category = "mechanics", environment = Environment.SERVER)
public class GoatHorn extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java b/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java
index 35a7e7a9..38cbd2ea 100644
--- a/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java
+++ b/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.mechanics.villager_gifting;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("villagerGifting")
@ModuleInfo(name = "villager_gifting", category = "mechanics", environment = Environment.SERVER)
public class VillagerGifting extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java b/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java
index b8489d7a..2aeb0fa6 100644
--- a/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java
+++ b/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java
@@ -2,9 +2,7 @@ package me.melontini.andromeda.modules.misc.minor_inconvenience;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("minorInconvenience")
@ModuleInfo(name = "minor_inconvenience", category = "misc")
public class MinorInconvenience extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java b/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java
index e20cfe9c..b9fe8e0c 100644
--- a/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java
+++ b/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java
@@ -1,14 +1,9 @@
package me.melontini.andromeda.modules.misc.recipe_advancements_generation;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -16,31 +11,6 @@ import java.util.List;
public class AdvancementGeneration extends Module {
AdvancementGeneration() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("autogenRecipeAdvancements")) {
- JsonObject ara = config.getAsJsonObject("autogenRecipeAdvancements");
-
- JsonOps.ifPresent(ara, "autogenRecipeAdvancements", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(ara, "requireAllItems", e -> this.config().requireAllItems = e.getAsBoolean());
- JsonOps.ifPresent(ara, "ignoreRecipesHiddenInTheRecipeBook", e -> this.config().ignoreRecipesHiddenInTheRecipeBook = e.getAsBoolean());
-
- JsonOps.ifPresent(ara, "blacklistedRecipeNamespaces", element -> {
- List nsbl = new ArrayList<>();
- for (JsonElement e : element.getAsJsonArray()) {
- nsbl.add(e.getAsString());
- }
- this.config().namespaceBlacklist = nsbl;
- });
-
- JsonOps.ifPresent(ara, "blacklistedRecipeIds", element -> {
- List rbbl = new ArrayList<>();
- for (JsonElement e : element.getAsJsonArray()) {
- rbbl.add(e.getAsString());
- }
- this.config().recipeBlacklist = rbbl;
- });
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/misc/translations/Translations.java b/src/main/java/me/melontini/andromeda/modules/misc/translations/Translations.java
index 5b5b6b91..12d230f6 100644
--- a/src/main/java/me/melontini/andromeda/modules/misc/translations/Translations.java
+++ b/src/main/java/me/melontini/andromeda/modules/misc/translations/Translations.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.misc.translations;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("autoUpdateTranslations")
@ModuleInfo(name = "translations", category = "misc", environment = Environment.CLIENT)
public class Translations extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/misc/unknown/Unknown.java b/src/main/java/me/melontini/andromeda/modules/misc/unknown/Unknown.java
index 58bb17b0..dac3a03b 100644
--- a/src/main/java/me/melontini/andromeda/modules/misc/unknown/Unknown.java
+++ b/src/main/java/me/melontini/andromeda/modules/misc/unknown/Unknown.java
@@ -2,11 +2,9 @@ package me.melontini.andromeda.modules.misc.unknown;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
import me.melontini.andromeda.base.annotations.Unscoped;
@Unscoped
-@OldConfigKey("unknown")
@ModuleInfo(name = "unknown", category = "misc")
public class Unknown extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java b/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java
index 51907bc6..429ec50e 100644
--- a/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java
+++ b/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java
@@ -1,16 +1,11 @@
package me.melontini.andromeda.modules.world.auto_planting;
import com.google.common.collect.Lists;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
import me.melontini.andromeda.base.annotations.Origin;
-import me.melontini.andromeda.base.events.LegacyConfigEvent;
-import me.melontini.andromeda.util.JsonOps;
-import java.util.ArrayList;
import java.util.List;
@Origin(mod = "TinyTweaks", author = "HephaestusDev")
@@ -18,22 +13,6 @@ import java.util.List;
public class AutoPlanting extends Module {
AutoPlanting() {
- LegacyConfigEvent.BUS.listen(config -> {
- if (config.has("autoPlanting")) {
- JsonObject ap = config.getAsJsonObject("autoPlanting");
-
- JsonOps.ifPresent(ap, "enabled", e -> this.config().enabled = e.getAsBoolean());
- JsonOps.ifPresent(ap, "blacklistMode", e -> this.config().blacklistMode = e.getAsBoolean());
-
- JsonOps.ifPresent(ap, "idList", element -> {
- List ids = new ArrayList<>();
- for (JsonElement e : element.getAsJsonArray()) {
- ids.add(e.getAsString());
- }
- this.config().idList = ids;
- });
- }
- });
}
public static class Config extends BaseConfig {
diff --git a/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java b/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java
index fc899a98..9bf29fe4 100644
--- a/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java
+++ b/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.world.crop_temperature;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("temperatureBasedCropGrowthSpeed")
@ModuleInfo(name = "crop_temperature", category = "world", environment = Environment.SERVER)
public class PlantTemperature extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java b/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java
index 9df8a810..c6a119ff 100644
--- a/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java
+++ b/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.world.falling_beenests;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("canBeeNestsFall")
@ModuleInfo(name = "falling_beenests", category = "world", environment = Environment.SERVER)
public class CanBeeNestsFall extends Module {
diff --git a/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java b/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java
index 2cb3be9a..718bbe20 100644
--- a/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java
+++ b/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java
@@ -3,9 +3,7 @@ package me.melontini.andromeda.modules.world.quick_fire;
import me.melontini.andromeda.base.Environment;
import me.melontini.andromeda.base.Module;
import me.melontini.andromeda.base.annotations.ModuleInfo;
-import me.melontini.andromeda.base.annotations.OldConfigKey;
-@OldConfigKey("quickFire")
@ModuleInfo(name = "quick_fire", category = "world", environment = Environment.SERVER)
public class QuickFire extends Module {
--
2.51.2
From 2469cd5a73a4dcad9160cfde316aa3d1e23d8fb2 Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Thu, 15 Feb 2024 01:09:06 +0700
Subject: [PATCH 7/8] Clean up downloaders
---
.../misc/translations/client/Client.java | 47 ++++++++++---------
.../melontini/andromeda/util/GitTracker.java | 32 ++++++-------
2 files changed, 38 insertions(+), 41 deletions(-)
diff --git a/src/main/java/me/melontini/andromeda/modules/misc/translations/client/Client.java b/src/main/java/me/melontini/andromeda/modules/misc/translations/client/Client.java
index 85227647..20ea97d5 100644
--- a/src/main/java/me/melontini/andromeda/modules/misc/translations/client/Client.java
+++ b/src/main/java/me/melontini/andromeda/modules/misc/translations/client/Client.java
@@ -1,6 +1,7 @@
package me.melontini.andromeda.modules.misc.translations.client;
import com.google.common.collect.Sets;
+import lombok.experimental.ExtensionMethod;
import me.melontini.andromeda.util.AndromedaLog;
import me.melontini.andromeda.util.CommonValues;
import me.melontini.andromeda.util.GitTracker;
@@ -14,16 +15,18 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.attribute.FileTime;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ForkJoinPool;
+@ExtensionMethod(Files.class)
public class Client {
public static final Path TRANSLATION_PACK = CommonValues.hiddenPath().resolve("andromeda_translations");
public static final Path LANG_PATH = TRANSLATION_PACK.resolve("assets/andromeda/lang");
+ private static final Path EN_US = LANG_PATH.resolve("en_us.json");
private static final Path OPTIONS = FabricLoader.getInstance().getGameDir().resolve("options.txt");
private static final String URL = GitTracker.RAW_URL + "/" + GitTracker.OWNER + "/" + GitTracker.REPO + "/" + GitTracker.getDefaultBranch() + "/src/main/resources/assets/andromeda/lang/";
@@ -32,25 +35,24 @@ public class Client {
private static String languageCode = "en_us";
Client() {
- boolean shouldUpdate = true;
- if (Files.exists(Client.LANG_PATH.resolve("en_us.json"))) {
- try {
- FileTime lastModifiedTime = Files.getLastModifiedTime(Client.LANG_PATH.resolve("en_us.json"));
- shouldUpdate = ChronoUnit.HOURS.between(lastModifiedTime.toInstant(), Instant.now()) >= 24;
- } catch (Exception ignored) {}
- }
- if (!shouldUpdate) shouldUpdate = CommonValues.updated();
-
- if (shouldUpdate) {
+ if (shouldUpdate()) {
Set languages = Sets.newHashSet("en_us");
- String s = Client.getSelectedLanguage();
- if (!s.isEmpty()) languages.add(s);
+ Client.getSelectedLanguage().ifPresent(languages::add);
ForkJoinPool.commonPool().submit(() -> Client.downloadTranslations(languages));
- } else {
- AndromedaLog.info("Skipped translations update.");
}
}
+ public boolean shouldUpdate() {
+ if (EN_US.exists()) {
+ try {
+ if (ChronoUnit.HOURS.between(EN_US.getLastModifiedTime().toInstant(), Instant.now()) >= 24)
+ return true;
+ } catch (Exception ignored) {
+ }
+ } else return true;
+ return CommonValues.updated();
+ }
+
public static void onResourceReload(String code) {
if (!languageCode.equals(code)) {
languageCode = code;
@@ -65,8 +67,8 @@ public class Client {
String file = downloadLang(language);
if (!file.isEmpty()) {
try {
- if (!Files.exists(LANG_PATH)) Files.createDirectories(LANG_PATH);
- Files.writeString(LANG_PATH.resolve(language + ".json"), file);
+ if (!LANG_PATH.exists()) LANG_PATH.createDirectories();
+ LANG_PATH.resolve(language + ".json").writeString(file);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -96,13 +98,12 @@ public class Client {
}
}
- public static String getSelectedLanguage() {
+ public static Optional getSelectedLanguage() {
try {
- if (!Files.exists(OPTIONS)) return "";
- for (String line : Files.readAllLines(OPTIONS)) {
+ if (!OPTIONS.exists()) return Optional.empty();
+ for (String line : OPTIONS.readAllLines()) {
if (line.matches("^lang:\\w+_\\w+")) {
- languageCode = line.replace("lang:", "");
- return languageCode;
+ return Optional.of(line.replace("lang:", ""));
}
}
throw AndromedaException.builder()
@@ -110,7 +111,7 @@ public class Client {
.build();
} catch (Throwable e) {
AndromedaLog.error("Couldn't determine selected language!", e);
- return "";
+ return Optional.empty();
}
}
}
diff --git a/src/main/java/me/melontini/andromeda/util/GitTracker.java b/src/main/java/me/melontini/andromeda/util/GitTracker.java
index 8b1d5268..759ce2a1 100644
--- a/src/main/java/me/melontini/andromeda/util/GitTracker.java
+++ b/src/main/java/me/melontini/andromeda/util/GitTracker.java
@@ -3,6 +3,7 @@ package me.melontini.andromeda.util;
import com.google.common.collect.Sets;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
+import lombok.experimental.ExtensionMethod;
import java.io.IOException;
import java.net.URI;
@@ -11,13 +12,13 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.attribute.FileTime;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.Set;
+@ExtensionMethod(Files.class)
public class GitTracker {
public static final String OWNER = "melontini";
@@ -38,29 +39,24 @@ public class GitTracker {
static {
Path lastResponse = CommonValues.hiddenPath().resolve("git-response.json");
+ if (shouldUpdate(lastResponse)) tryUpdateGitInfo(lastResponse);
+ if (lastResponse.exists()) tryUpdateInfoFromJson(lastResponse);
+ }
- boolean shouldUpdate = true;
- if (Files.exists(lastResponse)) {
+ public static boolean shouldUpdate(Path lastResponse) {
+ if (lastResponse.exists()) {
try {
- FileTime lastModifiedTime = Files.getLastModifiedTime(lastResponse);
- shouldUpdate = ChronoUnit.HOURS.between(lastModifiedTime.toInstant(), Instant.now()) >= 24;
+ if (ChronoUnit.HOURS.between(lastResponse.getLastModifiedTime().toInstant(), Instant.now()) >= 24)
+ return true;
} catch (Exception ignored) {
}
- }
- if (!shouldUpdate) shouldUpdate = CommonValues.updated();
-
- if (shouldUpdate) {
- tryUpdateGitInfo(lastResponse);
- } else AndromedaLog.info("Skipped git info update.");
-
- if (Files.exists(lastResponse)) {
- tryUpdateInfoFromJson(lastResponse);
- }
+ } else return true;
+ return CommonValues.updated();
}
private static void tryUpdateInfoFromJson(Path lastResponse) {
try {
- JsonObject object = (JsonObject) JsonParser.parseString(Files.readString(lastResponse));
+ JsonObject object = (JsonObject) JsonParser.parseString(lastResponse.readString());
if (object.has("default_branch")) {
DEFAULT_BRANCH = object.get("default_branch").getAsString();
@@ -87,8 +83,8 @@ public class GitTracker {
if (!PRESERVE_KEYS.contains(s)) jsonResponse.remove(s);
}
- if (!Files.exists(lastResponse)) Files.createDirectories(lastResponse.getParent());
- Files.writeString(lastResponse, jsonResponse.toString());
+ if (!lastResponse.exists()) lastResponse.getParent().createDirectories();
+ lastResponse.writeString(jsonResponse.toString());
} catch (Exception e) {
AndromedaLog.warn("Couldn't update git info", e);
}
--
2.51.2
From 1197967d1ba1bdeca0da5ab76450e246690d299c Mon Sep 17 00:00:00 2001
From: melontini <104443436+melontini@users.noreply.github.com>
Date: Thu, 15 Feb 2024 01:13:58 +0700
Subject: [PATCH 8/8] CHANGELOG.md and bump version.
---
CHANGELOG.md | 13 +++++++++++--
gradle.properties | 2 +-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ea6f1725..ebe1c520 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
### What's New:
-[`misc/recipe_advancements_generation`]:
+[`mechanics/dragon_fight`]:
-* Moved generation to `SERVER_STARTING`.
\ No newline at end of file
+* Fixed null pointer crash caused by broken initialization.
+
+[`mechanics/trading_goat_horn`]:
+
+* Fixed manager's initializer never being called.
+
+[`general`]:
+
+* Removed legacy config migration.
+* Cleaned up downloaders.
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 7fae6eb3..ad143d79 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,7 +8,7 @@ minecraft_version=1.20.1
yarn_mappings=1.20.1+build.2
loader_version=0.15.6
# Mod Properties
-mod_version=1.6.1-1.20.1
+mod_version=1.6.2-1.20.1
maven_group=me.melontini
archives_base_name=andromeda
# Dependencies
--
2.51.2