Моды/Structure Gel API
Structure Gel API

Structure Gel API

An API for simplifying the developer end of creating generated structures.

2.2M
91

Structure Gel API v2.20.0

release26 января 2025 г.

1.21.4-v2.20.0

General Changes

  • We're on 1.21.4. With that comes the general expected changes, like item data components.

Building Tool

  • Clone: Now works across dimensions and players. You can hand another player a building tool and access their cloned region regardless of what dimension it's from.
  • Added a nifty animation when the GUI opens :D

Gel Blocks

  • Gel blocks have had their back end rewritten from scratch.
  • Previously, Gel Blocks implemented the IStructureGel interface to hook into the various spreading mechanics, used an enum of behaviors to determine the default spreading rules, and had a block state for how far it traveld. Most of this is gone.
  • Gel spreading behavior is now registered under structure_gel:gel_spread_behavior.
    • This is how gel spreads along a specific axis, or along diagonals.
  • Gel spreading restrictions can be registered under structure_gel:gel_spread_restriction.
    • This is how blue gel knows not to spread into exposed areas, or how orange gel knows to stop based on the item stack count.
  • The distance gel spreads is now an absolute distance to the initial source instead of traveling and counting how many were placed, and reaches a sphere shape if fully expanded.
    • This allows gel to spread more effectively in twisting hallways, and more reliably hit the corners of large rooms.
  • Any block can be used as gel in a structure as long as it's added to the structure_gel:gel block tag. If the block in the tag is actually a StructureGelBlock, it can customize what it places instead of defaulting to air.

Data Handler

  • Changed how registry works so that a builder is what gets registered. See implemented data handlers for reference.

Dynamic Spawner

  • Changed how registry works so that a builder is what gets registered.

GelPortalBlock

  • Completely rewritten. Hopefully for the last time. The GelPortalBlock class is abstract and requires the implementation of various methods to make the portal function properly (with similar behavior to a nether portal).
    • Ignition of the portal is handled by calling GelPortalBlock.tryIgnite.
    • The dimension transition screen must be registered manually.

Registries

  • Added two new registries; structure_gel:gel_spread_behavior and structure_gel:gel_spread_restriction.
    • Used to control the behavior of Gel blocks. Custom values can be registered and implemented on your own custom Gel block.
  • Changed the registry process of structure_gel:dynamic_spawner_type and structure_gel:data_handler_type.
    • The new registry approach instead works by registering a "factory" to create a Data Handler or Dynamic Spawner. Overall, the code is more builder-focused and simplified, with access to registry data to prepare for more registries moving to datapacks in vanilla.
    • See com.legacy.structure_gel.core.registry.SGRegistries for how to register the new data.

Registrar

  • Internal changes to how data is stored. The basic rules of "don't get a value before it was registered" still applies.
  • Registrar.Static now contains a Holder.Reference for the object registered.
  • Registrar.Static can be created with a name only using RegistrarHandler.named(String).
    • In this case, a value must be assigned later through RegistrarHandler.addHandlerListener(Consumer<RegistrarHandler>).
    • An error will be thrown if a static registrar is created by name only and never assigned a value.
  • Added updated handling for block and item registry.
  • See com.legacy.structure_gel.core.registry.SGRegistries for usage.

Structure Gel API v2.19.1

release21 июня 2024 г.

1.20.4-v2.19.1

Data Handler

  • Fixed cycle buttons in the GUI not starting at the correct default value
  • Made adding StringRepresentable enums to the parser easier

Building Tool

  • Fixed the selection edit screen not hovering buttons correctly

Structure Gel API v2.19.0

release2 июня 2024 г.

1.20.4-v2.19.0

Building Tool

  • Can now set if blocks placed will cause block updates or not
    • This also supresses block and fluid ticks that occur when the block is placed (water won't flow, sand won't fall)
  • Each mode shows up in the creative mode search tab
  • The Building Tool palette screen no longer serializes default block state values when re-opening the screen
    • If an oak log was set in the palette, it would previously display as minecraft:oak_log[axis=y], even if the axis property was left as the default. It will now display minecraft:oak_log in that case. This is especially visible with blocks that have a large number of states, such as fences
  • Building Tool block palettes can be exported as a Block Palette item. This item can be dropped onto the Building Tool, like how you'd use a bundle, to set the palette.

Fill Tool

  • Fixed the Retain State property not functioning as expected
  • Retain State has been renamed to Copy States
    • When True (default): Copies applicable block state values from the replaced block to the block being placed. This means stairs/slabs/fences/etc will have the same block states when replaced.
    • When False: Places the block without any modifications. This is similar to the vanilla fill command.

Replace Tool

  • Added the Copy States property
    • Defaults to true

Clone Tool

  • Fixed pasted regions being hollowed out
  • Can now also handle entities
  • Improved the handling of internally saving captured regions for the Clone tool
    • Regions with the same bounding box are not saved more than once. Only the latest copy will be saved
    • This prevents multiple copies of the same selected region from completely filling your clipboard
    • This breaks old clipboard data
  • Pressing ctrl + c in game while holding the clone tool will manually re-copy the selected region
  • Pressing ctrl + v in game while holding the clone tool will paste the copied region
    • This does not replace left click, it's just an alternative button press
  • Improved the compile time of the render-preview
  • If a render preview takes longer than 8 seconds to compile (freezing the game client in the process), the preview will be aborted. This timer can be adjusted in the config.

Move Tool

  • Can now also handle entities

Commands

  • Dramatically optimized the time to find Structure Blocks when using /structure_gel savestructures search
  • Added /structure_gel debug
    • This will be used for miscellaneous commands that have a very specific function and won't need to be used often, if at all
    • Currently used for /structure_gel debug update_structures_to_structure to update the file location in a Structure Block to the 1.21 format where the structures folder is renamed to structure (if applicable). It does so by finding and replacing the first instance of :structures/ with :structure/ in the resource location. This uses the exact same syntax as /structure_gel savestructures
  • Commands affecting Structure Blocks display a Redstone Torch particle above the affected blocks
  • Added /structure_gel ? to display the basic function of the other sub-commands

Structure Blocks

  • The Show Invisible Blocks option allows selecting which blocks to show
    • The Show Invisible Blocks option can dramatically decrease your fps on large selections. This can help by only showing what you care about.

Misc

  • Made a number of GUI changes to improve mouse scrolling and hovering
  • Some GUIs have tooltips when elements are hovered over
    • Dynamic spawner labels give extra info
    • The Building Tool palette screen gives info when hovering over the item icon for a block

Structure Gel API v2.18.1

release21 апреля 2024 г.

Added /structure_gel getfeatures command. Uses the same syntax as getstructures... but for features!

Structure Gel API v2.16.2

release21 апреля 2024 г.

Added /structure_gel getfeatures command. Uses the same syntax as getstructures... but for features!

Совместимость

Minecraft: Java Edition

1.20.1–1.21.41.18.2–1.19.41.16.5

Платформы

Поддерживаемые окружения

Клиент и сервер

Детали

Лицензия:LicenseRef-All-Rights-Reserved
Опубликован:2 года назад
Обновлён:9 месяцев назад
Главная