mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-12 17:07:55 -04:00
networking: answer with vanilla
client brand and send settings
This commit is contained in:
parent
f72fe7eecc
commit
62fea42a6e
@ -18,6 +18,7 @@ import de.bixilon.minosoft.data.mappings.ResourceLocation
|
|||||||
import de.bixilon.minosoft.gui.rendering.chunk.models.FaceSize
|
import de.bixilon.minosoft.gui.rendering.chunk.models.FaceSize
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
import de.bixilon.minosoft.gui.rendering.textures.Texture
|
||||||
|
|
||||||
|
@Deprecated(message = "Will be replaced with a normal BlockRenderer and multiple renderers")
|
||||||
class MultipartRenderer(
|
class MultipartRenderer(
|
||||||
val models: List<BlockLikeRenderer>,
|
val models: List<BlockLikeRenderer>,
|
||||||
) : BlockLikeRenderer {
|
) : BlockLikeRenderer {
|
||||||
|
@ -10,14 +10,13 @@
|
|||||||
*
|
*
|
||||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||||
*/
|
*/
|
||||||
|
package de.bixilon.minosoft.modding.channels
|
||||||
|
|
||||||
package de.bixilon.minosoft.modding.channels;
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation;
|
object DefaultPluginChannels {
|
||||||
|
val REGISTER = ResourceLocation("minecraft:register")
|
||||||
public class DefaultPluginChannels {
|
val UNREGISTER = ResourceLocation("minecraft:unregister")
|
||||||
public static final ResourceLocation REGISTER = new ResourceLocation("minecraft:register");
|
val BRAND = ResourceLocation("minecraft:brand")
|
||||||
public static final ResourceLocation UNREGISTER = new ResourceLocation("minecraft:unregister");
|
val STOP_SOUND = ResourceLocation("minecraft:stop_sound")
|
||||||
public static final ResourceLocation BRAND = new ResourceLocation("minecraft:brand");
|
|
||||||
public static final ResourceLocation STOP_SOUND = new ResourceLocation("minecraft:stop_sound");
|
|
||||||
}
|
}
|
@ -19,6 +19,7 @@ import de.bixilon.minosoft.data.ChatTextPositions
|
|||||||
import de.bixilon.minosoft.data.accounts.Account
|
import de.bixilon.minosoft.data.accounts.Account
|
||||||
import de.bixilon.minosoft.data.assets.MultiAssetsManager
|
import de.bixilon.minosoft.data.assets.MultiAssetsManager
|
||||||
import de.bixilon.minosoft.data.commands.CommandRootNode
|
import de.bixilon.minosoft.data.commands.CommandRootNode
|
||||||
|
import de.bixilon.minosoft.data.mappings.DefaultRegistries
|
||||||
import de.bixilon.minosoft.data.mappings.MappingsLoadingException
|
import de.bixilon.minosoft.data.mappings.MappingsLoadingException
|
||||||
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
import de.bixilon.minosoft.data.mappings.ResourceLocation
|
||||||
import de.bixilon.minosoft.data.mappings.recipes.Recipes
|
import de.bixilon.minosoft.data.mappings.recipes.Recipes
|
||||||
@ -33,13 +34,16 @@ import de.bixilon.minosoft.data.text.ChatComponent
|
|||||||
import de.bixilon.minosoft.data.world.World
|
import de.bixilon.minosoft.data.world.World
|
||||||
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
import de.bixilon.minosoft.gui.rendering.RenderConstants
|
||||||
import de.bixilon.minosoft.gui.rendering.Rendering
|
import de.bixilon.minosoft.gui.rendering.Rendering
|
||||||
|
import de.bixilon.minosoft.modding.channels.DefaultPluginChannels
|
||||||
import de.bixilon.minosoft.modding.event.CallbackEventInvoker
|
import de.bixilon.minosoft.modding.event.CallbackEventInvoker
|
||||||
import de.bixilon.minosoft.modding.event.EventInvoker
|
import de.bixilon.minosoft.modding.event.EventInvoker
|
||||||
import de.bixilon.minosoft.modding.event.events.ChatMessageReceiveEvent
|
import de.bixilon.minosoft.modding.event.events.ChatMessageReceiveEvent
|
||||||
import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent
|
import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent
|
||||||
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
|
import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent
|
||||||
|
import de.bixilon.minosoft.modding.event.events.PluginMessageReceiveEvent
|
||||||
import de.bixilon.minosoft.protocol.packets.c2s.handshaking.HandshakeC2SP
|
import de.bixilon.minosoft.protocol.packets.c2s.handshaking.HandshakeC2SP
|
||||||
import de.bixilon.minosoft.protocol.packets.c2s.login.LoginStartC2SP
|
import de.bixilon.minosoft.protocol.packets.c2s.login.LoginStartC2SP
|
||||||
|
import de.bixilon.minosoft.protocol.packets.c2s.play.PluginMessageC2SP
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket
|
import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket
|
||||||
import de.bixilon.minosoft.protocol.protocol.*
|
import de.bixilon.minosoft.protocol.protocol.*
|
||||||
@ -146,6 +150,14 @@ class PlayConnection(
|
|||||||
}
|
}
|
||||||
Log.log(LogMessageType.CHAT_IN, additionalPrefix = ChatComponent.of(additionalPrefix)) { it.message }
|
Log.log(LogMessageType.CHAT_IN, additionalPrefix = ChatComponent.of(additionalPrefix)) { it.message }
|
||||||
})
|
})
|
||||||
|
registerEvent(CallbackEventInvoker.of<PluginMessageReceiveEvent> {
|
||||||
|
val brandName = DefaultRegistries.DEFAULT_PLUGIN_CHANNELS_REGISTRY.forVersion(version)[DefaultPluginChannels.BRAND]!!.resourceLocation
|
||||||
|
if (it.channel == brandName) {
|
||||||
|
val buffer = PlayOutByteBuffer(this)
|
||||||
|
buffer.writeString("vanilla") // ToDo: Remove prefix
|
||||||
|
sendPacket(PluginMessageC2SP(brandName, buffer.toByteArray()))
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
ConnectionStates.DISCONNECTED -> {
|
ConnectionStates.DISCONNECTED -> {
|
||||||
if (previousConnectionState.connected) {
|
if (previousConnectionState.connected) {
|
||||||
|
@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class ClientSettingsC2SP(
|
class ClientSettingsC2SP(
|
||||||
val locale: String = "en_US",
|
val locale: String = "en_us",
|
||||||
val renderDistance: Int = 10,
|
val renderDistance: Int = 10,
|
||||||
val mainHand: Hands = Hands.MAIN_HAND,
|
val mainHand: Hands = Hands.MAIN_HAND,
|
||||||
val disableTextFiltering: Boolean = true,
|
val disableTextFiltering: Boolean = true,
|
||||||
@ -40,7 +40,7 @@ class ClientSettingsC2SP(
|
|||||||
buffer.writeByte(0x7F) // ToDo: skin parts
|
buffer.writeByte(0x7F) // ToDo: skin parts
|
||||||
}
|
}
|
||||||
if (buffer.versionId >= ProtocolVersions.V_15W31A) {
|
if (buffer.versionId >= ProtocolVersions.V_15W31A) {
|
||||||
buffer.writeVarInt(mainHand.ordinal)
|
buffer.writeVarInt(1) // ToDo
|
||||||
}
|
}
|
||||||
if (buffer.versionId >= ProtocolVersions.V_21W07A) {
|
if (buffer.versionId >= ProtocolVersions.V_21W07A) {
|
||||||
buffer.writeBoolean(disableTextFiltering)
|
buffer.writeBoolean(disableTextFiltering)
|
||||||
|
@ -36,6 +36,6 @@ class PluginMessageC2SP(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun log() {
|
override fun log() {
|
||||||
Log.log(LogMessageType.NETWORK_PACKETS_OUT, LogLevels.VERBOSE) { "Plugin message (channel=$channel, data=$data)" }
|
Log.log(LogMessageType.NETWORK_PACKETS_OUT, LogLevels.VERBOSE) { "Plugin message (channel=$channel, data=${data.contentToString()}" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import de.bixilon.minosoft.modding.event.events.JoinGameEvent
|
|||||||
import de.bixilon.minosoft.protocol.ErrorHandler
|
import de.bixilon.minosoft.protocol.ErrorHandler
|
||||||
import de.bixilon.minosoft.protocol.network.connection.Connection
|
import de.bixilon.minosoft.protocol.network.connection.Connection
|
||||||
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
|
||||||
|
import de.bixilon.minosoft.protocol.packets.c2s.play.ClientSettingsC2SP
|
||||||
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
|
||||||
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
|
import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
|
||||||
@ -34,6 +35,8 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
||||||
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast
|
||||||
|
import de.bixilon.minosoft.util.task.time.TimeWorker
|
||||||
|
import de.bixilon.minosoft.util.task.time.TimeWorkerTask
|
||||||
|
|
||||||
class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
val entityId: Int
|
val entityId: Int
|
||||||
@ -150,6 +153,9 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
|||||||
} else {
|
} else {
|
||||||
NoiseBiomeAccessor(connection.world)
|
NoiseBiomeAccessor(connection.world)
|
||||||
}
|
}
|
||||||
|
TimeWorker.addTask(TimeWorkerTask(100, true) { // ToDo: Temp workaround
|
||||||
|
connection.sendPacket(ClientSettingsC2SP("en_us"))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun parseDimensionCodec(nbt: Map<String, Any>, versionId: Int): HashBiMap<ResourceLocation, Dimension> {
|
private fun parseDimensionCodec(nbt: Map<String, Any>, versionId: Int): HashBiMap<ResourceLocation, Dimension> {
|
||||||
|
@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
|||||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||||
|
|
||||||
class RemoveScoreboardScoreS2CP(val entity: String, buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
class RemoveScoreboardScoreS2CP(val entity: String, buffer: PlayInByteBuffer) : PlayS2CPacket() {
|
||||||
val objective = if (buffer.versionId >= ProtocolVersions.V_14W04A) { // ToDo
|
val objective = if (buffer.versionId <= ProtocolVersions.V_14W04A) { // ToDo
|
||||||
buffer.readString()
|
buffer.readString()
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user