1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2024-11-25 01: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) jvmArguments(runJvmArgs)
} }
create("client") removeIf { it.name != "client" }
} }
tasks.processResources { tasks.processResources {

View File

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

View File

@ -9,16 +9,20 @@ modSourcesURL=https://github.com/chylex/Better-Controls
modIssuesURL=https://github.com/chylex/Better-Controls/issues modIssuesURL=https://github.com/chylex/Better-Controls/issues
# Dependencies # Dependencies
minecraftVersion=1.20.5 minecraftVersion=1.21
neoForgeVersion=20.5.0-beta neoForgeVersion=21.0.0-beta
neoGradleVersion=7.0.120 neoGradleVersion=7.0.152
fabricVersion=0.15.11 fabricVersion=0.15.11
loomVersion=1.3 loomVersion=1.7
mixinVersion=0.12.5+mixin.0.8.5 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 # Constraints
minimumMinecraftVersion=1.20.5 minimumMinecraftVersion=1.21
minimumNeoForgeVersion=20.5.0-beta minimumNeoForgeVersion=21.0.0-beta
minimumFabricVersion=0.12.3 minimumFabricVersion=0.12.3
# Gradle # Gradle

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

2
gradlew vendored
View File

@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (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. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.

View File

@ -10,7 +10,6 @@ pluginManagement {
plugins { plugins {
val neoGradleVersion = settings.extra.get("neoGradleVersion") as? String val neoGradleVersion = settings.extra.get("neoGradleVersion") as? String
if (neoGradleVersion != null) { if (neoGradleVersion != null) {
id("net.neoforged.gradle.vanilla") version neoGradleVersion
id("net.neoforged.gradle.userdev") version neoGradleVersion id("net.neoforged.gradle.userdev") version neoGradleVersion
id("net.neoforged.gradle.mixin") 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.Minecraft;
import net.minecraft.client.gui.components.CycleButton; import net.minecraft.client.gui.components.CycleButton;
import net.minecraft.client.gui.components.events.GuiEventListener; 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.Screen;
import net.minecraft.client.gui.screens.options.OptionsSubScreen;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
@ -211,9 +211,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
} }
@Override @Override
public void init() { protected void addContents() {
super.init();
allKeyBindings.clear(); allKeyBindings.clear();
final List<GuiEventListener> elements = new ArrayList<>(); 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)); optionsWidget = addRenderableWidget(new OptionListWidget(width, layout.getContentHeight(), layout.getHeaderHeight(), y - TITLE_MARGIN_TOP + BOTTOM_PADDING, elements));
} }
@Override
protected void addOptions() {}
@Override @Override
protected void repositionElements() { protected void repositionElements() {
super.repositionElements(); super.repositionElements();

View File

@ -5,8 +5,8 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.Options; import net.minecraft.client.Options;
import net.minecraft.client.gui.components.ContainerObjectSelectionList; import net.minecraft.client.gui.components.ContainerObjectSelectionList;
import net.minecraft.client.gui.screens.controls.KeyBindsList; import net.minecraft.client.gui.screens.options.controls.KeyBindsList;
import net.minecraft.client.gui.screens.controls.KeyBindsList.Entry; import net.minecraft.client.gui.screens.options.controls.KeyBindsList.Entry;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; 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.Minecraft;
import net.minecraft.client.Options; import net.minecraft.client.Options;
import net.minecraft.client.gui.components.Button; 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.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.Component;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import org.spongepowered.asm.mixin.Mixin; 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.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -24,20 +23,18 @@ public abstract class HookControlsScreen extends OptionsSubScreen {
super(parentScreen, options, title); super(parentScreen, options, title);
} }
@Inject(method = "init", at = @At("RETURN")) @Inject(method = "addOptions", at = @At("RETURN"))
public void afterInit(final CallbackInfo ci) { public void afterAddOptions(final CallbackInfo ci) {
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
final ControlsScreen screen = (ControlsScreen)(Object)this; final ControlsScreen screen = (ControlsScreen)(Object)this;
for (final GuiEventListener child : children()) { if (list != null) {
if (child instanceof final OptionsList optionsList) {
final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("..."); final MutableComponent buttonTitle = BetterControlsScreen.TITLE.plainCopy().append("...");
optionsList.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build())); list.addSmall(List.of(Button.builder(buttonTitle, btn -> showOptionsScreen(screen)).build()));
break;
}
} }
} }
@Unique
private static void showOptionsScreen(final ControlsScreen screen) { private static void showOptionsScreen(final ControlsScreen screen) {
final Minecraft mc = Minecraft.getInstance(); final Minecraft mc = Minecraft.getInstance();
mc.setScreen(new BetterControlsScreen(mc, screen)); 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.Mixin;
import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow; 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.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Options.class) @Mixin(Options.class)
public abstract class HookLoadGameOptions { public abstract class HookLoadGameOptions {
@Unique
private boolean hasLoaded = false; private boolean hasLoaded = false;
@Mutable @Mutable