mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
network: 23w12a
This commit is contained in:
parent
a3b87ce318
commit
188f42535b
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
@ -23,6 +23,7 @@ import de.bixilon.minosoft.data.entities.block.redstone.DaylightDetectorBlockEnt
|
||||
import de.bixilon.minosoft.data.entities.block.redstone.SculkSensorBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.redstone.piston.PistonBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.redstone.piston.StickyPistonBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.registries.factory.DefaultFactory
|
||||
|
||||
object DefaultBlockDataFactory : DefaultFactory<BlockEntityFactory<out BlockEntity>>(
|
||||
|
@ -11,10 +11,12 @@
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.entities.block
|
||||
package de.bixilon.minosoft.data.entities.block.sign
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.kutil.primitive.BooleanUtil.toBoolean
|
||||
import de.bixilon.minosoft.data.entities.block.BlockEntityFactory
|
||||
import de.bixilon.minosoft.data.entities.block.MeshedBlockEntity
|
||||
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
|
||||
import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft
|
||||
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
|
||||
@ -39,6 +41,7 @@ class SignBlockEntity(connection: PlayConnection) : MeshedBlockEntity(connection
|
||||
|
||||
lines[i - 1] = ChatComponent.of(tag, translator = connection.language)
|
||||
}
|
||||
// TODO: update front/back text
|
||||
}
|
||||
|
||||
override fun createMeshedRenderer(context: RenderContext, blockState: BlockState, blockPosition: Vec3i): SignBlockEntityRenderer {
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.entities.block.sign
|
||||
|
||||
import de.bixilon.kutil.enums.EnumUtil
|
||||
import de.bixilon.kutil.enums.ValuesEnum
|
||||
|
||||
enum class SignSides {
|
||||
FRONT,
|
||||
BACK,
|
||||
;
|
||||
|
||||
companion object : ValuesEnum<SignSides> {
|
||||
override val VALUES: Array<SignSides> = values()
|
||||
override val NAME_MAP: Map<String, SignSides> = EnumUtil.getEnumValues(VALUES)
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
|
||||
package de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.entity.sign
|
||||
|
||||
import de.bixilon.minosoft.data.entities.block.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.entity.BlockWithEntity
|
||||
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
|
||||
import de.bixilon.minosoft.data.registries.registries.Registries
|
||||
|
@ -19,7 +19,8 @@ import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.kutil.cast.CastUtil.nullCast
|
||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||
import de.bixilon.minosoft.config.key.KeyCodes
|
||||
import de.bixilon.minosoft.data.entities.block.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignSides
|
||||
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
|
||||
import de.bixilon.minosoft.data.registries.blocks.types.pixlyzer.entity.sign.SignBlock
|
||||
import de.bixilon.minosoft.data.text.ChatComponent
|
||||
@ -52,6 +53,7 @@ import de.bixilon.minosoft.protocol.packets.c2s.play.block.SignTextC2SP
|
||||
class SignEditorScreen(
|
||||
guiRenderer: GUIRenderer,
|
||||
val blockPosition: Vec3i,
|
||||
val side: SignSides,
|
||||
val blockState: BlockState? = guiRenderer.connection.world[blockPosition],
|
||||
val blockEntity: SignBlockEntity? = guiRenderer.connection.world.getBlockEntity(blockPosition).nullCast(),
|
||||
) : Screen(guiRenderer), AbstractLayout<Element> {
|
||||
@ -118,7 +120,7 @@ class SignEditorScreen(
|
||||
override fun onClose() {
|
||||
super.onClose()
|
||||
val text = getText()
|
||||
guiRenderer.connection.sendPacket(SignTextC2SP(blockPosition, text))
|
||||
guiRenderer.connection.sendPacket(SignTextC2SP(blockPosition, this.side, text))
|
||||
}
|
||||
|
||||
override fun forceSilentApply() {
|
||||
@ -220,7 +222,7 @@ class SignEditorScreen(
|
||||
private val BACKGROUND_SIZE = Vec2i(24, 12) * BACKGROUND_SCALE
|
||||
|
||||
fun register(guiRenderer: GUIRenderer) {
|
||||
guiRenderer.connection.events.listen<OpenSignEditorEvent> { guiRenderer.gui.push(SignEditorScreen(guiRenderer, it.blockPosition)) }
|
||||
guiRenderer.connection.events.listen<OpenSignEditorEvent> { guiRenderer.gui.push(SignEditorScreen(guiRenderer, it.position, it.side)) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ import de.bixilon.kutil.exception.Broken
|
||||
import de.bixilon.kutil.primitive.FloatUtil.toFloat
|
||||
import de.bixilon.minosoft.data.Axes
|
||||
import de.bixilon.minosoft.data.direction.Directions
|
||||
import de.bixilon.minosoft.data.entities.block.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties
|
||||
import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties.Companion.getFacing
|
||||
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
@ -13,14 +13,16 @@
|
||||
package de.bixilon.minosoft.modding.event.events
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignSides
|
||||
import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
import de.bixilon.minosoft.protocol.packets.s2c.play.sign.SignEditorS2CP
|
||||
|
||||
class OpenSignEditorEvent(
|
||||
connection: PlayConnection,
|
||||
val blockPosition: Vec3i,
|
||||
val position: Vec3i,
|
||||
val side: SignSides,
|
||||
) : PlayConnectionEvent(connection), CancelableEvent {
|
||||
|
||||
constructor(connection: PlayConnection, packet: SignEditorS2CP) : this(connection, packet.blockPosition)
|
||||
constructor(connection: PlayConnection, packet: SignEditorS2CP) : this(connection, packet.position, packet.side)
|
||||
}
|
||||
|
@ -13,7 +13,8 @@
|
||||
package de.bixilon.minosoft.protocol.packets.c2s.play.block
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.minosoft.data.entities.block.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignSides
|
||||
import de.bixilon.minosoft.data.text.ChatComponent
|
||||
import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket
|
||||
import de.bixilon.minosoft.protocol.packets.factory.LoadPacket
|
||||
@ -26,6 +27,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
||||
@LoadPacket
|
||||
class SignTextC2SP(
|
||||
val position: Vec3i,
|
||||
val side: SignSides,
|
||||
val lines: Array<ChatComponent>,
|
||||
) : PlayC2SPacket {
|
||||
|
||||
@ -39,6 +41,9 @@ class SignTextC2SP(
|
||||
} else {
|
||||
buffer.writeBlockPosition(position)
|
||||
}
|
||||
if (buffer.versionId >= ProtocolVersions.V_23W12A) {
|
||||
buffer.writeBoolean(if (side == SignSides.FRONT) true else false)
|
||||
}
|
||||
for (line in lines) {
|
||||
buffer.writeString(line.message)
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
package de.bixilon.minosoft.protocol.packets.s2c.play.sign
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignSides
|
||||
import de.bixilon.minosoft.modding.event.events.OpenSignEditorEvent
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
import de.bixilon.minosoft.protocol.packets.factory.LoadPacket
|
||||
@ -25,11 +25,8 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
||||
|
||||
@LoadPacket
|
||||
class SignEditorS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||
var blockPosition: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W03B) {
|
||||
buffer.readIntBlockPosition()
|
||||
} else {
|
||||
buffer.readBlockPosition()
|
||||
}
|
||||
val position = if (buffer.versionId < ProtocolVersions.V_14W03B) buffer.readIntBlockPosition() else buffer.readBlockPosition()
|
||||
val side = if (buffer.versionId >= ProtocolVersions.V_22W12A) if (buffer.readBoolean()) SignSides.FRONT else SignSides.BACK else SignSides.FRONT
|
||||
|
||||
override fun handle(connection: PlayConnection) {
|
||||
if (connection.events.fire(OpenSignEditorEvent(connection, this))) {
|
||||
@ -38,6 +35,6 @@ class SignEditorS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||
}
|
||||
|
||||
override fun log(reducedLog: Boolean) {
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Sign editor (blockPosition=$blockPosition)" }
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Sign editor (position=$position, side=$side)" }
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.sign
|
||||
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.kutil.cast.CastUtil.unsafeCast
|
||||
import de.bixilon.minosoft.data.entities.block.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity
|
||||
import de.bixilon.minosoft.data.text.ChatComponent
|
||||
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
|
||||
import de.bixilon.minosoft.protocol.packets.factory.LoadPacket
|
||||
|
@ -14,6 +14,7 @@ package de.bixilon.minosoft.protocol.protocol
|
||||
|
||||
@Suppress("UNUSED")
|
||||
object ProtocolVersions {
|
||||
const val V_23W12A = 888
|
||||
const val V_1_19_4 = 887
|
||||
const val V_1_19_4_RC3 = 886
|
||||
const val V_1_19_4_RC2 = 885
|
||||
|
@ -57,4 +57,5 @@ class Version(
|
||||
val requiresSignedLogin get() = requiresSignedChat && versionId < ProtocolVersions.V_22W43A
|
||||
val supportsRGBChat get() = versionId >= ProtocolVersions.V_20W17A
|
||||
val jsonLanguage get() = versionId >= ProtocolVersions.V_18W02A
|
||||
val doubleSigns get() = versionId >= ProtocolVersions.V_23W12A
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,4 +1,9 @@
|
||||
{
|
||||
"888": {
|
||||
"name": "23w12a",
|
||||
"protocol_id": 1073741951,
|
||||
"packets": 880
|
||||
},
|
||||
"887": {
|
||||
"name": "1.19.4",
|
||||
"protocol_id": 762,
|
||||
|
Loading…
x
Reference in New Issue
Block a user