Eradicator's Belt Planner (Beta)

Multi-line and backwards-building capable belt builder with live preview. Languages: English

2 years ago


Version: 0.2.12
Date: 2021-09-13
    - Fixed missing internal library dependency on on_user_panic.
Version: 0.2.11
Date: 2021-09-12
    - In cheat-mode left-click building no longer costs items and all
      obstacles are instantly destroyed.
Version: 0.2.10
Date: 2021-07-29
    - Added on_user_panic handler that deletes all trackers to circumvent
      high chart update time in space exploration.
Version: 0.2.9
Date: 2021-07-07
    - Fixed error when using the "mine" hotkey in editor or sandbox  mode to
      cancel planning.
Version: 0.2.8
Date: 2021-05-26
    - Fixed Fast-Item-Transfer (Ctrl+LMB) mod incompatibility with "Even Distribution".
    - Integrated with Erlib EventManagerLite + PluginManagerLite
Version: 0.2.7
Date: 2021-04-27
    - The belt preview now animates at the correct belt speed.
    - Added support for layered belt animations to improve mod-compatiblity
      (i.e. Space Exploration.)
Version: 0.2.6
Date: 2021-04-26
    - Construction preview now shows fully animated belts.
Version: 0.2.5
Date: 2021-04-25
    - Seperated normal and ghost building mode. Made ghost building undo-able.
    - Slightly expanded tips & tricks page.
    - Reworked construction to work with ghosts + undo.
Version: 0.2.4
Date: 2021-04-23
    - Added build-anywhere with direction selector.
    - Added cursor label showing belt type and count.
    - All directions should now show correctly and have correct
      continuity after building.
    - Now requires erlib.
    - Adjusted internal BeltPreview representation for future multi-point paths.
    - Cleaned up belt node generation code.
    - Integrated anchor and selected position data into primary line.
    - Improved shortcut on/off handling.
Version: 0.2.3
Date: 2021-04-21
    - Rearranged mod file structure to fit standard plugin format.
    - Prepared to made BeltPreview a proper object.
    - Created mini-plugin-manager and implemented per-plugin managed Savedata.
    - CursorTracker: Added new surface handling to cursor tracker
    - CursorTracker: Changed selection emulation to use force swapping
      instead of teleporting.
Version: 0.2.2
Date: 2021-04-20
    - Uses blueprints as an animated live preview. While this makes animated
      previews possible it also causes strong screen flicker because it can
      only update every second tick.
    - CursorTracker: Improved Quadtree storage. This significantly reduced
      required tracker count and might also slightly improve input lag.
    - CursorTracker: Fixed another case of tracking failure from non-trackers.
Version: 0.2.1
Date: 2021-04-16
    - CursorTracker: Optimized and cleaned up the mouse cursor tracker.
Version: 0.2.0
Date: 2021-04-14
  Major Features:
    - Rewritten from scratch with modern engine features.
    - First working proof-of-concept implementation of rewritten version.
Version: 0.1.0
Date: 2019-11-03
  Major Features:
    - First working proof-of-concept implementation.
    - Start of development
Version: 0.0.1
Date: 9999-99-99
    - Add multi-mod support to remote interface set_track and set_emulate.
    - (low priority) Improve decision-tree of on_selected_entity_changed handler.
    - (low priority) Test if LARGEST trackers can use autoplace + regenerate.
    - (performance) Interface Request: Entity flag "do-not-show-selection-box".
    - (performance) Interface Request: Entity flag "do-not-show-entity-tooltip".
      Usecases: 1) Modded custom entity tips. 2) Removes need to
      set selected = nil every tick.
  BP Next:
    - Streamline segment calculation to not store intermedeate results.
    - Middle-Click toggles underground belt mode.
    - BeltPlanner now works differently. While the shortcut is enabled
      any time you pick up a belt you will instead enter planning mode.
      (Except while you have an inventory opened.) When planning mode is temporarily
      turned off while you have an inventory open you get a stack of the current belt.
    - Made preview cursor more situational. It now shows different icons for:
      Add a lane, Build.
    - Picker (default "Q") can now be used to select belt types without
      exiting planning mode.
    - Changed preview render to distinguish between ghosts and direct
      build based on player building range.
    - Impossible connections will now render as straight instead of
      partial garbage. This makes it much easier to build straight multi-lanes.
    - Preview now shows curves as curves instead of straight belts.
    - Preview can now use blueprints (30FPS mode) for a more immersive preview.
    - Starting direction can now be rotated (default R and Shift+R).
    - Drag select can now distinguish between "add tiles" and "add entities".
      for easier expansion of multi-lane belts with gaps.
    - Build-anywhere mode with direction selector now supports
      starting from a cursor-drag instead of only single tiles.
    - Drag is now more lenient and allows accidentially selecting
      one row of tiles too much.
    - Improved preview render to use an uncolored belt in non-bp-mode.
    - Pressing the blueprint shortcut (default Alt+B) now converts the current
      preview to a blueprint and exists the planner.
    - Removed icon from planner icon as it is now replaced by a label.
    - Added a hotkey to reverse entire segments of straight belt in the world.
    - Building now includes the tile under the cursor instead of stopping
      one tile too early.
    - Clicking on the end of an existing belt now starts in the direction of the
      belt (yellow arrow). Clicking on the start of it starts in any-direction mode.
    - The cursor cost indicator now shows a red/green number depending
      on the amount of belt the player is carrying.
    - Cheat mode now builds belts for free.
    - Certain combinations of rebinding mine/build keys should no longer
      make the belt planner unusable. (infinite capsule-hack fix)
  BP Performance / Technical:
    - Drag selection now shows correct highlights. (Requires capsule hack)
      Should make this a generic library plugin while at it. With events
      on_start_drag, on_while_draggin, on_drag_ended.
    - Local library is now its own plugin.
    - Mini-library is now its own plugin.
    - Nodes are now stored in an x/y matrix to allow for partial updates.
    - Stopped rendering off-screen parts of the preview.
    - Direction is now only stored in the primary line instead of every line.
    - Lua-side Undo Hack: When a bunch of un-undoable actions have been cached
      detect if the last of them was undone (lined input) and automatically
      undo the rest. This also requires to reset the line data! :/. I'd rather
      not do that really....
  BP Future with GUI:
    - Requiring a gui makes everything look "too complicated" so it would be
      best if it wasn't needed at all.
    - Feature (needs gui): Change lane spread after curve. Allow
      the user to specify to widen/narrow multi-lane gaps or
      to spread out lanes evenly. As this would be fixed number and not smart
      it might be a better fit than Auto-connect (see below).
      Usecase: Mining posts, train stations.
    - Feature: "Auto-connect". Allow user to select (drag box?)
      an equal number of target lanes to auto-connect each line
      to them regardless of line spread. This can only work around corners.
      This would essentially be the same as drawing each line manually
      so what's the point?
      Usecase: Mining posts, train stations. 
    - Feature (needs gui?): Inkscape-style multi-node edit-before-build.
      Requires in-world confirmation button but allows more complex layouts
      with node drag-move. ("Expert mode")
    - Easter Egg: Double-tap ctrl(?) to build belt "bridges" over water (ignore collision).
  Known Issues:
    - [Minor] BeltPlanner items spawned in via /editor will crash on use.
    - [Narf] only-in-cursor selector is deleted on ctrl-click due to
      quick insert.
    - Mouse Tracker blocks fast-transfer.
    - Blocks Spidertron Remote "Ctrl+LeftClick to follow"