frengor / UltimateAdvancementAPI

A powerful API to create custom advancements for your Minecraft server.
https://modrinth.com/plugin/ultimateadvancementapi
GNU General Public License v3.0
117 stars 13 forks source link

Progression over 21474836 will throw error "Progression must be >= 0." #87

Closed WMGameLive closed 2 months ago

WMGameLive commented 2 months ago

I know the Integer max value is 2147483647, and if over the max value it will overflow. But it is only 21474836

I change the code to see what advancement cause the problem: Preconditions.checkArgument(progression >= 0, "Progression must be >= 0. : " + mcAdv.toString() + " = " + progression);

And I got this:

19:18:31 WARN: at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74) 19:18:31 WARN: at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) 19:18:31 WARN: at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) 19:18:31 WARN: at UltimateAdvancementAPI-Plugin-2.4.3.jar//com.fren_gor.ultimateAdvancementAPI.nms.wrappers.packets.PacketPlayOutAdvancementsWrapper.craftSendPacket(PacketPlayOutAdvancementsWrapper.java:59) 19:18:31 WARN: at UltimateAdvancementAPI-Plugin-2.4.3.jar//com.fren_gor.ultimateAdvancementAPI.AdvancementTab$AdvsUpdateRunnable.run(AdvancementTab.java:858) 19:18:31 WARN: at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) 19:18:31 WARN: at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) 19:18:31 WARN: at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1705) 19:18:31 WARN: at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) 19:18:31 WARN: at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1291) 19:18:31 WARN: at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:313) 19:18:31 WARN: at java.base/java.lang.Thread.run(Thread.java:1570) 19:18:31 WARN: Caused by: java.lang.IllegalArgumentException: Progression must be >= 0. : venderoe:distanceboat_30000000 = -71 19:18:31 WARN: at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143) 19:18:31 WARN: at UltimateAdvancementAPI-Plugin-2.4.3.jar//com.fren_gor.ultimateAdvancementAPI.nms.v1_21_R3.Util.getAdvancementProgress(Util.java:56) 19:18:31 WARN: at UltimateAdvancementAPI-Plugin-2.4.3.jar//com.fren_gor.ultimateAdvancementAPI.nms.v1_21_R3.packets.PacketPlayOutAdvancementsWrapper_v1_21_R3.(PacketPlayOutAdvancementsWrapper_v1_21_R3.java:35) 19:18:31 WARN: at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) 19:18:31 WARN: ... 11 more

The advancement distanceboat_30000000 is only 21474837, if it is <= 21474836, it won't get error. Image

CrazyDev05 commented 2 months ago

Did you check what value is effectively used when you are calling the api?

CrazyDev05 commented 2 months ago

nvm the issue is caused by a player or team with an overflow in the progression, so you should check that

WMGameLive commented 2 months ago

Just find out it is because I multiply progression by 100 lol I follow #73 to solve the lag issue because I have a lot of "large" advancements.