LifeMC/LifeSkript

Error with EffPush

Closed this issue · 1 comments

Describe the bug
If we try to push entities with a high power, it gives errors.

To Reproduce
Try to push entities with a high power.

Expected behavior
Expected no errors.

Screenshots
N/A

Version information:

  • Minecraft Version: 1.8.8
  • Skript Version: 2.2-Fixes-V12

Additional information

[WARNING] Excessive velocity set detected: tried to set velocity of entity #90 to (-0.27161136342574327,6.465722702417743,-7.9768513681972975).

[WARNING] java.lang.Exception: Stack trace
[WARNING] at java.lang.Thread.dumpStack(Thread.java:1336)
[WARNING] at org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity.setVelocity(CraftEntity.java:213)
[WARNING] at ch.njol.skript.effects.EffPush.execute(EffPush.java:83)
[WARNING] at ch.njol.skript.lang.Effect.run(Effect.java:55)
[WARNING] at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:65)
[WARNING] at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:93)
[WARNING] at ch.njol.skript.effects.Delay$1.run(Delay.java:94)
[WARNING] at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:59)
[WARNING] at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:349)
[WARNING] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:785)
[WARNING] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378)
[WARNING] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:715)
[WARNING] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:618)
[WARNING] at java.lang.Thread.run(Thread.java:748)

Note: This may be a Bukkit problem caused by server version, or it probably a user error, trying to push entities with high values is expected to not work.

After a short searching, i found it was a Paper problem. PaperSpigot gives these warnings with a check. It can be disabled from paper.yml by setting warnForExcessiveVelocity to false.

The code paper executes is the below, it dumps the thread stack. We can add these checks to Skript itself and warn the user (only if user uses Paper).

if ((PaperSpigotConfig.warnForExcessiveVelocity) && (
      (vel.getX() > 4.0D) || (vel.getX() < -4.0D) || (vel.getY() > 4.0D) || (vel.getY() < -4.0D) || (vel.getZ() > 4.0D) || (vel.getZ() < -4.0D)))
{
      getServer().getLogger().warning("Excessive velocity set detected: tried to set velocity of entity #" + getEntityId() + " to (" + vel.getX() + "," + vel.getY() + "," + vel.getZ() + ").");
      Thread.dumpStack();
}