[SPIGOT-7635] Player#transfer() throwing error Created: 25/Apr/24  Updated: 25/Dec/24  Resolved: 25/Apr/24

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Shane Bee Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None

Attachments: File Test-1.0-SNAPSHOT.jar    
Version: CraftBukkit version 4117-Spigot-b698b49-ebb50e1 (MC: 1.20.5)
Plugin: Just my test plugin
Guidelines Read: Yes

 Description   

When using `Player#transfer()` an error is throw about a missing method:

[21:59:43] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'test' in plugin TestPlugin v${project.version}
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-api-1.20.5-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.20.5-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_20_R4.CraftServer.dispatchCommand(CraftServer.java:887) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at org.bukkit.craftbukkit.v1_20_R4.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:50) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73) ~[brigadier-1.2.9.jar:?]
	at net.minecraft.commands.execution.tasks.ExecuteCommand.a(SourceFile:29) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(SourceFile:13) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.execution.UnboundEntryAction.a(SourceFile:8) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.execution.CommandQueueEntry.a(SourceFile:8) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.execution.ExecutionContext.a(SourceFile:107) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:416) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.CommandDispatcher.performCommand(CommandDispatcher.java:338) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:325) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.network.PlayerConnection.b(PlayerConnection.java:1830) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.network.PlayerConnection.lambda$handleChatCommand$7(PlayerConnection.java:1806) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.TickTask.run(SourceFile:18) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.util.thread.IAsyncTaskHandler.d(SourceFile:162) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(SourceFile:23) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1242) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.util.thread.IAsyncTaskHandler.A(SourceFile:136) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.bu(MinecraftServer.java:1221) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.A(MinecraftServer.java:1214) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.util.thread.IAsyncTaskHandler.bA(SourceFile:121) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.v_(MinecraftServer.java:1185) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.y(MinecraftServer.java:1071) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:311) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.AbstractMethodError: Receiver class net.minecraft.server.network.PlayerConnection does not define or inherit an implementation of the resolved method 'abstract net.minecraft.network.EnumProtocol protocol()' of interface org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer$TransferCookieConnection.
	at org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer.transfer(CraftPlayer.java:334) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]
	at a.b.c.command.TestCommand.onCommand(TestCommand.java:20) ~[?:?]
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-api-1.20.5-R0.1-SNAPSHOT.jar:?]
	... 27 more

notable part:

Caused by: java.lang.AbstractMethodError: Receiver class net.minecraft.server.network.PlayerConnection does not define or inherit an implementation of the resolved method 'abstract net.minecraft.network.EnumProtocol protocol()' of interface org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer$TransferCookieConnection.
	at org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer.transfer(CraftPlayer.java:334) ~[spigot-1.20.5-R0.1-SNAPSHOT.jar:4117-Spigot-b698b49-ebb50e1]

code to test:

player.transfer("localhost", 25565);

yes, I have tested with 2 different servers, and different ports, etc etc.
The error happens no matter what.

I will include a test plugin if you want.
A second server is not required for this test as the error occurs before even attempting to transfer the player.


Generated at Sat Dec 13 13:43:06 UTC 2025 using Jira 10.3.13#10030013-sha1:56dd970ae30ebfeda3a697d25be1f6388b68a422.