Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.github.notenoughupdates.moulconfig.processor.ConfigStructureReader;
import io.github.notenoughupdates.moulconfig.processor.MoulConfigProcessor;
import org.polyfrost.oneconfig.internal.compat.MoulConfigCompat;
import org.polyfrost.oneconfig.internal.utils.MoulConfigProcessorAccessor;
import org.polyfrost.oneconfig.relocator.annotations.MoulConfig;
import org.polyfrost.oneconfig.relocator.annotations.RelocatedMixin;
import org.spongepowered.asm.mixin.Final;
Expand All @@ -28,10 +29,10 @@ public class Mixin_ConfigProcessorDriver {

@Inject(at = @At("TAIL"), method = "processConfig")
public void processorEndConfig(CallbackInfo ci) {
if (reader instanceof MoulConfigProcessor<?> && reader instanceof Accessor_MoulConfigProcessor) {
if (reader instanceof MoulConfigProcessor<?> && reader instanceof MoulConfigProcessorAccessor) {
MoulConfigCompat.parseMoulconfig(
(MoulConfigProcessor<?>) reader,
((Accessor_MoulConfigProcessor<?>) reader).oneconfig$getConfig());
((MoulConfigProcessorAccessor<?>) reader).oneconfig$getConfig());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.polyfrost.oneconfig.internal.mixin.compat.moulconfig;

import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorDropdown;
import org.polyfrost.oneconfig.internal.utils.MoulConfigGuiOptionEditorDropdownAccessor;
import org.polyfrost.oneconfig.relocator.annotations.MoulConfig;
import org.polyfrost.oneconfig.relocator.annotations.RelocatedMixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.Shadow;

@Pseudo
@MoulConfig
//#if MC==1.8.9||MC>=1.21.4
@RelocatedMixin
//#endif
@Mixin(value = GuiOptionEditorDropdown.class, remap = false)
public class Mixin_GuiOptionEditorDropdown implements MoulConfigGuiOptionEditorDropdownAccessor {

@Shadow
private String[] values;
@Shadow
private boolean useOrdinal;
@Shadow
private Enum<?>[] constants;

public String[] oneconfig$values() {
return this.values;
}

public boolean oneconfig$useOrdinal() {
return this.useOrdinal;
}

public Enum<?>[] oneconfig$constants() {
return this.constants;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,28 @@

import io.github.notenoughupdates.moulconfig.Config;
import io.github.notenoughupdates.moulconfig.processor.MoulConfigProcessor;
import org.polyfrost.oneconfig.internal.utils.MoulConfigProcessorAccessor;
import org.polyfrost.oneconfig.relocator.annotations.MoulConfig;
import org.polyfrost.oneconfig.relocator.annotations.RelocatedMixin;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.Shadow;

@Pseudo
@MoulConfig
//#if MC==1.8.9||MC>=1.21.4
@RelocatedMixin
//#endif
@Mixin(value = MoulConfigProcessor.class, remap = false)
public interface Accessor_MoulConfigProcessor<T extends Config> {
public class Mixin_MoulConfigProcessor<T extends Config> implements MoulConfigProcessorAccessor<T> {

@Accessor("configBaseObject")
T oneconfig$getConfig();
@Final
@Shadow
private T configBaseObject;

public T oneconfig$getConfig() {
return this.configBaseObject;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.polyfrost.oneconfig.internal.utils;

import org.polyfrost.oneconfig.relocator.annotations.MoulConfig;

@MoulConfig
public interface MoulConfigGuiOptionEditorDropdownAccessor {

String[] oneconfig$values();

boolean oneconfig$useOrdinal();

Enum<?>[] oneconfig$constants();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.polyfrost.oneconfig.internal.utils;

import io.github.notenoughupdates.moulconfig.Config;
import org.polyfrost.oneconfig.relocator.annotations.MoulConfig;

@MoulConfig
public interface MoulConfigProcessorAccessor<T extends Config> {

T oneconfig$getConfig();

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,52 @@ package org.polyfrost.oneconfig.internal.compat
import dev.deftu.omnicore.api.client.getIconResource
import dev.deftu.omnicore.api.client.getIconResourcePath
import io.github.notenoughupdates.moulconfig.ChromaColour
import io.github.notenoughupdates.moulconfig.gui.editors.*
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorAccordion
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorBoolean
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorButton
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorColour
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorDraggableList
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorInfoText
import io.github.notenoughupdates.moulconfig.gui.editors.GuiOptionEditorText
import io.github.notenoughupdates.moulconfig.processor.MoulConfigProcessor
import io.github.notenoughupdates.moulconfig.processor.ProcessedCategory
import io.github.notenoughupdates.moulconfig.processor.ProcessedOption
import org.polyfrost.oneconfig.api.config.v1.ConfigManager
import org.polyfrost.oneconfig.api.config.v1.Tree
import org.polyfrost.oneconfig.api.config.v1.Visualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.*
import org.polyfrost.oneconfig.api.config.v1.dsl.*
import org.polyfrost.oneconfig.api.config.v1.Visualizer.ButtonVisualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.ColorVisualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.DropdownVisualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.SliderVisualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.SwitchVisualizer
import org.polyfrost.oneconfig.api.config.v1.Visualizer.TextVisualizer
import org.polyfrost.oneconfig.api.config.v1.dsl.category
import org.polyfrost.oneconfig.api.config.v1.dsl.icon
import org.polyfrost.oneconfig.api.config.v1.dsl.noCache
import org.polyfrost.oneconfig.api.config.v1.dsl.saveFunction
import org.polyfrost.oneconfig.api.config.v1.dsl.subcategory
import org.polyfrost.oneconfig.internal.DynamicPolyImage
import org.polyfrost.oneconfig.internal.mixin.compat.moulconfig.Accessor_GuiOptionEditorDropdown
import org.polyfrost.oneconfig.internal.utils.MoulConfigGuiOptionEditorDropdownAccessor
import org.polyfrost.polyui.color.PolyColor
import java.lang.reflect.Type
import java.util.UUID
import java.util.*
import kotlin.reflect.KClass
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.nanoseconds
import io.github.notenoughupdates.moulconfig.Config as MoulConfig
import org.polyfrost.oneconfig.relocator.annotations.MoulConfig as Moulconfig

@Moulconfig
object MoulConfigCompat {
data object MoulConfigCompat {

@JvmStatic
fun parseMoulconfig(processor: MoulConfigProcessor<*>, config: MoulConfig) {
CompatLoader.markFirstModAsSkip()
ConfigManager.active().register(parseConfigTree(config, processor.allCategories.values))
runCatching {
CompatLoader.markFirstModAsSkip()
ConfigManager.active().register(parseConfigTree(config, processor.allCategories.values))
}.onFailure {
println("Failed to load moulconfig compat for $this due to $it")
}
}

fun parseConfigTree(config: MoulConfig, children: Iterable<ProcessedCategory>): Tree = Tree.tree().apply {
Expand Down Expand Up @@ -126,10 +145,9 @@ object MoulConfigCompat {
ColorVisualizer::class.java
}

is Accessor_GuiOptionEditorDropdown -> {
is MoulConfigGuiOptionEditorDropdownAccessor -> {
fun getIndex(): Int {
val selectedObject: Any? = children.get()
if (selectedObject == null) return -1
val selectedObject: Any = children.get() ?: return -1

return if (editor.`oneconfig$useOrdinal`()) {
selectedObject as Int
Expand Down
Loading