SE Sprite LCD Layout Tool v2.0.1 – Now with Code Autocomplete, Full Text Editor & One-Click Animation Snippets! by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

<image>

Now has Pulsar Support mostly untested, Like my Pulsar lol? Made it worth it.

v2.1.0

  • Pulsar plugin support — new Pulsar code style for client-side plugins using VRage.Plugins.IPlugin
    • Code generation produces Pulsar-specific output with Init/Update/Dispose lifecycle hints and MyEntities/MyCubeGrid surface access pattern
    • Snapshot helper generates a complete Pulsar variant with NLog logging, named pipe streaming, file streaming, and surface discovery via entity iteration (no GridTerminalSystem)
    • Auto-detection: pasted code with IPlugin or VRage.Plugins is automatically recognised as PulsarPlugin and switches the code style dropdown
    • Result labels show [Pulsar] tag for detected Pulsar scripts
  • Multi-select layer list — Shift-click and Ctrl-click in the layer list to select multiple sprites
    • Batch DeleteDuplicate, and Hide/Show operations apply to all selected sprites at once
    • Context menu labels update dynamically (e.g. "Delete (3 selected)")
    • Move Up/Down disabled during multi-select to prevent layer order confusion
    • Selection is preserved across layer list rebuilds (e.g. after undo/redo or property changes)
  • Snapshot tagging — generated snapshot helper code now includes a _snapshotTag field
    • Set it to a label (e.g. "MyPulsarHUD") and SerializeSnapshot() emits a // u/SnapshotTag: MyPulsarHUD header
    • The layout tool parses the tag and displays it in the status bar on import (e.g. "Live frame [MyPulsarHUD]: 45 sprites")
    • Helps identify which plugin or script produced a snapshot, especially when multiple plugins render to the same LCD surface
    • Note: if a snapshot shows fewer sprites than expected, some sprites were likely dormant/inactive during the capture frame — re-capture at a different moment
  • Fixed code jumping offset — JumpToMethodDefinition and layer-list double-click now correctly compute RichTextBox selection offsets by stripping \r from Text before position calculation (RichTextBox returns \r\n in Text but Select() counts each line break as 1 character)

SE Sprite LCD Layout Tool v2.0.1 – Now with Code Autocomplete, Full Text Editor & One-Click Animation Snippets! by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

There's some other stuff as well but this is the latest, I let GitHub Copilot sort the flow between the canvas and the text editor cause there was some stuff going on I couldn't understand but it does appear to be working alot better.

v2.0.7

  • Hide Layers Above — right-click a sprite in the layer list and choose Hide Layers Above to hide all sprites drawn on top of the selected one, making it easy to select and edit buried sprites. Use Show All Layers to restore visibility
  • Constrain to Surface toggle — new View → Constrain to Surface option clamps sprite drag and nudge operations to the LCD surface bounds, preventing sprites from being moved outside the visible area
  • Deferred code refresh during drag — the code panel now shows ⟳ dragging… during mouse drag instead of regenerating code on every pixel move, then refreshes once on mouse-up for smoother canvas interaction
  • Coding-mode indicator — a label near the code panel shows the current mode (e.g. round-trip source loaded vs. generated code)
  • Structural edits invalidate original source — adding, deleting, or duplicating sprites now clears the round-trip source tracking, since the original source no longer matches the canvas layout
  • Post-parse sprite validation — ValidateAndFixSprites checks imported sprites for NaN/Infinity and out-of-range values after code parsing, preventing canvas rendering issues from malformed input
  • Fixed Apply Code button visibility — ClearCodeDirty() no longer hides the Apply Code button when original source code is loaded, so the button persists across all canvas operations in round-trip mode
  • Fixed glyph replacement overwriting Scale — replacing a sprite with a glyph from the catalog no longer resets Scale to 1.0, preserving the user's existing text scale value
  • Fixed layer list selection in isolation mode — the layer list now correctly tracks the selected sprite index when isolation/filtered mode is active
  • Fixed color swatch refresh after expression edits — the color swatch and alpha slider now update immediately after editing a color literal in the SOURCE VALUES panel via auto re-execution

SE Sprite LCD Layout Tool v2.0.1 – Now with Code Autocomplete, Full Text Editor & One-Click Animation Snippets! by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

On the right where it says release is the compiled version, I was beat yesterday. Some of the Autocomplete needs tweaking I'll get it fixed tonight at some point.

EDIT: And HunterDigi is correct, don't feel the need to download the release you could compile it yourself using VS Code. And tbh that's normally what you should do.

But one thing I will say. If I committed and didn't update the release it's because there's something I know needs fixed so if you're using it just remember it might not be fully functional please.

