Skip to content

Commit

Permalink
Update NeoForge to latest build
Browse files Browse the repository at this point in the history
  • Loading branch information
Juuxel committed Jan 15, 2024
1 parent 671b0f0 commit 4b89fde
Show file tree
Hide file tree
Showing 12 changed files with 46 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import net.minecraft.text.Style
import net.minecraft.text.Text
import kotlin.math.max

// TODO: Fix dark foreground (also other screens if needed)
class GuideBookScreen(private val book: Book) : Screen(NarratorManager.EMPTY) {
private lateinit var flipBook: FlipBook
private lateinit var previousPageButton: PageTurnWidget
Expand Down
2 changes: 1 addition & 1 deletion forge/src/main/kotlin/juuxel/adorn/platform/forge/Adorn.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class Adorn {
AdornRecipes.RECIPE_TYPES.registerToBus(MOD_BUS)
AdornLootConditionTypes.LOOT_CONDITION_TYPES.registerToBus(MOD_BUS)
AdornLootFunctionTypes.LOOT_FUNCTION_TYPES.registerToBus(MOD_BUS)
AdornNetworking.init()
MOD_BUS.register(AdornNetworking)
AdornCriteria.init()
AdornCriteria.CRITERIA.registerToBus(MOD_BUS)
ItemEvents.register(MOD_BUS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import net.minecraft.network.PacketByteBuf
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.math.BlockPos
import net.neoforged.neoforge.common.extensions.IMenuTypeExtension
import net.neoforged.neoforge.network.NetworkHooks

object MenuBridgeImpl : MenuBridge {
private val LOGGER = logger()
Expand All @@ -23,7 +22,7 @@ object MenuBridgeImpl : MenuBridge {
}

if (player is ServerPlayerEntity) {
NetworkHooks.openScreen(player, factory, pos)
player.openMenu(factory, pos)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package juuxel.adorn.platform.forge

import juuxel.adorn.fluid.FluidReference
import juuxel.adorn.platform.NetworkBridge
import juuxel.adorn.platform.forge.networking.AdornNetworking
import juuxel.adorn.platform.forge.networking.BrewerFluidSyncS2CMessage
import juuxel.adorn.platform.forge.networking.OpenBookS2CMessage
import net.minecraft.entity.Entity
Expand All @@ -14,17 +13,17 @@ import net.neoforged.neoforge.network.PacketDistributor

object NetworkBridgeImpl : NetworkBridge {
override fun sendToTracking(entity: Entity, packet: Packet<*>) =
PacketDistributor.TRACKING_ENTITY.with { entity }.send(packet)
PacketDistributor.TRACKING_ENTITY.with(entity).send(packet)

override fun sendOpenBookPacket(player: PlayerEntity, bookId: Identifier) {
if (player is ServerPlayerEntity) {
AdornNetworking.CHANNEL.send(PacketDistributor.PLAYER.with { player }, OpenBookS2CMessage(bookId))
PacketDistributor.PLAYER.with(player).send(OpenBookS2CMessage(bookId))
}
}

override fun sendBrewerFluidSync(player: PlayerEntity, syncId: Int, fluid: FluidReference) {
if (player is ServerPlayerEntity) {
AdornNetworking.CHANNEL.send(PacketDistributor.PLAYER.with { player }, BrewerFluidSyncS2CMessage(syncId, fluid.createSnapshot()))
PacketDistributor.PLAYER.with(player).send(BrewerFluidSyncS2CMessage(syncId, fluid.createSnapshot()))
}
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package juuxel.adorn.platform.forge.client

import juuxel.adorn.client.ClientNetworkBridge
import juuxel.adorn.platform.forge.networking.AdornNetworking
import juuxel.adorn.platform.forge.networking.SetTradeStackC2SMessage
import net.minecraft.item.ItemStack
import net.neoforged.neoforge.network.PacketDistributor

class ClientNetworkBridgeForge : ClientNetworkBridge {
override fun sendSetTradeStack(syncId: Int, slotId: Int, stack: ItemStack) {
AdornNetworking.CHANNEL.sendToServer(SetTradeStackC2SMessage(syncId, slotId, stack))
PacketDistributor.SERVER.noArg().send(SetTradeStackC2SMessage(syncId, slotId, stack))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,69 +5,51 @@ import juuxel.adorn.client.gui.screen.BrewerScreen
import juuxel.adorn.menu.TradingStationMenu
import juuxel.adorn.platform.forge.client.AdornClient
import net.minecraft.client.MinecraftClient
import net.minecraft.network.PacketByteBuf
import net.neoforged.api.distmarker.Dist
import net.neoforged.bus.api.SubscribeEvent
import net.neoforged.fml.DistExecutor
import net.neoforged.neoforge.network.INetworkDirection
import net.neoforged.neoforge.network.NetworkEvent
import net.neoforged.neoforge.network.NetworkRegistry
import net.neoforged.neoforge.network.PlayNetworkDirection
import java.util.Optional
import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent
import net.neoforged.neoforge.network.handling.PlayPayloadContext
import java.util.concurrent.Callable
import java.util.function.Consumer

object AdornNetworking {
private const val PROTOCOL = "3"
val CHANNEL = NetworkRegistry.newSimpleChannel(
AdornCommon.id("main"),
{ PROTOCOL },
PROTOCOL::equals,
PROTOCOL::equals
)

private var nextId = 0

@Suppress("INACCESSIBLE_TYPE")
private inline fun <reified M : Message> register(
noinline decoder: (PacketByteBuf) -> M,
noinline listener: (M, NetworkEvent.Context) -> Unit,
direction: INetworkDirection<*>
) {
CHANNEL.registerMessage(nextId++, M::class.java, Message::write, decoder, listener, Optional.of(direction))
}

fun init() {
register(OpenBookS2CMessage::fromPacket, this::handleBookOpen, PlayNetworkDirection.PLAY_TO_CLIENT)
register(BrewerFluidSyncS2CMessage::fromPacket, this::handleBrewerFluidSync, PlayNetworkDirection.PLAY_TO_CLIENT)
register(SetTradeStackC2SMessage::fromPacket, this::handleSetTradeStack, PlayNetworkDirection.PLAY_TO_SERVER)
val OPEN_BOOK = AdornCommon.id("open_book")
val BREWER_FLUID_SYNC = AdornCommon.id("brewer_fluid_sync")
val SET_TRADE_STACK = AdornCommon.id("set_trade_stack")

@SubscribeEvent
fun register(event: RegisterPayloadHandlerEvent) {
val registrar = event.registrar(AdornCommon.NAMESPACE)
registrar.play(OPEN_BOOK, OpenBookS2CMessage::fromPacket, Consumer { it.client(this::handleBookOpen) })
registrar.play(BREWER_FLUID_SYNC, BrewerFluidSyncS2CMessage::fromPacket, Consumer { it.client(this::handleBrewerFluidSync) })
registrar.play(SET_TRADE_STACK, SetTradeStackC2SMessage::fromPacket, Consumer { it.server(this::handleSetTradeStack) })
}

private fun handleBookOpen(message: OpenBookS2CMessage, context: NetworkEvent.Context) {
context.enqueueWork {
private fun handleBookOpen(message: OpenBookS2CMessage, context: PlayPayloadContext) {
context.workHandler.execute {
DistExecutor.unsafeCallWhenOn(Dist.CLIENT) { Callable { AdornClient.openBookScreen(message.bookId) } }
}
context.packetHandled = true
}

private fun handleBrewerFluidSync(message: BrewerFluidSyncS2CMessage, context: NetworkEvent.Context) {
context.enqueueWork {
private fun handleBrewerFluidSync(message: BrewerFluidSyncS2CMessage, context: PlayPayloadContext) {
context.workHandler.execute {
DistExecutor.unsafeCallWhenOn(Dist.CLIENT) {
Callable {
BrewerScreen.setFluidFromPacket(MinecraftClient.getInstance(), message.syncId, message.fluid)
}
}
}
context.packetHandled = true
}

private fun handleSetTradeStack(message: SetTradeStackC2SMessage, context: NetworkEvent.Context) {
context.enqueueWork {
val sender = context.sender!!
private fun handleSetTradeStack(message: SetTradeStackC2SMessage, context: PlayPayloadContext) {
context.workHandler.execute {
val sender = context.player.orElseThrow()
val menu = sender.menu

if (menu.syncId == message.syncId && menu is TradingStationMenu) {
menu.updateTradeStack(message.slotId, message.stack, sender)
}
}
context.packetHandled = true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ package juuxel.adorn.platform.forge.networking

import juuxel.adorn.fluid.FluidVolume
import net.minecraft.network.PacketByteBuf
import net.minecraft.network.packet.CustomPayload
import net.minecraft.util.Identifier

data class BrewerFluidSyncS2CMessage(val syncId: Int, val fluid: FluidVolume) : CustomPayload {
override fun id(): Identifier = AdornNetworking.BREWER_FLUID_SYNC

data class BrewerFluidSyncS2CMessage(val syncId: Int, val fluid: FluidVolume) : Message {
override fun write(buf: PacketByteBuf) {
buf.writeByte(syncId)
fluid.write(buf)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package juuxel.adorn.platform.forge.networking

import net.minecraft.network.PacketByteBuf
import net.minecraft.network.packet.CustomPayload
import net.minecraft.util.Identifier

data class OpenBookS2CMessage(val bookId: Identifier) : Message {
data class OpenBookS2CMessage(val bookId: Identifier) : CustomPayload {
override fun id(): Identifier = AdornNetworking.OPEN_BOOK

override fun write(buf: PacketByteBuf) {
buf.writeIdentifier(bookId)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ package juuxel.adorn.platform.forge.networking

import net.minecraft.item.ItemStack
import net.minecraft.network.PacketByteBuf
import net.minecraft.network.packet.CustomPayload
import net.minecraft.util.Identifier

data class SetTradeStackC2SMessage(val syncId: Int, val slotId: Int, val stack: ItemStack) : CustomPayload {
override fun id(): Identifier = AdornNetworking.SET_TRADE_STACK

data class SetTradeStackC2SMessage(val syncId: Int, val slotId: Int, val stack: ItemStack) : Message {
override fun write(buf: PacketByteBuf) {
buf.writeVarInt(syncId)
buf.writeVarInt(slotId)
Expand Down
4 changes: 2 additions & 2 deletions forge/src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ config = "mixins.adorn.forge.json"

[[dependencies.adorn]]
modId = "minecraft"
mandatory = true
type = "required"
versionRange = "[1.20.4,1.21)"

[[dependencies.adorn]]
modId = "neoforge"
mandatory = true
type = "required"
versionRange="[20.4.27-beta,)"
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ fabric-api = 0.91.2+1.20.4
fabric-kotlin = 1.10.16+kotlin.1.9.21

# NeoForge
neoforge-version = 20.4.27-beta
neoforge-version = 20.4.108-beta

# Non-mod library dependencies
jankson = 1.2.1
Expand Down

0 comments on commit 4b89fde

Please sign in to comment.