Skript

Skript

788k Downloads

Kicking with a function on connect fails

2002Spiele opened this issue ยท 3 comments

commented

Skript/Server Version

[20:14:30 INFO]: [Skript] Skript's aliases can be found here: https://github.com/SkriptLang/skript-aliases
[20:14:30 INFO]: [Skript] Skript's documentation can be found here: https://docs.skriptlang.org/
[20:14:30 INFO]: [Skript] Skript's tutorials can be found here: https://docs.skriptlang.org/tutorials
[20:14:30 INFO]: [Skript] Server Version: 1.21.7-32-e792779 (MC: 1.21.7)
[20:14:30 INFO]: [Skript] Skript Version: 2.12.1 (skriptlang-github)
[20:14:30 INFO]: [Skript] Installed Skript Addons: None
[20:14:30 INFO]: [Skript] Installed dependencies: None

Bug Description

When using the on connect event, running a function that's supposed to prevent the player from joining by kicking them, won't actually prevent them. Instead, an unexpected error is sent to the console.

Expected Behavior

The function is supposed to prevent the player from connecting.

Steps to Reproduce

function kick_player(plr: player):
  kick {_plr}

on connect:
  kick_player(player)

This code is supposed to stop anyone from joining the server. However, an error shows up in the console.
Not using the function, but instead writing down the effect, works fine:

on connect:
  kick player

Errors or Screenshots

No response

Other

#!#!
#!#! [Skript] Severe Error:
#!#!
#!#! An unexpected error occurred with Skript. This issue is likely not your fault.
#!#! Report the issue: https://github.com/SkriptLang/Skript/issues
#!#!
#!#! Stack trace:
#!#! Caused by: java.lang.NullPointerException: Cannot invoke "net.minecraft.server.network.ServerGamePacketListenerImpl.disconnect(net.minecraft.network.chat.Component, org.bukkit.event.player.PlayerKickEvent$Cause)" because "org.bukkit.craftbukkit.entity.CraftPlayer.getHandle().connection" is null
#!#!     at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:756)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.effects.EffKick.execute(EffKick.java:63)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.Effect.run(Effect.java:42)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:40)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:67)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.Trigger.execute(Trigger.java:33)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.function.ScriptFunction.execute(ScriptFunction.java:72)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.function.Function.execute(Function.java:116)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.function.FunctionReference.execute(FunctionReference.java:376)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.function.EffFunctionCall.execute(EffFunctionCall.java:34)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.Effect.run(Effect.java:42)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:40)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:67)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.lang.Trigger.execute(Trigger.java:33)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.SkriptEventHandler.lambda$execute$2(SkriptEventHandler.java:165)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.SkriptEventHandler.lambda$execute$3(SkriptEventHandler.java:176)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.util.Task.callSync(Task.java:147)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.util.Task.callSync(Task.java:131)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.SkriptEventHandler.execute(SkriptEventHandler.java:174)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.SkriptEventHandler.check(SkriptEventHandler.java:120)
#!#!     at Skript-2.12.1.jar//ch.njol.skript.SkriptEventHandler$PriorityListener.lambda$new$0(SkriptEventHandler.java:46)
#!#!     at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
#!#!     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71)
#!#!     at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54)
#!#!     at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131)
#!#!     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628)
#!#!     at org.bukkit.event.Event.callEvent(Event.java:46)
#!#!     at io.papermc.paper.connection.HorriblePlayerLoginEventHack.execute(HorriblePlayerLoginEventHack.java:85)
#!#!     at org.bukkit.craftbukkit.event.CraftEventFactory.handleLoginResult(CraftEventFactory.java:2111)
#!#!     at net.minecraft.server.network.ServerLoginPacketListenerImpl.verifyLoginAndFinishConnectionSetup(ServerLoginPacketListenerImpl.java:207)
#!#!     at net.minecraft.server.network.ServerLoginPacketListenerImpl.tick(ServerLoginPacketListenerImpl.java:95)
#!#!     at net.minecraft.network.Connection.tick(Connection.java:598)
#!#!     at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:256)
#!#!     at net.minecraft.server.MinecraftServer.tickConnection(MinecraftServer.java:1762)
#!#!     at net.minecraft.server.dedicated.DedicatedServer.tickConnection(DedicatedServer.java:385)
#!#!     at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1738)
#!#!     at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1530)
#!#!     at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1252)
#!#!     at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310)
#!#!     at java.base/java.lang.Thread.run(Thread.java:1570)
#!#!
#!#! Skript: 2.12.1 (latest)
#!#!     Flavor: skriptlang-github
#!#!     Date: 15:49:27.046333
#!#! Bukkit: 1.21.7-R0.1-SNAPSHOT
#!#! Minecraft: 1.21.7
#!#! Java: 22.0.1 (Java HotSpot(TM) 64-Bit Server VM 22.0.1+8-16)
#!#! OS: Windows 10 amd64 10.0
#!#!
#!#! Server platform: Paper
#!#!
#!#! Current node: null
#!#! Current item: kick {_plr} (as org.bukkit.entity.Player)
#!#! Current trigger: function kick_player (simple event) (connect function kick test.sk, line 1)
#!#! Thread: Server thread
#!#! Language: english
#!#! Link parse mode: DISABLED
#!#! End of Error.
#!#!

Agreement

  • I have read the guidelines above and affirm I am following them with this report.
commented

Are you using Bungeecord or Velocity?

commented

No, I'm not. I am directly connecting to the server from the server list.

commented

PlayerLoginEvent, which is what on connect uses, has special handling when kicking a player, since the Player object that is retrieved from the event, is not fully complete.
So by passing the incomplete player object from this event to a function, and kicking within the function, does not get the appropriate handling it needs. Which is why you're getting the stacktrace.

Deprecation info from Paper:

this event causes the full player entity to be created much earlier than it would be in Vanilla,
leaving it with mostly disfunctional methods and state.