Skip to content

Commit

Permalink
Update 1.9 (#55)
Browse files Browse the repository at this point in the history
* Crystal Locator (#48)

* crystal locator

* crystal locator recipe

* tuning resource type

* use block predicate for tunings

* dynamic and synced tuning registry

* tunings dont blow up game

* crystal locator textures and tuning translations

* color tinting for tuned locators

* tuned crystal locator textures

* more tunings

* add tuned locators to creative inventory

* conventional tags for buds and clusters

* cluster and buds tags for items

* spectrum geode integration

* crystal tuning recipe type

* spectrum tuning recipes

* advancements for base tuning recipes

* advancements for spectrum tuning recipes

* set cooldown for both crystal locators on use

* moonstone tuning

* adjust diamond tune colour

* add crystal locators tag

* use a location predicate for tunings

* potentially higher quality resonate sound

* fix crystal locator sound playing twice with incorrect subtitle

* crystal locators require tuning

* fix diamond tuning recipe file name

* make the base crystal locator look like the untuned locator

* Fix gypsum roses not dropping shards if top half is broken

Fixes #49

* Geode placement overhaul (#51)

* generate emerald geodes in every overworld biome

* generate emerald geodes in all biomes but only at high elevations

* update indentation of generation tags

* lapis geode changes with extra geode biomes

* Echo locator v2 (#53)

* new echo locator item functionality

* remove echo locator block

* piglins no longer attempt to gather pyrite if theyve seen it before

Fixes #52

* added bismuth geodes

Closes #50

* bismuth tuning

* cooldown method for crystal locator instead of weird if statement

* locator advancements

* Gypsum blocks (#54)

* polished gypsum and wall

* polished stairs model

* polished slab model

* load conditions for spectrum integrated recipes

* polished gypsum crafting

* polished gypsum stonecutting

* polished gypsum block loot tables

* rock collector advancement

* subtler colours

* only render outline from echo display

* chiseled gypsum block

* chiseled gypsum crafting

* chiseled gypsum mining

* gypsum pillar block

* pillar crafting

* pillar shading adjustments

* pillar mining

* smooth gypsum block set

* smooth gypsum crafting

* subtler pillar ribbing colour

* slight reduce echo locator block range, remove entity glow

* update readme for 1.9

* add spectrum to readme
  • Loading branch information
TheDeathlyCow committed Mar 4, 2024
1 parent 850e02a commit 2035da4
Show file tree
Hide file tree
Showing 234 changed files with 4,672 additions and 1,345 deletions.
113 changes: 101 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ The CurseForge and Modrinth mod pages as well as this repository are the only of
# New Geodes

## Emerald Geodes
Emerald geodes behave very similarly to amethyst geodes; they spawn as sphere-like objects underground in Mountain-type biomes encased in calcite and smooth basalt casings underground and can grow emerald crystal buds. When these buds are harvested, they of course drop emeralds. Provides an automate-able alternative to emerald farming than just trading endlessly.
Emerald geodes behave very similarly to amethyst geodes; they generate at high elevations throughout the Overworld, though they are must abundant in Mountain-type biomes. They are encased in calcite and smooth basalt casings underground and can grow emerald crystal buds. When these buds are harvested, they of course drop emeralds. This provides an automate-able alternative to emerald farming than just trading endlessly.

## Quartz Geodes
Quartz Geodes generate in The Nether and have many similarities to amethyst geodes and emerald geodes. Quartz buds and clusters grow on budding quartz, but budding quartz cannot be harvested. Quartz clusters will drop quartz when broken, but will drop an item form of itself when broken with silk touch, etc. However, quartz geodes spawn exclusively in The Nether, and with a middle layer of tuff instead of calcite.

### Quartz Oscillators
Quartz buds and clusters behave as an oscillator when powered by an external redstone source. That is, when a bud or cluster receives power, it will periodically turn on and off itself, emitting redstone power on an infinitely-repeating basis. The frequency at which it pulses is determined by its size.
Quartz buds and clusters behave as an oscillator when powered by an external redstone source. That is, when a bud or cluster receives power, it will act as a redstone clock, and emitting redstone power on and off at difference frequencies, depending on the size of the bud.

Buds pulse with the following frequencies:

Expand All @@ -28,25 +28,110 @@ Buds pulse with the following frequencies:

## Diamond Geodes

Diamond geodes generate in all biomes of the Overworld filled with water. Diamond geodes have an outer layer of smooth basalt and a middle layer of 75% deepslate coal ore and 25% smooth basalt. They also only have a single cluster block do not include a budding block to grow new diamonds. It is best to thing of these geodes as 'goody boxes' of diamonds and coal to be a small boost to your deep mining.
Diamond geodes generate in all biomes of the Overworld filled with water. Diamond geodes have an outer layer of smooth basalt and a middle layer of 75% deepslate coal ore and 25% smooth basalt. They also only have a single cluster block and do not include a budding block to grow new diamonds. It is best to thing of these geodes as 'goody boxes' of diamonds and coal to be a small boost to your deep mining.

## Echo Geodes

Echo geodes generate exclusively in the Deep Dark. The budding echo block provides a renewable source of Echo Clusters, which can be harvested to obtain Echo Shards. This mod also adds a new use for echo geodes in crafting the Echo Locator.
Echo geodes generate exclusively in the Deep Dark. The budding echo block provides a renewable source of Echo Clusters, which can be harvested to obtain Echo Shards. This mod also adds a new use for echo geodes in crafting the [Echo Locator](#echo-locator).

## Lapis Lazuli Geodes

Lapis Lazuli Geodes are a blue geode that generate in deserts and have a middle layer of [Pyrite](#Pyrite). While you can harvest Medium and Large Lapis Lazuli Buds and Lapis Lazuli Clusters to get Lapis Lazuli, you can also harvest Small Lapis Lazuli Buds to get Pyrite Chunks, which can be used to craft Pyrite
Lapis Lazuli Geodes are a blue geode that generate abundanelty in deserts, and at shallow depths in the rest of the Overworld. They have a middle layer of [Pyrite](#Pyrite). While you can harvest Medium and Large Lapis Lazuli Buds and Lapis Lazuli Clusters to get Lapis Lazuli, you can also harvest Small Lapis Lazuli Buds to get Pyrite Chunks, which can be used to craft Pyrite

## Gypsum Patches

Gypsum Patches are a new type of feature that grow Gypum Roses and can be found in Deserts and Badlands. While not technically a Geode, they are a quite similar idea with crystal blocks, budding blocks, and growable crystals. There are still a number of notable differences though. Firstly, Gypsum Patches generate on the surface rather than underground. The budding blocks also only grow crystals upwards, rather than to any side (though the crystals can still be placed in any direction). Finally, Gypsum Roses can grow to be 2 blocks tall.

When harvested Gypsum Roses drop Gypsum Shards, which can be composted or used to craft sand. More features are planned.
When harvested, Gypsum Roses drop Gypsum Shards, which can be composted, craft sand, cut into blocks, or used to craft the [Crystal Locator](#crystal-locator). Gypsum blocks come in polished, smooth, chiseled, and pillar variants. They are purely decorative, and have a orangish hue.

# Echo Locators
# Crystal Locator

The Echo Locator is an item that can be used to help find geodes. These are sort of like tuning forks that, when used, will cause any nearby crystal clusters or buds to resonate for 30 seconds. The nearest crystal will also emit a sculk vibration particle back to the Echo Locator to provide a visual guide for anyone who cannot hear well or use directional audio. They are crafted using 4 echo shards and 2 bones.
The Crystal Locator is an item that can be used to help find geodes. When tuned to the correct Crystal type, they can be used to make any nearby crystal clusters or buds of the corresponding type to glow for about a second and make a dinging sound. They are crafted using 4 Gypsum Shards and 2 sticks.

### Crystal Locator Tunings

In order to tune a crystal locator, you must craft an untuned base Crystal Locator with its tuning material. These materials include Amethyst Shards, Emeralds, Gypsum Shards, Quartz, Echo Shards, Lapis Lazuli, and Diamonds. There are also tunings available for [Spectrum](https://modrinth.com/mod/spectrum), if it is installed. These Spectrum tunings include Citrine, Moonstone, and Topaz.

### For Mod and Mod Pack Authors -- Datapack Tunings

If you want to add a tuning for a geode in your own mod or mod packs, you can do so with a datapack.

First, specify the tuning in a file in `data/<namespace>/geodes/tunings/<tuning_path>.json`.

<details>

<summary>
Tuning JSON schema
</summary>

```json5
{
// A base-10 encoded RGB color. The following example
// is the colour #C890F0, which is used for the
// Amethyst tuning in More Geodes
"color": 13144304,

// A json text component that is used for the
// item tooltip. Also allows for translation.
// See: https://minecraft.wiki/w/Raw_JSON_text_format
"description": {
"text": "Tuned to Amethyst Crystals",
"color": "#"
},

// A Location predicate. Same as the `predicate` field
// in a minecraft:location_check loot condition
// See: https://minecraft.wiki/w/Predicate
"tuned_to": {
"block": {
"blocks": [
"minecraft:amethyst_cluster",
"minecraft:large_amethyst_bud",
"minecraft:medium_amethyst_bud",
"minecraft:small_amethyst_bud"
]
}
}
}
```
</details>

If you want to make the tuning craftable, you must use the special `geodes:crystal_tuning` recipe type. This recipe type is very similar to a shapeless recipe, except the output item is replaced by the output tuning. The output item will always be a Tuned Crystal Locator.

<details>

<summary>
Example crystal tuning recipe
</summary>

```json5

{
// Custom recipe type
"type": "geodes:crystal_tuning",
"group": "geodes_tunings",
"ingredients": [
{
"item": "minecraft:amethyst_shard"
},
{
"item": "geodes:crystal_locator"
}
],
// Specify the output tuning ID instead
// of the item. This tuning will be applied
// to a Tuned Crystal Locator
"tuning": "geodes:amethyst"
}
```

</details>

# Echo Locator

The Echo Locator has a similar function to the Crystal Locator, however instead of locating Geodes it can be used to locate ores within 6 blocks of the user. Every ore it detects causes 1 damage to the item. The Echo Locator is crafted from 4 Echo Shards and 2 Bones. This is useful for getting those pesky ores hidden just inside a corner or behind a block of stone next to your strip mine.

The blocks that the Echo Locator can detect is controlled with the block tag `geodes:echo_locatable`.

# Pyrite

Expand All @@ -58,11 +143,11 @@ This mod also adds a stair, slab, and wall variant of Calcite. They use the vani

# Datapack Integration

This mod uses the namespace `geodes`. If you wish to make changes to the features in this mod using a datapack, all files must be put under that namespace. The emerald and quartz geodes use very similar values to the amethyst geode, and it can be used as an example for how to configure them. Slicedlime provides an example worldgen datapack that can be used as a reference [here](https://github.com/slicedlime/examples/blob/master/vanilla_worldgen.zip), or alternatively you can use Misode's datapack generators to generate these for you, which can be found [here](https://misode.github.io/). As of 1.19.3, the amethyst geode definition is included in the jar of the game (unzip the jar file with your favourite zip-file unarchiver, jars are literally just zips with a different name).
This mod uses the namespace `geodes`. If you wish to make changes to the features in this mod using a datapack, all files must be put under that namespace. The emerald and quartz geodes use very similar values to the amethyst geode, and it can be used as an example for how to configure them. Misode's datapack generators are very helpful for this, and can be found [here](https://misode.github.io/).

## Datapack Addons

In the [releases tab](https://github.com/TheDeathlyCow/more-geodes/releases/) you can find downloads for two datapack addons for this mod. They're each pretty self explanatory, and act as ideas for how one might decide to try and make a datapack configuration for this mod.
In the [datapack addons folder](./datapack_addons/) you can find downloads for two datapack addons for this mod. They're each pretty self explanatory, and act as ideas for how one might decide to try and make a datapack configuration for this mod.

## Configured features
You can make changes to the geode configured features by replacing their files in the directories `geodes/worldgen/configured_feature/emerald_geode.json`, `geodes/worldgen/configured_feature/quartz_geode.json`, etc.
Expand All @@ -71,11 +156,11 @@ You can make changes to the geode configured features by replacing their files i
Similar to the configured features, you can edit the geode placed features by replacing their files in the directories `geodes/worldgen/placed_feature/emerald_geode.json`, `geodes/worldgen/placed_feature/quartz_geode.json`, etc.

## Biome placement
Rather than editing or overriding specific biomes in order to add or remove different geode features, it would instead be better to edit the biome tags `geodes:has_emerald_geode`, `geodes:has_quartz_geode`, etc. These tags exist in the directory `geodes/tags/worldgen/biome/`, and the default tags for them can be found [here](https://github.com/TheDeathlyCow/more-geodes/tree/main/src/main/resources/data/geodes/tags/worldgen/biome).
Rather than editing or overriding specific biomes in order to add or remove different geode features, it would instead be better to edit the biome tags `geodes:has_emerald_geode`, `geodes:has_quartz_geode`, etc. These tags exist in the directory `geodes/tags/worldgen/biome/`, and the default tags for them can be found [here](https://github.com/TheDeathlyCow/more-geodes/tree/main/src/main/resources/data/geodes/tags/worldgen/biome). Note that Emerald and Lapis geodes generate more frequently in some biomes. These are controlled by the biome tags `geodes:has_extra_emerald_geodes` and `geodes:has_extra_lapis_geodes`.

**Important note**: These changes can ONLY take affect after a server or world restart. A simple reload is not sufficient!

# Configuration [Fabric Version Only]
# Configuration

The generation of each geode can be independently disabled via a config. The config should be placed in your standard config directory, under the file name `geodes.properties`. Any changes to the config require a game or server restart.

Expand All @@ -101,6 +186,10 @@ If you have the [Carpet](https://modrinth.com/mod/carpet) mod installed, turning

If you have the [Applied Energistics 2](https://modrinth.com/mod/ae2) mod installed, you'll be able to use the `generate_certus_geodes` setting to find certus quartz geodes in your world. Also, all of this here mod's budding blocks will be able to generate clusters more efficiently using AE2's `Crystal Growth Accelerator`.

## Spectrum Integration

If you have [Spectrum](https://modrinth.com/mod/spectrum) installed, you'll be able to use the `generate_bismuth_geodes` setting to find Bismuth geodes in your world. Furthermore, tunings for Topaz, Citrine, and Moonstone geodes will automatically be added.

# Translations

If you'd like to create translations for More Geodes, the project is on [Crowdin](https://crowdin.com/project/more-geodes). You can also provide translations via issue or pull request if you so wish. Thanks for your contribution!
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ org.gradle.jvmargs=-Xmx2G
# check these on https://fabricmc.net/versions.html
minecraft_version=1.20.1
yarn_mappings=1.20.1+build.2
loader_version=0.14.21
loader_version=0.14.25


# Mod Properties
mod_version=1.8.2
mod_version=1.9
maven_group=com.github.thedeathlycow
archives_base_name=more-geodes

#Fabric api
fabric_version=0.83.1+1.20.1
fabric_version=0.91.0+1.20.1

# Carpet version
carpet_version=1.20-1.4.112+v230608
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/com/github/thedeathlycow/moregeodes/MoreGeodes.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import com.github.thedeathlycow.moregeodes.entity.GeodesMemoryModules;
import com.github.thedeathlycow.moregeodes.features.ModFeatures;
import com.github.thedeathlycow.moregeodes.item.ModItems;
import com.github.thedeathlycow.moregeodes.item.recipe.GeodesRecipeSerializers;
import com.github.thedeathlycow.moregeodes.item.tuning.Tunings;
import com.github.thedeathlycow.moregeodes.sounds.GeodesSoundEvents;
import com.github.thedeathlycow.moregeodes.world.GeodesGameEvents;
import com.mojang.logging.LogUtils;
Expand All @@ -25,6 +27,7 @@ public class MoreGeodes implements ModInitializer {
public void onInitialize() {
LOGGER.info("Beginning More Geodes initialization");
CONFIG.loadConfig();

ModBlocks.registerBlocks();
ModItems.registerItems();
ModFeatures.placeFeaturesInBiomes();
Expand All @@ -33,6 +36,9 @@ public void onInitialize() {
GeodesSoundEvents.registerSoundEvents();
GeodesGameEvents.registerEvents();
GeodesMemoryModules.registerModules();
GeodesRecipeSerializers.registerAll();
Tunings.onInitialize();

LOGGER.info("More Geodes initialized!");
}

Expand All @@ -43,4 +49,8 @@ public static boolean isCarpetLoaded() {
public static boolean isAE2Loaded() {
return FabricLoader.getInstance().isModLoaded("ae2");
}

public static boolean isSpectrumLoaded() {
return FabricLoader.getInstance().isModLoaded("spectrum");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.thedeathlycow.moregeodes.client.GeodesCutouts;
import com.github.thedeathlycow.moregeodes.client.GeodesEntityRenderers;
import com.github.thedeathlycow.moregeodes.client.ItemColorsSetup;
import net.fabricmc.api.ClientModInitializer;

public class MoreGeodesClient implements ClientModInitializer {
Expand All @@ -11,6 +12,7 @@ public void onInitializeClient() {
MoreGeodes.LOGGER.info("Beginning More Geodes client initialization");
GeodesCutouts.registerCutouts();
GeodesEntityRenderers.registerEntityRenderers();
ItemColorsSetup.onInitialize();
MoreGeodes.LOGGER.info("More Geodes client initialized!");
}
}

0 comments on commit 2035da4

Please sign in to comment.