- [FEAT] New APIs for Maintenance Mode and rewrite commands system

- [FEAT] Improved config system to fix old loading bugs and support JSON
- [FEAT] LuckPerms support for commands
This commit is contained in:
2024-08-10 15:17:10 +02:00
parent e14ac2a136
commit 614fb0bc49
352 changed files with 6045 additions and 1798 deletions

View File

@@ -5,8 +5,8 @@
-
-import com.hypherionmc.craterlib.api.events.client.LateInitEvent;
-import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen;
-import com.hypherionmc.craterlib.core.config.AbstractConfig;
-import com.hypherionmc.craterlib.core.config.ConfigController;
-import com.hypherionmc.craterlib.core.config.ModuleConfig;
-import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.core.platform.ClientPlatform;
@@ -54,9 +54,9 @@
- LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options));
- CraterEventBus.INSTANCE.postEvent(event);
-
- ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> {
- ConfigController.getWatchedConfigs().forEach((conf, watcher) -> {
- if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) {
- ModuleConfig config = (ModuleConfig) conf;
- AbstractConfig config = watcher.getLeft();
- ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen))));
- }
- });

View File

@@ -1,12 +1,11 @@
--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeServerEvents.java
+++ /dev/null
@@ -1,43 +1,0 @@
@@ -1,41 +1,0 @@
-package com.hypherionmc.craterlib.common;
-
-import com.hypherionmc.craterlib.api.events.server.CraterRegisterCommandEvent;
-import com.hypherionmc.craterlib.api.events.server.CraterServerLifecycleEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.nojang.commands.CommandsRegistry;
-import com.hypherionmc.craterlib.nojang.server.BridgedMinecraftServer;
-import net.neoforged.bus.api.SubscribeEvent;
-import net.neoforged.neoforge.event.RegisterCommandsEvent;
@@ -39,8 +38,7 @@
-
- @SubscribeEvent
- public void onCommandRegister(RegisterCommandsEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterRegisterCommandEvent());
- CommandsRegistry.INSTANCE.registerCommands(event.getDispatcher());
- CraterEventBus.INSTANCE.postEvent(new CraterRegisterCommandEvent(event.getDispatcher()));
- }
-
-}

View File

@@ -30,8 +30,8 @@
- cancellable = true
- )
- private void injectChatEvent(Component component, PlayerChatMessage arg, FilteredText p_296589_, CallbackInfo ci) {
- Component finalArg = component == null ? arg.decoratedContent() : component;
- CraterServerChatEvent event = new CraterServerChatEvent(BridgedPlayer.of(this.player), finalArg.getString(), ChatUtils.mojangToAdventure(finalArg));
- Component finalcomp = component == null ? arg.decoratedContent() : component;
- CraterServerChatEvent event = new CraterServerChatEvent(BridgedPlayer.of(this.player), finalcomp.getString(), ChatUtils.mojangToAdventure(finalcomp));
- CraterEventBus.INSTANCE.postEvent(event);
- if (event.wasCancelled())
- ci.cancel();

View File

@@ -0,0 +1,56 @@
--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/mixin/ServerStatusPacketListenerMixin.java
+++ /dev/null
@@ -1,53 +1,0 @@
-package com.hypherionmc.craterlib.mixin;
-
-import com.hypherionmc.craterlib.api.events.server.ServerStatusEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.utils.ChatUtils;
-import net.minecraft.network.Connection;
-import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket;
-import net.minecraft.network.protocol.status.ServerStatus;
-import net.minecraft.network.protocol.status.ServerboundStatusRequestPacket;
-import net.minecraft.server.network.ServerStatusPacketListenerImpl;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ServerStatusPacketListenerImpl.class)
-public class ServerStatusPacketListenerMixin {
-
- @Shadow
- @Final
- private ServerStatus status;
-
- @Shadow @Final private Connection connection;
-
- @Inject(method = "handleStatusRequest",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/network/Connection;send(Lnet/minecraft/network/protocol/Packet;)V",
- shift = At.Shift.BEFORE),
- cancellable = true
- )
- private void injectHandleStatusRequest(ServerboundStatusRequestPacket arg, CallbackInfo ci) {
- ServerStatusEvent.StatusRequestEvent event = new ServerStatusEvent.StatusRequestEvent(ChatUtils.mojangToAdventure(status.description()));
- CraterEventBus.INSTANCE.postEvent(event);
-
- if (event.getNewStatus() != null) {
- ci.cancel();
- this.connection.send(new ClientboundStatusResponsePacket(
- new ServerStatus(ChatUtils.adventureToMojang(
- event.getNewStatus()),
- status.players(),
- status.version(),
- status.favicon(),
- status.enforcesSecureChat(),
- status.isModded()
- )
- ));
- }
- }
-
-}

View File

@@ -1,6 +1,6 @@
--- a/NeoForge/src/main/resources/craterlib.neoforge.mixins.json
+++ /dev/null
@@ -1,15 +1,0 @@
@@ -1,16 +1,0 @@
-{
- "required": true,
- "minVersion": "0.8",
@@ -10,7 +10,8 @@
- ],
- "client": [],
- "server": [
- "ServerGamePacketListenerImplMixin"
- "ServerGamePacketListenerImplMixin",
- "ServerStatusPacketListenerMixin"
- ],
- "injectors": {
- "defaultRequire": 1