mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 11:24:56 -04:00
fix world border interpolation
This commit is contained in:
parent
29671aefd8
commit
63fc8b5337
@ -17,6 +17,7 @@ import de.bixilon.kotlinglm.vec2.Vec2d
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kotlinglm.vec3.Vec3d
|
||||
import de.bixilon.kotlinglm.vec3.Vec3i
|
||||
import de.bixilon.kutil.concurrent.lock.simple.SimpleLock
|
||||
import de.bixilon.kutil.math.interpolation.DoubleInterpolation.interpolateLinear
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.data.world.World
|
||||
@ -24,7 +25,7 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2dUtil.EMPTY
|
||||
|
||||
class WorldBorder {
|
||||
var center = Vec2d.EMPTY
|
||||
var radius = World.MAX_SIZE.toDouble()
|
||||
var diameter = DEFAULT_DIAMETER
|
||||
var warningTime = 0
|
||||
var warningBlocks = 0
|
||||
var portalBound = 0
|
||||
@ -34,8 +35,10 @@ class WorldBorder {
|
||||
|
||||
private var lerpStart = -1L
|
||||
private var lerpEnd = -1L
|
||||
private var oldRadius = World.MAX_SIZE.toDouble()
|
||||
private var newRadius = World.MAX_SIZE.toDouble()
|
||||
private var oldDiameter = DEFAULT_DIAMETER
|
||||
private var newDiameter = DEFAULT_DIAMETER
|
||||
|
||||
val lock = SimpleLock()
|
||||
|
||||
fun isOutside(blockPosition: Vec3i): Boolean {
|
||||
return isOutside(blockPosition.x.toDouble(), blockPosition.z.toDouble())
|
||||
@ -50,50 +53,80 @@ class WorldBorder {
|
||||
}
|
||||
|
||||
fun isOutside(x: Double, z: Double): Boolean {
|
||||
lock.acquire()
|
||||
val radius = diameter / 2
|
||||
if (x !in radius - center.x..radius + center.x) {
|
||||
lock.release()
|
||||
return false
|
||||
}
|
||||
if (z !in radius - center.y..radius + center.y) {
|
||||
lock.release()
|
||||
return false
|
||||
}
|
||||
lock.release()
|
||||
return true
|
||||
}
|
||||
|
||||
fun stopLerp() {
|
||||
lock.lock()
|
||||
lerpStart = -1L
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
fun lerp(oldRadius: Double, newRadius: Double, speed: Long) {
|
||||
fun interpolate(oldDiameter: Double, newDiameter: Double, millis: Long) {
|
||||
if (millis == 0L) {
|
||||
stopLerp()
|
||||
diameter = newDiameter
|
||||
}
|
||||
lock.lock()
|
||||
val time = TimeUtil.millis
|
||||
lerpStart = time
|
||||
lerpEnd = time + speed
|
||||
this.oldRadius = oldRadius
|
||||
this.newRadius = newRadius
|
||||
lerpEnd = time + millis
|
||||
this.oldDiameter = oldDiameter
|
||||
this.newDiameter = newDiameter
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
fun tick() {
|
||||
lock.lock()
|
||||
if (lerpStart < 0L) {
|
||||
lock.unlock()
|
||||
return
|
||||
}
|
||||
val time = TimeUtil.millis
|
||||
if (lerpEnd > time) {
|
||||
if (lerpEnd <= time) {
|
||||
state = WorldBorderState.STATIC
|
||||
lerpStart = -1
|
||||
lerpStart = -1L
|
||||
lock.unlock()
|
||||
return
|
||||
}
|
||||
val oldDiameter = diameter
|
||||
|
||||
val remaining = lerpEnd - time
|
||||
val delta = (lerpEnd - lerpStart)
|
||||
val oldRadius = radius
|
||||
val radius = interpolateLinear(remaining.toDouble() / delta.toDouble(), this.oldRadius, this.newRadius)
|
||||
this.radius = radius
|
||||
state = if (oldRadius > radius) {
|
||||
val totalTime = (lerpEnd - lerpStart)
|
||||
val diameter = interpolateLinear(remaining.toDouble() / totalTime.toDouble(), this.newDiameter, this.oldDiameter)
|
||||
this.diameter = diameter
|
||||
|
||||
state = if (oldDiameter > diameter) {
|
||||
WorldBorderState.SHRINKING
|
||||
} else {
|
||||
} else if (oldDiameter < diameter) {
|
||||
WorldBorderState.GROWING
|
||||
} else {
|
||||
lerpStart = -1L
|
||||
WorldBorderState.STATIC
|
||||
}
|
||||
if (oldRadius == radius) {
|
||||
lerpStart = -1
|
||||
state = WorldBorderState.STATIC
|
||||
}
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
fun reset() {
|
||||
lock.lock()
|
||||
diameter = DEFAULT_DIAMETER
|
||||
lerpStart = -1L
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
const val DEFAULT_DIAMETER = World.MAX_SIZE.toDouble() * 2
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.world.border
|
||||
|
||||
import de.bixilon.kotlinglm.vec2.Vec2
|
||||
import de.bixilon.kutil.latch.CountUpAndDownLatch
|
||||
import de.bixilon.kutil.time.TimeUtil
|
||||
import de.bixilon.minosoft.data.registries.ResourceLocation
|
||||
import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor
|
||||
import de.bixilon.minosoft.data.world.border.WorldBorderState
|
||||
@ -31,15 +32,14 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
|
||||
class WorldBorderRenderer(
|
||||
private val connection: PlayConnection,
|
||||
override val renderWindow: RenderWindow,
|
||||
) : Renderer, TranslucentDrawable {
|
||||
override val renderSystem: RenderSystem = renderWindow.renderSystem
|
||||
private val shader = renderSystem.createShader(ResourceLocation(ProtocolDefinition.MINOSOFT_NAMESPACE, "world/border"))
|
||||
private val borderMesh = WorldBorderMesh(renderWindow)
|
||||
private val border = connection.world.border
|
||||
private val border = renderWindow.connection.world.border
|
||||
private lateinit var texture: AbstractTexture
|
||||
private var textureOffset = 0.0f
|
||||
private var offsetReset = TimeUtil.millis
|
||||
|
||||
override fun init(latch: CountUpAndDownLatch) {
|
||||
shader.load()
|
||||
@ -66,10 +66,11 @@ class WorldBorderRenderer(
|
||||
polygonOffsetUnit = -3.0f,
|
||||
)
|
||||
shader.use()
|
||||
textureOffset += 0.01f
|
||||
if (textureOffset >= 1.0f) {
|
||||
textureOffset = 0.0f
|
||||
val time = TimeUtil.millis
|
||||
if (offsetReset - time > ANIMATION_SPEED) {
|
||||
offsetReset = time
|
||||
}
|
||||
val textureOffset = (offsetReset - time) / ANIMATION_SPEED.toFloat()
|
||||
shader.setFloat("uTextureOffset", textureOffset)
|
||||
shader.setFloat("uCameraHeight", renderWindow.camera.matrixHandler.eyePosition.y)
|
||||
|
||||
@ -79,7 +80,7 @@ class WorldBorderRenderer(
|
||||
WorldBorderState.STATIC -> STATIC_COLOR
|
||||
}
|
||||
shader.setRGBColor("uTintColor", color)
|
||||
shader.setFloat("uRadius", border.radius.toFloat())
|
||||
shader.setFloat("uRadius", border.diameter.toFloat() / 2.0f)
|
||||
shader.setVec2("uCenter", Vec2(border.center))
|
||||
}
|
||||
|
||||
@ -92,11 +93,12 @@ class WorldBorderRenderer(
|
||||
val GROWING_COLOR = "#40FF80".asColor()
|
||||
val SHRINKING_COLOR = "#FF3030".asColor()
|
||||
val STATIC_COLOR = "#20A0FF".asColor()
|
||||
const val ANIMATION_SPEED = 2000
|
||||
|
||||
private val TEXTURE = "minecraft:misc/forcefield".toResourceLocation().texture()
|
||||
|
||||
override fun build(connection: PlayConnection, renderWindow: RenderWindow): WorldBorderRenderer {
|
||||
return WorldBorderRenderer(connection, renderWindow)
|
||||
return WorldBorderRenderer(renderWindow)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -169,6 +169,7 @@ class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
|
||||
if (connection.version.versionId >= ProtocolVersions.V_19W36A && !connection.profiles.rendering.performance.fastBiomeNoise) {
|
||||
connection.world.cacheBiomeAccessor = NoiseBiomeAccessor(connection)
|
||||
}
|
||||
connection.world.border.reset()
|
||||
|
||||
connection.settingsManager.sendClientSettings()
|
||||
|
||||
|
@ -23,22 +23,22 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
||||
@LoadPacket(parent = true)
|
||||
class InitializeWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP {
|
||||
val center = buffer.readVec2d()
|
||||
val oldRadius = buffer.readDouble()
|
||||
val newRadius = buffer.readDouble()
|
||||
val speed = buffer.readVarLong()
|
||||
val oldDiameter = buffer.readDouble()
|
||||
val newDiameter = buffer.readDouble()
|
||||
val millis = buffer.readVarLong()
|
||||
val portalBound = buffer.readVarInt()
|
||||
val warningTime = buffer.readVarInt()
|
||||
val warningBlocks = buffer.readVarInt()
|
||||
|
||||
override fun handle(connection: PlayConnection) {
|
||||
connection.world.border.center = center
|
||||
connection.world.border.lerp(oldRadius, newRadius, speed)
|
||||
connection.world.border.interpolate(oldDiameter, newDiameter, millis)
|
||||
connection.world.border.portalBound = portalBound
|
||||
connection.world.border.warningTime = warningTime
|
||||
connection.world.border.warningBlocks = warningBlocks
|
||||
}
|
||||
|
||||
override fun log(reducedLog: Boolean) {
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Initialize world border (center=$center, oldRadius=$oldRadius, newRadius=$newRadius, speed=$speed, portalBound=$portalBound, warningTime=$warningTime, warningBlocks=$warningBlocks)" }
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Initialize world border (center=$center, oldDiameter=$oldDiameter, newDiameter=$newDiameter, speed=$millis, portalBound=$portalBound, warningTime=$warningTime, warningBlocks=$warningBlocks)" }
|
||||
}
|
||||
}
|
||||
|
@ -21,16 +21,16 @@ import de.bixilon.minosoft.util.logging.LogLevels
|
||||
import de.bixilon.minosoft.util.logging.LogMessageType
|
||||
|
||||
@LoadPacket(parent = true)
|
||||
class LerpWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP {
|
||||
val oldRadius = buffer.readDouble()
|
||||
val newRadius = buffer.readDouble()
|
||||
val speed = buffer.readVarLong()
|
||||
class InterpolateWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP {
|
||||
val oldDiameter = buffer.readDouble()
|
||||
val newDiameter = buffer.readDouble()
|
||||
val millis = buffer.readVarLong()
|
||||
|
||||
override fun handle(connection: PlayConnection) {
|
||||
connection.world.border.lerp(oldRadius, newRadius, speed)
|
||||
connection.world.border.interpolate(oldDiameter, newDiameter, millis)
|
||||
}
|
||||
|
||||
override fun log(reducedLog: Boolean) {
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Lerp size world border (oldRadius=$oldRadius, newRadius=$newRadius, speed=$speed)" }
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Interpolate size world border (oldDiameter=$oldDiameter, newDiameter=$newDiameter, millis=$millis)" }
|
||||
}
|
||||
}
|
@ -22,14 +22,14 @@ import de.bixilon.minosoft.util.logging.LogMessageType
|
||||
|
||||
@LoadPacket(parent = true)
|
||||
class SizeWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP {
|
||||
val radius = buffer.readDouble()
|
||||
val diameter = buffer.readDouble()
|
||||
|
||||
override fun handle(connection: PlayConnection) {
|
||||
connection.world.border.stopLerp()
|
||||
connection.world.border.radius = radius
|
||||
connection.world.border.diameter = diameter
|
||||
}
|
||||
|
||||
override fun log(reducedLog: Boolean) {
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Size set world border (radius=$radius)" }
|
||||
Log.log(LogMessageType.NETWORK_PACKETS_IN, level = LogLevels.VERBOSE) { "Size set world border (diameter=$diameter)" }
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ object WorldBorderS2CF : PlayPacketFactory {
|
||||
override fun createPacket(buffer: PlayInByteBuffer): WorldBorderS2CP {
|
||||
return when (WorldBorderActions[buffer.readVarInt()]) {
|
||||
WorldBorderActions.SET_SIZE -> SizeWorldBorderS2CP(buffer)
|
||||
WorldBorderActions.LERP_SIZE -> LerpWorldBorderS2CP(buffer)
|
||||
WorldBorderActions.INTERPOLATE_SIZE -> InterpolateWorldBorderS2CP(buffer)
|
||||
WorldBorderActions.SET_CENTER -> CenterWorldBorderS2CP(buffer)
|
||||
WorldBorderActions.INITIALIZE -> InitializeWorldBorderS2CP(buffer)
|
||||
WorldBorderActions.SET_WARNING_TIME -> WarnTimeWorldBorderS2CP(buffer)
|
||||
@ -39,7 +39,7 @@ object WorldBorderS2CF : PlayPacketFactory {
|
||||
|
||||
enum class WorldBorderActions {
|
||||
SET_SIZE,
|
||||
LERP_SIZE,
|
||||
INTERPOLATE_SIZE,
|
||||
SET_CENTER,
|
||||
INITIALIZE,
|
||||
SET_WARNING_TIME,
|
||||
|
@ -10,7 +10,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -25,7 +25,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -46,7 +46,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -56,7 +56,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -218,7 +218,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -320,7 +320,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -365,7 +365,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -380,7 +380,7 @@
|
||||
"packets": {
|
||||
"c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "chat_suggestions", "container_action", "container_button", "container_click", "close_container", "plugin", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "steer_vehicle", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"],
|
||||
"s2c": [
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "lerp_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
"entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "chat_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "plugin", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user