From fab7ea087370d9f46b88a7a8bb5111b28d3f580c Mon Sep 17 00:00:00 2001 From: Tanner Date: Wed, 4 Nov 2026 15:42:40 +0000 Subject: [PATCH] Fix web client crash --- mosfet.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/mosfet.py b/mosfet.py index 721a51e..9f85dc2 100644 --- a/mosfet.py +++ b/mosfet.py @@ -50,9 +50,27 @@ g.food = 20 g.sand_origin = None g.reload_lock = threading.RLock() +def _api_json_default(value): + """Serialize live protocol objects without invoking fragile __repr__ code.""" + from minecraft.networking.packets import Packet + + if isinstance(value, Packet): + fields = {key: item for key, item in vars(value).items() + if key != 'context'} + return {'__type__': type(value).__name__, + 'packet_name': getattr(value, 'packet_name', None), + 'fields': fields} + if isinstance(value, (bytes, bytearray)): + return value.hex() + try: + return str(value) + except Exception: + return object.__repr__(value) + + @app.route('/api/global') def api_global(): - data = json.dumps(g, default=lambda o: str(o), indent=4) + data = json.dumps(g, default=_api_json_default, indent=4) response = app.response_class( response=data,