Skip to content

Network optimization 2#132

Open
orangishcat wants to merge 40 commits into
aehmttw:masterfrom
orangishcat:network-optimization-2
Open

Network optimization 2#132
orangishcat wants to merge 40 commits into
aehmttw:masterfrom
orangishcat:network-optimization-2

Conversation

@orangishcat
Copy link
Copy Markdown
Contributor

@orangishcat orangishcat commented Mar 29, 2026

  • Merge the other one first
  • Remove all the write and read methods (excluding a few with unsupported types)
  • Add validation to registered events to ensure reading, writing, and types are correct
  • TankPlayerRemote.quickActions changed from boolean array to an int, where each bit of the integer serves as a boolean

Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
# Conflicts:
#	src/main/java/tanks/Game.java
#	src/main/java/tanks/hotbar/ItemBar.java
#	src/main/java/tanks/network/event/EventSetItemCount.java
#	src/main/java/tanks/network/event/EventTankUpdateHealth.java
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
# Conflicts:
#	src/main/java/tanks/Game.java
Signed-off-by: orangishcat <fdsnail2@gmail.com>
# Conflicts:
#	src/main/java/tanks/hotbar/ItemBar.java
#	src/main/java/tanks/network/event/EventAddNPCShopItem.java
#	src/main/java/tanks/network/event/EventAddShopItem.java
#	src/main/java/tanks/network/event/EventSortShopButtons.java
Signed-off-by: orangishcat <fdsnail2@gmail.com>
# Conflicts:
#	src/main/java/tanks/network/event/EventExplosion.java
# Conflicts:
#	src/main/java/tanks/AreaEffectFreeze.java
#	src/main/java/tanks/Chunk.java
#	src/main/java/tanks/DebugKeybinds.java
#	src/main/java/tanks/Game.java
#	src/main/java/tanks/Level.java
#	src/main/java/tanks/ModAPI.java
#	src/main/java/tanks/Panel.java
#	src/main/java/tanks/attribute/AttributeModifier.java
#	src/main/java/tanks/bullet/Bullet.java
#	src/main/java/tanks/bullet/BulletAirStrike.java
#	src/main/java/tanks/bullet/BulletInstant.java
#	src/main/java/tanks/bullet/BulletReboundIndicator.java
#	src/main/java/tanks/gui/screen/ScreenDebug.java
#	src/main/java/tanks/item/Item.java
#	src/main/java/tanks/network/Client.java
#	src/main/java/tanks/network/ClientHandler.java
#	src/main/java/tanks/network/MessageReader.java
#	src/main/java/tanks/network/NetworkEventMap.java
#	src/main/java/tanks/network/NetworkUtils.java
#	src/main/java/tanks/network/Server.java
#	src/main/java/tanks/network/ServerHandler.java
#	src/main/java/tanks/network/event/EventAddColoredTile.java
#	src/main/java/tanks/network/event/EventAddFixedShape.java
#	src/main/java/tanks/network/event/EventAddNPC.java
#	src/main/java/tanks/network/event/EventAddObstacle.java
#	src/main/java/tanks/network/event/EventAddObstacleBullet.java
#	src/main/java/tanks/network/event/EventAddObstacleText.java
#	src/main/java/tanks/network/event/EventAddScoreboard.java
#	src/main/java/tanks/network/event/EventAirdropTank.java
#	src/main/java/tanks/network/event/EventAnnounceConnection.java
#	src/main/java/tanks/network/event/EventArcadeClearMovables.java
#	src/main/java/tanks/network/event/EventArcadeFrenzy.java
#	src/main/java/tanks/network/event/EventBeginLevelCountdown.java
#	src/main/java/tanks/network/event/EventBulletBounce.java
#	src/main/java/tanks/network/event/EventBulletDestroyed.java
#	src/main/java/tanks/network/event/EventBulletInstantWaypoint.java
#	src/main/java/tanks/network/event/EventBulletReboundIndicator.java
#	src/main/java/tanks/network/event/EventBulletStunEffect.java
#	src/main/java/tanks/network/event/EventBulletUpdateTarget.java
#	src/main/java/tanks/network/event/EventChangeBackgroundColor.java
#	src/main/java/tanks/network/event/EventChangeScoreboardAttribute.java
#	src/main/java/tanks/network/event/EventChat.java
#	src/main/java/tanks/network/event/EventClearNPCShop.java
#	src/main/java/tanks/network/event/EventClearShop.java
#	src/main/java/tanks/network/event/EventConnectionSuccess.java
#	src/main/java/tanks/network/event/EventCreateFreezeEffect.java
#	src/main/java/tanks/network/event/EventDisplayText.java
#	src/main/java/tanks/network/event/EventDisplayTextGroup.java
#	src/main/java/tanks/network/event/EventEnterLevel.java
#	src/main/java/tanks/network/event/EventItemDrop.java
#	src/main/java/tanks/network/event/EventItemPickup.java
#	src/main/java/tanks/network/event/EventKick.java
#	src/main/java/tanks/network/event/EventLayMine.java
#	src/main/java/tanks/network/event/EventLevelExit.java
#	src/main/java/tanks/network/event/EventLevelFinished.java
#	src/main/java/tanks/network/event/EventLoadItemBarSlot.java
#	src/main/java/tanks/network/event/EventLoadLevel.java
#	src/main/java/tanks/network/event/EventMutePlayer.java
#	src/main/java/tanks/network/event/EventNudge.java
#	src/main/java/tanks/network/event/EventObstacleBoostPanelEffect.java
#	src/main/java/tanks/network/event/EventObstacleDestroy.java
#	src/main/java/tanks/network/event/EventObstacleShrubberyBurn.java
#	src/main/java/tanks/network/event/EventPing.java
#	src/main/java/tanks/network/event/EventPlayerAutoReady.java
#	src/main/java/tanks/network/event/EventPlayerAutoReadyConfirm.java
#	src/main/java/tanks/network/event/EventPlayerChat.java
#	src/main/java/tanks/network/event/EventPlayerReady.java
#	src/main/java/tanks/network/event/EventPlayerRevealBuild.java
#	src/main/java/tanks/network/event/EventPlayerSetBuild.java
#	src/main/java/tanks/network/event/EventPurchaseBuild.java
#	src/main/java/tanks/network/event/EventPurchaseNPCItem.java
#	src/main/java/tanks/network/event/EventReturnToCrusade.java
#	src/main/java/tanks/network/event/EventReturnToLobby.java
#	src/main/java/tanks/network/event/EventScoreboardUpdateScore.java
#	src/main/java/tanks/network/event/EventSendClientDetails.java
#	src/main/java/tanks/network/event/EventSendTankColors.java
#	src/main/java/tanks/network/event/EventSetItem.java
#	src/main/java/tanks/network/event/EventSetItemBarSlot.java
#	src/main/java/tanks/network/event/EventSetItemCount.java
#	src/main/java/tanks/network/event/EventSetupHotbar.java
#	src/main/java/tanks/network/event/EventShareCrusade.java
#	src/main/java/tanks/network/event/EventShareLevel.java
#	src/main/java/tanks/network/event/EventShootBullet.java
#	src/main/java/tanks/network/event/EventShowCrusadeStats.java
#	src/main/java/tanks/network/event/EventSortNPCShopButtons.java
#	src/main/java/tanks/network/event/EventTankAddAttributeModifier.java
#	src/main/java/tanks/network/event/EventTankCharge.java
#	src/main/java/tanks/network/event/EventTankControllerUpdateC.java
#	src/main/java/tanks/network/event/EventTankControllerUpdateS.java
#	src/main/java/tanks/network/event/EventTankCreate.java
#	src/main/java/tanks/network/event/EventTankCustomCreate.java
#	src/main/java/tanks/network/event/EventTankMimicLaser.java
#	src/main/java/tanks/network/event/EventTankMimicTransform.java
#	src/main/java/tanks/network/event/EventTankPlayerCreate.java
#	src/main/java/tanks/network/event/EventTankSpawn.java
#	src/main/java/tanks/network/event/EventTankTeleport.java
#	src/main/java/tanks/network/event/EventTankTransformCustom.java
#	src/main/java/tanks/network/event/EventTankTransformPreset.java
#	src/main/java/tanks/network/event/EventTankUpdate.java
#	src/main/java/tanks/network/event/EventTankUpdateColor.java
#	src/main/java/tanks/network/event/EventTankUpdateHealth.java
#	src/main/java/tanks/network/event/EventTankUpdateVisibility.java
#	src/main/java/tanks/network/event/EventUpdateCoins.java
#	src/main/java/tanks/network/event/EventUpdateEliminatedPlayers.java
#	src/main/java/tanks/network/event/EventUpdateReadyPlayers.java
#	src/main/java/tanks/network/event/EventUpdateRemainingLives.java
#	src/main/java/tanks/network/event/EventUpdateTankAbility.java
#	src/main/java/tanks/network/event/INetworkEvent.java
#	src/main/java/tanks/network/event/IStackableEvent.java
#	src/main/java/tanks/network/event/PersonalEvent.java
#	src/main/java/tanks/network/event/online/EventAddButton.java
#	src/main/java/tanks/network/event/online/EventAddMenuButton.java
#	src/main/java/tanks/network/event/online/EventAddShape.java
#	src/main/java/tanks/network/event/online/EventAddText.java
#	src/main/java/tanks/network/event/online/EventAddTextBox.java
#	src/main/java/tanks/network/event/online/EventAddUUIDTextBox.java
#	src/main/java/tanks/network/event/online/EventSendLevelToDownload.java
#	src/main/java/tanks/network/event/online/EventSendOnlineClientDetails.java
#	src/main/java/tanks/network/event/online/EventSetPauseScreenTitle.java
#	src/main/java/tanks/network/event/online/EventUploadLevel.java
#	src/main/java/tanks/obstacle/Obstacle.java
#	src/main/java/tanks/tank/Mine.java
#	src/main/java/tanks/tank/Tank.java
#	src/main/java/tanks/tank/TankPlayerRemote.java
#	src/main/java/tanks/tank/TankRemote.java
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Copy link
Copy Markdown
Collaborator

@ghostlypi ghostlypi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some thoughts and questions. I've definitely accidentally scoped up some stuff, however, I'd discourage implementing those in this PR. Considering them would, however, be a good idea.

Comment thread src/main/java/tanks/network/event/EventArcadeBonuses.java
Comment thread src/main/java/tanks/network/event/INetworkEvent.java
Comment thread src/main/java/tanks/network/event/IStackableEvent.java
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't TCP preserve order even without additional code?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, a stylistic thing, please don't just push AI code. You are allowed to use AI, however for copyright and license reasons, the AI code should be derivative of your work, not the other way around.

Copy link
Copy Markdown
Contributor Author

@orangishcat orangishcat Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this was from the old PR 6 months ago and I long ago decided I didn't like it either. It's no longer used, evidently I forgot to delete it

Comment thread src/main/java/tanks/network/ReflectionHandle.java
Comment thread src/main/java/tanks/Game.java
Comment thread src/main/java/tanks/tank/TankPlayerRemote.java Outdated
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Comment thread src/main/java/tanks/tank/Explosion.java Outdated
Signed-off-by: orangishcat <fdsnail2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants