Modernize and 1.19.4ify

This commit is contained in:
nea
2023-05-03 00:52:37 +02:00
parent a8ab8f3d63
commit 3be33bb522
19 changed files with 134 additions and 176 deletions

View File

@@ -0,0 +1,17 @@
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 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) {
WorldReadyEvent.Companion.publish(new WorldReadyEvent());
}
}

View File

@@ -0,0 +1,34 @@
package moe.nea.notenoughupdates.mixins;
import com.mojang.authlib.GameProfile;
import moe.nea.notenoughupdates.events.ServerChatLineReceivedEvent;
import net.minecraft.client.network.message.MessageHandler;
import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SignedMessage;
import net.minecraft.text.Text;
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(MessageHandler.class)
public class MixinMessageHandler {
@Inject(method = "onChatMessage", cancellable = true, at = @At("HEAD"))
public void onOnChatMessage(SignedMessage message, GameProfile sender, MessageType.Parameters params, CallbackInfo ci) {
var decoratedText = params.applyChatDecoration(message.unsignedContent() != null ? message.unsignedContent() : message.getContent());
var event = new ServerChatLineReceivedEvent(decoratedText);
if (ServerChatLineReceivedEvent.Companion.publish(event).getCancelled()) {
ci.cancel();
}
}
@Inject(method = "onGameMessage", at = @At("HEAD"), cancellable = true)
public void onOnGameMessage(Text message, boolean overlay, CallbackInfo ci) {
if (!overlay) {
var event = new ServerChatLineReceivedEvent(message);
if (ServerChatLineReceivedEvent.Companion.publish(event).getCancelled()) {
ci.cancel();
}
}
}
}

View File

@@ -0,0 +1,26 @@
package moe.nea.notenoughupdates.mixins;
import moe.nea.notenoughupdates.events.ScreenOpenEvent;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import org.jetbrains.annotations.Nullable;
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(MinecraftClient.class)
public abstract class MixinMinecraft {
@Shadow
@Nullable
public Screen currentScreen;
@Inject(method = "setScreen", at = @At("HEAD"), cancellable = true)
public void onScreenChange(Screen screen, CallbackInfo ci) {
var event = new ScreenOpenEvent(currentScreen, screen);
if (ScreenOpenEvent.Companion.publish(event).getCancelled()) {
ci.cancel();
}
}
}

View File

@@ -0,0 +1,26 @@
package moe.nea.notenoughupdates.mixins;
import moe.nea.notenoughupdates.events.WorldRenderLastEvent;
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.render.LightmapTextureManager;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.util.math.MatrixStack;
import org.joml.Matrix4f;
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(WorldRenderer.class)
public class MixinWorldRenderer {
@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/client/render/Camera;)V", shift = At.Shift.AFTER))
public void onWorldRenderLast(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f positionMatrix, CallbackInfo ci) {
var event = new WorldRenderLastEvent(
matrices, tickDelta, renderBlockOutline,
camera, gameRenderer, lightmapTextureManager,
positionMatrix
);
WorldRenderLastEvent.Companion.publish(event);
}
}

View File

