Better Combat [Fabric & Forge]

Better Combat [Fabric & Forge]

35M Downloads

Disconnected from internal server when too many weapon_attributes are created

ZephaniahNoah opened this issue ยท 1 comments

commented

Minecraft version - 1.20.1
Mod loader - Forge 47.4.6 (Also tested on 47.4.0)
Mod version - 1.8.6

I created 1,368 weapons with a weapon_attributes json data file for each one. Upon loading a world I am disconnected from the internal server with the following error:
Image

I noticed #1 was a similar issue. But it's very old and closed.

I am currently getting around this problem by using the XL Packets mod. But that's not a good long term solution.

The annoying thing is that most of these weapons are just generic variants of some basic weapon types. And each weapon_attributes file is something like:

{
	"parent": "modid:base/greatsword"
}

But that wasn't enough reduction to prevent the error.

Here is the noteworthy part of the log:

[18:15:51] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 1115584 bytes (in 112 string chunks with the size of 10000)
[18:15:51] [Server thread/INFO] [minecraft/IntegratedServer]: Changing view distance to 12, from 10
[18:15:51] [Server thread/INFO] [minecraft/IntegratedServer]: Changing simulation distance to 12, from 0
[18:15:51] [Render thread/WARN] [io.ne.ut.in.SystemPropertyUtil/]: Unable to parse the boolean system property 'java.net.preferIPv6Addresses':system - using the default value: false
[authlib-injector] [INFO] Transformed [net.minecraft.server.network.ServerLoginPacketListenerImpl] with [Username Character Check Transformer]
[18:15:51] [Netty Local Client IO #0/INFO] [ne.mi.ne.NetworkHooks/]: Connected to a modded server.
[18:15:52] [Server thread/INFO] [minecraft/PlayerList]: DudeBro345[local:E:ccb9cbb6] logged in with entity id 1 at (-3.8665414106969913, -60.0, -0.6106326699942592)
[18:15:52] [Server thread/INFO] [minecraft/MinecraftServer]: DudeBro345 joined the game
[18:15:52] [Server thread/ERROR] [ne.mi.ev.EventBus/EVENTBUS]: Exception caught during firing event: Payload may not be larger than 1048576 bytes
	Index: 3
	Listeners:
		0: NORMAL
		1: net.minecraftforge.eventbus.EventBus$$Lambda$4290/0x00007d7e88b0ee40@7f3e4f90
		2: ASM: net.minecraftforge.common.ForgeInternalHandler@26e77d89 playerLogin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
		3: ASM: class net.bettercombat.forge.events.ForgeEvents onPlayerJoin(Lnet/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent;)V
java.lang.IllegalArgumentException: Payload may not be larger than 1048576 bytes
	at TRANSFORMER/[email protected]/net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket.<init>(ClientboundCustomPayloadPacket.java:35)
	at TRANSFORMER/[email protected]/net.minecraftforge.network.NetworkDirection.lambda$static$1(NetworkDirection.java:28)
	at TRANSFORMER/[email protected]/net.minecraftforge.network.NetworkDirection.buildPacket(NetworkDirection.java:79)
	at TRANSFORMER/[email protected]/net.minecraftforge.network.simple.SimpleChannel.toVanillaPacket(SimpleChannel.java:112)
	at TRANSFORMER/[email protected]/net.minecraftforge.network.simple.SimpleChannel.send(SimpleChannel.java:107)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(ServerPlayNetworking.java:28)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.forge.events.ForgeEvents.lambda$onPlayerJoin$0(ForgeEvents.java:24)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.network.ServerNetwork.lambda$initializeHandlers$0(ServerNetwork.java:56)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.forge.events.ForgeEvents.lambda$onPlayerJoin$1(ForgeEvents.java:22)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.forge.events.ForgeEvents.onPlayerJoin(ForgeEvents.java:22)
	at TRANSFORMER/[email protected]+1.20.1/net.bettercombat.forge.events.__ForgeEvents_onPlayerJoin_PlayerLoggedInEvent.invoke(.dynamic)
	at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73)
	at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:315)
	at MC-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:296)
	at TRANSFORMER/[email protected]/net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedIn(ForgeEventFactory.java:900)
	at TRANSFORMER/[email protected]/net.minecraft.server.players.PlayerList.m_11261_(PlayerList.java:261)
	at TRANSFORMER/[email protected]/net.minecraft.server.network.ServerLoginPacketListenerImpl.m_143699_(ServerLoginPacketListenerImpl.java:139)
	at TRANSFORMER/[email protected]/net.minecraft.server.network.ServerLoginPacketListenerImpl.m_10055_(ServerLoginPacketListenerImpl.java:126)
	at TRANSFORMER/[email protected]/net.minecraft.server.network.ServerLoginPacketListenerImpl.m_9933_(ServerLoginPacketListenerImpl.java:70)
	at TRANSFORMER/[email protected]/net.minecraft.network.Connection.m_129483_(Connection.java:263)
	at TRANSFORMER/[email protected]/net.minecraft.server.network.ServerConnectionListener.m_9721_(ServerConnectionListener.java:142)
	at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:907)
	at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:814)
	at TRANSFORMER/[email protected]/net.minecraft.client.server.IntegratedServer.m_5705_(IntegratedServer.java:89)
	at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661)
	at TRANSFORMER/[email protected]/net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251)
	at java.base/java.lang.Thread.run(Thread.java:840)

