1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2024-11-24 16:42:45 +01:00

Compare commits

..

2 Commits

Author SHA1 Message Date
73a6571f20
Update for Minecraft 1.21
Closes #33
2024-07-02 04:10:06 +02:00
ffc5c00201
Update Gradle and build scripts for Minecraft 1.21 2024-07-02 03:58:22 +02:00
10 changed files with 62 additions and 42 deletions

View File

@ -18,7 +18,7 @@ runs {
jvmArguments(runJvmArgs)
}
create("client")
removeIf { it.name != "client" }
}
tasks.processResources {

View File

@ -24,7 +24,7 @@ val jarVersion = "$minecraftVersion+v$modVersion"
plugins {
idea
`java-library`
id("net.neoforged.gradle.vanilla")
id("fabric-loom")
}
idea {
@ -46,18 +46,16 @@ repositories {
mavenCentral()
}
dependencies {
implementation("net.minecraft:client:$minecraftVersion")
compileOnly("net.fabricmc:sponge-mixin:$mixinVersion")
api("com.google.code.findbugs:jsr305:3.0.2")
}
base {
archivesName.set("$modNameStripped-Common")
}
runs {
clear()
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
mappings(loom.officialMojangMappings())
compileOnly("net.fabricmc:sponge-mixin:$mixinVersion")
api("com.google.code.findbugs:jsr305:3.0.2")
}
allprojects {
@ -66,10 +64,6 @@ allprojects {
apply(plugin = "java-library")
dependencies {
implementation("org.jetbrains:annotations:24.1.0")
}
extensions.getByType<JavaPluginExtension>().apply {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
@ -86,11 +80,15 @@ allprojects {
if (project.javaToolchains.launcherFor(java.toolchain).map { it.metadata.vendor }.orNull == "JetBrains") {
runJvmArgs.add("-XX:+AllowEnhancedClassRedefinition")
}
dependencies {
implementation("org.jetbrains:annotations:24.1.0")
}
}
subprojects {
dependencies {
implementation(rootProject)
implementation(project(rootProject.path, configuration = "namedElements"))
}
base {
@ -143,6 +141,25 @@ subprojects {
}
}
loom {
runs {
val runJvmArgs: Set<String> by project
configureEach {
runDir("../run")
vmArgs(runJvmArgs)
ideConfigGenerated(true)
}
named("client") {
configName = "Vanilla Client"
client()
}
findByName("server")?.let(::remove)
}
}
val copyJars = tasks.register<Copy>("copyJars") {
group = "build"
duplicatesStrategy = EXCLUDE

View File

@ -9,16 +9,20 @@ modSourcesURL=https://github.com/chylex/Better-Controls
modIssuesURL=https://github.com/chylex/Better-Controls/issues
# Dependencies
minecraftVersion=1.20.5
neoForgeVersion=20.5.0-beta
neoGradleVersion=7.0.120
minecraftVersion=1.21
neoForgeVersion=21.0.0-beta
neoGradleVersion=7.0.152
fabricVersion=0.15.11
loomVersion=1.3
loomVersion=1.7
mixinVersion=0.12.5+mixin.0.8.5
# https://projects.neoforged.net/neoforged/neogradle/
# https://fabricmc.net/develop/
# https://github.com/FabricMC/fabric-loom/releases
# Constraints
minimumMinecraftVersion=1.20.5
minimumNeoForgeVersion=20.5.0-beta
minimumMinecraftVersion=1.21
minimumNeoForgeVersion=21.0.0-beta
minimumFabricVersion=0.12.3
# Gradle

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

2
gradlew vendored
View File

@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.

View File

@ -10,7 +10,6 @@ pluginManagement {
plugins {
val neoGradleVersion = settings.extra.get("neoGradleVersion") as? String
if (neoGradleVersion != null) {
id("net.neoforged.gradle.vanilla") version neoGradleVersion
id("net.neoforged.gradle.userdev") version neoGradleVersion
id("net.neoforged.gradle.mixin") version neoGradleVersion
}

View File

@ -16,8 +16,8 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.CycleButton;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.OptionsSubScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW;
@ -211,9 +211,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
}
@Override
public void init() {
super.init();
protected void addContents() {
allKeyBindings.clear();
final List<GuiEventListener> elements = new ArrayList<>();
@ -234,6 +232,9 @@ public class BetterControlsScreen extends OptionsSubScreen {
optionsWidget = addRenderableWidget(new OptionListWidget(width, layout.getContentHeight(), layout.getHeaderHeight(), y - TITLE_MARGIN_TOP + BOTTOM_PADDING, elements));
}
@Override
protected void addOptions() {}
@Override
protected void repositionElements() {
super.repositionElements();

View File

@ -5,8 +5,8 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
import net.minecraft.client.gui.screens.controls.KeyBindsList;
import net.minecraft.client.gui.screens.controls.KeyBindsList.Entry;
import net.minecraft.client.gui.screens.options.controls.KeyBindsList;
import net.minecraft.client.gui.screens.options.controls.KeyBindsList.Entry;
import org.apache.commons.lang3.ArrayUtils;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -4,14 +4,13 @@ import chylex.bettercontrols.gui.BetterControlsScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.OptionsList;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.OptionsSubScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.controls.ControlsScreen;
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
import net.minecraft.client.gui.screens.options.controls.ControlsScreen;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -24,20 +23,18 @@ public abstract class HookControlsScreen extends OptionsSubScreen {
super(parentScreen, options, title);
}
@Inject(method = "init", at = @At("RETURN"))
public void afterInit(final CallbackInfo ci) {
@Inject(method = "addOptions", at = @At("RETURN"))
public void afterAddOptions(final CallbackInfo ci) {
@SuppressWarnings("ConstantConditions")
final ControlsScreen screen = (ControlsScreen)(Object)this;
for (final GuiEventListener child : children()) {
if (child instanceof final OptionsList optionsList) {
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
optionsList.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
break;
}
if (list != null) {
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
list.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
}
}
@Unique
private static void showOptionsScreen(final ControlsScreen screen) {
final Minecraft mc = Minecraft.getInstance();
mc.setScreen(new BetterControlsScreen(mc, screen));

View File

@ -10,12 +10,14 @@ import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Options.class)
public abstract class HookLoadGameOptions {
@Unique
private boolean hasLoaded = false;
@Mutable