File Details
CaveGenerator-0.13.jar
- B
- Mar 3, 2019
- 236.10 KB
- 487
- 1.12.2+1
File Name
CaveGenerator-0.13.jar
Supported Versions
- 1.12.2
- 1.12.1
A lot has changed in this release. You'll need to clear the old presets from your config directory and start fresh in order to avoid any issues. Comments present in normal JSON files is now a likely cause of crashes for previous users updating.
Full Changelog:
A full, 100% from-scratch rewrite of the original mod.
- Cave Generator has been fully rewritten with a focus on null-safety (to a reasonable extent--this is Java), better code reuse, and code readability.
- This has also yielded a number of optimizations.
A new preset format: hjson!
- Cave Generator has ditched the original preset format, JSON, for hjson; a more human-friendly alternative to and superset of regular JSON.
- This provides support for comments, removes the need for many unnecessary double quotes and commas, adds a proper format for writing multiline strings, and more.
- For more information on hjson--including specs, usage, and demos--you can visit the official website, hjson.org.
- The parser used by Cave Generator is a modified version of hjson-java, pending inclusion into the master branch.
- This enables the ability to retain, add, and modify comments in-code, statistics on which fields have been accessed, and other QOL changes.
- In addition, Cave Generator will also allow normal values to be parsed as arrays. This means that states: stone can now be written in the place of states: [ "stone" ].
- Visit the Cave Generator Github page above for more information.
- Cave presets are now extended with '.cave' by default, but '.hjson' and '.json' files will also work just fine.
- Only one preset with any of the above extensions is allowed at a time.
- If you prefer to stick with regular JSON, everything will function as normal. Presets can still be updated by the game, combined, etc. just like they previously would.
- Please be aware that any type of unexpected characters, such as the comments at the top of the file which previously were ignored, will now throw ParseExceptions for regular JSON files. This will not be changed.
- For help with writing presets in the new format, visit the official Discord server.
Commands
- /reloadcaves and /testcaves have been removed. See below.
- Introducing /cave, the new hub for all of CaveGenerator's commands.
- Run /cave to view each sub-command and some basic documentation.
- Run /cave list to view a list of all current presets, whether they are enabled or disabled, and even view some buttons for opening the preset directory and enabling or disabling presets. All presets are reloaded when this occurs and the list is refreshed.
- /cave has a number other of sub-commands: reload, test, combine, enable, disable, new, and fixindent
- Sub-commands can be chained together using the && operator.
- e.g. /cave test && list will set the player to gamemode 3, give them night vision, and also open up the cave list.
QOL changes
- Introducing PresetTester, a utility for printing diagnostics about each preset to the log. This will...
- Print which fields are loaded at the top level (useful because sometimes block comments are misused)
- Print which fields do not get used by the parser and therefor have no effect.
- Test for a variety logical errors, like fields with values in unusual ranges and settings that have no effect under some circumstances.
Reorganized preset structure
- By default, all presets are now in what's called "blank slate" mode.
- This means that any major objects not present inside of cave presets will not spawn their respective features.
- In other words: tunnels, ravines, rooms, and lava @ y <= 10 will no longer spawn automatically.
- To provide a simple, vanilla implementation of any of the above features, simply supply its respective object with no fields present.
- e.g. 'tunnels: {}' will create vanilla tunnels with no changes.
- This feature can be disabled by setting blankSlate to false at the top level.
- Which blocks each generator is able to overwrite is no longer managed behind the scenes.
- You can manually fill the field replaceableBlocks with whichever blocks you want your generator to overwrite.
- You can set replaceDecorators to true if you want any blocks placed by decorators to be included automatically.
- BlockFillers have been replaced with CaveBlocks and WallDecorators.
- Use CaveBlocks whenever you want to replace air blocks with something else. This essentially determines which blocks get placed when digging stone.
- Use WallDecorators when replacing or placing on top of surfaces.
- Names may be subject to change again.
- Objects known internally as 'ScalableFloats,' including twistXZ, angleXZ, etc. can now be instantiated with a neater syntax by placing all fields in the appropriate order inside of an array.
- View the documentation inside of vanilla.cave for more details.
- Other objects will have similar features in the future.
- Renamed fields and replacements
- *inverseChance and *chance -> *chance
- This expects a 0 - 1 floating-point value representing a probability.
- To convert from *inverseChance, divide 1 by X.
- To convert from the original *chance, divide X by 100.
- tunnels.spawnInsystemInverseChance -> tunnels.systemChance
- See above for conversion.
- tunnels.spawnIsolatedInverseChance -> tunnels.isolatedChance
- See above for conversion.
- tunnels.vanillaNoiseYReduction -> tunnels.noiseYReduction
- tunnels.extensions.random: matching_branches -> tunnels.resizeBranches: false
- randomnessFactor -> randFactor
- startingValue -> startVal
- startingValueRandomnessFactor -> startValRandFactor
- stoneClusters.startingHeight -> stoneClusters.startHeight
- stoneClusters.radius -> stoneClusters.radiusX, stoneClusters.radiusY, and stoneClusters.radiusZ
- giantPillars.pillarState -> giantPillars.state
- slopeXZ -> angleXZ
- slopeY -> angleY
- *spacing -> *frequency
- To convert from *spacing, divide 1 by X.
- Noise frequency should now be placed inside of a noise2D or noise3D object. View vanilla.cave to find out which one.
- In many objects, state has been replaced with states, which is an array that serves the same function, but creates multiple objects with otherwise identical properties.
- caveBlocks, wallDecorators, and stoneClusters are currently included, but others may soon function this way.
- *inverseChance and *chance -> *chance
- Removed fields
- keys
- All objects that previously required keys should now be listed directly inside of arrays.
- Comments can be used in the place of keys.
- View vanilla.cave for examples.
- spawnInPatches
- This is now indicated by the presence of a noise object.
- All of tunnels.extensions
- Some features don't yet have / may not get replacements.
- structures.offsetX, structures.offsetY, and structures.offsetZ
- Just use the array structures.offset, instead.
- lavaRules
- You do have to manually generate lava using CaveBlocks now. Just copy from the vanilla preset.
- keys
- All noise-related parameters are now listed inside of noise2D and noise3D objects. View the documentation at the top of vanilla.cave for more information about what each field does.
Miscellaneous
- Clients should no longer require an installation of Cave Generator when connecting to servers that feature it.
- Ravine walls can now be generated using noise values. Simply include a noise2D block inside of ravines.wallNoise.
- You can now manually control the values of the floor and ceiling noise generators when generating caverns. Simply include noise3D blocks inside of caverns.ceiling and caverns.floor.
- Air matchers in structure objects now actually match air, not just solid blocks.
- In addition to airMatchers and solidMatchers, structures now also include fields for nonSolidMatchers and waterMatchers.
- These names may be subject to change.
- runAlongsideOtherCaveGenerators and runAlongsideOtherRavineGenerators have been merged into otherGeneratorsEnabled in the config file.
- presetCombiners have been removed from the config file. Just use the command, instead.
- LargeStalactites can now match specific source blocks.
- noise3D blocks include the option for specifying both a noise type and fractal type.
- More parameters will be included in the future.
- See vanilla.cave for more information.
Bug fixes
- Caverns will no longer puncture through the terrain surface or ocean floors.
- This is achieved by adding the ceiling noise value to the terrain height or cavern's maxHeight value, whichever is lower.
- WallDecorator corrections no longer exist and thus will no longer replace walls in invalid locations.
- Fixed some crashes related to Random#nextInt bounds being <= 0.
New bugs
- Almost certainly.
Congratulations! You made it through the entire list. If you've read this far, you must care about this mod at least a little. If you'd like to contribute and help improve it in future revisions, please take a few minutes to respond to this survey about field names. It would help a lot!
Also feel free to join us on Discord via this invite. Myself and other users are willing to discuss CaveGenerator whenever we're available. Hope to see you there!