@@ -1,10 +1,10 @@
package moe.nea.notenoughupdates.events
import org.joml.Matrix4f
import net.minecraft.client.render.Camera
import net.minecraft.client.render.GameRenderer
import net.minecraft.client.render.LightmapTextureManager
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.util.math.Matrix4f
/**
* This event is called after all world rendering is done, but before any GUI rendering (including hand) has been done.

View File

@@ -1,18 +0,0 @@
package moe.nea.notenoughupdates.mixins
import org.spongepowered.asm.mixin.Mixin
import org.spongepowered.asm.mixin.Overwrite
import net.minecraft.client.ClientBrandRetriever
@Mixin(ClientBrandRetriever::class)
class MixinClientBrandRetriever {
private companion object {
@JvmStatic
@Overwrite
fun getClientModName(): String {
return "penis"
}
}
}

View File

@@ -1,17 +0,0 @@
package moe.nea.notenoughupdates.mixins
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
import net.minecraft.client.network.ClientPlayNetworkHandler
import net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket
import moe.nea.notenoughupdates.events.WorldReadyEvent
@Mixin(ClientPlayNetworkHandler::class)
class MixinClientPlayNetworkHandler {
@Inject(method = ["onPlayerSpawnPosition"], at = [At("RETURN")])
fun onOnPlayerSpawnPosition(packet: PlayerSpawnPositionS2CPacket, ci: CallbackInfo) {
WorldReadyEvent.publish(WorldReadyEvent())
}
}

View File

@@ -1,33 +0,0 @@
package moe.nea.notenoughupdates.mixins
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
import net.minecraft.client.network.message.MessageHandler
import net.minecraft.network.message.MessageType
import net.minecraft.network.message.SignedMessage
import net.minecraft.text.Text
import moe.nea.notenoughupdates.events.ServerChatLineReceivedEvent
@Mixin(MessageHandler::class)
class MixinMessageHandler {
@Inject(method = ["onChatMessage"], at = [At("HEAD")], cancellable = true)
fun onOnChatMessage(message: SignedMessage, params: MessageType.Parameters, ci: CallbackInfo) {
val decoratedText = params.applyChatDecoration(message.unsignedContent.orElse(message.content))
val event = ServerChatLineReceivedEvent(decoratedText)
if (ServerChatLineReceivedEvent.publish(event).cancelled) {
ci.cancel()
}
}
@Inject(method = ["onGameMessage"], at = [At("HEAD")], cancellable = true)
fun onOnGameMessage(message: Text, overlay: Boolean, ci: CallbackInfo) {
if (!overlay) {
val event = ServerChatLineReceivedEvent(message)
if (ServerChatLineReceivedEvent.publish(event).cancelled) {
ci.cancel()
}
}
}
}

View File

@@ -1,20 +0,0 @@
package moe.nea.notenoughupdates.mixins
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
import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.screen.Screen
import moe.nea.notenoughupdates.events.ScreenOpenEvent
@Suppress("CAST_NEVER_SUCCEEDS")
@Mixin(MinecraftClient::class)
class MixinMinecraft {
@Inject(method = ["setScreen"], at = [At("HEAD")], cancellable = true)
fun onScreenChange(screen: Screen?, ci: CallbackInfo) {
val event = ScreenOpenEvent((this as MinecraftClient).currentScreen, screen)
if (ScreenOpenEvent.publish(event).cancelled)
ci.cancel()
}
}

View File

@@ -1,41 +0,0 @@
package moe.nea.notenoughupdates.mixins
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
import net.minecraft.client.render.Camera
import net.minecraft.client.render.GameRenderer
import net.minecraft.client.render.LightmapTextureManager
import net.minecraft.client.render.WorldRenderer
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.util.math.Matrix4f
import moe.nea.notenoughupdates.events.WorldRenderLastEvent
@Mixin(WorldRenderer::class)
class MixinWorldRenderer {
@Inject(
method = ["render"],
at = [At("INVOKE", target = "renderChunkDebugInfo", shift = At.Shift.AFTER)],
)
fun onWorldRenderLast(
matrices: MatrixStack,
tickDelta: Float,
arg2: Long,
renderBlockOutline: Boolean,
camera: Camera,
gameRenderer: GameRenderer,
lightmapTextureManager: LightmapTextureManager,
positionMatrix: Matrix4f,
ci: CallbackInfo
) {
val event = WorldRenderLastEvent(
matrices, tickDelta, renderBlockOutline,
camera, gameRenderer, lightmapTextureManager,
positionMatrix
)
WorldRenderLastEvent.publish(event)
}
}

View File

@@ -16,10 +16,10 @@ import moe.nea.notenoughupdates.repo.ItemCache.asItemStack
import moe.nea.notenoughupdates.repo.ItemCache.getIdentifier
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.item.ItemStack
import net.minecraft.tag.TagKey
import net.minecraft.text.Text
import net.minecraft.util.Identifier
import java.util.stream.Stream
import net.minecraft.registry.tag.TagKey
object SBItemEntryDefinition : EntryDefinition<NEUItem> {
override fun equals(o1: NEUItem?, o2: NEUItem?, context: ComparisonContext?): Boolean {
@@ -61,7 +61,7 @@ object SBItemEntryDefinition : EntryDefinition<NEUItem> {
return null
}
override fun getTagsFor(entry: EntryStack<NEUItem>?, value: NEUItem?): Stream<out TagKey<*>> {
override fun getTagsFor(entry: EntryStack<NEUItem>?, value: NEUItem?): Stream<out TagKey<*>>? {
return Stream.empty()
}

View File

@@ -1,14 +1,11 @@
package moe.nea.notenoughupdates.util
import java.time.Instant
import kotlinx.serialization.SerializationException
import kotlinx.serialization.decodeFromString
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import kotlin.time.ExperimentalTime
import kotlin.time.TimeSource
import net.minecraft.network.message.ArgumentSignatureDataMap
import net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket
import moe.nea.notenoughupdates.NotEnoughUpdates
import moe.nea.notenoughupdates.events.ServerChatLineReceivedEvent
import moe.nea.notenoughupdates.events.SkyblockServerUpdateEvent
@@ -62,17 +59,7 @@ object SBData {
fun sendLocraw() {
lastLocrawSent = TimeSource.Monotonic.markNow()
val nh = MC.player?.networkHandler ?: return
val ack = nh.consumeAcknowledgment()
nh.sendPacket(
CommandExecutionC2SPacket(
"locraw",
Instant.now(),
0L,
ArgumentSignatureDataMap.EMPTY,
false,
ack
)
)
nh.sendChatCommand("locraw")
}

View File

@@ -22,7 +22,7 @@ class RenderBlockContext(val tesselator: Tessellator, val camPos: Vec3d) {
matrixStack.push()
matrixStack.translate(blockPos.x - camPos.x, blockPos.y - camPos.y, blockPos.z - camPos.z)
RenderSystem.applyModelViewMatrix()
RenderSystem.setShader(GameRenderer::getPositionColorShader)
RenderSystem.setShader(GameRenderer::getPositionColorProgram)
buildCube(buffer)
tesselator.draw()
matrixStack.pop()
@@ -73,7 +73,6 @@ class RenderBlockContext(val tesselator: Tessellator, val camPos: Vec3d) {
fun renderBlocks(camera: Camera, block: RenderBlockContext. () -> Unit) {
RenderSystem.disableDepthTest()
RenderSystem.disableTexture()
RenderSystem.enableBlend()
RenderSystem.defaultBlendFunc()
@@ -82,7 +81,6 @@ class RenderBlockContext(val tesselator: Tessellator, val camPos: Vec3d) {
VertexBuffer.unbind()
RenderSystem.enableDepthTest()
RenderSystem.enableTexture()
RenderSystem.disableBlend()
}
}

View File

@@ -41,7 +41,7 @@
],
"depends": {
"fabric": "*",
"fabric-language-kotlin": ">=1.8.2+kotlin.1.7.10",
"minecraft": ">=1.18.2"
"fabric-language-kotlin": ">=${fabric_kotlin_version}",
"minecraft": ">=${minecraft_version}"
}
}

View File

@@ -6,8 +6,7 @@
"MixinClientPlayNetworkHandler",
"MixinMessageHandler",
"MixinMinecraft",
"MixinWorldRenderer",
"MixinClientBrandRetriever"
"MixinWorldRenderer"
],
"mixins": [
],