Move WorldReadyEvent back more

This commit is contained in:
nea
2023-05-03 01:09:19 +02:00
parent 3be33bb522
commit f93df266c6
4 changed files with 47 additions and 27 deletions

View File

@@ -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());
}
}

View File

@@ -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")
}

View File

@@ -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
}
}

View File

@@ -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
}
}