Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,14 @@ class PlayerPacketHandler(private val player: ServerPlayer, private val handler:
private inner class PacketHandler : ChannelDuplexHandler() {
override fun write(ctx: ChannelHandlerContext, packet: Any, promise: ChannelPromise) {
@Suppress("UNCHECKED_CAST")
super.write(ctx, handleOutgoingPacket(packet as Packet<in ClientGamePacketListener>), promise)
val packet = packet as? Packet<in ClientGamePacketListener> ?: return super.write(ctx, packet, promise)
super.write(ctx, handleOutgoingPacket(packet), promise)
}

override fun channelRead(ctx: ChannelHandlerContext, packet: Any) {
@Suppress("UNCHECKED_CAST")
super.channelRead(ctx, handleIncomingPacket(packet as Packet<in ServerGamePacketListener>))
val packet = packet as? Packet<in ServerGamePacketListener> ?: return super.channelRead(ctx, packet)
super.channelRead(ctx, handleIncomingPacket(packet))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ object NmsAccessorImpl : NmsAccessor {
val state = (block as CraftBlock).nms
val map = mutableMapOf<String, String>()
val possibleValues = mutableMapOf<String, Int>()
for (property in state.properties) {
for (property in state.block.stateDefinition.properties) {
@Suppress("UNCHECKED_CAST")
property as Property<Comparable<Any>>
map[property.name] = state.getOptionalValue(property).map(property::getName).orElse("none")
Expand All @@ -96,7 +96,7 @@ object NmsAccessorImpl : NmsAccessor {
map[name] = pair.first
possibleValues[name] = pair.second
}
return map.toSortedMap().toSortedMap(compareBy<String> { possibleValues[it] ?: 0 }.reversed())
return map.toSortedMap(compareByDescending<String> { possibleValues[it] ?: 0 }.thenBy { it })
}

override fun handleRecipeBookClick(event: PlayerRecipeBookClickEvent) {
Expand Down
4 changes: 2 additions & 2 deletions rebar/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ dependencies {
paperLibraryApi("com.github.shynixn.mccoroutine:mccoroutine-bukkit-core:2.22.0")
paperLibraryApi("xyz.xenondevs.invui:invui:2.0.0-beta.1")
paperLibraryApi("xyz.xenondevs.invui:invui-kotlin:2.0.0-beta.1")
implementation("com.github.Tofaa2.EntityLib:spigot:a5184b3bdc")
implementation("com.github.retrooper:packetevents-spigot:2.11.1")
implementation("com.github.Tofaa2.EntityLib:spigot:f0318e298f")
implementation("com.github.retrooper:packetevents-spigot:2.11.2")
implementation("info.debatty:java-string-similarity:2.0.0")
implementation("org.bstats:bstats-bukkit:2.2.1")
paperLibrary("com.github.ben-manes.caffeine:caffeine:3.2.2")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ open class RebarBlock internal constructor(val block: Block) {
meta.item = SpigotConversionUtil.fromBukkitItemStack(item)
meta.displayType = ItemDisplayMeta.DisplayType.FIXED
meta.brightnessOverride = 15 shl 4 or 15 shl 20;
meta.scale = Vector3f(1.0000175f, 1.0000175f, 1.0000175f)
meta.scale = Vector3f(BlockTextureEntity.BLOCK_OVERLAP_SCALE, BlockTextureEntity.BLOCK_OVERLAP_SCALE, BlockTextureEntity.BLOCK_OVERLAP_SCALE)
meta.width = 0f
meta.height = 0f
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.github.pylonmc.rebar.entity.packet

import com.github.retrooper.packetevents.PacketEvents
import com.github.retrooper.packetevents.PacketEventsAPI
import com.github.retrooper.packetevents.protocol.entity.data.EntityData
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes
Expand Down Expand Up @@ -42,7 +44,7 @@ open class BlockTextureEntity(
open fun sendPacketToViewer(viewer: UUID, wrapper: PacketWrapper<*>, distanceSquared: Double) {
var packet = wrapper
if (packet is WrapperPlayServerEntityMetadata) {
val scaleIncrease = (min(distanceSquared, 1600.0) * 0.0005 / 20.0).toFloat()
val scaleIncrease = (min(distanceSquared, 1600.0) * SCALE_DISTANCE_INCREASE / 20.0).toFloat()
val metadata = ArrayList(packet.entityMetadata)
var scale = metadata.find { it.index == SCALE_INDEX && it.type == EntityDataTypes.VECTOR3F } ?: return
val index = metadata.indexOf(scale)
Expand All @@ -51,12 +53,14 @@ open class BlockTextureEntity(
packet = WrapperPlayServerEntityMetadata(packet.entityId, metadata)
}

val protocolManager = EntityLib.getOptionalApi().orElse(null)?.packetEvents?.protocolManager ?: return
val protocolManager = PacketEvents.getAPI().protocolManager ?: return
val channel = protocolManager.getChannel(viewer) ?: return
protocolManager.sendPacket(channel, packet)
}

protected companion object {
companion object {
const val SCALE_INDEX = 12
const val SCALE_DISTANCE_INCREASE = 0.0005f
const val BLOCK_OVERLAP_SCALE = 1.0004f
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package io.github.pylonmc.rebar.resourcepack.armor
import com.github.retrooper.packetevents.event.PacketListener
import com.github.retrooper.packetevents.event.PacketReceiveEvent
import com.github.retrooper.packetevents.event.PacketSendEvent
import com.github.retrooper.packetevents.protocol.ConnectionState
import com.github.retrooper.packetevents.protocol.item.ItemStack
import com.github.retrooper.packetevents.protocol.packettype.PacketType
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientCreativeInventoryAction
Expand Down Expand Up @@ -32,10 +33,10 @@ object ArmorTextureEngine : PacketListener {
set(value) = this.persistentDataContainer.set(customArmorTexturesKey, PersistentDataType.BOOLEAN, RebarConfig.ArmorTextureConfig.FORCED || value)

override fun onPacketSend(event: PacketSendEvent?) {
if (event == null) return
if (event == null || event.connectionState != ConnectionState.PLAY) return

val player = event.getPlayer<Player>()
if (player == null || !player.hasCustomArmorTextures) return
if (!player.hasCustomArmorTextures) return

when (event.packetType) {
PacketType.Play.Server.SET_SLOT -> handleSetSlot(WrapperPlayServerSetSlot(event))
Expand All @@ -47,11 +48,7 @@ object ArmorTextureEngine : PacketListener {
}

override fun onPacketReceive(event: PacketReceiveEvent?) {
if (event == null) return

val player = event.getPlayer<Player>()
if (player == null) return

if (event == null || event.connectionState != ConnectionState.PLAY) return
when (event.packetType) {
PacketType.Play.Client.CREATIVE_INVENTORY_ACTION -> handleCreativeAction(WrapperPlayClientCreativeInventoryAction(event))
else -> {}
Expand Down