Conversation
|
|
|
Confirmed in game since opening this: with Before the change the frame was projected out of the plot the moment it was placed and |
…hiffe, vier Sable-Reparaturen Zwei neue Module und vier Fehler, die alle an derselben Stelle haengen: Sable parkt ein Schiff als Chunk-Plot bei rund 20,48 Millionen Blocken und zeichnet es ueber eine Pose an seinem echten Ort. Was davon im Plot lebt, entscheidet ein einziger Tag. mo_arrows (neu) - Feuerpfeil aus Pfeil und Fire Charge: brennt im Flug, zuendet Ziele an und legt Feuer, wo er landet - Letzteres kann nicht mal ein Flammen-Bogen. - Die Entity ist Vanillas Arrow; das Feuerlegen haengt an ProjectileImpactEvent und erkennt den Pfeil an getPickupItemStackOrigin(). Keine eigene Entity, kein Renderer. - Textur aus Vanillas arrow.png abgeleitet, Farben aus campfire_fire.png; erzeugt von scripts/gen_fire_arrow_texture.py und eingecheckt, der Build braucht kein Client-Jar. - light_fires schaltet nur das Feuerlegen ab, nicht den brennenden Pfeil. freecam_sublevel_noclip (neu) - Freecam blieb im Rumpf haengen, waehrend es durch Gelaende flog: Sable reicht auf Sublevels nur fuer Scaffolding einen CollisionContext durch, sonst die gecachte Form ohne "wer kollidiert" - Freecams Hook wird also nie gefragt. - Repariert ueber noPhysics am HEAD von Entity.move. Nicht frueher: Player.tick setzt das Flag jeden Tick auf isSpectator() zurueck, ein Client-Tick-Handler verpufft. Sable-Tags (data/sable/tags/entity_type, in vpa_core) - quark:glass_frame und overpacked:giant_backpack blieben nicht am Schiff: ohne Eintrag in sable:retain_in_sub_level wirft EntitySubLevelUtil.shouldKick sie aus dem Plot, danach droppt der Rahmen und der Rucksack faellt. Upstream: ryanhcode/sable#1576. compass_overhaul - Nadel im Sitz: der Mitfahrer behaelt Weltkoordinaten, aber plot-lokale Gierung. Jetzt wird ueber getVehicle() auch seine Position in den Plot gerechnet, wie Sable es tut. - Weltkompass im Item Frame: das Ziel wird jetzt ab der Elternwelt-Position gemessen. Vom Plot aus dominierte der 20-Millionen-Versatz die Richtung statt Norden. - Rezept: vier Eisenbarren und ein Amethyst-Splitter in der Mitte. overpacked_extensions - Die Helfer-Entity fuer das getragene Backpack ueberlebte einen Neustart: SESSIONS ist statisch und danach leer, onContainerClose laesst sie deshalb liegen. Sie steckt im Spieler, und Overpackeds place_predicate verwirft dann jedes Platzieren aus der Hand stumm; ihr Inhalt ist zudem eine Kopie des getragenen - ein Duplikationsweg. Jetzt traegt sie den Tag vpa_backpack_helper und wird beim Laden von der Platte verworfen. Die Spawn-Position bleibt absichtlich unveraendert. scripts/deploy.sh - WEB_TMP liegt in storage/drop statt im Webroot oder /var/tmp. Beide Haelften waren kaputt: gerry darf nicht in den Webroot schreiben, und aus /tmp oder /var/tmp darf Craft die Datei wegen des Sticky-Bits nicht wegschieben. - Schlaegt der Upload fehl, gibt es jetzt eine klare Meldung statt eines Tracebacks - der alte Asset ist zu dem Zeitpunkt schon geloescht, die Downloadseite also leer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NfsZa7hQ6SkBArFajVwdWP
|
2 lines change? Good. |
Quark's glass item frame (
quark:glass_frame) is missing fromsable:wall_entities, soEntitySubLevelUtil.shouldKickreturnstruefor it. The frame is therefore projected out of the plot as soon as it is placed —ServerLevel.addFreshEntity→EntitySubLevelUtil.kickEntityon the server,Entity.recreateFromPacketon the client. Out there it holds parent-level coordinates instead of sitting on the sub-level's block grid, so it no longer lines up with the ship or follows it, and with no supporting block behind itItemFrame.survives()fails on the next check and the frame drops.org.violetmoon.quark.content.building.entity.GlassItemFrame extends ItemFrame, so it is the same kind of entity asminecraft:item_frameandminecraft:glow_item_frame, which are listed already — as are the frames from Exposure, Labels and Immersive Paintings. The glowing variant shares that entity type (it differs only by a synchedIS_SHINYflag), so the single entry covers both items.required: false, so the tag stays inert without Quark installed.The symptom was observed on NeoForge 1.21.1 with Sable 2.0.5 and Quark 4.1-482, and the cause traced to
shouldKick. In-game confirmation of the patched tag is still pending on our server; the change is data-only and flips exactly that check.🤖 Generated with Claude Code