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 theaxis
property was left as the default. It will now displayminecraft:oak_log
in that case. This is especially visible with blocks that have a large number of states, such as fences
- If an oak log was set in the palette, it would previously display as
- 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 toCopy 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 thestructures
folder is renamed tostructure
(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.
- The
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
1.20.4-v2.18.0
RegisterArmorTrimTexturesEvent
- Added
registerSprite(ResourceLocation)
for registering a direct texture that isn't standard armor with a_leggings
suffix.
Building Tool
- Added more replace options to more tool modes.
- Added
Replaceable
as a replace option. Replaces blocks that could be replaced by a player when placing a block, such as short grass and blocks in the#minecraft:replaceable
tag.
Fixes
- The Building Tool and Data Handler no longer allow objects disabled through feature flags.
1.20.4-v2.17.0
Ported to 1.20.4 and now on NeoForge
General Changes
- Removed old
IForgeRegistry
methods. Vanilla registries are used now.
Registries
- All custom registries have been moved to proper NeoForge registries stored within
com.legacy.structure_gel.api.registry.StructureGelRegistries
and their respective events have been removed.- DataHandlerType
- LootTableAlias
- DynamicSpawnerType
- JigsawCapabilityType
Registrar
- General optimizations to registry behavior. Removed a number of redundant checks.
RegistrarHandler.BlockHandler
returnsRegistrar.BlockRef
instead ofRegistrar.Static
.BlockRef
implementsItemLike
and has adefaultBlockState()
method.
- Added
RegistrarHandler.ItemHandler
- Similar to
BlockHandler
but specific to Items. - Creates
Registrar.ItemRef
instead ofRegistrar.Static
.ItemRef
implementsItemLike
and has adefaultInstance()
method.
- Similar to
- Removed
RegistrarDatapackEntriesProvider
- Use
new DatapackBuiltinEntriesProvider(packOutput, gatherDataEvent.getLookupProvider(), RegistrarHandler.injectRegistries(new RegistrySetBuilder()), Set.of(my_mod_id));
- Use
- Added
@RegistrarHolder
- Class annotation that allows Structure Gel to find and load
RegistrarHandler
fields within it. RegistarHandler
s must bepublic
andstatic
to be accessible. An exception will be thrown if this is not the case.RegistarHandler
s are registered duringRegisterEvent
duringEventPriority.HIGHEST
. If you haveRegisterEvent
listeners at this priority, mod load order may prevent this from working properly.
- Class annotation that allows Structure Gel to find and load
Jigsaw Capability
- Recieved a major refactor to better organize the data.
JigsawCapability.IJigsawCapability
->JigsawCapability
JigsawCapability.JigsawType
->JigsawCapabilityType
Building Tool
- Added Fuzzy as an option to the Extend tool.
GelPortal block
- Thanks to
BlockType
codec requirements, this is now an abstract class.- The
GelTeleporter
factory that was previously passed as an argument is now an abstract methodgetTeleporter(ServerLevel, GelPortalBlock)
- The
- Now has some handling for when the Axis property isn't present to allow not including it.
Data Handlers
- Fixed text boxes not always losing focus in the GUI.
- Tab-navigation no longer autocompletes the first option for text boxes that suggest a field if nothing was typed.
- Control + Pick Block now also copies if the block was waterlogged and if it should connect to other blocks.
- Updated hover-tooltips (see below).
Rendering
- Updated how hover-tooltips work for Jigsaws, Structure Blocks, and Data Handlers.
- The display name now renders with transparency, so it doesn't get cut off when it goes into a block.
- The display name also adjusts its offset according to what side of the block you're looking at, and if that side of the block is exposed.
Commands
- Added
/structure_gel nv
to toggle night vision- Has optional arguments for players and if the effect should be added or removed
Misc Internal Changes
- Mixins are now located in their own package based on environment side.
client
,common
, andserver
(unused currently)
- Packets are now located in their own package based on direction.
c_to_s
,s_to_c
, andbi_directional
- Redid several mixins to utilize MixinExtras for better cross-mod compat.
ExtendedJigsawPlacement
has been removed. All logic is handled through mixins to the vanilla JigsawStructure and JigsawPlacement.GelTemplate
has beem moved to the api package.
1.20.1-v2.16.0
LoadStructureTemplateEvent
- New event that fires after a
StructureTemplate
loads. - Contains methods to modify the blocks and entities within the template.
Gel Blocks
- Now automatically perform their function without needing to implement the structure processor or use a specific StructurePiece type.
- If the processor is already present, it will still use that.
- This will not be done when loading a template through Structure Blocks or the
place template
command.
IModifyState
- Any
TemplateStructurePiece
that extendsIModifyState
will now work with it as long as thepostProcess
method isn't overwritten.
Data Handler
- All handlers can now mark blocks for post processing in the Properties menu.
- Useful for making sure water flows after being placed, or updating fence connections for neighboring structures.
- The position marked for post processing will be the position of the data handler itself, with the applied offset.
- Added
structure_gel:empty
as an empty data handler.- Its primary function is to set an offset and mark a position for post processing.
- This is not used by default if the data handler can't be loaded from nbt.
- Fixed the
structure_gel:block_state
usingstructure_gel:chest
for its data parser.
Building Tool
- The Shape tool now has Hollow Cube, Cube Frame, Pyramid, and Cone.
- Changing the shape now uses a selection panel instead of clicking to cycle to the next value.
- The Fill tool now supports all the shapes from the Shape tool for fine control over shapes (replaces the old Mode property).
- The Clone tool now temporarily saves its selected region into a clipboard.
- This allows for cloning to an area far away, regardless of the source being loaded.
- The region is not actually saved to the item itself, but rather to an external file in the dimension's
data
folder.. - This results in drastic client performance improvements, especially for large selections.
- The Replace tool now has a "Fuzzy" property that allows only replacing directly attached neighbors or diagonal neighbors.
- Fixed a number of vertex sorting issues with the Clone tool.
- Translatable text values in the GUI's now scroll like vanilla options buttons.
- Action history is no longer stored in a level capability. It has been moved to
SavedData
files to allow for more dynamic loading.
Block Entities
- Added
IRotatable
interface.- Allows a block entity to be rotated and mirroed when placed in a structure.
- Contains
void mirror(Mirror)
andvoid rotate(Rotate)
. - Supported by vanilla's
StructureTemplate
(mixin),GelTemplate
, relavent data handlers, and relavent Building Tool modes.
Misc
- Added an abstract item interface:
StructureFinderItem
- Contains basic methods to get/set located structure info within itself.
- Improved performance with data handler processing.
- Some registry events have been deprecated. They will become NeoForge registries in 1.20.4.
1.20.1-v2.14.0
Building Tool
-
The Flood tool now has a radius and replace property.
- Replace can be "Air" or "Air and Liquid" and defaults to "Air and Liquid" (was "Air" only).
- Radius can range from 0-200 and defaults to 80 (was 64).
-
The Extend tool now has a radius and replace property.
- Replace can be "Air" or "Air and Liquid" and defaults to "Air and Liquid" (was "Air" only).
- Radius can range from 0-200 and defaults to 80 (was 64).
-
The size of the currently selected region is displayed above the hotbar and in the selection edit GUI.
- The line tool displays its length instead.
-
The blocks in your current pallete are displayed in the bottom right corner of the screen.
-
The size of a selection can now be edited in the GUI with text boxes.
- This assumes you're changing the positive most corner of the selection box. If a full selection box doesn't exist, one will be created from your position, or a point.
-
The line tool selection can be edited by grabbing the "corner" position of the selection points.
-
Holding right and left click allows the building tool to spam operations.
- Actions that happen as a result of spamming are grouped into one undo/redo.
-
Color coded some text values related to positions.
-
Dramatically improved the visuals of some renders.
- This also improves performance.
General
- Added more utility methods to
VoxelShapeUtil
.
Fixes
- The clone building tool wasn't updating the render when you rotate or mirror.
- The building tool render wasn't displaying right away when you join a world.
- Keybinds weren't working when mapped to mouse buttons.
1.20.1-v2.13.1
Data Handlers
- Data handlers now support position offsets.
- Position offsets are handled as left, up, and forwards, from the perspective of the data handler.
- The offset position is rendered in world.
- Updated the Data Handler GUI to be more organized.
- Data handlers can be waterlogged in the GUI now.
- Data Handlers are now in the
dragon_immune
andwither_immune
block tags.
Building Tool Rendering
- Optimized the rendering logic.
- Rendering in Shape, Replace, or Clone mode now works with a proper culling system, which should make it look nicer.
- Renders now have shading to improve their visibility.
Before and After
Fixes
- Fixed the building tool not working with negative reach values properly.
- Fixed the building tool's message for the new reach distance showing an incorrect value.
- Fixed building tool rendering in Fabulous graphics to match fast/fancy.
- Fixed a crash when a mod's dependency is missing.
Updated to 1.20.1, general code cleanup with deprecated data, armor trims can be registered to the texture atlas.
A full changelog can be found here: https://gitlab.com/modding-legacy/structure-gel-api/-/blob/1.20.1/changelogs/1.20.1-v2.13.0.md