Tags
Creators
Details
Licensed ARR
Published 3 years ago
All versions
2.20.0
Release
Structure Gel API v2.20.0last year 2,903
Uploaded by
Compatibility
Minecraft: Java Edition
1.21.4
Platform
NeoForge
Supported environments
Client and server
Changes
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
IStructureGelinterface 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:gelblock tag. If the block in the tag is actually aStructureGelBlock, 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
GelPortalBlockclass 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.
- Ignition of the portal is handled by calling
Registries
- Added two new registries;
structure_gel:gel_spread_behaviorandstructure_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_typeandstructure_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.SGRegistriesfor 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.Staticnow contains aHolder.Referencefor the object registered.Registrar.Staticcan be created with a name only usingRegistrarHandler.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.
- In this case, a value must be assigned later through
- Added updated handling for block and item registry.
- See
com.legacy.structure_gel.core.registry.SGRegistriesfor usage.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:T8TGycIQ:z06Zdn5q"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:T8TGycIQ:z06Zdn5q"
}

