Architectury build system & huge code cleanup

This commit is contained in:
Martin Prokoph
2024-07-17 14:26:17 +02:00
parent 9e3b2ae060
commit 27221b62cd
146 changed files with 1529 additions and 855 deletions

View File

@@ -0,0 +1,75 @@
package eu.midnightdust.midnightcontrols.fabric;
import eu.midnightdust.midnightcontrols.ControlsMode;
import eu.midnightdust.midnightcontrols.MidnightControlsConstants;
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
import eu.midnightdust.midnightcontrols.client.gui.TouchscreenOverlay;
import eu.midnightdust.midnightcontrols.packet.ControlsModePayload;
import eu.midnightdust.midnightcontrols.packet.FeaturePayload;
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.minecraft.util.Identifier;
import org.thinkingstudio.obsidianui.fabric.event.OpenScreenCallback;
import java.util.Optional;
import static eu.midnightdust.midnightcontrols.MidnightControls.CONTROLS_MODE_CHANNEL;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.BINDING_LOOK_DOWN;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.BINDING_LOOK_LEFT;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.BINDING_LOOK_RIGHT;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.BINDING_LOOK_UP;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.BINDING_RING;
public class MidnightControlsClientFabric implements ClientModInitializer {
@Override
public void onInitializeClient() {
KeyBindingHelper.registerKeyBinding(BINDING_LOOK_UP);
KeyBindingHelper.registerKeyBinding(BINDING_LOOK_RIGHT);
KeyBindingHelper.registerKeyBinding(BINDING_LOOK_DOWN);
KeyBindingHelper.registerKeyBinding(BINDING_LOOK_LEFT);
KeyBindingHelper.registerKeyBinding(BINDING_RING);
ClientPlayNetworking.registerGlobalReceiver(CONTROLS_MODE_CHANNEL, (payload, context) ->
context.responseSender().sendPacket(new ControlsModePayload(MidnightControlsConfig.controlsMode.getName())));
ClientPlayNetworking.registerGlobalReceiver(FeaturePayload.PACKET_ID, ((payload, context) -> {}));
ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> {
var version = "";
Optional<ModContainer> container;
if ((container = FabricLoader.getInstance().getModContainer(MidnightControlsConstants.NAMESPACE)).isPresent()) {
version = container.get().getMetadata().getVersion().getFriendlyString();
}
var controlsMode = MidnightControlsConfig.controlsMode.getName();
sender.sendPacket(new HelloPayload(version, controlsMode));
sender.sendPacket(new ControlsModePayload(controlsMode));
});
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> MidnightControlsClient.onLeave());
ClientTickEvents.START_CLIENT_TICK.register(MidnightControlsClient.reacharound::tick);
ClientTickEvents.START_CLIENT_TICK.register(MidnightControlsClient::onTick);
OpenScreenCallback.POST.register((client, screen) -> {
if (screen == null && MidnightControlsConfig.controlsMode == ControlsMode.TOUCHSCREEN) {
screen = new TouchscreenOverlay();
screen.init(client, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight());
client.skipGameRender = false;
client.currentScreen = screen;
} else if (screen != null) {
MidnightControlsClient.input.onScreenOpen(client, client.getWindow().getWidth(), client.getWindow().getHeight());
}
});
FabricLoader.getInstance().getModContainer("midnightcontrols").ifPresent(modContainer -> {
ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("midnightcontrols","bedrock"), modContainer, ResourcePackActivationType.NORMAL);
ResourceManagerHelper.registerBuiltinResourcePack(Identifier.of("midnightcontrols","legacy"), modContainer, ResourcePackActivationType.NORMAL);
});
MidnightControlsClient.initClient();
}
}

View File

@@ -0,0 +1,32 @@
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.packet.ControlsModePayload;
import eu.midnightdust.midnightcontrols.packet.FeaturePayload;
import eu.midnightdust.midnightcontrols.packet.HelloPayload;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
public class MidnightControlsFabric implements ModInitializer {
@Override
public void onInitialize() {
MidnightControls.init();
PayloadTypeRegistry.playC2S().register(HelloPayload.PACKET_ID, HelloPayload.codec);
PayloadTypeRegistry.playC2S().register(ControlsModePayload.PACKET_ID, ControlsModePayload.codec);
PayloadTypeRegistry.playS2C().register(ControlsModePayload.PACKET_ID, ControlsModePayload.codec);
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));
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)));
}
}

View File

@@ -0,0 +1,32 @@
package eu.midnightdust.midnightcontrols.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;
public class ItemGroupUtilImpl {
public static List<ItemGroup> getVisibleGroupss(CreativeInventoryScreen screen) {
return (screen.getItemGroupsOnPage(screen.getCurrentPage()));
}
public static boolean cyclePage(boolean next, CreativeInventoryScreen screen) {
try {
return screen.children().stream().filter(element -> element instanceof PressableWidget)
.map(element -> (PressableWidget) element)
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
.anyMatch(element -> {
if (next && element.getMessage().getString().equals(">")) {
element.onPress();
return true;
} else if (element.getMessage().getString().equals("<")) {
element.onPress();
return true;
}
return false;
});
} catch (Exception ignored) {}
return false;
}
}

View File

@@ -0,0 +1,21 @@
package eu.midnightdust.midnightcontrols.util.platform.fabric;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.CustomPayload;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket;
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
public class NetworkUtilImpl {
private static final ClientPlayNetworkHandler handler = client.getNetworkHandler();
public static void sendPacketC2S(Packet<?> packet) {
if (handler != null)
handler.sendPacket(packet);
}
public static void sendPayloadC2S(CustomPayload payload) {
if (handler != null && client.world != null)
handler.sendPacket(new CustomPayloadC2SPacket(payload));
}
}

View File

@@ -0,0 +1,67 @@
{
"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.fabric.MidnightControlsFabric"
],
"client": [
"eu.midnightdust.midnightcontrols.fabric.MidnightControlsClientFabric"
],
"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"
}
}