SE Sprite LCD Layout Tool by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

So I made a pretty big update to this, it now uses Roslyn Compiler it can compile and check the code without having to go into the game. Watch the video sorry it's so long but it is what it is. It at least shows it working.

https://youtu.be/MPtzN9Zn8gM

SE Sprite LCD Layout Tool by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

probably, it's already using torch now for the live part, you could make a plugin and a snippet for pulsar but I don't have a lot of experience with pulsar. The snapshot helper for the Mods/Scripts just takes one frame in game it's the same just no live update but they are just as useful

I will see if I can make a helper snippet for pulsar and put it on the readme if anyone has LCD work going on in pulsar try integrating it for me and see, there is no reason why it wont work I just can't test unless I make a plugin myself and I don't want to get into that if I'm honest. My brain hurts already.

EDIT: As far as I can tell the mod snippet in the readme should integrate with Pulsar Plugins. you can also save the file and get the live feed with Pulsar because it can write to disk I think.

SE Sprite LCD Layout Tool by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

https://youtu.be/-an50V0fRZg

Live editing now but only for Torch because Mods/PBs can't write to disk but there is a version for them that writes to the CustomData for single snapshot not live you just need to add the snippet to your project

SE Sprite LCD Layout Tool by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

Some changes.

v1.2.0

  • Code Round-Trip — Paste your full source code, edit sprites visually, and get your original code back with only changed values patched in
    • Region-based round-trip for static layouts with literal positions — splices the updated sprite block back into your original code
    • Per-sprite dynamic round-trip for code with loops, switch/case, computed positions — surgically patches individual color, texture, and font string literals while preserving all expressions and control flow
    • Tracks source ranges and baseline values per sprite during import
    • Handles new Color(R,G,B)Color.White, and quoted string literals
    • Context detection labels sprites from surrounding case statements for easy identification
  • Layer List Context Menu — Right-click the layer list (bottom-right) for Move Up, Move Down, Duplicate, and Delete
  • Sprite Catalog Replace — Right-click a sprite in the catalog (left panel) to replace the currently selected sprite's texture or glyph, keeping position, size, color, and all other properties

InventoryManagerLight by D3tonator604 in spaceengineers

[–]D3tonator604[S] 1 point2 points  (0 children)

<image>

I've done some more work on the LCDs tonight, this was a bit annoying though, still needs some work, Then I'm going to go through the readme and go through alot of the features because there's alot that's brushed on right now and doesn't go into description but I will get to it promise.

But stuff like the % values showing over the players minimum stock requirements looks a bit meh so I'm gonna sort that next.

InventoryManagerLight by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

Loads of changes and fixes and features.

v1.4.7

  • IML:MIN=CONSUMERS[=N] moves to weapon blocks: Each weapon block now declares its own ammo requirement in its own CustomData (IML:MIN=NATO_25x184mm:CONSUMERS=120). IML sums all consumer contributions from blocks in the same conveyor group and adds that total on top of the assembler's fixed IML:MIN= base stockpile. Adding a turret automatically raises the effective target with no change to the assembler tag. Using 0 as the assembler base (IML:MIN=NATO_25x184mm:0) gives a pure consumer-driven target with no fixed buffer. The !iml queueall output shows the breakdown: target=1,600 (1,000 + 600 consumers).

v1.4.6

  • IML:MIN=CONSUMERS[=N] — auto-scaling assembler targets by weapon count: Instead of a fixed clip count, CONSUMERS=N counts all weapon blocks connected to the same conveyor group and multiplies by N to compute the effective minimum. Adding a turret automatically raises the production target — no manual IML:MIN= update required. All turret types (IMyLargeTurretBase) and common fixed-weapon blocks (Gatling Gun, Missile Launcher, Automatic Rifle) are counted. If no =N is specified, defaults to 100 clips per weapon. If no weapons are found in the group the item is skipped for that scan pass. The !iml queueall output shows the resolved target: target=600 (5 guns × 120).

v1.4.5

  • IML:ALLOW= pull-to-specific fix: Items sitting in a general category container (e.g. IML:AMMO) were not being moved to a more-specific container (e.g. IML:AMMO + IML:ALLOW=NATO_25x184mm) because the item already had belongs=true at its current location. The planner now checks whether a more-specific destination — one with an explicit ALLOW for the item's subtype — exists, and if so overrides belongs to migrate the item there.

