11package com.peco2282.devcore.packet
22
3+ import com.peco2282.devcore.packet.environment.FakeWorldBorderBuilder
34import io.netty.buffer.ByteBuf
45import kotlinx.coroutines.CoroutineDispatcher
56import org.bukkit.Bukkit
67import org.bukkit.Location
8+ import org.bukkit.Material
79import org.bukkit.Particle
810import org.bukkit.Sound
911import org.bukkit.entity.EntityType
1012import org.bukkit.entity.Player
13+ import org.bukkit.inventory.EquipmentSlot
14+ import org.bukkit.inventory.ItemStack
1115import org.bukkit.plugin.Plugin
1216import org.bukkit.util.Vector
1317
18+ /* *
19+ * Singleton facade that delegates all [PacketHub] operations to the version-specific
20+ * [PacketHub] implementation loaded at runtime.
21+ *
22+ * Call [init] once during plugin startup to resolve and load the correct NMS implementation
23+ * for the running server version. All methods throw [UnsupportedOperationException] if
24+ * called before a compatible implementation is found.
25+ */
1426object PacketAPI: PacketHub {
1527 private var delegate: PacketHub ? = null
1628
29+ /* * Builds the fully-qualified class name for the version-specific [PacketHub] implementation. */
1730 private fun className (version : String ) =
1831 " com.peco2282.devcore.packet.v${version.replace(" ." , " _" )} .PacketHubImpl"
1932
33+ /* *
34+ * Resolves and loads the version-specific [PacketHub] implementation for the running server.
35+ *
36+ * Supported ranges: 1.20.4–1.20.6, 1.20.6–1.21.4, 1.21.4–1.21.11, 1.21.11–1.22.
37+ * Logs a warning if the version is unsupported or the class cannot be instantiated.
38+ *
39+ * @param plugin The owning plugin used for logging.
40+ */
2041 fun init (plugin : Plugin ) {
2142 val version = Version (Bukkit .getMinecraftVersion())
2243 val className = when (version) {
2344 in Version (" 1.20.4" ).. <Version ("1.20.6") - > className(" 1.20.4" )
2445 in Version (" 1.20.6" ).. <Version ("1.21.4") - > className(" 1.20.6" )
2546 in Version (" 1.21.4" ).. <Version ("1.21.11") - > className(" 1.21.4" )
2647 in Version (" 1.21.11" ).. <Version ("1.22") - > className(" 1.21.11" )
27- // 他のバージョンも同様に追加
2848 else -> {
2949 plugin.logger.warning(" Unsupported version for Packet NMS: $version " )
3050 null
@@ -50,6 +70,9 @@ object PacketAPI: PacketHub {
5070 override fun removePlayer (player : Player ) = delegate?.removePlayer(player) ? : throw UnsupportedOperationException (" Player removal is not supported on this version" )
5171 override fun sendPacket (player : Player , packet : Any ) = delegate?.sendPacket(player, packet) ? : throw UnsupportedOperationException (" Packet sending is not supported on this version" )
5272
73+ /* *
74+ * Creates a new [PacketListener] instance backed by the global Netty pipeline hooks.
75+ */
5376 fun createPacketListener (): PacketListener = Packets .createPacketListener()
5477
5578 override fun createFakeEntityBuilder (player : Player , type : EntityType , location : Location ): FakeEntityBuilder {
@@ -127,8 +150,8 @@ object PacketAPI: PacketHub {
127150 override fun fakeEquipment (
128151 player : Player ,
129152 entityId : Int ,
130- slot : org.bukkit.inventory. EquipmentSlot ,
131- item : org.bukkit.inventory. ItemStack
153+ slot : EquipmentSlot ,
154+ item : ItemStack
132155 ) {
133156 delegate?.fakeEquipment(player, entityId, slot, item)
134157 }
@@ -141,7 +164,7 @@ object PacketAPI: PacketHub {
141164 delegate?.updateInventoryTitle(player, title)
142165 }
143166
144- override fun fakeItemSlot (player : Player , windowId : Int , slot : Int , item : org.bukkit.inventory. ItemStack ) {
167+ override fun fakeItemSlot (player : Player , windowId : Int , slot : Int , item : ItemStack ) {
145168 delegate?.fakeItemSlot(player, windowId, slot, item)
146169 }
147170
@@ -164,7 +187,7 @@ object PacketAPI: PacketHub {
164187 override fun resetWorldBorder (player : Player ) {
165188 delegate?.resetWorldBorder(player)
166189 }
167- override fun setFakeWorldBorder (player : Player , builder : com.peco2282.devcore.packet.environment. FakeWorldBorderBuilder .() -> Unit ) {
190+ override fun setFakeWorldBorder (player : Player , builder : FakeWorldBorderBuilder .() -> Unit ) {
168191 delegate?.setFakeWorldBorder(player, builder)
169192 }
170193
@@ -180,7 +203,7 @@ object PacketAPI: PacketHub {
180203 player : Player ,
181204 entityId : Int ,
182205 eating : Boolean ,
183- item : org.bukkit.inventory. ItemStack ?
206+ item : ItemStack ?
184207 ) {
185208 delegate?.setEatingAnimation(player, entityId, eating, item)
186209 }
@@ -193,11 +216,11 @@ object PacketAPI: PacketHub {
193216 delegate?.setGuardPose(player, entityId, guarding)
194217 }
195218
196- override fun setSleepAnimation (player : Player , entityId : Int , sleeping : Boolean , bedLocation : org.bukkit. Location ? ) {
219+ override fun setSleepAnimation (player : Player , entityId : Int , sleeping : Boolean , bedLocation : Location ? ) {
197220 delegate?.setSleepAnimation(player, entityId, sleeping, bedLocation)
198221 }
199222
200- override fun setEntityMotion (player : Player , entityId : Int , velocity : org.bukkit.util. Vector ) {
223+ override fun setEntityMotion (player : Player , entityId : Int , velocity : Vector ) {
201224 delegate?.setEntityMotion(player, entityId, velocity)
202225 }
203226
@@ -209,7 +232,7 @@ object PacketAPI: PacketHub {
209232 delegate?.fakeExperienceBar(player, level, progress)
210233 }
211234
212- override fun setItemCooldown (player : Player , material : org.bukkit. Material , ticks : Int ) {
235+ override fun setItemCooldown (player : Player , material : Material , ticks : Int ) {
213236 delegate?.setItemCooldown(player, material, ticks)
214237 }
215238
@@ -227,7 +250,7 @@ object PacketAPI: PacketHub {
227250 override fun setEntityGlowing (player : Player , entityId : Int , glowing : Boolean ) {
228251 delegate?.setEntityGlowing(player, entityId, glowing)
229252 }
230- override fun transformEntityType (player : Player , entityId : Int , type : org.bukkit.entity. EntityType ) {
253+ override fun transformEntityType (player : Player , entityId : Int , type : EntityType ) {
231254 delegate?.transformEntityType(player, entityId, type)
232255 }
233256 override fun setEntityScale (player : Player , entityId : Int , scale : Float ) {
@@ -238,13 +261,13 @@ object PacketAPI: PacketHub {
238261 }
239262
240263 // --- interact ---
241- override fun placeFakeBlock (player : Player , location : org.bukkit. Location , material : org.bukkit. Material ) {
264+ override fun placeFakeBlock (player : Player , location : Location , material : Material ) {
242265 delegate?.placeFakeBlock(player, location, material)
243266 }
244- override fun removeFakeBlock (player : Player , location : org.bukkit. Location ) {
267+ override fun removeFakeBlock (player : Player , location : Location ) {
245268 delegate?.removeFakeBlock(player, location)
246269 }
247- override fun lockInventorySlot (player : Player , slot : Int , item : org.bukkit.inventory. ItemStack ? ) {
270+ override fun lockInventorySlot (player : Player , slot : Int , item : ItemStack ? ) {
248271 delegate?.lockInventorySlot(player, slot, item)
249272 }
250273 override fun forceHeldSlot (player : Player , slot : Int ) {
@@ -258,19 +281,19 @@ object PacketAPI: PacketHub {
258281 }
259282
260283 // --- vfx ---
261- override fun setBlockCrack (player : Player , location : org.bukkit. Location , stage : Int ) {
284+ override fun setBlockCrack (player : Player , location : Location , stage : Int ) {
262285 delegate?.setBlockCrack(player, location, stage)
263286 }
264287 override fun setEntityOnFire (player : Player , entityId : Int , onFire : Boolean ) {
265288 delegate?.setEntityOnFire(player, entityId, onFire)
266289 }
267- override fun fakeExplosion (player : Player , location : org.bukkit. Location , power : Float ) {
290+ override fun fakeExplosion (player : Player , location : Location , power : Float ) {
268291 delegate?.fakeExplosion(player, location, power)
269292 }
270- override fun fakeLightning (player : Player , location : org.bukkit. Location ) {
293+ override fun fakeLightning (player : Player , location : Location ) {
271294 delegate?.fakeLightning(player, location)
272295 }
273- override fun localSound (player : Player , sound : org.bukkit. Sound , location : org.bukkit. Location , volume : Float , pitch : Float ) {
296+ override fun localSound (player : Player , sound : Sound , location : Location , volume : Float , pitch : Float ) {
274297 delegate?.localSound(player, sound, location, volume, pitch)
275298 }
276299}
0 commit comments