Move WorldReadyEvent back more
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
|
||||
23
src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt
Normal file
23
src/main/kotlin/moe/nea/notenoughupdates/util/Timer.kt
Normal 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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user