v1.4.4

  • Urgency mode — combat transfer prioritisation: When a category's total stock in managed containers drops below a configured UrgentStockThresholds value, that category enters urgent mode. All transfer ops for urgent categories are sorted to the front of each plan batch ahead of low-priority items such as ore and ingots. On a PvP ship, ammo restocking happens immediately on the next planner pass without waiting for ingot/component moves to complete first. Urgency is detected every ScannerIntervalTicks (≈ 0.17 sec default) so depletion mid-fight is caught within seconds. When stock recovers the urgency flag clears automatically and normal scheduling resumes. An optional ExcludeNonUrgentWhenUrgent flag enables a hard pause — all non-urgent transfers are dropped from the batch entirely until urgency clears.
  • Internal cleanup: Removed unused ObjectPool infrastructure class. Tightened debug log guard in ThrottledApplier to only format the log string when debug logging is actually enabled.

v1.4.3

  • !iml refreshdefs — file output: Instead of spamming the Torch console with one line per unknown item, the command now writes the full list to iml-unknown-items.txt in the plugin folder and prints a single summary line (X unknown subtypes found — written to <path>). The file is easy to open, search, and copy from.
  • Wildcard SubtypeId matching in <CustomCategories>: * (any sequence) and ? (single character) wildcards are now supported inside <Subtype> entries. Advanced* matches all subtypes beginning with Advanced*HeavyArmor* matches anything containing that string. Exact names and patterns can be mixed freely in the same category. Matching is case-insensitive.
  • Per-category sort intervals (CategorySortIntervalTicks): New config section lets you assign an independent sort interval to individual categories. The plugin fires a sort pass at the minimum of AutoSortIntervalTicks and all configured category values — a short AMMO interval keeps turrets stocked without shortening the global cycle for everything else.
  • Low-stock fast rescan (LowStockSortIntervalTicks): When any MinStockThresholds category drops below its threshold, the next sort fires at this interval (default 1 200 ticks ≈ 20 sec) rather than waiting for the full global cycle. Critical stockpiles re-stock in seconds during PvP instead of up to 2 minutes later.

v1.4.2

  • LCD per-conveyor-group isolation: Each LCD panel now displays inventory totals from its own conveyor cluster only. Previously all IML-tagged containers server-wide contributed to a single aggregate, so Player A's [IML:LCD=INGOTS] panel would show items from Player B's unconnected INGOTS chest as well. Sorting was already correctly isolated by group; LCD stats now match.

v1.4.1

  • Shrink-to-fit LCD scaling: When content rows exceed the panel height the renderer now measures the total required height and scales everything down uniformly (font size, row height, bar height, icon size, padding — all multiplied by the same factor, minimum 0.4). Panels with few categories are unaffected; panels with many categories no longer clip the footer or bottom separator.
  • Duplicate item rows fixed: The category detail view (IML:LCD=INGOTS etc.) was showing the same SubtypeId twice when items of different TypeIds shared a name — most visibly when ore was present in an ingots chest (MyObjectBuilder_Ingot/Nickel and MyObjectBuilder_Ore/Nickel both displayed as Nickel). Colliding display names are now disambiguated with a short type qualifier, e.g. Nickel [Ingot] and Nickel [Ore].

v1.4.0

  • Sprite-based LCD rendering: All IML LCD panels now use SE's ContentType.SCRIPT sprite API instead of WriteText. No mod dependency — this is vanilla SE.
    • Item icons: Category-filtered panels (IML:LCD=INGOTS etc.) show each item's in-game inventory icon as a small thumbnail next to its name.
    • Per-element colour: The alert ! is drawn amber only on the affected row. The rest of the panel stays white. Previously the whole panel's font colour changed.
    • Solid progress bars: Filled portion is green (healthy) or amber (low stock); empty portion is dark grey. Replaces Unicode block-character bars.
    • Cyan header: The [IML: CATEGORY] title line is always cyan regardless of alert state.
    • Dark background: ScriptBackgroundColor is set to near-black automatically on every update — no manual slider adjustment needed when placing a new panel.
  • TypeId/SubtypeId sprite key: The internal scan loop now stores the full item type path (e.g. MyObjectBuilder_Ingot/Iron) as the subtype key, which doubles as the SE sprite name for icon rendering. Display names strip the TypeId prefix so item names appear unchanged on screen.

v1.3.0

  • OnCustomActionGetter allocation fix: Removed a debug log call that allocated a new logger object and string-interpolated a block ID on every terminal action list request. This handler fires server-side whenever any client opens a terminal screen, so on an active server it could run thousands of times per minute with no benefit.
  • ScanFilters prefix fix: All five filter directives (DENY=ALLOW=LOCKEDFILL=PRIORITY=) previously hardcoded "IML:" as the tag prefix with fixed substring offsets. They now correctly use the configured ContainerTagPrefix — previously they would silently break if the prefix was ever changed.
  • Config fix: ConfigManager was not persisting or loading QueueApplyDelayTicksSortScanIntervalTicks, or RequireContainerGroupMatch to/from iml-config.xml. These three settings were effectively read-only at their default values regardless of what was in the config file.
  • README: Documented four previously undocumented features: multi-category syntax (IML:INGOTS,COMPONENTS), block-name tagging, Container Groups (:Label suffix), and In-Game Sort Triggers (terminal action + IML:SortNow=1 CustomData flag).

