DockBridge
# DockBridge
Velocity plugin to auto-register Docker-backed servers (e.g., Limbo) and check for updates on Modrinth.
## Features
– Auto-discovery: Containers with label `net.uebliche.dockbridge.autoregister=true` are registered as Velocity servers. Host from container name, port from label `net.uebliche.dockbridge.server_port` (fallback: first exposed port, else 25565).
– Name collisions: Default `suffix` → append short container id (`basename-abcdef`). Alternative `overwrite` → keep basename, last writer wins.
– `/dockbridge` command (permission `dockbridge.command`): Shows label filter, duplicate strategy, last scan stats, and registered servers (no sensitive data).
– Modrinth update check on proxy start; login hint for players with permission `dockbridge.update.notify`.
## Installation
1) Download the latest DockBridge release from Modrinth (jar file).
2) Place the jar into your Velocity `plugins/` folder.
3) (Optional) If Velocity runs in Docker, mount `/var/run/docker.sock` into the Velocity container so DockBridge can discover containers.
4) Start Velocity. On first start, the config file `dockbridge.conf` is created in the Velocity data folder; adjust settings and restart.
5) Permissions:
– `dockbridge.command` for `/dockbridge`
– `dockbridge.update.notify` for update hints on login
## Configuration
`dockbridge.conf` (created in the Velocity data folder on first start):
“`
docker.endpoint=unix:///var/run/docker.sock
docker.poll_interval_seconds=30
filters.proxy_group=default
docker.autoregister.label_key=net.uebliche.dockbridge.autoregister
docker.autoregister.label_value=true
docker.autoregister.name_label=net.uebliche.dockbridge.server_name
docker.autoregister.port_label=net.uebliche.dockbridge.server_port
docker.autoregister.duplicate_strategy=suffix # suffix | overwrite
“`
## Docker labels (example)
“`
net.uebliche.dockbridge.autoregister=true
net.uebliche.dockbridge.server_name=limbo
net.uebliche.dockbridge.server_port=30000
“`
## Local testing
### Gradle run
“`
./gradlew runVelocity
“`
Downloads Velocity, builds the plugin (shadowJar), and starts the proxy with the plugin loaded.
### Docker Compose (Limbo set)
“`
docker compose up –build # or: docker compose -f docker-compose.limbo.yml up –build
“`
Includes three Limbo backends (ports 30000/30001/30002) and Velocity on host port 26678. Velocity runs via `runVelocity` inside the container and mounts your sources/config.
## Commands & permissions
– `/dockbridge` (permission `dockbridge.command`): Status and registered servers.
– Update hint on login: permission `dockbridge.update.notify`.
## Troubleshooting
– No servers registered?
– Ensure your containers have the label `net.uebliche.dockbridge.autoregister=true` and a valid `net.uebliche.dockbridge.server_port`.
– Make sure Velocity can reach Docker: mount `/var/run/docker.sock` (or set `docker.endpoint` to a reachable TCP endpoint).
– Check `/dockbridge` output for last scan count and registered servers.
– Port mismatch or forwarding errors?
– Verify the Limbo (or other backend) port matches the label and the server properties.
– For Velocity forwarding, ensure forwarding secret/mode match on both ends.
– Duplicate names?
– Default strategy is `suffix`. Switch to `overwrite` via `docker.autoregister.duplicate_strategy` if you want last-writer-wins.
## Build
“`
./gradlew build
“`
Produces the shaded jar at `build/libs/DockBridge-.jar`.
## Contributing
– Fork & PRs welcome. Keep code comments minimal but purposeful.
– Default Java 21, Gradle Kotlin DSL, Velocity API 3.4.0-SNAPSHOT for run task; 3.1.1 for compileOnly/annotationProcessor.
– Run `./gradlew build` before submitting; Docker-based tests are optional.
Dithering3D
# 🎨 Dithering3D – Surface-Stable Fractal Dithering




—
## 🖼️ Screenshots

