diff --git a/dependencies.gradle b/dependencies.gradle index 2357885..7e63de6 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,13 +35,15 @@ */ dependencies { api('com.github.GTNewHorizons:NotEnoughItems:2.7.81-GTNH:dev') + compileOnly('com.github.GTNewHorizons:Controlling:2.1.2:dev') shadowImplementation("dev.ghostflyby:PinIn:1.7.2") shadowImplementation 'org.luaj:luaj-jse:3.0.1' - runtimeOnlyNonPublishable('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-684-GTNH:dev') - api('com.github.GTNewHorizons:AE2FluidCraft-Rework:1.4.113-gtnh:dev') { - exclude group: 'com.github.GTNewHorizons', module: 'Applied-Energistics-2-Unofficial' - } -// compile('com.github.GTNewHorizons:VisualProspecting:1.5.3:dev') +// runtimeOnlyNonPublishable('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-684-GTNH:dev') +// runtimeOnlyNonPublishable('com.github.GTNewHorizons:Controlling:2.1.2:dev') +// runtimeOnlyNonPublishable('com.github.GTNewHorizons:AE2FluidCraft-Rework:1.4.113-gtnh:dev') { +// exclude group: 'com.github.GTNewHorizons', module: 'Applied-Energistics-2-Unofficial' +// } +// runtimeOnlyNonPublishable('com.github.GTNewHorizons:VisualProspecting:1.5.3:dev') // runtimeOnlyNonPublishable(files('libs/journeymap-1.7.10-5.2.10-dev.jar')) // runtimeOnlyNonPublishable('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.389:dev') // runtimeOnlyNonPublishable("com.github.GTNewHorizons:GTNHLib:0.6.37:dev") diff --git a/gradle.properties b/gradle.properties index c3c0f9e..7eb24d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -74,7 +74,7 @@ apiPackage = accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! -usesMixins = false +usesMixins = true # Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main. # This can speed up compile times thanks to not running the mixin annotation processor on all input sources. @@ -90,7 +90,7 @@ mixinPlugin = # Specify the package that contains all of your Mixins. The package must exist or # the build will fail. If you have a package property defined in your mixins..json, # it must match with this or the build will fail. -mixinsPackage = +mixinsPackage = core.mixins # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! # This parameter is for legacy compatibility only diff --git a/src/main/java/com/asdflj/nech/core/NechLatePlugin.java b/src/main/java/com/asdflj/nech/core/NechLatePlugin.java new file mode 100644 index 0000000..11859ae --- /dev/null +++ b/src/main/java/com/asdflj/nech/core/NechLatePlugin.java @@ -0,0 +1,28 @@ +package com.asdflj.nech.core; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import com.gtnewhorizon.gtnhmixins.ILateMixinLoader; +import com.gtnewhorizon.gtnhmixins.LateMixin; + +@LateMixin +public class NechLatePlugin implements ILateMixinLoader { + + @Override + public String getMixinConfig() { + return "mixins.nech.late.json"; + } + + @Override + public List getMixins(Set loadedMods) { + ArrayList mixins = new ArrayList<>(); + if (loadedMods.contains("controlling")) { + mixins.add("controlling.MixinSearchType"); + } + + return mixins; + } + +} diff --git a/src/main/java/com/asdflj/nech/core/mixins/controlling/MixinSearchType.java b/src/main/java/com/asdflj/nech/core/mixins/controlling/MixinSearchType.java new file mode 100644 index 0000000..caa5985 --- /dev/null +++ b/src/main/java/com/asdflj/nech/core/mixins/controlling/MixinSearchType.java @@ -0,0 +1,70 @@ +package com.asdflj.nech.core.mixins.controlling; + +import java.util.function.Predicate; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; + +import com.asdflj.nech.API; +import com.blamejared.controlling.client.gui.GuiNewKeyBindingList; +import com.blamejared.controlling.client.gui.SearchType; + +@Pseudo +@Mixin(SearchType.class) +public abstract class MixinSearchType { + + /** + * @author asdflj + * @reason 按键控制界面添加拼音搜索支持,由于技术上问题,无法支持高亮显示匹配的文本 + * require vcwdfca + * url ... + */ + @Overwrite(remap = false) + public Predicate getPredicate(String searchText) { + SearchType type = (SearchType) (Object) this; + String lowerSearchText = searchText.toLowerCase(); + if (type == SearchType.ALL) { + return key -> { + // 检查分类名 + String category = net.minecraft.util.StatCollector.translateToLocal( + key.getKeybinding() + .getKeyCategory()) + .toLowerCase(); + // 检查按键描述 + String keyDesc = key.getKeyDesc() + .toLowerCase(); + // 检查按键显示名称 + String keyDisplay = net.minecraft.client.settings.GameSettings.getKeyDisplayString( + key.getKeybinding() + .getKeyCode()) + .toLowerCase(); + + return API.INSTANCE.contains(category, lowerSearchText) + || API.INSTANCE.contains(keyDesc, lowerSearchText) + || API.INSTANCE.contains(keyDisplay, lowerSearchText); + }; + } else if (type == SearchType.CATEGORY_NAME) { + return key -> API.INSTANCE.contains( + net.minecraft.util.StatCollector.translateToLocal( + key.getKeybinding() + .getKeyCategory()) + .toLowerCase(), + lowerSearchText); + } else if (type == SearchType.KEYBIND_NAME) { + return key -> API.INSTANCE.contains( + key.getKeyDesc() + .toLowerCase(), + lowerSearchText); + } else if (type == SearchType.KEY_NAME) { + return key -> API.INSTANCE.contains( + net.minecraft.client.settings.GameSettings.getKeyDisplayString( + key.getKeybinding() + .getKeyCode()) + .toLowerCase(), + lowerSearchText); + } else { + throw new IllegalStateException("Unknown SearchType"); + } + } +} diff --git a/src/main/resources/mixins.nech.json b/src/main/resources/mixins.nech.json new file mode 100644 index 0000000..1868e6f --- /dev/null +++ b/src/main/resources/mixins.nech.json @@ -0,0 +1,10 @@ +{ + "required": true, + "minVersion": "0", + "refmap": "mixins.ae2thing.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [], + "server": [] +} diff --git a/src/main/resources/mixins.nech.late.json b/src/main/resources/mixins.nech.late.json new file mode 100644 index 0000000..e5e459b --- /dev/null +++ b/src/main/resources/mixins.nech.late.json @@ -0,0 +1,15 @@ +{ + "required": false, + "minVersion": "0", + "package": "com.asdflj.nech.core.mixins", + "refmap": "mixins.nech.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8", + "mixins": [ + ], + "client": [ + ], + "server": [ + + ] +}