3D #5
Omena0
announced in
Announcements
3D
#5
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
3D
Performance overhaul — fire-and-forget calls, msgpack wire protocol, field cache invalidation, and reduced serialization payload.
Changes
Fire-and-Forget Calls
call_fire_forget()toBridgeConnection— sends calls withno_response: true, skipping Future creation and await_call_ff()toProxyBase— convenience wrapper for fire-and-forget bridge callshandleCall()checksno_responseflag and skips result serialization + response sendingexecuteBatchCalls()supportsno_responseper-call in both atomic and non-atomic batch pathsteleport,remove, velocity setter,fire_tickssetter,add_passenger/remove_passenger,custom_namesetter, gravity/glowing/invisible/invulnerable/silent/persistent/collidable setters,portal_cooldown/freeze_tickssetters,eject,leave_vehicle,set_rotationtargetsetter,is_awaresetter,stop_pathfinding,remove_all_goalsdamage,send_message,chat,kick,give_exp,add_effect/remove_effect,set_game_mode,set_scoreboard,set_op,play_sound,send_action_bar,send_title, tab list setters, health/food/level/exp setters, flying/sneaking/sprinting setters, walk/fly speed setters,send_resource_pack, absorption/saturation/exhaustion setters,allow_flightsetter,hide_player/show_player,open_book,send_block_change,send_particle,set_cooldown,set_statistic,max_healthsetter,bed_spawn_location/compass_targetsetters,set_persistent_dataField Cache Invalidation
_invalidate_field()toProxyBase— removes cached field values so next access fetches fresh data from Java_invalidate_field()before sending the fire-and-forget call, preventing desync:teleport→ invalidateslocation,worldgive_exp→ invalidatesexp,levelset_game_mode→ invalidatesgameMode,game_modeset_health→ invalidateshealthset_food_level→ invalidatesfoodLevel,food_levellevelsetter → invalidateslevelexpsetter → invalidatesexpmax_healthsetter → invalidateshealthReduced Serialization Payload
inventoryfrom Player auto-serialization inBridgeSerializer— inventory is now fetched on demand instead of included in every Player objectMsgpack Wire Protocol
handleHandshake()switchesuseMsgpackflag on format negotiationserializePayload()/deserializePayload()helper methods convert JsonObject ↔ msgpack at IPC boundariesJsonElementtree conversion (unpackValue,packJsonElement) handling all types (nil, bool, int, float, string, binary, array, map)bridgeLoop(),send(),sendAll(),sendWithTiming()all route through format-aware helperscom.gradleup.shadowplugin,org.msgpack:msgpack-core:0.9.8shaded and relocated tocom.pyjavabridge.libs.msgpackcopyPluginJarandcopyReleaseJartasks updated to depend onshadowJarBug Fixes
return self._call_sync(method)in_invalidate_fieldthat would have crashed on every callThis discussion was created from the release 3D.
Beta Was this translation helpful? Give feedback.
All reactions