ConfigurableEnd

Configure End Ship frame rewards, End City frequency, and city/ship chest loot with a server-side config file!
# ConfigurableEnd 1.0.2 Beta

ConfigurableEnd is a server-authoritative Fabric mod for controlling End Ship frame rewards, End City frequency, and End City or End Ship chest loot. It works on dedicated servers and in single-player through the integrated server. Multiplayer clients do not need the mod installed.

## End Ship rewards

Newly generated End Ships use a configurable weighted reward pool at the exact frame that normally contains an Elytra. The default distribution is:

- Elytra: 50%
- Nether Star: 30%
- Enchanted Golden Apple: 10%
- Heavy Core: 5%
- Netherite Ingot: 5%

Entries can be added, removed, disabled, or reweighted. Weights are relative and normalize automatically. Rewards support stack counts, custom names, lore, enchantments, custom data, and supported Minecraft 1.21.11 item components.

Reward selection is deterministic per ship. Reloading chunks, revisiting the area, or restarting the world does not reroll a generated frame. Removing the reward does not make it reappear, and unrelated or player-placed frames are not changed.

## End City generation

End City placement exactly follows the loaded Minecraft 1.21.11 settings by default. Optional settings control spacing, separation, salt, spread type, frequency, and frequency-reduction method.

Placement changes apply only to structure starts in ungenerated chunks. Existing End terrain is not regenerated. Invalid settings fall back safely to vanilla values.

## Chest loot and other mods

End City room chests and End Ship chests have separate settings, even though vanilla Minecraft assigns both the same End City treasure table.

The three modes have explicit precedence:

- `VANILLA` uses the exact final live End City loot table after datapacks and supported Fabric loot mods have replaced or modified it. ConfigurableEnd does not copy, replace, or filter this table, so external loot additions remain functional.
- `MODIFY` starts from that final combined table when `preserveDatapackEntries` is `true`. Other-mod and datapack pools, entries, functions, and conditions are preserved first; ConfigurableEnd then applies its configured overrides, additions, rolls, and custom pools.
- `REPLACE` intentionally overrides the combined table. Only pools and entries configured in ConfigurableEnd remain available for that city or ship context.

If `MODIFY` uses `preserveDatapackEntries: false`, its base is the Minecraft 1.21.11 End City resource instead, intentionally excluding external table additions before ConfigurableEnd changes are applied.

Successful Minecraft datapack reloads automatically refresh the final combined table and rebuild ConfigurableEnd's cached city and ship variants. Already generated chest inventories are never refilled or rerolled.

## Configuration help inside every file

The mod creates:

- `config/configurableend/general.json`
- `config/configurableend/ship_rewards.json`
- `config/configurableend/end_city_generation.json`
- `config/configurableend/end_city_loot.json`
- `config/configurableend/end_ship_loot.json`

Every file contains an ignored `_documentation` section with its purpose, editing workflow, every available field, valid types and ranges, possible modes, and practical examples.

Both loot files include these specific examples:

- `vanillaKeepDatapacksAndOtherMods`
- `modifyCombinedTableAndKeepOtherMods`
- `replaceEverythingWithOneModdedItem`

Each example includes an `_expectedResult` explaining whether external pools remain or are overridden. Existing valid files automatically receive documentation version 2 without losing their configured values.

For vanilla items, use the short path without `minecraft:`:

```json
"item": "nether_star"
```

For mod-added items, use the full namespaced ID:

```json
"item": "modid:item_name"
```

Older full vanilla IDs such as `minecraft:nether_star` remain compatible.

## Commands

- `/configurableend status`
- `/configurableend rewards`
- `/configurableend validate`
- `/configurableend reload`
- `/configurableend process nearby`
- `/configurableend debug sampleRewards <count>` when debug commands are enabled
- `/ce` as the command alias

Use Minecraft's `/reload` after changing datapacks. Use `/configurableend reload` after changing ConfigurableEnd's JSON files.

## Installation

### Single-player

1. Install Minecraft Java Edition 1.21.11 with Fabric Loader 0.19.3 or newer.
2. Install a compatible Minecraft 1.21.11 Fabric API.
3. Put `configurableend-1.0.2-beta.jar` in the instance's `mods` folder.
4. Launch the game and open or create a world.
5. Edit the generated files and use the validation/reload commands.

### Dedicated server

1. Install Minecraft Java Edition 1.21.11 with Fabric Loader 0.19.3 or newer.
2. Install a compatible Minecraft 1.21.11 Fabric API on the server.
3. Put `configurableend-1.0.2-beta.jar` in the server's `mods` folder.
4. Start the server with Java 21.
5. Multiplayer clients can connect without ConfigurableEnd installed.

## Requirements

- Minecraft Java Edition 1.21.11
- Fabric Loader 0.19.3 or newer
- Fabric API compatible with Minecraft 1.21.11
- Java 21

## Important behavior

- Structure changes affect only ungenerated structure starts.
- Chest rules are assigned during structure generation; existing inventories are not rewritten.
- Automatic retroactive frame scanning is never performed.
- Nearby frame processing requires an explicit operator setting and command.
- Empty-chest probability applies independently to every configured pool when multiple pools exist.
- Loot mods using unsupported invasive mixins on the same chest-unpack path can still conflict.


The ConfigurableEnd Team

profile avatar
  • 5
    Projects
  • 722
    Downloads

More from djcowboyView all