[18:15:52] [Server thread/ERROR] [minecraft/ServerLoginPacketListenerImpl]: Couldn't place player in world
java.lang.IllegalArgumentException: Payload may not be larger than 1048576 bytes
	at net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket.<init>(ClientboundCustomPayloadPacket.java:35) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading}
	at net.minecraftforge.network.NetworkDirection.lambda$static$1(NetworkDirection.java:28) ~[forge-1.20.1-47.4.6-universal.jar%23149!/:?] {re:classloading}
	at net.minecraftforge.network.NetworkDirection.buildPacket(NetworkDirection.java:79) ~[forge-1.20.1-47.4.6-universal.jar%23149!/:?] {re:classloading}
	at net.minecraftforge.network.simple.SimpleChannel.toVanillaPacket(SimpleChannel.java:112) ~[forge-1.20.1-47.4.6-universal.jar%23149!/:?] {re:classloading}
	at net.minecraftforge.network.simple.SimpleChannel.send(SimpleChannel.java:107) ~[forge-1.20.1-47.4.6-universal.jar%23149!/:?] {re:classloading}
	at net.bettercombat.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(ServerPlayNetworking.java:28) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading}
	at net.bettercombat.forge.events.ForgeEvents.lambda$onPlayerJoin$0(ForgeEvents.java:24) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading}
	at net.bettercombat.network.ServerNetwork.lambda$initializeHandlers$0(ServerNetwork.java:56) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading}
	at net.bettercombat.forge.events.ForgeEvents.lambda$onPlayerJoin$1(ForgeEvents.java:22) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading}
	at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {re:mixin}
	at net.bettercombat.forge.events.ForgeEvents.onPlayerJoin(ForgeEvents.java:22) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading}
	at net.bettercombat.forge.events.__ForgeEvents_onPlayerJoin_PlayerLoggedInEvent.invoke(.dynamic) ~[bettercombat-forge-1.8.6+1.20.1.jar%23138!/:?] {re:classloading,pl:eventbus:B}
	at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:73) ~[eventbus-6.0.5.jar%23113!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%23113!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%23113!/:?] {}
	at net.minecraftforge.event.ForgeEventFactory.firePlayerLoggedIn(ForgeEventFactory.java:900) ~[forge-1.20.1-47.4.6-universal.jar%23149!/:?] {re:classloading}
	at net.minecraft.server.players.PlayerList.m_11261_(PlayerList.java:261) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.m_143699_(ServerLoginPacketListenerImpl.java:139) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.m_10055_(ServerLoginPacketListenerImpl.java:126) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerLoginPacketListenerImpl.m_9933_(ServerLoginPacketListenerImpl.java:70) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.network.Connection.m_129483_(Connection.java:263) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading}
	at net.minecraft.server.network.ServerConnectionListener.m_9721_(ServerConnectionListener.java:142) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading}
	at net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:907) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:814) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.client.server.IntegratedServer.m_5705_(IntegratedServer.java:89) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[client-1.20.1-20230612.114412-srg.jar%23144!/:?] {re:classloading,pl:accesstransformer:B}
	at java.lang.Thread.run(Thread.java:840) ~[?:?] {}
[18:15:52] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: DudeBro345 lost connection: Invalid player data
commented

Nice workaround with the XL packets.

This issue is not considered critical as the use case is far from common.

1.21.1 versions have compression for the sync packet, hence future versions have this issue mitigated.

No capacity to update legacy versions, use them as they are.