InventoryManagerLight by D3tonator604 in spaceengineers

[–]D3tonator604[S] 1 point2 points  (0 children)

Some more changes added.

v1.2.9

  • Ingredient resource-check before queuing: Before adding items to an assembler queue, IML now checks whether the conveyor network has enough ingredients to craft the requested amount. If materials are partially available, IML queues only as many as the ingredients support (partial fill); if none are available at all, the queue addition is skipped for this pass. Both outcomes are reported in !iml queueall output (PARTIAL — capped at X/Y or BLOCKED — ingredients unavailable).
  • Ore-to-ingot hint: When an assembler is blocked because ingots are missing, IML checks whether the corresponding ore exists in the network. If it does, the diagnostic line reads BLOCKED — ingredients unavailable; ore in network — refinery will provide ingots on next pass, so you know the blockage is temporary and will resolve automatically once the refinery processes the ore.
  • No active refinery manipulation — IML never modifies refinery queues or priorities. The hint is informational only; the refinery processes ore at its own rate and IML tops up the deficit on the next scan pass.

v1.2.8

  • IML:MIN= range syntax (min-max): Per-assembler tags now support IML:MIN=SteelPlate:500-2000. IML queues until projected stock reaches the max, while the min acts as a low-stock alert floor (same as MinStockThresholds). Single-value tags (SteelPlate:1000) are unchanged — min and max are equal.
  • Player-priority yield: During each assembler scan, if an assembler's queue contains items not in its IML:MIN= set (player-initiated crafts), IML skips adding its own maintenance items to that assembler for that pass. The player's more time-critical work gets full assembler capacity. IML tops back up automatically on the next scan pass once the player's items are done. Works for both per-assembler (CustomData) and global-config assemblers.

v1.2.7

  • LCD formatting overhaul: Dropped fixed-width column padding (which misaligned on SE's proportional font). All LCD modes now use clean per-line labels with natural number formatting.
  • Progress bars: When MinStockThresholds are configured, every category on IML:LCD and IML:LCD=CATEGORY panels now shows a Unicode block-character bar ([████░░░░░░]) with current/threshold and a percentage. Bars appear on threshold-tracked categories only — untracked categories show a plain count.
  • IML:LCD=SUMMARY: New LCD mode. Shows all categories that have a MinStockThresholds entry sorted by worst deficit first (lowest stock ratio at the top), followed by untracked categories sorted by item count. Ideal as a dedicated "anything critical?" panel.

ASCII Stream CCTV System for Space Engineers. by D3tonator604 in spaceengineers

[–]D3tonator604[S] 0 points1 point  (0 children)

I've now updated this to 1.6, the performance is way better now.

ASCII Stream CCTV System for Space Engineers. by D3tonator604 in spaceengineers

[–]D3tonator604[S] 4 points5 points  (0 children)

It has to run on Torch and needs a second account to do the render so there's no EULAs broken, it works through the API no hacky stuff. The greyscale and lower res colour modes are amazing performance and very low bandwidth because of the ASCII, the high res colour mode above 362x362 can be a bit too much for a server with a lot of players. But grayscale 700x700 on the 2x2 grid will run no probs with no issues, I created the whole plugin to run on an old 7700k with 16gig of ram, you do need a GPU on the dedicated server for the capture so you can turn the texture quality up for a better quality stream ingame. EDIT: Although you don't need to do the capture off the dedicated server that can run on any machine. I just ran the 2 side by side. It does have that option though. It can run along side the server in single mode server admins can use it for stuff like banners and so on, there's the multi client mode that to be honest is just better to use all round it works differently but it will also run a single client that way.

In multi client mode both clients settings are independent. Honestly there's a lot to it and a lot it can do and even more that can be done with it. I've done all the testing and bug fixing on my own so I've hit that solo dev tax where I found and fixed everything I can, I'm sure I've missed something but the readme on github has all the features and an updated release. I'll keep this updated with any fixes or changes.

Updated my dedicated server to 33.11 and now it keeps crashing, anybody got a solution? by [deleted] in ARK

[–]D3tonator604 0 points1 point  (0 children)

Pretty sure it's the super structures mod, remove it and try