—
## ✨ A Revolutionary Visual Experience
Transform your Minecraft world with **Surface-Stable Fractal Dithering** — a groundbreaking rendering technique where dither dots **stick to 3D surfaces** instead of the screen, creating a unique manga/comic book aesthetic that feels alive.
> 🎬 *Based on the innovative work by [Rune Skovbo Johansen](https://github.com/runevision/Dither3D)* — **[Watch the explainer video](https://youtu.be/HPqGaIMVuLs)**
—
## 🖼️ What Makes This Shader Special?
### 📌 **Surface-Stable Dots**
Unlike traditional dithering where patterns “swim” on screen, Dither3D anchors each dot to the actual 3D surface. Walk around blocks, and the dots stay perfectly attached!
### 🔄 **Fractal Scaling Magic**
As you move closer or farther from surfaces, dots dynamically split or merge to maintain **constant screen-space density**. It’s mesmerizing to watch!
### 🎨 **Three Color Modes**
| Mode | Description |
|:—-:|:————|
| **Grayscale** | Classic black & white dithering — clean, minimalist, timeless |
| **RGB** | Each color channel gets its own dot layer — vibrant and unique |
| **CMYK Halftone** | Authentic newspaper/comic print simulation with rotated dot angles |
—
## ⚡ Features at a Glance
| Feature | Description |
|:——–|:————|
| 🎯 **Precision Dithering** | SVD-based frequency analysis for mathematically perfect dot placement |
| 🌀 **Anti-Stretch Technology** | Anisotropic smoothing keeps dots circular even on oblique surfaces |
| 🎥 **Camera Stable** | Radial compensation prevents dot swimming during camera rotation |
| ⚙️ **Highly Configurable** | 10+ parameters to fine-tune your perfect look |
| 🚀 **Performance Optimized** | Efficient 3D texture sampling for smooth gameplay |
| 📱 **Universal Compatibility** | Works with OptiFine AND Iris on virtually any Minecraft version |
—
## 🎛️ Customization Options
Fine-tune every aspect of the dithering effect with our intuitive in-game sliders:
### 🔧 Dither Settings
| Parameter | Range | Effect |
|———–|:—–:|——–|
| **Dot Scale** | 2 – 10 | Control overall dot size (exponential) |
| **Size Variability** | 0 – 1 | 0 = Bayer pattern, 1 = Halftone style |
| **Dot Contrast** | 0 – 2 | Sharpen or soften dot edges |
| **Stretch Smooth** | 0 – 2 | Combat stretched dots on angled surfaces |
### 💡 Input Controls
| Parameter | Range | Effect |
|———–|:—–:|——–|
| **Exposure** | 0 – 5 | Brightness multiplier |
| **Offset** | -1 to 1 | Brightness offset adjustment |
### 🎮 Additional Options
– **Inverse Dots** — Flip dot colors for a negative effect
– **Radial Compensation** — Stabilize during camera rotation *(recommended!)*
– **Quantize Layers** — Prevent dot morphing for a more “classic” look
– **Debug Mode** — Visualize fractal layers for development
—
## 📦 Installation
### For OptiFine Users
1. Download and extract the shader pack
2. Place the `shaders` folder in `.minecraft/shaderpacks/`
3. Launch Minecraft → Options → Video Settings → Shaders
4. Select **Dithering3D** and enjoy!
### For Iris Users (Fabric/Quilt)
1. Install Iris Shaders mod (1.2.0+)
2. Download and extract the shader pack
3. Place the `shaders` folder in `.minecraft/shaderpacks/`
4. Press **O** in-game to open shader menu
5. Select **Dithering3D**
> 💡 **Tip:** Press `F3 + T` to quickly reload shaders after making changes!
—
## 🎨 Preset Profiles
Choose from pre-configured profiles for instant results:
| Profile | Color Mode | Dot Scale | Best For |
|:——-:|:———-:|:———:|:———|
| 🟢 **LOW** | Grayscale | 4.0 | Performance, retro feel |
| 🟡 **MEDIUM** | Grayscale | 5.0 | Balanced experience |
| 🟠 **HIGH** | RGB | 5.0 | Colorful, artistic |
| 🔴 **ULTRA** | CMYK | 6.0 | Maximum visual impact |
—
## 🌟 Perfect For
| 📸 Screenshot enthusiasts | Create unique, artistic captures |
|:————————:|:——————————–|
| 🎬 **Content creators** | Stand out with a distinctive visual style |
| 🎮 **Retro lovers** | Relive the charm of 1-bit graphics |
| 🎨 **Artists** | Manga, comic book, and newspaper aesthetics |
| 🧪 **Tech enthusiasts** | Experience cutting-edge rendering techniques |
—
## ❓ FAQ
**Q: Does this work with other shaders?**
> Dithering3D is a standalone shader pack. Combining with other shaders may cause conflicts.
**Q: Why do some surfaces look different?**
> The sky and some special effects may appear different as surface-stable dithering reveals flat geometry.
**Q: Performance impact?**
> Moderate. The 3D texture sampling is optimized but more demanding than vanilla rendering. Most GPUs handle it smoothly.
**Q: Can I use this in my modpack?**
> Yes! Under MPL-2.0 license. Credit appreciated.
—
## 🔬 The Science Behind It
Dithering3D uses **Singular Value Decomposition (SVD)** to analyze UV coordinate derivatives in real-time, determining the exact frequency and direction of surface textures. This mathematical approach enables:
“`
✅ Perfectly uniform dot density regardless of distance
✅ Seamless fractal transitions between detail levels
✅ Circular dots even on extremely angled surfaces
✅ Rotation-stable patterns that don’t “swim”
“`
—
## 📚 Credits & Resources
| Resource | Link |
|:———|:—–|
| 🔗 **Original Algorithm** | [Rune Skovbo Johansen](https://github.com/runevision/Dither3D) |
| 🎥 **Technique Explanation** | [YouTube Video](https://youtu.be/HPqGaIMVuLs) |
| 💬 **Technical Discussion** | [FAQ Thread](https://github.com/runevision/Dither3D/discussions/12) |
—
## 📄 License
“`
Mozilla Public License 2.0 (MPL-2.0)
“`
—
🎨 Transform your world. Experience Dithering3D. 🎨
If you enjoy this shader, consider leaving a ⭐ and sharing this shader page !
CraftPresence
# CraftPresence
Completely customize the way others see you play Minecraft via Discord’s Rich Presence API & the DiscordIPC API
by [jagrosh](https://github.com/jagrosh)!
[](https://opensource.org/licenses/MIT)
[](https://crowdin.com/project/craftpresence)
[](https://app.codacy.com/gl/CDAGaming/CraftPresence/dashboard?utm_source=gl&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://gitlab.com/CDAGaming/CraftPresence/commits/master)
[](https://www.curseforge.com/minecraft/mc-mods/craftpresence)
[](https://www.curseforge.com/minecraft/mc-mods/craftpresence)
[](https://modrinth.com/mod/craftpresence)
[](https://modrinth.com/mod/craftpresence)
## General Notes
* Beginning in v2.5.0, [UniLib](https://gitlab.com/CDAGaming/UniLib) is now a **required** dependency
* UniLib is a new library mod I have created to abstract common API functions for more general use cases as well as
future projects
* The mod can be downloaded [here](https://modrinth.com/mod/unilib)
* This mod **will crash** if UniLib is not found or if using an incompatible version
* This mod identifies as a **Client Side-only** mod
* This means it **will not run** on the Server’s side.
* Fabric and Quilt mod loaders will simply ignore the
mod, while other mod loaders may crash.
* Some versions of the mod for Minecraft 1.14.x and above require
the [Fabric API](https://modrinth.com/mod/fabric-api)
and the [Fabric mod loader](https://fabricmc.net/use/installer)
* Some versions of the mod for Minecraft 1.13.x require
the [Rift API](https://www.curseforge.com/minecraft/mc-mods/rift)
and the [Rift mod loader](https://github.com/DimensionalDevelopment/Rift/releases)
* Some versions of the mod for Minecraft 1.1.0 and below
require [Risugami’s ModLoader](https://mcarchive.net/mods/modloader)
## Features
In addition to having the ability to change your discord status from “Playing Minecraft”,
This mod offers plenty of customization options to specify entirely how others see you play.
From having your current biome show up, to which dimension your in, as well as which server you’re in, and more.
The customization possibilities are limitless, with the only real limit being how creative you customize your display.
### Launcher and Pack Integration Support
CraftPresence will detect whether your Launch Directory contains:
* A ATLauncher Instance (instance.json)
* A valid Twitch/Overwolf/Curse/GDLauncher Manifest (manifest.json, minecraftinstance.json)
* A MCUpdater Instance (instance.json)
* A Modrinth Instance (profile.json)
* A MultiMC Instance (instance.cfg)
* A Technic installedPacks File (installedPacks)
If using any of these launchers, note the following:
* Prior to v1.6.0, it’ll put the packs name in your display as well as show its icon (when not in a
server)
* From v1.6.0 until v2.0.0, it’ll instead parse the Pack’s name into the `&PACK&` placeholder, that you can configure
for
usage in the RPC
* In v2.0, the pack’s info is instead parsed into the `pack.name` and `pack.icon` placeholders, that you can configure
for
usage in the RPC
As an example, this is how the mod will convert a pack’s name to an iconKey:
Example: `All the Mods 7` would parse as `allthemods7`
Note: MultiMC natively has an Icon Key Property that is used instead of converting from the Pack’s Display Name
## Commands
CraftPresence currently offers the following Commands:
Keep in mind the following:
* Commands must be prefixed by either `/craftpresence` or `/cp`
* In v1.5.0 and above, these commands are only usable via the Commands Gui, found within the Config Gui
___
* `/cp compile “[expr]”` – Test the output of a placeholder expression, via Starscript
* `/cp search (type:typeName, [searchTerm], all)` – Search for valid placeholders available to use with Rich Presence
* `/cp reload` – Reloads mod data
* `/cp request` – View Join Request Info
* `/cp export` – View export commands for mod data
* `/cp view` – Help command to display the commands available to view and control a variety of display data
* `/cp view placeholders` – Displays all available placeholders for use in the RPC
* `/cp view currentData` – Displays your Current RPC Data, in text form
* `/cp view assets (custom | all)` – Displays all asset icon keys available to you
* `/cp view dimensions` – Displays all Dimension Names available for use, requires `Show Current Dimension` to be
enabled
* `/cp view biomes` – Displays all Biome Names available for use, requires `Show Current Biome` to be enabled
* `/cp view servers` – Displays all Server Addresses available for use, requires `Show Game State` to be enabled
* `/cp view screens` – Displays all Gui Names available for use, if Per-Gui is enabled
* `/cp view items` – Displays all Item Names available for use, if Per-Item is enabled
* `/cp view entities` – Displays all Entity Names available for use, if Per-Entity is enabled
* `/cp reboot` – Reboots the RPC
* `/cp shutdown` – Shutdown the RPC (Can be turned on from `/cp reboot`)
* `/cp (help | ?)` – Help Command to display the above commands and these explanations
## KeyBinds
CraftPresence currently contains the following KeyBinds:
Notes:
* In v1.5.5 up to v1.8.0, KeyBinds are now customized in the Accessibility Settings in the Config Gui, and not the
normal controls menu
* In v1.8.0 and above, KeyBinds can now be customized in either the dedicated menu in the Config Gui or the normal
control menu on applicable versions
___
* `Open Config Gui` – KeyBind to open the CraftPresence Config Gui (Default: GRAVE/TILDE Key)
## About Placeholders and Functions
In some configuration areas, CraftPresence provides some placeholders and functions to make things easier:
Keep in mind the following:
* In v2.0.0, placeholders have been rewritten to be compatible
with [Starscript](https://github.com/MeteorDevelopment/starscript)
* The older list of this section can be
viewed [here](https://gitlab.com/CDAGaming/CraftPresence/-/wikis/Legacy-Placeholders-(v1.x))
* All Placeholders, functions, and code expressions must be surrounded with curly brackets (Example: `{foo.bar}`)
* In the event that you need to combine a placeholder with other data in a function argument, use the `getResult`
function
* Additional functions and standard variables are available
within [StandardLib](https://github.com/MeteorDevelopment/starscript/wiki)
___
### Placeholder List
The following placeholders are available for use anywhere in CraftPresence:
* General Placeholders:
* `general.brand` – The Minecraft branding label
* `general.icon` – The default display icon
* `general.mods` – The amount of mods currently in your mods folder
* `general.title` – The Minecraft title label
* `general.version` – The Minecraft version label
* `general.protocol` – The Minecraft version protocol label
* Menu Event Placeholders (Loading and Main Menu):
* `menu.message` – The main menu’s display data, while applicable
* `menu.icon` – The main menu’s display icon, while applicable
* Pack Placeholders:
* `pack.name` – The currently detected pack’s name
* `pack.icon` – The currently detected pack’s icon
* `pack.type` – The currently detected pack’s type
* Player Placeholders:
* `player.name` – Your username
* `player.uuid.short` – Your UUID (Trimmed Format)
* `player.uuid.full` – Your UUID (Full Format, if valid UUID)
* `player.icon` – Your player head icon, while applicable
* `player.position.x` – Your current in-game X position
* `player.position.y` – Your current in-game Y position
* `player.position.z` – Your current in-game Z position
* `player.health.current` – Your current in-game health
* `player.health.max` – Your current in-game maximum health
* `player.mode` – Your current game mode
* Gui Placeholders:
* `screen.message` – The current Gui Screen’s display data, while applicable
* `screen.name` – The current Gui Screen name
* `screen.icon` – The current Gui Screen icon
* `screen.default.icon` – The default Gui Screen icon
* Biome Placeholders:
* `biome.message` – The current biome’s display data, while in-game
* `biome.name` – The current biome name
* `biome.identifier` – The current biome identifier
* `biome.icon` – The current biome icon
* `biome.default.icon` – The default biome icon
* Dimension Placeholders:
* `dimension.message` – The current dimension’s display data, while in-game
* `dimension.name` – The current dimension name
* `dimension.identifier` – The current dimension identifier
* `dimension.icon` – The current dimension icon
* `dimension.default.icon` – The default dimension icon
* Entity Placeholders:
* `entity.default.icon` – The default entity icon
* `entity.target.message` – The currently targeted entity’s display data, while applicable
* `entity.target.name` – The currently targeted entity’s name
* `entity.target.icon` – The currently targeted entity’s icon
* `entity.riding.message` – The currently riding entity’s display data, while applicable
* `entity.riding.name` – The currently riding entity’s name
* `entity.riding.icon` – The currently riding entity’s icon
* World Placeholders:
* `world.difficulty` – The current world’s difficulty
* `world.weather.name` – The current world’s weather name
* `world.name` – The name of the current world
* `world.type` – The current world type
* `world.time.format_24` – The current world’s in-game time (24-hour format)
* `world.time.format_12` – The current world’s in-game time (12-hour format)
* `world.time.day` – The current world’s in-game day count
* Server Placeholders:
* `server.message` – The current server’s display data, while in-game
* `server.icon` – The current server icon
* `server.default.icon` – The default server icon
* `server.players.current` – The server’s current player count
* `server.players.max` – The server’s maximum player count
* `server.address.full` – (MP) The raw current server address
* `server.address.short` – (MP) The formatted current server address
* `server.name` – (MP) The current server name
* `server.motd.raw` – (MP) The current raw server motd
* `server.minigame` – (Realm) The current realm minigame name
* `server.type` – (Realm) The current realm world type
* Item Placeholders:
* `item.message.default` – The default item display data, while applicable
* `item.message.holding` – The held item(s) display data, while applicable
* `item.message.equipped` – The equipped item(s) display data, while applicable
* `item.[slotId].name` – Current `slotId` item name
* `item.[slotId].message` – Current `slotId` item message
* Integration – Replay Mod:
* `replaymod.time.current` – When in the Video Renderer, retrieves the `renderTimeTaken` field
* `replaymod.time.remaining` – When in the Video Renderer, retrieves the `renderTimeLeft` field
* Extra Placeholders (Advanced Usage):
* `_general.instance` – The `Minecraft` Instance
* `_general.player` – The `Minecraft` Player Instance
* `_general.world` – The `Minecraft` World Instance
* `_config.instance` – The Mod Config Instance
* `_[moduleName].instance` – An instance of one of the modules CraftPresence has
* Module Order: `biome, dimension, entity, item, screen, server, <...>`
* `data.biome.instance` – An instance of the player’s current biome
* `data.biome.class` – The class object for the player’s current biome
* `data.dimension.instance` – An instance of the player’s current dimension
* `data.dimension.class` – The class object for the player’s current dimension
* `data.entity.target.instance` – An instance of the currently targeted entity
* `data.entity.target.class` – The class object for the currently targeted entity
* `data.entity.riding.instance` – An instance of the currently riding entity
* `data.entity.riding.class` – The class object for the currently riding entity
* `data.item.[slotId].instance` – An instance of the current `slotId`
* `data.item.[slotId].class` – The class object for the current `slotId`
* `data.screen.instance` – An instance of the current Gui Screen
* `data.server.motd.line_[number]` – Retrieves a specific line of `server.motd.raw`
* `data.[moduleName].time` – The timestamp at which a module has changed its primary state
* Use `data.general.time` for the current RPC Starting Timestamp
### Function List
The following functions are available for use anywhere in CraftPresence:
* `asIcon(input, whitespaceIndex ?: ”)` – Converts a String into a Valid and Acceptable Icon Format
* `asIdentifier(target, formatToId ?: false, avoid ?: false)` – Converts an Identifier into a properly formatted and
interpretable Name
* `asProperWord(input, avoid ?: false, skipSymbolReplacement ?: false, caseCheckTimes ?: -1)` – Converts input into a
Properly Readable String
* `capitalizeWords(input, timesToCheck ?: -1)` – Capitalizes the words within a specified string
* `clampDouble(num, min, max)` – Clamps the Specified Number between a minimum and maximum limit
* `clampFloat(num, min, max)` – Clamps the Specified Number between a minimum and maximum limit
* `clampInt(num, min, max)` – Clamps the Specified Number between a minimum and maximum limit
* `clampLong(num, min, max)` – Clamps the Specified Number between a minimum and maximum limit
* `convertTime(input, originalPattern, newPattern)` – Convert the specified string into the specified date format, if
able
* `convertTimeFormat(dateString, fromFormat, toFormat)` – Convert a Date String from one format to another format
* `convertTimeZone(dateString, fromFormat, fromTimeZone, toTimeZone)` – Convert a Date String from one timezone to
another timezone
* `dateToEpochMilli(dateString, format, timeZone ?: null)` – Convert Date String to Epoch Timestamp in milliseconds
* `dateToEpochSecond(dateString, format, timeZone ?: null)` – Convert Date String to Epoch Timestamp in seconds
* `epochMilliToDate(epochMilli, format, timeZone ?: null)` – Convert Epoch Timestamp to Date String in the given format
and
timezone
* `epochSecondToDate(epochSecond, format, timeZone ?: null)` – Convert Epoch Timestamp to Date String in the given
format and
timezone
* `executeMethod(classToAccess=Object|String|Class, instance=Object, methodName=String, …)` –
Invokes the specified Method in the Target Class via Reflection
* `format(input=String, args=Object…)` – Returns a formatted string using the specified format string and arguments
* `formatAddress(input, returnPort ?: false)` – Formats an IP Address based on Input
* `getArrayElement(content=Array, index)` – Retrieves the array element from the specified content, or null if unable
* `getAsset(input)` – Retrieves the Specified DiscordAsset data from an Icon Key, if present
* `getAssetId(input)` – Retrieves the Parsed Icon ID from the specified key, if present
* `getAssetKey(input)` – Retrieves the Parsed Icon Key from the specified key, if present
* `getAssetType(input)` – Retrieves the Parsed Image Type from the specified key, if present
* `getAssetUrl(input)` – Retrieves the Parsed Image Url from the specified key, if present
* `getClass(reference=Object|String)` – Attempt to retrieve a class object, via the string path or object reference
* `getComponent(data=DataComponentHolder, path=String)` – (MC 1.20.5+) Attempt to retrieve the Component Data with the
specified path
* `getCurrentTime()` – Retrieve the current time, as an Instant
* `getElapsedMillis()` – Retrieve the elapsed time, in milliseconds
* `getElapsedNanos()` – Retrieve the elapsed time, in nanoseconds
* `getElapsedSeconds()` – Retrieve the elapsed time, in seconds
* `getField(classToAccess=Object|String|Class, instance=Object, fieldName=String…)` – Retrieves the
Specified Field(s) via Reflection
* `getFields(classObj=Object|String|Class)` – Retrieve the available field names for a class object
* `getFirst(args)` – Retrieve the first non-null string from the specified arguments, or return null
* `getJsonElement(url|jsonString, path=Object…)` – Retrieves the json element from the specified content, or null if
unable
* `getMethods(classObj=Object|String|Class)` – Retrieve the available method names for a class object
* `getNamespace(input)` – Retrieve the namespace portion of an Identifier-Style Object
* `getNbt(data=Entity|ItemStack, path=String…)` – Attempt to retrieve the NBT Tag with the specified path
* `getOrDefault(target, alternative ?: ”)` – Retrieve the primary value if non-empty; Otherwise, use the secondary
value
* `getPath(input)` – Retrieve the path portion of an Identifier-Style Object
* `getResult(input)` – Perform recursive conversion on the specified input
* `hasField(classObj=Object|String|Class, fieldName)` – Retrieves whether the specified class contains the specified
field name
* `isColor(input)` – Determines whether an inputted String classifies as a valid Color Code
* `isCustomAsset(input)` – Determines if the Specified Icon Key is present under the Custom Assets List
* `isUuid(input)` – Checks via Regex whether the specified String classifies as a valid Uuid
* `isValidAsset(input)` – Determines if the Specified Icon Key is present under the Current Client ID
* `isValidId(input)` – Determines if the specified Client ID is valid
* `isWithinValue(value, min, max, contains_min ?: false, contains_max ?: false, check_sanity ?: true)` – Determines
whether the specified value is within the specified range
* `length(input)` – Returns the length of the specified string
* `lerpDouble(num, min, max)` – Linearly Interpolate between the specified values
* `lerpFloat(num, min, max)` – Linearly Interpolate between the specified values
* `mcTranslate(input=String, args=Object…)` – Translates an Unlocalized String, based on the game translations
retrieved for
the current language
* `minify(input, length)` – Reduces the Length of a String to the Specified Length
* `nullOrEmpty(input, allowWhitespace ?: false)` – Determines whether a String classifies as NULL or EMPTY
* `randomAsset()` – Attempts to retrieve a Random Icon Key from the available assets
* `randomString(args)` – Retrieves a random element from the specified arguments, as a string
* `removeRepeatWords(input)` – Removes Duplicated Words within an inputted String
* `roundDouble(num, places ?: 0)` – Rounds a Double to the defined decimal place, if possible
* `snapToStep(num, valueStep)` – Rounds the Specified Value to the nearest value, using the Step Rate Value
* `split(input, regex, limit ?: 0)` – Splits this string around matches of the given regular expression
* `stripAllFormatting(input)` – Strips Color and Formatting Codes from the inputted String
* `stripColors(input)` – Strips Color Codes from the inputted String
* `stripFormatting(input)` – Strips Formatting Codes from the inputted String
* `timeFromEpochMilli(epochMilli)` – Retrieve a Time Instant from the specified epoch time
* `timeFromEpochSecond(epochSecond)` – Retrieve a Time Instant from the specified epoch time
* `timeFromString(dateString, fromFormat, fromTimeZone ?: null)` – Format a Date String from one timezone and format
into a valid Instant instance
* `timeToEpochMilli(data)` – Gets the number of milliseconds from the Java Epoch, derived from specified args
* `timeToEpochSecond(data)` – Gets the number of seconds from the Java Epoch, derived from specified args
* `timeToString(date, toFormat, toTimeZone ?: null)` – Format a Date String using the specified timezone and format.
* `toCamelCase(input)` – Converts a String into a Valid and Acceptable Camel-Case Format
* `translate(input=String, args=Object…)` – Translates an Unlocalized String, based on the mod translations retrieved
for
the current language
## Disclaimers & Additional Info
### Minecraft Issues + Additional Build Info
Despite best efforts, issues can occur due to the state of the Minecraft Codebase.
These issues can hinder certain portions of the backend in addition to cause certain parts of the mod to not work.
With this in mind, please note the following:
* **Minecraft 1.16 and above**
* As more parts of the game become data-driven, some modded data is no longer able to be automatically retrieved
without first being in the world.
* So far, Biome and Dimension Modules are effected by this change and only display default data, with extra data
needing to be discovered first.
* **Minecraft 1.15 and below**
* `MC-112292`: When interacting with the `RenderUtils#drawItemStack` method, used in the v2 Item Renderer, blocks
using certain renderers may fail to display properly.
* Additionally, on 1.15.x exclusively, z-level issues may occur on Screens using this method
* **Minecraft a1.1.2_01 and below**
* On these versions, the Biome and Dimension Modules are **stubbed** with default data, due to the logic for these
methods being missing (Having been initially implemented in Alpha 1.2.6)
* **Miscellaneous Issues**
* Due to obfuscation issues in earlier versions of Minecraft, incorrect data may appear when using certain parts of
the mod.
* In this case, the Biome and Dimension Modules may fail to auto-detect some necessary information
* As a fallback, the mod is also designed to add selectable Module Data when said biome/dimension is first
discovered.
* The “Add New” option found in some of the module lists can also be used to work around this issue.
Additionally, some settings or API calls may perform differently under certain MC versions.
### Icon Requesting
Not seeing an Icon you like or have a suggestion for an Icon to add/modify on the default Client ID?
If so, you can make a request on my [Issue Tracker](https://gitlab.com/CDAGaming/CraftPresence/issues/), with the
following requirements:
* If adding an Icon from a dimension, specify the Mod’s link that the dimension derives from
* This is because specific Icon IDs must be used, which can be found by the mod or from checking your Logs/Chat
after entering the dimension as CraftPresence will tell you the ID expected
* An Icon of size between `512×512` and `1024×1024` to be used (Either minimum or recommended size for best quality)
* Icons between these sizes can be used, but may not give a great final quality
* If requesting an icon to be modified or removed from the Default Client ID, please specify a reason why
* Mostly just so it can be logged why it was changed for future reference
Additionally, you can also create your own Set of Icons by
following [this guide](https://gitlab.com/CDAGaming/CraftPresence/-/wikis/Making-your-Own-Client-ID-+-Using-your-own-Images)
### Support
Need some assistance with one of my mods or wish to provide feedback?
I can be contacted via the following methods:
* [Email](mailto:[email protected])
* [CurseForge](https://www.curseforge.com/minecraft/mc-mods/craftpresence)
* [Discord :: ](https://discord.com/invite/BdKkbpP)
Additionally, codebase documentation for this mod is
available [here](https://cdagaming.gitlab.io/craftpresence-documentation/) with further guides available
on [the wiki](https://gitlab.com/CDAGaming/CraftPresence/-/wikis/Home)
#### Licensing
This Mod is under the MIT License as well as the Apache 2.0 License
This project currently makes usage of the following dependencies internally:
* [Starscript](https://github.com/MeteorDevelopment/starscript)
by [MeteorDevelopment](https://github.com/MeteorDevelopment)
* [DiscordIPC API](https://github.com/jagrosh/DiscordIPC) by [jagrosh](https://github.com/jagrosh)
* [UniLib](https://gitlab.com/CDAGaming/UniLib) by [CDAGaming](https://gitlab.com/CDAGaming)
#### Discord Terms of Service
As with other RPC Mods, this Mod uses your in-game data to send display information to a 3rd party service (In this
Case, Discord).
The terms of service relating to Creating a Discord ID for icons can be
found [here](https://discord.com/developers/docs/legal)
The terms of service for using Discord as a service can additionally be located [here](https://discord.com/terms)
(Old MC) Coordinates
# (Old MC) Coordinates
This is a jarmod that adds coordinates to Minecraft Alpha and Infdev debug menus.
Works for Minecraft versions ranging from inf-20100227 to a1.2.2 **(see downloads)**.
# Features
**The display is based off of Notch’s original implementation of coordinates in Alpha**, xyz and f on separate lines.
Since Notch didn’t add coordinates until a1.2.3, there are many older versions with infinite world gen where coordinates are a needed addition.
**There are two display options:**
The “revised” display **(left)** and the unmodified “nostalgia” display **(right)**.
This was done in case some are looking for the OG display by Notch before the various improvements were made in later versions.

These can be toggled using the N key with the debug screen on. By default, the revised display is shown.
**The revised display simply improves the original format:**
– rounds 15 leading decimals to 3
– brightens text color
– adds cardinal directions in words
– floors the y-axis to feet level (64.000 and not 65.620 when standing on a full block at y-64).
# Compatibility
Overwrites **GuiIngame.java**, the obfuscated **(GuiIngame).class** names vary with versions.
In other words, the mod will likely be compatibile with mods that don’t change the debug menu.
# Downloads
Due to various unforseen circumstances in older versions, I haven’t modded every version (yet) from inf-20100227 to a1.2.2. I managed to mod 39 versions in this range, addressing for the more notable releases. Hopefully you can find the version you’re looking for.
**The downloads are named “Coordinates_v1.0_” followed by “(version name)” ensure that you are downloading the correct version.**
**Note: ONLY read my zip file names for versions.** To upload mods, Modrinth requires default MC launcher versions and mod loader fields to be filled out. *(ex: inf-630 is shown to support inf-618 and risugami’s modloader, which is false)*
# How to install
Install [Java 8](https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html), most mods for older versions use Java 8. So it’s always a good idea to have it.
This is a jarmod so I recommend using **MultiMC, PrismLauncher, or Betacraft v2.0**. These launchers allow for jarmods to be easily setup older versions. They all have similar ways of adding jarmods… Edit your instance in said launcher, locate the add to Minecraft.jar button, and open the downloaded coords.zip.
For **Betacraft v1.0**, it’s more complex as you will need to jarmod the version yourself. You will also need a zip explorer (I like [WinRAR](https://www.win-rar.com/download.html?&L=0) for Windows)
– after downloading coords.zip for prefered version, search and open your hidden %appdata% folder
– open the .betacraft folder
– open the versions folder
– highlight and right click on the version.jar you are using (ex: a1.1.2_01.jar)
– after right click, you can choose Open with WinRAR
– with the jar open, also open the downloaded coords.zip
– move the single .class file from coords.zip to the opened version.jar.
– Press OK , done! You successfully replaced a game file with my modded game file!
– Relaunch Betacraft v1.0 and play.
# Extras
Any issues can be addressed on [Github](https://github.com/Skellz64/Old-MC-Coordinates)
You can also join the [Modification Station](https://discord.gg/8Qky5XY) discord server, a community dedicated to modding old minecraft!
Once you join the server, you can find my mod post by clicking on the mods tab and searching coordinates. This is where you can contact me directly with questions *(i.e. doesn’t warrant a ticket on Github)*
**Thanks for downloading my mod!**
CME is Bad
# Abstract
Players and modpack developers sometimes find the game crashed with `ConcurrentModificationExceptions` (CME) and `IndexOutOfBoundsExceptions` (IOOBE), which only give stacktrace of current thread and are hard to trace which mod causes them. Here’s one of the crashes which is caused by SimpleReloadInstance in 1.20.1 Forge:

So this is what the mod is developed for. Players who install this mod and add javaagent to JVM Argument correctly will receive a full log for modification history of a certain collection:

# Usage
First, add this jar to mods folder.
Second, edit your Java Virtual Machine Argument in your launcher. Add `-javaagent:mods/CMESuckMyDuck-.jar=;;;`.
Finally, run the game, play and wait until the crash happens.
# Usage for Other Java Projects
This mod can not only be used for Minecraft debugging, but also be utilized to debug other java projects. Similar to Minecraft. The only different step is that you should add gson and asm jar to classpath (`-cp`) before javaagent, and add our `CMESuckMyDuck-.jar` to classpath after javaagent.
# Arguments
##
A full name of the class, which has a container that you would like to monitor. Use “ instead of `.` (a.k.a. the internal name of class).
##
A field name of the container in target class, which you would like to monitor. For Forge, use SRG name. For Fabric, use intermediary name. For NeoForge, use official name.
##
Currently, we only support three containers: `List`, `Set`, `Map`. This argument indicates the type of monitored container.
##
`static` or `nonstatic`. This argument indicates the container is a static field or non-static field.
# How to get and
Let’s start with an example.
First, take a look at the stacktrace of CME/IOOBE:

Second, read the source code of SoundEngine and confirm which container is facing this issue:

Now we know we should monitor map `field_217942_m` (`instanceToChannel` in `SoundEngine`). Keep going.
Third, install this mod, and add “`-javaagent:mods/CMESuckMyDuck-1.0.0.jar=net/minecraft/client/audio/SoundEngine;field_217942_m;Map;nonstatic`” to Java Virtual Machine Argument. Relaunch the game and wait for the next crash.
Finally, open `CMESuckMyDuck.log` file and you will see which thread and which mod has concurrently modified the container.
# Examples (JVM Arguments)
## ConcurrentModificationException from SoundEngine in Forge 1.16.5 Environment
`-javaagent:mods/CMESuckMyDuck-1.0.0.jar=net/minecraft/client/audio/SoundEngine;field_217942_m;Map;nonstatic`
## ConcurrentModificationException from PotionBrewing in Forge 1.20.1 Environment
`-javaagent:mods/CMESuckMyDuck-1.0.0.jar=net/minecraft/world/item/alchemy/PotionBrewing;f_43494_;List;static`
## ArrayIndexOutOfBoundsException from Zeta mod
`-javaagent:CMESuckMyDuck-1.0.0.jar=org/violetmoon/zetaimplforge/event/ForgeZetaEventBus;convertedHandlers;Map;nonstatic`
# Other options
## Log Level
Use system property `-Dcme_suck_my_duck.log_level=` to set custom log level.
Default 1, which means no debug message will be logged.
Users can set it to 0 to output debug message, which is not recommended – query functions like Map#get, Set#containsAll will also be logged when set to 0, and make the file very very long.
## ASM API Version (v1.0.2+)
In order to maintain compatibility with the latest version of Minecraft, this mod is compiled with asm version 9.7. For older versions of Minecraft (such as 1.12.2), API level operations such as ASM_9 cannot be applied, so players need to use `-Dcme_suck_my_duck.asm_api_version=` to modify the ASM API version compatibility. For example, game version 1.12.2: `-Dcme_suck_my_duck.asm_api_version=5`.
## File Max Entries (v1.0.3+)
Since we notice that when crash happens, the last few operations in the log are much more important than the previous ones. So our mod adopts a paging strategy after v1.0.3, and only the last two pages are retained at the end. The number of logs output on each page (that is, the number of operation call stacks) is fixed, and the default value is 500. Players can use `-Dcme_suck_my_duck.file_max_entries=` to modify the maximum number of elements on the page.
## Whitelist of Constructor (v1.0.3+)
Sometimes a container in a certain class is used in many places (eg. CompoundTag#tags). Directly using this mod will cause the log to be too long or the valid content to be replaced by subsequent operations. Therefore, players can specify an additional constructor whitelist to monitor the corresponding container in the corresponding class of a specific module. The default is empty, that is, there is no whitelist. Players can use `-Dcme_suck_my_duck.whitelist_constructor_stacktrace=` to specify it. If any line in the stack trace where the container is constructed includes the content of the whitelist string, the container will be monitored – otherwise, the container will not be monitored, which greatly simplifies the log output information.
## Transform to Thread Safe (v1.0.4+)
Use system property `-Dcme_suck_my_duck.transform_to_thread_safe=true` to transform the field into a thread-safe container.
This is NOT recommended unless you like slowness and don’t want to fix the problem.
## Inject method (v1.0.4+)
Use system property `-Dcme_suck_my_duck.inject_method=true` to switch to inject mode.
If set, you should use `-javaagent:CMESuckMyDuck-.jar=;` and whenever this method is called, you will receive a stack trace in log files.
## Ignore threads (v1.0.5+)
Use system property `-Dcme_suck_my_duck.ignore_threads=;;;…` to ignore some thread that is expected to modify the given container (or call the given method). For example, `-Dcme_suck_my_duck.ignore_threads=”Server thread”`.
## Stop logging early (v1.0.7+)
Use system property `-Dcme_suck_my_duck.stop_logging_if_exception_created=false` to stop logging if critical error occurs.
## Trace ID Updater (v1.0.8+)
Use system property `-Dcme_suck_my_duck.trace_id_updater=;` to update trace ID when calling the given method. This might be useful in inject mode.
## Monitoring Local Variables (v1.1.0+)
Use system property `-Dcme_suck_my_duck.local_var_index=` to monitor local variable at given index in the given method.
If set, you should use `-javaagent:CMESuckMyDuck-.jar=;;`. By the way, the index can be reused by different local variables. So you might have to use `-Dcme_suck_my_duck.match_local_index=` to specify the ordinal of ASTORE operation to indicate which local variable to monitor.
# Conclusion
I like eating peking duck. It’s so delicious!

Circular Logs
# Improve the look of your default Logs with… ↴

## Adds Vanilla-like circulated Logs Top | No Optifine or other Mods needed!
### It’s supports every Version of the game! (even including Legacy ones)
### And day-by-day will have more and more mods supported!
Supported Mods
• [Abundance](https://modrinth.com/mod/abundance) – by exoplanetary
• [Architect’s Palette](https://modrinth.com/mod/architects-palette) – by Jsburg
• [Biomes O’ Plenty](https://modrinth.com/mod/biomes-o-plenty) – by Forstride & Adubbz
• [The Aether](https://modrinth.com/mod/aether) – by Oz-Payn
• Vanilla Minecraft – by Mojang
• [Wilder Wild](https://modrinth.com/mod/wilder-wild) – by FrozenBlock
Bedwars Ultimate
This Resource Pack focuses on Bedwars and PvP Textures, like tiny Swords or some simple Block Textures.
Tools and Weapons:
25
Blocks:
128
Items:
11
Armor and Equipment:
21
Coming soon: Item Textures 🙂
Backport Everything

**Backport Everything** attempts to convert modern Minecraft into older versions!
If you want to see what older versions look like with new textures, _this is the pack for you_. Test them out on older versions for a laugh, play with updated textures for servers that aren’t at the latest version, or start a world in beta or alpha with a weird updated look.
Currently updated for **1.21.11 textures**, this pack aims to bring modern versions to older ones. Currently, the pack **supports versions 1.20.1 and older**, dating back to the first version in 2009 with the pre-classic build rd-132211, which features only grass and cobblestone.
There are other packs available, such as [MC New Textures](https://modrinth.com/resourcepack/mc-new-textures), [Modernity](https://modrinth.com/resourcepack/modernity) and [Modern Textures](https://modrinth.com/resourcepack/modern-textures), but I find that they either miss out some textures (e.g. leather armour, fast leaves) or don’t support the beta and alpha versions.
A couple of the things that this pack supports:
– Backported 1.21.11 textures to all versions (OptiFine, MCPatcher or equivalent required for some textures)
– New redstone repeater, comparator & torch (1.20.1 to 1.8)
– HD ghast texture from 1.21.6 (1.20.1 to 1.6.1)
– HD Minecraft logo (1.20.1 to b1.8)
– Unique spawn egg textures (1.20.1 to 1.8, OptiFine required before 1.13)
– Wolf colour variants (1.20.1 to 1.8, OptiFine/Entity Texture Features required)
– Bush texture (1.20.1 to 1.8)
– Cold & warm cow, pig & chickens (1.20.1 to 1.8, OptiFine/ETF required)
– Tall & short dry grass textures (1.20.1 to 1.8)
– [The Aether](https://modrinth.com/mod/aether) (b1.7.3 & 1.2.5) and [Aether on Station API](https://modrinth.com/mod/aether-stapi) (b1.7.3)
A few things this pack doesn’t support at the moment:
– New music released after 1.21.1, check out [Tunes : Backport](https://modrinth.com/resourcepack/tunes-backport) by wasabliss. I’d add it, but the zip file size would be huge.
– [Horse](https://modrinth.com/resourcepack/horse-backport), [vex](https://modrinth.com/resourcepack/vex-backport), [bat](https://modrinth.com/resourcepack/bat-backport) & [zombie piglin](https://modrinth.com/resourcepack/zombie-piglin-backport) model backports, see Scutoel’s packs linked. These models require OptiFine and break textures on vanilla versions. I’m not adding them because that would make OptiFine a dependency.
– Bogged models, see [Bogged Backport](https://modrinth.com/resourcepack/bogged-backport) by realllyrandommann. Not added for the same reason as above.
– [Leaf litter](https://modrinth.com/resourcepack/leaf-litter-backport) and [wildflowers](https://modrinth.com/resourcepack/wildflowers-backport), see ludo_silver_’s packs linked. Not added, as they are a little janky since they don’t work as a standalone block, but they are an alternative grass texture.
**For 1.5.2 and older, texture packs are not one-click install on Modrinth unlike resource packs, you’ll need to install them to your instance (which you may need to create), click the three dots to the right of the start button on the specific instance screen, click ‘Open folder’, and move the Backport Everything zip file from the ‘resourcepacks’ folder to the ‘texturepacks’ folder.**
**Texture packs are not supported natively before Alpha v1.2.2**, but earlier versions can have their textures swapped out using a jar mod. I don’t _really_ know why you’d want to play those versions, but it’s funny to see them working with the latest textures. **If you need help installing versions that don’t support texture packs natively, please check the bottom of this page for a guide.**
Just a note, rd-20090515 kept crashing for me on launch, and so I can’t test it. But since it’s just 13 textures, you won’t be missing much if you can’t run it yourself.
This was a fun little project, but there are **probably a few texture issues here and there** from the conversion. If you notice any problems and are willing to let me know, please email [[email protected]](mailto:[email protected]), and I’ll address the issue.
OptiFine 1.7.2 and newer [can be found here](https://optifine.net/downloads). For archived versions of OptiFine, MCPatcher, and additional files, [click here to access my GitHub archive](https://github.com/backporteverything/Backport-Everything/tree/main/Supplementary%20Files). If you have any other suggestions for mods, feel free to email me.
### License
All original content is licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).
Vanilla Minecraft assets are © Mojang Studios and are not included under CC BY-SA 4.0.
Select assets from Qwuiblington’s [actually correct new default texture backport](https://www.curseforge.com/minecraft/texture-packs/actually-correct-1-14-texture-backport) are included under Public Domain.
OptiFine Custom Entity Model (.jem) files sourced from the pack: [Farm Animals Backport](https://modrinth.com/resourcepack/spring-to-life-textures-backport), included with permission from SirJumpy8772.
### How to add textures to versions older than Alpha v1.2.2
To add textures to old versions that don’t support texture packs, you’ll need to add them as a jar mod using [Prism Launcher](https://prismlauncher.org/) or [MultiMC](https://multimc.org/). They’re pretty much the same, but Prism Launcher has fancy extra features.
Unfortunately, Modrinth does not currently support jar mods for older versions.
1. Download the ZIP file for the version of Minecraft you want to change. You’ll need it for later.
2. Download and install either [Prism Launcher](https://prismlauncher.org/) or [MultiMC](https://multimc.org/); take your pick.
3. Open either Prism or MultiMC, log in to your Microsoft account and then click the ‘Add Instance’ button in the top-right corner.
4. In the ‘Custom’ (Prism) or ‘Vanilla’ (MultiMC) section, on the right-hand side, tick the checkboxes for ‘Betas’ and ‘Alphas’ in the filter list.
5. Scroll down to the version you want to play, select it and click the OK button in the bottom-right.
6. Once you’ve clicked OK, an icon will appear for the version you selected. Right-click the icon, then click ‘Edit…’ (Prism) or ‘Edit Instance’ (MultiMC).
7. Go to the ‘Version’ tab if you’re on Prism Launcher.
8. Once you’re on the version tab, you should see a list of actions on the right-hand side. Click the ‘Add to Minecraft.jar’ button.
9. A new window should appear, locate the Backport Everything file, select it and open it.
10. The jar mod should now be installed. You can then launch Minecraft, and the new textures should work!
anit CHAT
# Chat anit 一个自动屏蔽《Minecraft》中文脏话,和增加IP属地的开源项目。
本插件需要装在Velocity上。前置为SignedVelocity-Proxy需要在velocity和所以1.19.1+的子服上增加
IP属地api为*xiaotuo*提供,脏话屏蔽由*Uapi提供*
使用方法
1.下载本插件,放入velocity的pluging文件夹,启动客户端
>tip
>如果你有子服的Minecraft版本在1.19.1以上需要增加[signed velocity](https://modrinth.com/plugin/signedvelocity/version/1.3.0) 插件到velocity和每个1.19.1+的子服务器。
2.将velocity配置文件“`velocity.toml“` 中“`force-key-authentication“`改为false
3.将所有子服务的配置文件“`server.properties“`中的“`enforce-secure-profile“`改为false
4.启动服务端
**更新日志**: https://github.com/cdpyx/Chatanit/commits/release
English:
# Chat Anit is an open-source project that automatically blocks Chinese profanity in Minecraft and increases IP ownership.
This plugin needs to be installed on Velocity. SignedVelocity Proxy needs to be added on velocity and all 1.19.1+sub servers
The IP locality API is provided by * xiaotuo *, and the profanity blocking is provided by * UAPI*
Usage
1. Download this plugin, place it in the velocity plugin folder, and start the client
> tip
> If you have a sub server version of Minecraft above 1.19.1, you need to add [signed velocity]( https://modrinth.com/plugin/signedvelocity/version/1.3.0 )Plug in to velocity and every 1.19.1+sub server.
2. Change the ‘force key authentication’ in the velocity configuration file ‘velocity. toml’ to false
3. Change the ‘enforce secure profile’ in the ‘server. properties’ configuration file for all sub services to false
4. Start the server
**Update log**: https://github.com/cdpyx/Chatanit/commits/release
Among Us

But how to make **Among Uses**? 
All you need is an anvil and a carved pumpkin:

> Rename a carved pumpkin in the anvil to “Color” Impostor
* Example: Red Impostor
* Before snapshot 25w03a, using third-party mods, you could write things like “red impostor” instead of “Red Impostor”, or even “123 red impostor 123”
> After renaming, the item will automatically turn into its custom version
Make your impostors and have fun! 🎭