Jacks Server Side Tweaks
A collection of gameplay features that are not required on a client.
All features can be configured via the /jsst
command.
Features
All features can be enabled or disabled using /jsst <feature> (enable/disable)
.
Item Editor
By far the largest feature, this provides an easy-to-use, extensive interface for modifying items.
Currently supports the following:
- Names, including multi-component texts and custom gradient support
- Lores, with the same features
- Enchantment, with tooltip fix for levels > 10
- Potions (Drinkable, Splash, Lingering, Tipped Arrows, Suspicious Stew)
- Attribute Modifiers
- Container Locks
- Banner/Shields, with support for PlanetMinecraft's Banner Editor.
- Durability Editor, including unbreakable modifiers
- Book Author Editor
- Book Unsigner
- Head Owner Changer
- Leather Armour Colour Editor
- Firework & Firework Star Editors
and more as ideas come in.
To begin, run the command `/jsst itemEditor hand` to change the item in your hand, or `.. itemEditor item - ` to use a template.
![An gif showing various pages of the item editor](https://i.imgur.com/o9W3oM4.gif)
This feature will only show editors possibly usable with the given item.
#### Labels
Enchantments, Potion Effects and Attribute Modifiers have been given custom labels to help see them at a glance; however I can not
provide defaults to every modded enchantment out there. If you want to add your own (either in your mod or a datapack), you can create
a corresponding JSON file under `data/jsst/item_editor_labels/.json`.
In this JSON file, there is a single JSON object with another JSON object under the key `values`. In this values object, there
should be a list of **ID**: **LabelDefinition** pairs; you can find the ID by enabling `enabledDevTools` and browsing said
menu.
**LabelDefinition** is defined as either a minecraft item ID such as `minecraft:diamond_pickaxe`, or a full ItemStack JSON
which you can get from an existing stack by the `enabledDevTools`-only Stack JSON Printer.
You can replace the entire vanilla set by adding `replace: true` alongside the `values` tag at the top level.
For a better explained example, see [JSST's base files](https://github.com/JackFred2/JacksServerSideTweaks/tree/1.19/src/main/resources/data/jsst/item_editor_labels).
#### Config
| Option | Description | Default | Valid Options |
|-----------------|------------------------------|---------|-----------------|
| enabledDevTools | Enable dev-specific editors. | `true` | `true`, `false` |
Portable Crafting
Lets you use crafting tables by right-clicking with them.
Valid items to check are contained in the
[jsst:items/crafting_tables](https://github.com/JackFred2/JacksServerSideTweaks/blob/1.19/src/main/resources/data/jsst/tags/items/crafting_tables.json)
tag, which can be extended using data packs or the Command Defined Datapack feature below.
#### Config
| Option | Description | Default | Valid Options |
|-----------|----------------------------------------------------------------|---------|-----------------|
| sneakOnly | Whether players need to sneak to use crafting tables as items. | `false` | `true`, `false` |
World Container Names
Adds floating labels above containers from either the container name or item count.
Uses the new Display Entities from 23w06a.
To give a name to a container, rename it in an anvil. You can use the format `[item:]` to display an item instead,
using the same syntax as the `/give` command. Examples:
- `[item:minecraft:golden_apple]`
- `[item:potion{Potion:"night_vision"}]`
If you give a container the name `[max-count]`, the item displayed will update to the highest-count item in the
container
every time it is opened.
#### Admin
To clean up if you ever remove JSST, you can run the following command to remove lingering display entities:
`/kill @e[tag=jsst_world_container_name]`
#### Config
| Option | Description | Default | Valid Options |
|----------------------|-----------------------------------------------|----------|----------------------|
| facingMode | How labels should face the player. | `CENTER` | `CENTER`, `VERTICAL` |
| labelRangeMultiplier | Multiplier for the distance labels are shown. | `1` | `[0.25, 4]` |
Display Items
Lets you make items for display that don't despawn by renaming them to [display]
in an anvil.
Useful for shops or showcases. Plays a chime sound if a display item is successfully made.
**Warning**: This does not prevent the item from being destroyed in other ways, such as cactus, lava, `/kill`, cleanup
plugins, or being moved with hoppers or water.
#### Admin
To 'take ownership' of nearby items, run the following command:
`/execute as @e[type=item,tag=jsst_display_item,distance=..5] run data modify entity @s Owner set from entity @p UUID`
#### Config
| Option | Description | Default | Valid Options |
|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------------|
| ownerPickupOnly | Should only the player who dropped the item be able to pick it back up. | `true` | `true`, `false` |
| operatorOnly | Should only server operators be allowed to create display items? Does not apply in single player. Recommended to enable ownerPickupOnly if this is true. | `false` | `true`, `false` |
Command Defined Datapack
Lets you create and manage a datapack folder via in-game commands.
Currently, only supports tags. Designed to help configure mods game features using tags such as `minecraft:enderman_holdable`,
or `jsst:crafting_tables`, or just creating tags for your server easier.
`/jsst cdd save` - Manually saves a copy of the current datapack in-memory. Should not be required in most cases as other
commands that modify the pack call this directly.
#### Tags
See also: [Tag JSON Format](https://minecraft.fandom.com/wiki/Tag#JSON_format)
Base command: `/jsst cdd tag `
`` defines which registry the tags should be looked up through. For example, you'll want `minecraft:item` to
modify item tags or `minecraft:block` for block tags.
- `.. listTags [filter]` - Lists all tags that are registered for this registry.
- `.. list ` - Lists all elements in a given tag. This is after tags have been 'flattened' i.e. tags referenced by other tags are not shown.
- `.. add value [isOptional]` - Adds an element to a `` in the datapack.
- `.. add tag [isOptional]` - Adds a reference to `` in `` in the datapack.
- `.. remove ` - Removes an element from `` in the datapack. This does **not** let you remove items from tags defined elsewhere; use `setReplace` below to overwrite them.
- `.. setReplace ` - Marks `` to overwrite other tags with the same name.
##### Example (Adding nether stars to the crafting table list for Portable Crafting above)
1. `/jsst cdd tag minecraft:item add jsst:crafting_tables value minecraft:nether_star`
2. `/datapack enable "file/jsstCDD"` on first generation
3. `/reload`
Banner Writing
Easily write sentences with a stack of blank banners and a command.
To start, simply use the command `/jsst bannerWriter start `. This will add a tag to the banners you are
holding, which lets the mod know what to replace.
Uses the letters and numbers from https://www.gamergeeks.net/apps/minecraft/banners/.
Supported letters:
`abcdefghijklmnopqrstuvwxyz0123456789 .,+-*/'"=!:`
Sapling Replanter
Sapling items try to plant themselves instead of de-spawning. Tries to space them out, and includes support for dark oak saplings.
#### Config
| Option | Description | Default | Valid Options |
|-----------------|-----------------------------------------------------------------------------------------------------------------|---------|-----------------|
| spacingEnabled | Should saplings try to space themself out? | `true` | `true`, `false` |
| minimumDistance | Minimum blocks between saplings. Requires `spacingEnabled`. Dark Oak has it's own handling. | `1` | `[1, 3]` |
| searchRange | Horizontal distance that saplings search for a valid position. Vertically, always checks layer above and below. | `3` | `[1, 4]` |
| maxPerStack | Maximum number of saplings to plant per dropped stack; the rest are discarded. | `5` | `[1, 64]` |
Beacon Range Multiplier
Beacons can have a multiplier to their range added.
For reference, various ranges for beacons are:
| Level | Vanilla Range in Blocks | 1.5x (mod default) | 4x | 8x |
|-------|-------------------------|--------------------|-----|-----|
| 1 | 20 | 30 | 80 | 160 |
| 2 | 30 | 45 | 120 | 240 |
| 3 | 40 | 60 | 160 | 320 |
| 4 | 50 | 75 | 200 | 400 |
#### Config
| Option | Description | Default | Valid Options |
|-----------------|--------------------------------------------------------|---------|---------------|
| rangeMultiplier | What multiplier should be given to the beacon's range? | `1.5` | [0.5, 8] |