diff --git a/src/main/java/net/asodev/islandutils/IslandUtilsClient.java b/src/main/java/net/asodev/islandutils/IslandUtilsClient.java index 37307a52..5d568172 100644 --- a/src/main/java/net/asodev/islandutils/IslandUtilsClient.java +++ b/src/main/java/net/asodev/islandutils/IslandUtilsClient.java @@ -2,14 +2,12 @@ import com.mojang.blaze3d.platform.InputConstants; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import com.noxcrew.noxesium.network.NoxesiumPackets; -import com.noxcrew.noxesium.network.clientbound.ClientboundMccGameStatePacket; -import com.noxcrew.noxesium.network.clientbound.ClientboundMccServerPacket; import net.asodev.islandutils.discord.DiscordPresenceUpdator; import net.asodev.islandutils.modules.DisguiseKeybind; import net.asodev.islandutils.modules.NoxesiumIntegration; import net.asodev.islandutils.modules.plobby.PlobbyFeatures; import net.asodev.islandutils.modules.plobby.PlobbyJoinCodeCopy; +import net.asodev.islandutils.modules.splits.SplitCommands; import net.asodev.islandutils.modules.splits.SplitManager; import net.asodev.islandutils.modules.splits.ui.SplitUI; import net.asodev.islandutils.state.Game; @@ -51,6 +49,7 @@ public void onInitializeClient() { DisguiseKeybind.registerDisguiseInput(); PlobbyFeatures.registerEvents(); IslandUtilsCommand.register(); + new SplitCommands(); DiscordPresenceUpdator.init(); PlobbyJoinCodeCopy.register(); @@ -58,6 +57,7 @@ public void onInitializeClient() { SplitUI.setupFallbackRenderer(); } new NoxesiumIntegration().init(); + } public static void onJoinMCCI(boolean isProduction) { diff --git a/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java b/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java index 15ebc992..90eabcf6 100644 --- a/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java +++ b/src/main/java/net/asodev/islandutils/mixins/network/PacketListenerMixin.java @@ -1,14 +1,14 @@ package net.asodev.islandutils.mixins.network; import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.ParseResults; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.brigadier.suggestion.Suggestion; import net.asodev.islandutils.IslandUtilsClient; import net.asodev.islandutils.IslandUtilsEvents; import net.asodev.islandutils.discord.DiscordPresenceUpdator; import net.asodev.islandutils.modules.FriendsInGame; +import net.asodev.islandutils.modules.splits.sob.SobRenderer; +import net.asodev.islandutils.modules.splits.sob.TeamInfo; import net.asodev.islandutils.options.IslandOptions; import net.asodev.islandutils.options.IslandSoundCategories; import net.asodev.islandutils.modules.ClassicAnnouncer; @@ -23,7 +23,6 @@ import net.minecraft.client.multiplayer.*; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.commands.CommandSourceStack; -import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; @@ -34,9 +33,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.minecraft.world.scores.*; import org.spongepowered.asm.mixin.Final; 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; @@ -51,22 +52,27 @@ @Mixin(ClientPacketListener.class) public abstract class PacketListenerMixin extends ClientCommonPacketListenerImpl { - // I should really separate these mixins... @Shadow private CommandDispatcher commands; + @Final + @Shadow private Scoreboard scoreboard; + protected PacketListenerMixin(Minecraft minecraft, Connection connection, CommonListenerCookie commonListenerCookie) { super(minecraft, connection, commonListenerCookie); } // Patterns for the Map & Modifier options on scoreboard + @Unique final Map scoreboardPatterns = Map.of( "MAP", Pattern.compile("MAP: (?\\w+(?:,? \\w+)*)"), "MODIFIER", Pattern.compile("MODIFIER: (?\\w+(?:,? \\w+)*)"), "COURSE", Pattern.compile("COURSE: (?.*)"), - "LEAP", Pattern.compile("LEAP \\[(?.*/.*)]") + "LEAP", Pattern.compile("LEAP \\[(?.*/.*)]"), + "TIME", Pattern.compile("(?