aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-05-03 01:09:19 +0200
committernea <nea@nea.moe>2023-05-03 01:09:19 +0200
commitf93df266c60de0567be1c963d0fbc0861bc4f197 (patch)
tree5e699594a3664fd339283d3b111ad67ad2275c4a
parent3be33bb522f468b812bb59b7f2edc8d1ca352661 (diff)
downloadfirmament-f93df266c60de0567be1c963d0fbc0861bc4f197.tar.gz
firmament-f93df266c60de0567be1c963d0fbc0861bc4f197.tar.bz2
firmament-f93df266c60de0567be1c963d0fbc0861bc4f197.zip
Move WorldReadyEvent back more
-rw-r--r--src/main/java/moe/nea/notenoughupdates/mixins/MixinDownloadingTerrainScreen.java (renamed from src/main/java/moe/nea/notenoughupdates/mixins/MixinClientPlayNetworkHandler.java)11
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/util/SBData.kt12
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt23
-rw-r--r--src/main/resources/notenoughupdates.mixins.json28
4 files changed, 47 insertions, 27 deletions
diff --git a/src/main/java/moe/nea/notenoughupdates/mixins/MixinClientPlayNetworkHandler.java b/src/main/java/moe/nea/notenoughupdates/mixins/MixinDownloadingTerrainScreen.java
index 34334b6..3ed8a73 100644
--- a/src/main/java/moe/nea/notenoughupdates/mixins/MixinClientPlayNetworkHandler.java
+++ b/src/main/java/moe/nea/notenoughupdates/mixins/MixinDownloadingTerrainScreen.java
@@ -1,17 +1,16 @@
package moe.nea.notenoughupdates.mixins;
import moe.nea.notenoughupdates.events.WorldReadyEvent;
-import net.minecraft.client.network.ClientPlayNetworkHandler;
-import net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket;
+import net.minecraft.client.gui.screen.DownloadingTerrainScreen;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-@Mixin(ClientPlayNetworkHandler.class)
-public class MixinClientPlayNetworkHandler {
- @Inject(method = "onPlayerSpawnPosition", at = @At("RETURN"))
- public void onOnPlayerSpawnPosition(PlayerSpawnPositionS2CPacket packet, CallbackInfo ci) {
+@Mixin(DownloadingTerrainScreen.class)
+public class MixinDownloadingTerrainScreen {
+ @Inject(method = "close", at = @At("HEAD"))
+ public void onClose(CallbackInfo ci) {
WorldReadyEvent.Companion.publish(new WorldReadyEvent());
}
}
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/SBData.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/SBData.kt
index 6d4af7e..393cdbb 100644
--- a/src/main/kotlin/moe/nea/notenoughupdates/util/SBData.kt
+++ b/src/main/kotlin/moe/nea/notenoughupdates/util/SBData.kt
@@ -11,12 +11,11 @@ import moe.nea.notenoughupdates.events.ServerChatLineReceivedEvent
import moe.nea.notenoughupdates.events.SkyblockServerUpdateEvent
import moe.nea.notenoughupdates.events.WorldReadyEvent
-@OptIn(ExperimentalTime::class)
object SBData {
val profileRegex = "(?:Your profile was changed to: |You are playing on profile: )(.+)".toRegex()
var profileCuteName: String? = null
- private var lastLocrawSent: TimeSource.Monotonic.ValueTimeMark? = null
+ private var lastLocrawSent = Timer()
private val locrawRoundtripTime: Duration = 5.seconds
var locraw: Locraw? = null
val skyblockLocation get() = locraw?.skyblockLocation
@@ -29,9 +28,8 @@ object SBData {
profileCuteName = profileMatch.groupValues[1]
}
if (event.unformattedString.startsWith("{")) {
- val lLS = lastLocrawSent
- if (tryReceiveLocraw(event.unformattedString) && lLS != null && lLS.elapsedNow() < locrawRoundtripTime) {
- lastLocrawSent = null
+ if (tryReceiveLocraw(event.unformattedString) && lastLocrawSent.timePassed() < locrawRoundtripTime) {
+ lastLocrawSent.markFarPast()
event.cancel()
}
}
@@ -57,9 +55,9 @@ object SBData {
}
fun sendLocraw() {
- lastLocrawSent = TimeSource.Monotonic.markNow()
+ lastLocrawSent.markNow()
val nh = MC.player?.networkHandler ?: return
-nh.sendChatCommand("locraw")
+ nh.sendChatCommand("locraw")
}
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt
new file mode 100644
index 0000000..14f76f7
--- /dev/null
+++ b/src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt
@@ -0,0 +1,23 @@
+package moe.nea.notenoughupdates.util
+
+import kotlin.time.Duration
+import kotlin.time.ExperimentalTime
+import kotlin.time.TimeSource
+
+@OptIn(ExperimentalTime::class)
+class Timer {
+ private var mark: TimeSource.Monotonic.ValueTimeMark? = null
+
+ fun timePassed(): Duration {
+ return mark?.elapsedNow() ?: Duration.INFINITE
+ }
+
+ fun markNow() {
+ mark = TimeSource.Monotonic.markNow()
+ }
+
+ fun markFarPast() {
+ mark = null
+ }
+
+}
diff --git a/src/main/resources/notenoughupdates.mixins.json b/src/main/resources/notenoughupdates.mixins.json
index 52d30a7..1364f37 100644
--- a/src/main/resources/notenoughupdates.mixins.json
+++ b/src/main/resources/notenoughupdates.mixins.json
@@ -1,16 +1,16 @@
{
- "required": true,
- "package": "moe.nea.notenoughupdates.mixins",
- "compatibilityLevel": "JAVA_16",
- "client": [
- "MixinClientPlayNetworkHandler",
- "MixinMessageHandler",
- "MixinMinecraft",
- "MixinWorldRenderer"
- ],
- "mixins": [
- ],
- "injectors": {
- "defaultRequire": 1
- }
+ "required": true,
+ "package": "moe.nea.notenoughupdates.mixins",
+ "compatibilityLevel": "JAVA_16",
+ "client": [
+ "MixinDownloadingTerrainScreen",
+ "MixinMessageHandler",
+ "MixinMinecraft",
+ "MixinWorldRenderer"
+ ],
+ "mixins": [
+ ],
+ "injectors": {
+ "defaultRequire": 1
+ }
}