Get Fabric working again, various improvements

This commit is contained in:
Martin Prokoph
2024-07-17 17:05:13 +02:00
parent 27221b62cd
commit f82ee2e24a
14 changed files with 87 additions and 105 deletions

View File

@@ -4,6 +4,23 @@ architectury {
loom {
accessWidenerPath = file("src/main/resources/midnightcontrols.accesswidener")
}
repositories {
maven {
name 'Gegy'
url 'https://maven.gegy.dev'
}
maven {
name = "CottonMC"
url = "https://server.bbkr.space/artifactory/libs-release"
}
maven { url "https://maven.terraformersmc.com/releases/" }
maven { url 'https://maven.kosmx.dev' }
maven { url 'https://maven.isxander.dev/releases' }
maven { url 'https://maven.shedaniel.me/' }
maven { url 'https://jitpack.io' }
maven { url "https://api.modrinth.com/maven" }
maven { url 'https://maven.quiltmc.org/repository/release'}
}
dependencies {
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
@@ -14,6 +31,24 @@ dependencies {
modCompileOnlyApi "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-fabric"
modCompileOnlyApi "maven.modrinth:obsidianui:${project.obsidianui_version}-fabric"
include 'org.aperlambda:lambdajcommon:1.8.1'
modCompileOnlyApi ("com.terraformersmc:modmenu:${project.modmenu_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
// Compatibility mods
modCompileOnlyApi "io.github.cottonmc:LibGui:${project.libgui_version}"
modCompileOnlyApi "org.quiltmc:quilt-json5:1.0.0"
modCompileOnly "maven.modrinth:sodium:${project.sodium_version}"
modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}"
modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}"
modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}"
modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}"
modCompileOnlyApi "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}"
modCompileOnlyApi "maven.modrinth:bedrockify:${project.bedrockify_version}"
// Required for Inventory Tabs
modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${project.clothconfig_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
}
publishing {

View File

@@ -10,7 +10,6 @@
package eu.midnightdust.midnightcontrols.client.compat;
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
import me.juancarloscp52.bedrockify.client.BedrockifyClientSettings;
/**
* Represents HQM compatibility handler.

View File

@@ -19,14 +19,15 @@ public class EmotecraftCompat {
if (client.currentScreen instanceof FastChosseScreen) {
int x = client.getWindow().getWidth() / 2;
int y = client.getWindow().getHeight() / 2;
if (index == 0) InputManager.queueMousePosition(x-200, y-200);
if (index == 1) InputManager.queueMousePosition(x, y-200);
if (index == 2) InputManager.queueMousePosition(x+200, y-200);
if (index == 3) InputManager.queueMousePosition(x-200, y);
if (index == 4) InputManager.queueMousePosition(x+200, y);
if (index == 5) InputManager.queueMousePosition(x-200, y+200);
if (index == 6) InputManager.queueMousePosition(x, y+200);
if (index == 7) InputManager.queueMousePosition(x+200, y+200);
switch (index) {
case 0, 3, 5 -> x -= 200;
case 2, 4, 7 -> x += 200;
}
switch (index) {
case 0, 1, 2 -> y -= 200;
case 5, 6, 7 -> y += 200;
}
InputManager.queueMousePosition(x, y);
InputManager.INPUT_MANAGER.updateMousePosition(client);
}

View File

@@ -14,30 +14,37 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.option.ControlsOptionsScreen;
import net.minecraft.client.gui.screen.option.GameOptionsScreen;
import net.minecraft.client.gui.widget.OptionListWidget;
import net.minecraft.client.gui.widget.TextIconButtonWidget;
import net.minecraft.client.option.GameOptions;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
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;
/**
* Injects the new controls settings button.
*/
@Mixin(ControlsOptionsScreen.class)
public abstract class ControlsOptionsScreenMixin extends GameOptionsScreen {
public ControlsOptionsScreenMixin(Screen parent, GameOptions gameOptions, Text title) {
super(parent, gameOptions, title);
}
@Mixin(GameOptionsScreen.class)
public abstract class GameOptionsScreenMixin extends Screen {
@Shadow @Nullable protected OptionListWidget body;
@Unique TextIconButtonWidget midnightcontrols$button = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.menu.title.controller"), (button -> this.client.setScreen(new MidnightControlsSettingsScreen(this, false))), true)
.dimension(20,20).texture(Identifier.of("midnightcontrols", "icon/controller"), 20, 20).build();
@Override
public void init() {
super.init();
this.midnightcontrols$setupButton();
this.addDrawableChild(midnightcontrols$button);
protected GameOptionsScreenMixin(Text title) {
super(title);
}
@Inject(method = "initTabNavigation", at = @At("HEAD"))
public void addMidnightButton(CallbackInfo ci) {
if (this.getClass().toString().equals(ControlsOptionsScreen.class.toString())) {
this.midnightcontrols$setupButton();
this.addDrawableChild(midnightcontrols$button);
}
}
@Override

View File

@@ -0,0 +1,3 @@
{
"accessWidener": "midnightcontrols.accesswidener"
}

View File

@@ -1,67 +0,0 @@
{
"schemaVersion": 1,
"id": "midnightcontrols",
"name": "MidnightControls",
"version": "${version}",
"description": "Adds controller support and enhanced controls overall.",
"authors": [
"LambdAurora",
"Motschen"
],
"contributors": [
"akemin-dayo",
"DioEgizio",
"dogtopus",
"egeesin",
"EnnuiL",
"FlashyReese",
"gyular",
"Hambaka",
"Ivanoks",
"joaoh1",
"KiskaUWU",
"Madis0",
"RaptaG",
"ronniedude",
"spudpiggy",
"TrueHorse"
],
"contact": {
"homepage": "https://modrinth.com/mod/midnightcontrols",
"sources": "https://github.com/TeamMidnightDust/MidnightControls",
"issues": "https://github.com/TeamMidnightDust/MidnightControls/issues"
},
"license": "MIT",
"icon": "assets/midnightcontrols/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.midnightcontrols.MidnightControls"
],
"client": [
"eu.midnightdust.midnightcontrols.client.MidnightControlsClient"
],
"modmenu": [
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
]
},
"accessWidener": "midnightcontrols.accesswidener",
"mixins": [
"midnightcontrols.mixins.json",
"midnightcontrols_compat.mixins.json"
],
"depends": {
"fabricloader": ">=0.11.3",
"fabric": ">=0.71.0",
"minecraft": ">=1.20.5",
"obsidianui": ">=0.2.5",
"java": ">=17"
},
"suggests": {
"kontrolo": "*"
},
"breaks": {
"lambdacontrols": "*",
"modmenu": "<1.12.2"
}
}

View File

@@ -1,4 +1,3 @@
accessWidener v1 named
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
accessible method net/minecraft/util/Identifier <init> (Ljava/lang/String;Ljava/lang/String;)V
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection

View File

@@ -6,7 +6,7 @@
"ClickableWidgetAccessor",
"AdvancementsScreenAccessor",
"ClientPlayerEntityMixin",
"ControlsOptionsScreenMixin",
"GameOptionsScreenMixin",
"CreativeInventoryScreenAccessor",
"GameRendererMixin",
"HandledScreenMixin",

View File

@@ -1,14 +1,17 @@
package eu.midnightdust.midnightcontrols.util.platform.fabric;
package eu.midnightdust.midnightcontrols.client.util.platform.fabric;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
import net.minecraft.client.gui.widget.PressableWidget;
import net.minecraft.item.ItemGroup;
import java.util.List;
/**
* Implementation of fabric methods for
* @see eu.midnightdust.midnightcontrols.client.util.platform.ItemGroupUtil
*/
public class ItemGroupUtilImpl {
public static List<ItemGroup> getVisibleGroupss(CreativeInventoryScreen screen) {
public static List<ItemGroup> getVisibleGroups(CreativeInventoryScreen screen) {
return (screen.getItemGroupsOnPage(screen.getCurrentPage()));
}
public static boolean cyclePage(boolean next, CreativeInventoryScreen screen) {

View File

@@ -1,4 +1,4 @@
package eu.midnightdust.midnightcontrols.util.platform.fabric;
package eu.midnightdust.midnightcontrols.client.util.platform.fabric;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.CustomPayload;
@@ -7,6 +7,10 @@ import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
/**
* Implementation of fabric methods for
* @see eu.midnightdust.midnightcontrols.client.util.platform.NetworkUtil
*/
public class NetworkUtilImpl {
private static final ClientPlayNetworkHandler handler = client.getNetworkHandler();

View File

@@ -3,7 +3,7 @@ package eu.midnightdust.midnightcontrols.fabric;
import eu.midnightdust.midnightcontrols.ControlsMode;
import eu.midnightdust.midnightcontrols.MidnightControls;
import eu.midnightdust.midnightcontrols.MidnightControlsFeature;
import eu.midnightdust.midnightcontrols.event.PlayerChangeControlsModeCallback;
import eu.midnightdust.midnightcontrols.fabric.event.PlayerChangeControlsModeCallback;
import eu.midnightdust.midnightcontrols.packet.ControlsModePayload;
import eu.midnightdust.midnightcontrols.packet.FeaturePayload;
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
@@ -21,12 +21,11 @@ public class MidnightControlsFabric implements ModInitializer {
PayloadTypeRegistry.playS2C().register(FeaturePayload.PACKET_ID, FeaturePayload.codec);
ServerPlayNetworking.registerGlobalReceiver(HelloPayload.PACKET_ID, (payload, context) -> {
ControlsMode.byId(payload.controlsMode())
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
context.responseSender().sendPacket(new FeaturePayload(MidnightControlsFeature.HORIZONTAL_REACHAROUND));
});
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID,
(payload, context) -> ControlsMode.byId(payload.controlsMode())
.ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode)));
ServerPlayNetworking.registerGlobalReceiver(ControlsModePayload.PACKET_ID, (payload, context) -> {
ControlsMode.byId(payload.controlsMode()).ifPresent(controlsMode -> PlayerChangeControlsModeCallback.EVENT.invoker().apply(context.player(), controlsMode));
});
}
}

View File

@@ -7,7 +7,7 @@
* see the LICENSE file.
*/
package eu.midnightdust.midnightcontrols.event;
package eu.midnightdust.midnightcontrols.fabric.event;
import eu.midnightdust.midnightcontrols.ControlsMode;
import net.fabricmc.fabric.api.event.Event;
@@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull;
* Represents an event callback which is fired when a player changes the controls mode.
*
* @author LambdAurora
* @version 1.1.0
* @version 1.10.0
* @since 1.1.0
*/
@FunctionalInterface

View File

@@ -45,7 +45,6 @@
"eu.midnightdust.midnightcontrols.client.MidnightControlsModMenu"
]
},
"accessWidener": "midnightcontrols.accesswidener",
"mixins": [
"midnightcontrols.mixins.json",
"midnightcontrols_compat.mixins.json"

View File

@@ -25,7 +25,7 @@ yarn_mappings_patch_neoforge_version = 1.21+build.4
quilt_loader_version=0.19.0-beta.18
quilt_fabric_api_version=7.0.1+0.83.0-1.20
sodium_version=mc1.19.2-0.4.4
sodium_version=mc1.21-0.5.11
obsidianui_version=0.2.6+mc1.21
modmenu_version=10.0.0-beta.1
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric