]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Handle /seed command from server
authorIrtimaled <irtimaled@gmail.com>
Thu, 26 Sep 2019 06:48:28 +0000 (23:48 -0700)
committerIrtimaled <irtimaled@gmail.com>
Tue, 19 Nov 2019 04:25:54 +0000 (20:25 -0800)
src/main/java/com/irtimaled/bbor/client/interop/ClientInterop.java
src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java [new file with mode: 0644]
src/main/resources/mixins.bbor.json

index 440db44f03ef00eae863d6effa80f7cd644489a2..b5364abf0a6a480ab8a8d2889010e380499d3daf 100644 (file)
@@ -6,9 +6,12 @@ import com.irtimaled.bbor.client.events.Render;
 import com.irtimaled.bbor.client.events.UpdateWorldSpawnReceived;
 import com.irtimaled.bbor.client.providers.SlimeChunkProvider;
 import com.irtimaled.bbor.common.EventBus;
+import com.irtimaled.bbor.common.TypeHelper;
 import net.minecraft.client.Minecraft;
 import net.minecraft.client.entity.EntityPlayerSP;
 import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.text.ITextComponent;
+import net.minecraft.util.text.TextComponentTranslation;
 
 public class ClientInterop {
     public static void disconnectedFromRemoteServer() {
@@ -50,4 +53,16 @@ public class ClientInterop {
     public static int getRenderDistanceChunks() {
         return Minecraft.getInstance().gameSettings.renderDistanceChunks;
     }
+
+    public static void handleSeedMessage(ITextComponent chatComponent) {
+        TypeHelper.doIfType(chatComponent, TextComponentTranslation.class, message -> {
+            if (!message.getKey().equals("commands.seed.success")) return;
+
+            try {
+                long seed = Long.parseLong(message.getFormatArgs()[0].toString());
+                SlimeChunkProvider.setSeed(seed);
+            } catch (Exception ignored) {
+            }
+        });
+    }
 }
diff --git a/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java b/src/main/java/com/irtimaled/bbor/mixin/network/play/server/MixinSPacketChat.java
new file mode 100644 (file)
index 0000000..b50017a
--- /dev/null
@@ -0,0 +1,20 @@
+package com.irtimaled.bbor.mixin.network.play.server;
+
+import com.irtimaled.bbor.client.interop.ClientInterop;
+import net.minecraft.network.play.server.SPacketChat;
+import net.minecraft.util.text.ITextComponent;
+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(SPacketChat.class)
+public class MixinSPacketChat {
+    @Shadow private ITextComponent chatComponent;
+
+    @Inject(method = "processPacket",  at = @At("RETURN"))
+    private void processPacket(CallbackInfo ci) {
+        ClientInterop.handleSeedMessage(this.chatComponent);
+    }
+}
index 4632988fc5b8b536162397afec38754d1f781a53..9b97e572db7eb226d0349548cc2a3f83c2ac6a26 100644 (file)
@@ -23,6 +23,7 @@
     "client.renderer.MixinEntityRenderer",
     "client.settings.MixinGameSettings",
     "client.settings.MixinKeyBinding",
+    "network.play.server.MixinSPacketChat",
     "network.play.server.MixinSPacketCustomPayload",
     "network.play.server.MixinSPacketSpawnPosition"
   ],