# minecraft.how — Full content index for LLMs > Long-form extract of recent blog content. For a structured route map, see /llms.txt. ## Recent blog posts (full text) ### Protecting Your Minecraft Server: How MCAntiMalware Works URL: https://minecraft.how/blog/post/mcantimalware-minecraft-plugin-security Published: 2026-04-24 Author: ice "Anti-Malware for minecraft" OpticFusion1/MCAntiMalware · github.com .0 Running a Minecraft server means constantly watching for threats. Malicious plugins slip in through marketplace sites, suspicious downloads, or dependencies you didn't scrutinize carefully enough. MCAntiMalware is a standalone Java tool that scans your server's plugin directory and flags known malware before it runs, with a detection database covering over 1000 identified threats. What Actually Is a Malicious Minecraft Plugin? If you've never thought about this, here's the problem: a plugin can do literally anything the server operator can do. It runs with full access to your server's file system, memory, and player data. A compromised plugin can steal player credentials, install cryptominers, exfiltrate your world data, or plant backdoors for future attacks. The scary part? It often runs silently. Most malicious plugins look completely legitimate. They promise currency systems, better economy plugins, or game-balancing tools. By the time you realize something's wrong (players losing items, server CPU spiking, chunks disappearing), the damage is done. How MCAntiMalware Changes the Game MCAntiMalware takes a different approach than most server security tools. Instead of monitoring runtime behavior (which is notoriously hard to get right), it performs static analysis on your jar files before anything executes. You run the tool once, point it at your plugins directory, and it generates a detailed log of anything it recognizes as dangerous. The detection database has over 1000 known malicious plugins catalogued. That's not everything out there, obviously, but it covers the major families of server malware that circulate through community plugin repositories and sketchy download sites. One thing I appreciate: this is genuinely low-friction. It's not a plugin itself (which is important - you can't trust a plugin to scan plugins). It's a standalone Java application that runs independently of your server. Installation: Where Most People Get Confused The setup is straightforward once you understand what you're doing. First, make sure you have Java 17 or higher installed. Many server hosters still run older Java versions, so verify this first: bashjava -version Download the compiled jar from the GitHub releases page (version 15.16 is the latest stable as of April 2026), or build from source if you're into that sort of thing. For a dedicated server or local PC setup, the process is simple: Stop your Minecraft server so active plugins aren't in use Upload MCAntiMalware.jar to the same directory as your server jar Open a terminal and run: java -jar MCAntiMalware.jar Wait for the scan to complete Check the logs in the AntiMalware/logs folder If you're on a web panel hosting (like most people), the steps are slightly different. You'll either rename the MCAntiMalware jar to match your server jar name and restart (if your host allows custom jars), or download your plugins locally, scan them on your own PC, and upload clean versions back. The local scanning option looks like this: bashjava -jar MCAntiMalware.jar - scanDirectory. This tells it to scan everything in the current directory, which is useful when you've already downloaded suspicious plugins to your computer. Reading the Results After the scan finishes, you'll find detailed logs in the AntiMalware/logs folder. This is where you'll see exactly which plugins (if any) matched the malware database. GitHub project card for OpticFusion1/MCAntiMalware If something gets flagged, don't panic, but take it seriously. The maintainer (OpticFusion1) recommends zipping up the detected files and sending them along with the logs to the project's Discord community for analysis. Sometimes false positives happen, but if multiple tools flag the same plugin, it's probably compromised. Once you've confirmed a plugin is bad (or decided you don't need it anyway), delete the jar files, re-download clean versions from official sources if they exist, and restart your server. What Makes This Tool Useful for Real Server Operators The biggest advantage is automation and scale. Scanning 50+ plugins by hand is tedious and error-prone. MCAntiMalware does it in seconds and gives you a report. Plus, it's maintained by someone actively tracking new malware variants, so the detection database gets updates periodically (the latest release mentions improved checks and additional detections). Another strength: it's GPL-3.0 licensed and open source. You can inspect the code, fork it, contribute detections, or verify the tool itself isn't doing anything sketchy. And honestly, the fact that it runs independently of your server is a big win. It doesn't add overhead to your actual Minecraft process. You scan once (or periodically as preventative maintenance), get a report, act on it, and move on. A Few Things to Know Before You Start The detection database catches known threats, not zero-days. If a new malware variant emerges and hasn't been added to the 1000+ catalogue yet, this tool won't catch it. It's a safety net, not a complete security solution. Server operators should still be cautious about where they download plugins (use official sources, check community reviews, etc.). Scanning can take a while if you have hundreds of plugins, especially on slower systems. Give it time. Also, false positives are rare but possible. Some legitimate plugins might share code patterns or signatures with known malware families. Before nuking a plugin, verify the detection independently or ask the plugin's developer. If you're already setting up a new server, you might also want to use the Server Properties Generator to configure your server safely from the start, and the Nether Portal Calculator is handy for planning your world's navigation. Is There Anything Else Out There? There aren't many direct equivalents. PlugManX and similar tools exist for plugin inspection, but they're either outdated, focus on different problems, or require more manual work. Some server hosts provide their own malware scanning, but those are typically locked to their platform. MCAntiMalware's combination of an actively maintained detection database, ease of use, and independent operation makes it the practical choice for server owners who want a quick, automated scan without setting up a full security monitoring stack. The project has a solid community behind it. The Discord support channel is monitored by the developer, and there's a wiki with detailed command documentation if you need to dig deeper into advanced features.OpticFusion1/MCAntiMalware - GPL-3.0, ★310 Ready to try MCAntiMalware? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit OpticFusion1/MCAntiMalware on GitHub ↗ --- ### CommandAPI: Building Custom Minecraft Server Commands URL: https://minecraft.how/blog/post/commandapi-minecraft-plugin-guide Published: 2026-04-24 Author: ice "A Bukkit/Spigot API for the command UI introduced in Minecraft 1.13" CommandAPI/CommandAPI · github.com If you run a Minecraft server and wanted to add special commands tailored to your world, you'd probably ask your plugin developer how they do it. The answer, increasingly, involves CommandAPI - a Java library that makes building Minecraft commands dramatically simpler than the traditional Bukkit/Spigot approach. Instead of wrestling with chat formatting and argument parsing, developers get access to the same command UI that Minecraft itself uses, complete with auto-complete, argument validation, and visual feedback. What CommandAPI Actually Does CommandAPI is a bridge between plugin developers and Minecraft's native command system. When Minecraft 1.13 arrived in 2018, it introduced a completely redesigned command syntax - one that Mojang uses internally for commands like /give, /teleport, and /execute. For eight years, most Bukkit and Spigot servers relied on simpler, older command systems that didn't feel like "real" Minecraft commands. CommandAPI flipped that. And it lets plugin developers use Minecraft's own command framework, giving server players the same polished command experience they expect from vanilla commands. This is genuinely impressive from a technical standpoint. The library handles the plumbing that would otherwise eat weeks of development time. Command registration, argument types, permission checks, suggestion handling - all of it's already there. Developers write the logic; CommandAPI handles everything else. Why Plugin Developers Reach for This Imagine you're building a custom spell plugin for your server. Players should be able to run /cast fireball @e[type=zombie] and have it actually work as expected. With vanilla Bukkit commands, you'd write hundreds of lines parsing user input, validating arguments, handling edge cases. With CommandAPI, you describe what arguments you want, and the library gives you typed, validated input ready to use - and the player gets auto-complete suggestions as they type. The second reason is consistency. Your custom commands feel like native Minecraft commands because they use the same underlying system. Players don't have to learn a completely different syntax for your plugin. Developers also appreciate that CommandAPI stays actively maintained. The project keeps pace with new Minecraft versions - the latest release (11.2.0) added support for Minecraft 26.1, rolling out fairly quickly after each major Minecraft update. One GitHub repository shows consistent commits and releases, not abandoned-project vibes. Getting Started: Installation and Setup If you're running a Spigot, Paper, or Bukkit-compatible server, installation is straightforward. First, grab the CommandAPI jar file from the releases page on GitHub. Download the version that matches your server type - Paper, Spigot, or one of the other supported platforms. Drop it into your plugins folder: bashcp CommandAPI-11.2.0-Spigot.jar /path/to/your/server/plugins/ Then restart your server. That's it. CommandAPI runs as a dependency that other plugins can hook into. If you're building a plugin that uses CommandAPI, you'll add it as a Maven dependency in your build file. The exact setup depends on whether you're using Gradle or Maven, but both are covered in the official documentation. One thing to note (and I'd mention this even though the docs do): CommandAPI requires Java 16 or newer for the latest versions. If you're still on Java 11, you'll need to either upgrade or use an older CommandAPI release. Most servers run modern Java by now, but it's worth checking if you hit any weird errors on startup. Key Features and Practical Examples CommandAPI ships with a ton of built-in argument types. You can use StringArgument, IntegerArgument, EntitySelector, Location, ItemStack, and dozens more. Each one automatically validates input and provides smart suggestions. GitHub project card for CommandAPI/CommandAPI Say you're making a teleport command: javanew CommandAPICommand("teleport").withArguments(new EntitySelectorArgument("player")).withArguments(new LocationArgument("destination")).executes((sender, args) -> { Player player = (Player) args.get("player"); Location destination = (Location) args.get("destination"); player.teleport(destination); }).register(); The plugin author writes maybe 10 lines. CommandAPI validates that the entity selector is valid, ensures the location exists, handles all the casting, and provides tab-complete suggestions for both arguments. Players type /teleport @s and they get a nice list of nearby coordinates. Permission integration is also built-in. You can chain permissions directly onto command definitions, and CommandAPI will silently fail execution for users who don't have permission rather than spamming errors. So it respects your server's permission structure smoothly. Another strong point: CommandAPI supports subcommands naturally. If you want a command structure like /admin player ban , you don't have to hack it together - the library has explicit subcommand support that feels clean and maintainable. Common Pitfalls and Pro Tips The biggest gotcha I've seen: CommandAPI commands registered during plugin bootstrap might fail silently if the plugin hasn't fully initialized. Always register commands in onEnable(), not the constructor. Second, if you're running multiple plugins that use CommandAPI, they share the same instance. This is actually great for memory usage, but it means one plugin can't accidentally trash the command system for others. It just works. One more thing - when you're testing locally, make sure you're actually reloading the server, not using /reload. Plugin reloads in Minecraft are notoriously unreliable and can leave ghost commands registered. A full server restart is safer. Custom argument types are possible but add complexity. Stick with the built-in types whenever you can. They cover 95% of use cases, and creating custom arguments requires implementing interfaces that'll make your code harder to maintain. Real-World Server Applications Custom MOTD systems often use command-based configuration. If you've ever wanted to set your server's MOTD through an in-game command instead of editing config files, a plugin using CommandAPI could make that smooth - operators would get tab-complete suggestions for colors and formatting options. Server DNS setup can also benefit. If you're managing custom DNS records for your Minecraft realm, a clean command interface powered by CommandAPI beats a clunky config file. Imagine running /dns add subdomain 192.168.1.100 with full validation and error messages. Some servers use this pattern for free DNS setups. Game servers use CommandAPI heavily for cosmetics, minigames, and administrative tools. Any plugin that needs to accept structured input from players is a good candidate. If CommandAPI Isn't for You CommandAPI is specifically for plugin developers. If you're just running a server, you don't install this directly - you benefit from it indirectly when you install plugins that use it. Admins don't need to know CommandAPI exists. If you're building a simple plugin with just a couple of commands, vanilla Bukkit commands aren't that painful. CommandAPI shines when you've many commands, complex arguments, or you care about user experience. For a plugin with three basic admin commands, the overhead isn't worth it. There's also Brigadier (the underlying Minecraft library), which some developers use directly for even more control. CommandAPI is a wrapper that makes Brigadier accessible without needing to understand all its internals. If you want that low-level control, you might skip CommandAPI and go straight to Brigadier - but that's a specialist move. Support the project CommandAPI is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### Waterfall Minecraft Proxy: Architecture, Features, and Its Legacy URL: https://minecraft.how/blog/post/waterfall-minecraft-proxy-archive Published: 2026-04-24 Author: ice "BungeeCord fork that aims to improve performance and stability." PaperMC/Waterfall · github.com Waterfall is a BungeeCord fork that's no longer maintained. Before you install it, you should know: the maintainers recommend switching to Velocity instead. That said, understanding Waterfall's design and why it existed teaches you something real about how large-scale Minecraft networks operate. If you're managing a proxy setup or developing server plugins, there's still value in knowing what Waterfall was trying to solve. What Waterfall Actually Was BungeeCord is the industry standard for connecting multiple Minecraft servers together. A single proxy server sits in front of your actual game servers and routes players between them. But BungeeCord's codebase wasn't designed for the scale some admins needed. Waterfall was a fork created by the PaperMC team (the same group behind Paper, the hugely popular server software) to build a proxy that didn't sacrifice performance for stability. The project focused on three things: Stability - code that's testable and doesn't lag under load Features - more functionality than canonical BungeeCord, added faster Scalability - handling thousands of concurrent players on modern hardware It sounds straightforward now, but at the time, BungeeCord's upstream maintainers weren't accepting contributions at the pace the community wanted. Waterfall existed because the fork was faster and more willing to experiment. Why the Fork Happened (And What It Says About Open Source) This is the interesting part. BungeeCord is open source, but it moves cautiously. The Waterfall maintainers basically said: "We can do this faster." They forked the project, kept merging upstream changes, but also added their own patches. This let them ship features and fixes while still tracking BungeeCord's core updates. Lush Cave MOC by Edge of Bricks It wasn't hostile or contentious. It was pragmatic. The Minecraft server admin community had real scaling problems, and the fork let them solve them without waiting for upstream consensus. This is how open source actually works sometimes - not everyone waiting for permission. How Waterfall Worked Under the Hood Like BungeeCord, Waterfall sat between players and your backend servers. When a player connects, Waterfall handles the login and decides which server to route them to. It manages server switches, chat, movement, and all the proxy logic. The difference was in the details: better performance under concurrent load, cleaner code structure, and a more active API. Lush Cave MOC by Edge of Bricks For plugin developers, Waterfall provided a clean JavaDocs API and Maven/Gradle artifacts. You could build plugins using: xml papermc https://repo.papermc.io/repository/maven-public/ io.github.waterfallmc waterfall-api 1.21-R0.3-SNAPSHOT provided Or with Gradle: groovyrepositories { maven { url 'https://repo.papermc.io/repository/maven-public/' } } dependencies { compileOnly 'io.github.waterfallmc:waterfall-api:1.21-R0.3-SNAPSHOT' } This API was one of Waterfall's selling points - it was actively documented and kept in sync with releases, unlike some proxy projects where the API docs lag behind the code. Installation and Compilation Running Waterfall required Java 8 or higher (pretty standard). You'd download the JAR file from papermc.io/downloads, drop it in a folder, and run it. Configuration was straightforward YAML. Lush Cave MOC by Edge of Bricks If you wanted to compile from source, Waterfall kept the build simple: bashgit clone https://github.com/PaperMC/Waterfall.git cd Waterfall./waterfall b That command handled pulling dependencies, running tests, and building the JAR. The compiled binary ended up in Waterfall-Proxy/bootstrap/target/. Clean. No unnecessary ceremony. What Made Waterfall Different From Plain BungeeCord Performance wasn't just marketing speak. Waterfall's patches focused on reducing proxy overhead. Some highlights: Lush Cave MOC by Edge of Bricks Better handling of concurrent player connections without thread pooling bottlenecks Smarter buffer management to reduce garbage collection pauses More efficient packet handling, especially for large player counts Testable code - the maintainers actually wrote unit tests, which BungeeCord didn't always prioritize If you were running a network with 5,000+ concurrent players, this mattered. If you had 200 players, you wouldn't notice much difference. The project also responded faster to security issues and compatibility updates when new Minecraft versions dropped. PaperMC had resources and motivation to move quickly. Why Waterfall Got Archived PaperMC didn't abandon Waterfall lightly. They created something better: Velocity. Velocity isn't a fork of BungeeCord - it's a completely new proxy written from scratch. It's designed for modern Java, has better performance, cleaner plugin APIs, and more active development. The Waterfall maintainers made an official announcement: use Velocity instead. They're maintaining it, improving it, and it's where the Minecraft server proxy ecosystem is heading. After a period where both projects existed, they decided to put Waterfall into archive mode. This wasn't a failure. It was the authors recognizing that the next generation of their own software was better, and being honest with the community about it. What This Means for Your Server Setup If you're building a new proxy network today, don't use Waterfall. Use Velocity. It's actively maintained, performs better, and you'll get bug fixes and security updates. If you're curious about how Minecraft proxies work at a deeper level, Waterfall's codebase and architecture still have educational value. Reading through the patches and understanding why they were needed teaches you real things about proxy performance. And if you're already running Waterfall on a stable network? Migration to Velocity is straightforward, and the PaperMC team provides guidance for it. The config formats are different but not drastically so. One practical tip: if you're customizing your server list with MOTD text (the message that shows when players see your server in the multiplayer menu), tools like our MOTD Creator can help you format that properly for your proxy. Waterfall and Velocity both respect standard MOTD formatting. Learning From Waterfall's Story Waterfall matters not because you should use it today, but because it represents something important in open source. A team recognized a real problem, forked a project, proved they could solve it better, and then gracefully transitioned to a successor when the next evolution became clear. It didn't die because it was bad. But it succeeded so well that its creators built something better to replace it, and had the integrity to tell people to use that instead. Plus, if you're building anything with Minecraft server infrastructure - perhaps searching for block behavior or trying to understand how complex game mechanics work - you'll find references to Waterfall in forums and documentation. Understanding its role in the ecosystem helps you understand the whole landscape. Need to figure out Minecraft blocks for your proxy or server? The Block Search tool is surprisingly useful when you're debugging proxy issues or understanding why certain blocks cause problems with packet routing.PaperMC/Waterfall - MIT, ★746 Support the project Waterfall is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### Minestom: Building Custom Minecraft Servers in Java URL: https://minecraft.how/blog/post/minestom-custom-minecraft-servers Published: 2026-04-24 Author: ice GitHub · Minecraft community project Minestom (Minestom/Minestom) 1.21.11 Lightweight Minecraft server Star on GitHub ↗ ⭐ 3,123 starspache-2.0 Want to build a Minecraft server that's completely yours, from the ground up? No plugins, no limitations, just pure Java code and your imagination. That's what Minestom offers - a lightweight framework for creating custom Minecraft server software without touching Mojang's proprietary code. If you've ever wanted to run a server with features that don't exist in vanilla or plugin ecosystems, this is worth your time. What Minestom Actually Is Minestom is a Java library, not a drop-in server replacement. You won't download it, click a launcher, and start playing. This is a developer tool. It means you write code, compile it, and run your own Minecraft server from that compiled binary. Think of it like getting the keys to build the server from scratch, but someone else handled the hard parts of the Minecraft protocol. The project supports Minecraft 1.21.11 and has been actively maintained with a strong community. It's open-source under the Apache-2.0 license and has attracted over 3,100 stars on GitHub, which for a niche developer library is solid validation. Here's the kicker: Minestom comes with nothing by default. No creative mode, no survival mechanics, no mob AI. You build everything you need. This sounds like a disadvantage until you realize it's actually the opposite - you don't waste time stripping away features you don't want. Why You'd Actually Use This Most Minecraft server admins reach for Bukkit, Spigot, or Paper. Those are great for running vanilla-ish servers with plugin ecosystems. But Minestom exists for a different reason: total control and extreme performance optimization. Custom game modes are the biggest use case. Imagine a pure PvP arena where you've written every single mechanic yourself - damage formulas, abilities, progression systems. Or a city-building server where players can shape the world in ways vanilla Minecraft doesn't allow. When you browse the Minecraft server list, you'll see wildly creative concepts that would be nearly impossible to implement with plugins alone. Minestom makes those projects feasible. Performance matters too. Because Minestom doesn't ship with unnecessary features, servers often run leaner. If you're hosting 500+ concurrent players, that efficiency compounds quickly. And you can optimize the specific features you actually use. Moderation and anti-cheat are another angle. You can write detection systems that understand your server's specific mechanics. Third-party anti-cheat plugins often false-flag custom gameplay. With Minestom, your code knows the truth about what's possible. There's also the learning angle. If you want to understand how Minecraft networking actually works, building a server with Minestom is the deep end of the pool. It's not recommended for your first Java project, but it's fantastic for leveling up. Getting Started With Minestom Installation is straightforward if you're comfortable with Java build tools. Minestom is published on Maven Central, so you add it as a dependency in your build configuration. Using Gradle (the modern approach), you'd add this to your build.gradle.kts: kotlinrepositories { mavenCentral() } dependencies { implementation("net.minestom:minestom:2026.04.13-1.21.11") } The version format tells you everything: 2026.04.13-1.21.11 means April 13, 2026 release for Minecraft 1.21.11. Check the official repository for the latest stable release. If you want to test bleeding-edge features before official releases, Minestom publishes snapshot builds to Sonatype's snapshot repository. Handy for staying ahead, but obviously less stable. From there, you write your main class, initialize a MinestomServer, create your game logic, and you're off. The official documentation and wiki will guide the actual implementation, but the barrier to entry is lower than you'd expect - mostly because the framework handles all the protocol complexity. What Minestom Handles For You The framework manages the Minecraft protocol entirely. Chat, chunk loading, entity synchronization, inventory updates - all abstracted into reasonable APIs. You're not packet-wrangling; you're building game logic. Chunk generation is flexible. You can use vanilla-style noise, custom algorithms, or load pre-built worlds. The project includes testing utilities too, so you can write automated tests for server behavior - something plugin developers often struggle with. Metadata and entity customization is granular. Ever wanted a custom entity with abilities plugins can't express? Minestom lets you define entity types, metadata, behaviors, and rendering all in code. For competitive game modes, this flexibility is game-changing. Cross-version compatibility is limited but intentional. Minestom targets a specific Minecraft version (currently 1.21.11). If you need older version support, you'd maintain a separate codebase. But this isn't laziness - it keeps the library lean and the protocol implementation clean. Common Gotchas and Limitations First reality check: this is a developer tool. Your players need a Minecraft client that matches your server's version. If you're running 1.21.11 and someone connects with 1.20.1, they can't join. There's no automatic version bridging. Second, client mods can be problematic. Minestom enforces protocol spec strictly, which is good for security but means Optifine, fabric mods, or anything that deviates gets rejected. This matters less for pure competitive servers but limits creative community building. Developing in Minestom requires Java knowledge. If your team is front-end focused or new to programming, the learning curve stings. Bukkit plugins feel more approachable because they're often copy-paste configurations. Minestom demands actual software design. Documentation is solid but narrower than Bukkit's ecosystem. If you get stuck, you're reading API docs and source code, not a thousand plugin examples. The community is growing and helpful, but it's smaller. Player base discovery is trickier too. Servers running Minestom don't appear in typical server lists the way vanilla or Spigot servers do. You'll need to handle your own marketing and community building - or list on platforms that accept custom servers. Comparing Your Options If you're torn between Minestom and alternatives, it depends on your goal. Paper (a Bukkit fork) is the go-to for admins wanting vanilla Minecraft with tweaks and plugins. It's plug-and-play, with a massive plugin ecosystem, but you're constrained by what plugins exist. Fabric is excellent if you're building client-side mods but terrible for servers. It's a client modding framework, not a server platform. Custom server platforms built on Minestom (like Hytale's architecture, conceptually) give you absolute freedom but demand the most developer effort. You're not just administrating - you're engineering. For most people running community servers, Paper works great. For large-scale custom games or educational projects, Minestom shines. Choose based on whether you need plugins (Paper) or unlimited customization (Minestom). Building Something Real The best way to learn Minestom is to build. Start small: maybe a PvP arena with custom damage rules, or a puzzle server where physics work differently. Once you've shipped something and seen players interact with your code, the framework clicks. Join the Discord community - the maintainers and contributors are responsive and patient with questions. If you're serious about this, watching server projects built with Minestom teaches you patterns faster than docs alone. And if you run a Minestom server that gains traction, list it on community resources. The Minecraft server lists and communities like block databases help players discover interesting worlds. Visibility matters when you're building something unique. Minestom isn't the default choice, and it shouldn't be. It's the choice for developers who want to build something no plugin combination can achieve. If that's you, it's worth the learning curve. Support the project Minestom is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### How GM4 Datapacks Enhance Vanilla Minecraft URL: https://minecraft.how/blog/post/gm4-datapacks-vanilla-minecraft Published: 2026-04-24 Author: ice GitHub · Minecraft community project GM4_Datapacks (Gamemode4Dev/GM4_Datapacks) Gamemode 4 is a collection of modular Minecraft Datapacks that change or expand on the vanilla experience whilst keeping the vanilla feel. Our modules are developed with a focus on usability and efficiency. Star on GitHub ↗ .0 Ever felt like vanilla Minecraft needs just a touch more? GM4 Datapacks is a collection that adds dozens of modular features while keeping the vanilla feel intact. No mods, no mod loaders - just zip files you drop into your world or server. What This Project Does GM4 is a collection of datapacks - basically vanilla content additions that live in your world folder without requiring mods or mod loaders. If you've never encountered datapacks before, think of them as enhancement packages that Minecraft reads as part of the world data itself. No Java Edition tweaks, no Minecraft Forge, no installation nightmares. The real distinction here is modularity. You don't install one gigantic package and then disable the features you don't want. Instead, you pick individual modules (new items, game mechanics, quality-of-life fixes, decorative elements, entirely new systems) and combine them however you like. Want an improved storage system? Grab that. Want boss fights beyond the Ender Dragon? Pull in a completely different module. Want neither? Just leave them out. This modular philosophy is actually rare in the Minecraft datapack space. Most collections are either "everything or nothing" or scattered across dozens of websites. GM4 keeps everything organized, documented, and intentionally designed to play nicely together. The modularity also means you can start small. Maybe you just want Storage Drawers because your chests are a disaster. Months later you realize you want graves. You add that module. Next season you want new crops. Add another. Build your world exactly as you want it instead of being stuck with someone else's vision of what "enhanced vanilla" means. This keeps your world genuinely enhanced instead of bloated or janky. Why You'd Actually Use It Vanilla Minecraft is solid. It's also... limited after a few hundred hours. You hit a point where you've got more resources than you know what to do with, no boss encounters worth doing, and no practical storage solutions that don't rely on mob farm luck or shoving everything into double chests. Mods solve this instantly. But they come with their own problems: Minecraft Forge installation, mod compatibility hell, dependency tracking, performance hits, and the constant risk that a new mod update breaks your carefully balanced setup. Some players just want vanilla's simplicity with a bit more depth. That's the gap GM4 fills. You get enhancements without the overhead. You'd use GM4 if you're running a vanilla survival server and want optional content without breaking the vanilla experience. Players can choose what they want; you're not forcing anything. Or you're someone who genuinely enjoys vanilla Minecraft but recognizes it's missing obvious features (storage, boss fights, decorative options). Maybe you're building a customized survival experience without committing to full modding and all its complications. There's also the performance angle - datapacks are generally lighter than mods because they use Minecraft's native systems instead of hooking into the Java Edition core. A heavily modded instance might stutter; a datapack-enhanced world usually runs smoothly. Getting It Installed Installation is straightforward. Head to gm4.co/modules and you'll see the full collection. Download the modules you actually want as zip files - don't grab everything if you're unsure. For single-player (Java 26.1.2): Navigate to your world folder. On Windows, that's typically in %appdata%\.minecraft\saves\YourWorldName. On Mac/Linux, look in .minecraft/saves/YourWorldName Create a datapacks folder if it doesn't exist already Drop your GM4 zip files into that folder (leave them as zips - don't extract them) Load your world and Minecraft will detect and load them automatically. You'll see a message in chat when they initialize For servers, the process is nearly identical: place your datapack zips in the datapacks folder in your server root, restart the server or use /reload, and datapacks load into all players' worlds automatically. One critical thing: leave them as zip files. Minecraft expects that format and won't recognize unzipped datapacks. People try to "extract" them thinking it'll help, and then nothing loads. The first time you load a datapack, Minecraft might pause for a few seconds while it compiles everything. That's normal. What Actually Makes GM4 Worth Your Time Storage systems in vanilla Minecraft are... not great. Double chests take up space, hoppers are finicky, and there's no way to compress thousands of a single block type into reasonable storage. GM4's Storage Drawers module fixes this elegantly - one block can hold thousands of items of a single type. It sounds minor until you've spent twenty minutes sorting stacks and realize how much space you're wasting. Graves are another genuinely useful module. Death in vanilla means panic. You've got five minutes to sprint back to your drop location or lose everything permanently. Graves create a gravestone at your death spot, holding your items safely until you can retrieve them without the time pressure. It's practical, keeps the vanilla feel intact (gravesites look fitting in most biomes), and makes multiplayer worlds less frustrating. Crooked Signs seems small but matters for anyone building detailed structures. Standard Minecraft signs are flat rectangles attached to walls. This module lets you tilt, rotate, and stack them in actual useful ways. Anyone who's tried to make a detailed shop sign or a directional post knows how limited vanilla options are. The Waystone module is another standout. But it adds teleportation points you can place around your world, but in a way that feels vanilla - you craft them, place them, and teleport by right-clicking. No mystical portals or flying. It's practical for large worlds where traveling hundreds of blocks gets tedious. There are dozens more modules handling everything from new enchantments to custom crops to additional boss fights to decorative blocks. Instead of downloading everything and drowning in features, browse the website and add what actually appeals to your playstyle. Things That Trip New Users Up Module compatibility is important. Most GM4 modules play nicely together, but some have dependencies - one module might require another to function. Read the descriptions on the website before loading random combinations. The documentation lists dependencies clearly. Performance matters when you stack modules. Datapacks are lighter than mods, but don't assume they're free. A server loaded with twenty modules will use more CPU than vanilla. Monitor your server's tick time (the /debug command helps) if you're stacking a lot of content. Most users won't notice a difference, but large servers or older hardware might. Updates require removing old zips and adding new ones. When GM4 releases a version bump for a module, you need to manually swap them out. Always back up your world before updating - it's just good practice with any world file changes. Testing one module at a time is smart if you're new to datapacks. Load one, make sure it works, add another. That way if something breaks, you know which module caused it instead of debugging everything at once. Actually, important note: the GM4 community is responsive. The Discord is active, the GitHub has issues you can search, and the maintainers take bug reports seriously. You're not flying blind with a dead project. Other Datapack Collections Worth Knowing About Vanilla Tweaks is probably more famous. It's a massive collection of tiny tweaks - cosmetic changes, custom crafting recipes, quality-of-life stuff. It's "vanilla plus" philosophy rather than "vanilla expanded." Some overlap with GM4, some completely different. Cubicle Studios has datapacks if you want something geared toward roleplay and narrative elements. Different philosophical direction entirely. Neither is better. It depends what you want. GM4's modular approach and "vanilla feel" philosophy work well for survival servers and worlds where you want meaningful enhancements without the mod ecosystem. Before You Hit Download Make sure you're on a recent Java Edition Minecraft version. 26.1.2 is current. Most datapacks are relatively version-agnostic, but running an old version with new datapacks causes weird behavior and crashes. Don't be intimidated if you've never touched datapacks before. Installation is literally download and folder drop. Unzip nothing. The documentation is clear and the community actually helps instead of telling you to "read the wiki." One practical tip: while you're setting everything up, grab the Server Properties Generator to dial in your server settings properly. If your players are making custom skins, point them to the Minecraft Skin Creator. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Building Low-Poly Minecraft Models with Blockbench URL: https://minecraft.how/blog/post/blockbench-minecraft-models Published: 2026-04-24 Author: ice GitHub · Minecraft community project blockbench (JannisX11/blockbench) Blockbench - A low poly 3D model editor Star on GitHub ↗ ⭐ 5,352 stars.0 Ever wanted to create custom 3D models for your Minecraft server or resource pack but got scared off by Blender's learning curve and price tag? Blockbench strips away the complexity. It's a free, open-source editor built specifically for low-poly models and Minecraft content, with a clean interface that beginners actually understand. What Blockbench Does Blockbench is a 3D model editor built from the ground up for low-poly models with pixel art textures. Think of it as the opposite of Blender's everything-at-once design. Where Blender throws every tool at you and expects you to figure it out, Blockbench gives you exactly what you need and stays quiet. The project started because someone realized that making Minecraft custom content shouldn't require software that costs money and takes weeks to learn. That shows in the design. The interface feels modern without being pretentious, and it works the same way whether you're making your first simple block or a complex rigged character. Free and open source under GPL-3.0. It exports to multiple formats, but here's what matters: native support for Minecraft Java and Bedrock model formats with format-specific features built in. You can also save as OBJ, Collada, or GLFT, which means your models aren't locked into Minecraft only. Make something once, use it almost anywhere. When You'd Actually Use This Let's get practical. If you're running a Minecraft server and want custom items or mobs that look different from vanilla blocks, Blockbench is where you start. The same goes for resource packs, data packs, or just tinkering with content creation. Custom armor sets? Furniture that looks intentional? Entirely new blocks? All Blockbench territory. The animation system is where this gets interesting. If your content has movement (NPCs, custom mobs, animated furniture), you can set up bone structures, create keyframe animations, and export everything in formats that game engines understand. You're not fighting the tool to do the basics. And here's the thing: you can test your models in a real Minecraft environment. Once you've built something in Blockbench, you can export it and load it into a test server. If you need to set up that server, the Minecraft server list shows you what's running, and the server properties generator gets your basics configured in minutes. Installation and Setup The easiest way is downloading the desktop app from blockbench.net. Windows, macOS, Linux all work fine. Don't want to install anything? Use the web editor directly. If you're building from source (contributing to the project or experimenting with plugins), clone the repository and install dependencies: bashnpm install Launch the desktop version with: bashnpm run dev Prefer the browser? Use this: bashnpm run serve Then open http://localhost:3000. Both work fine. Pick whichever fits your workflow. Features That Stand Out Cube-based modeling. Models are built from cubes (not polygons). You scale, rotate, and position them. This might sound limiting, but it's exactly what makes Blockbench fast and why it creates assets that look intentional in Minecraft. Low-poly is the point here, not a limitation. Creature3 in Minecraft The viewport is straightforward: rotate, zoom, inspect from all angles. Texturing happens inside the editor too. Paint directly onto your model, or load pixel art textures and map them. Minecraft formats handle UV layouts automatically, which saves you from hours of manual unwrapping. Format-specific tools. Blockbench actually understands Minecraft Java Edition, Bedrock, Java data packs, and addon formats. It includes tools specific to each. Java models get bone rigging and animation support. Bedrock gets different UV handling because the format works differently. No fighting with config files to get your format right. Animation that actually works. Set up a bone structure, create keyframes, and Blockbench handles interpolation. You can preview animations in real time, adjust curves, layer multiple animations. This isn't supposed to be possible in a free tool. It's genuinely impressive. Plus, plugins extend everything. Someone made a plugin to import from other formats, another automates texture wrapping. The community's built out a solid toolkit over the years. What Trips People Up UV mapping and bone structure have learning curves if you've never done 3D modeling. Blockbench teaches this better than most tools, but you might need a tutorial or two. The wiki documentation is solid. Very complex models can bog down the editor, especially with high-resolution textures and painting. The workaround is simplifying your model or splitting complex pieces. Web version performance varies by browser and hardware. Minecraft model formats have hard limits. You can't make perfectly smooth curves or do advanced deformation the way you would in Blender, because Minecraft uses cubes and bones. That's intentional. If you need photorealistic assets, wrong tool. If you want models that look good and run fast in Minecraft, you're exactly where you should be. The latest release (version 5.1.3) actually fixed some painting performance issues on complex meshes. Other Tools Worth Knowing About Blender is infinitely more powerful and also free, but it's massive, complex, and honestly overkill if you just want to build a sword or a custom mob. Learning curve and download size both make you regret it if you're just starting out. Cubik Studio exists in similar space, costs money, and gets updated less frequently. Fine if you already own it, but momentum and community support are on Blockbench's side. Aseprite for texture-first workflows (create pixel art, import it, build models around it) pairs well with Blockbench. Model viewers like Crafatar are separate tools for rendering, not editing. Bottom line: if you're making Minecraft content, you're ending up in Blockbench. 5,300+ stars on GitHub and a JavaScript codebase that's easy to extend are reasons why the project's stuck around and grown. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Bringing Custom 3D Models to Your Minecraft Server URL: https://minecraft.how/blog/post/bettermodel-custom-minecraft-models Published: 2026-04-24 Author: ice toxicity188/BetterModel Modern Bedrock model engine for Minecraft Java Edition If you're running a Minecraft server and tired of vanilla mobs and NPCs, BetterModel might be exactly what you need. This Kotlin-based plugin brings custom 3D models to life on Java Edition servers, handling all the heavy lifting server-side so players don't need resource packs. It's built for high-traffic servers and handles animations without tanking performance. What This Project Does BetterModel is a server plugin that renders custom 3D models directly in your world. You design models in BlockBench (the free, open-source 3D modeling tool), export them, and BetterModel takes it from there. The plugin handles model loading, animation playback, and keeping everything synced with the base entity. All the rendering happens server-side, which is the key difference from traditional resource-pack approaches. The magic happens through item display entities, a Minecraft feature that lets the server send complex visual data to players without requiring client-side mods. Players see your custom models exactly as you designed them, no extra downloads needed. Why You'd Actually Use This Custom models open up possibilities that vanilla Minecraft just can't match. Want armor that actually looks like a suit of plate instead of a leather jacket recolor? Done. Creating an MMORPG server where NPCs have unique appearances and animation sets? BetterModel's got you covered. Building a dungeon with animated doors, chests, or decorative pillars that actually move? That's all within reach. The real appeal here is that you're not stuck with vanilla limitations anymore. And because it's server-side, you don't have to nag your players to download anything. They join and immediately see your custom models. That's a huge UX win for servers with rotating player bases. One thing worth mentioning: this is built specifically for high-traffic servers. The developers took a conservative approach to stability, meaning they focus on features that actually scale. You're not getting every possible BlockBench feature, but what you do get works reliably under load. Installation and Setup Installation depends on your server software. For Paper-based servers: Download the plugin from the latest release on GitHub, then drop it into your plugins folder: bashcd /path/to/server/plugins wget https://github.com/toxicity188/BetterModel/releases/download/3.0.1/bettermodel-3.0.1-paper.jar Restart your server and you're done. The plugin creates config files automatically on first run. For Fabric servers: If you're running Fabric (more common on modded networks), grab the Fabric version: bashcd /path/to/mods wget https://github.com/toxicity188/BetterModel/releases/download/3.0.1/bettermodel-3.0.1+26.1.2-fabric.jar Fabric requires a bit more setup, but the steps are straightforward. Make sure you've got Fabric Loader 0.19.2 or newer installed (which, if you're running recent Minecraft versions, you probably do). The latest version supports Minecraft 1.21.4 through 26.1.2, so check your server version before downloading. Key Features That Actually Matter Animation Support Models aren't just static. BetterModel plays animations frame-by-frame, exactly as you designed them in BlockBench. You can trigger these animations based on events (mob attacks, NPC interactions, quest completion, whatever your server needs). The animation system handles playback smoothly, even with dozens of animated models running simultaneously. Per-Player Animations This one's genuinely clever. Different players can see different animations at the same time based on where they're or what they're doing. Imagine an NPC that waves at each player individually as they approach, or a door that opens at different times for different people based on their permissions. It sounds niche, but for immersion-focused servers, it's huge. 12-Limb Player Animations If you're creating custom player skins or characters, BetterModel supports complex skeletal animations with up to 12 joints. Arms, legs, torso, head, and everything in between can move independently and naturally. If you're interested in creating matching custom skins for your players, check out the Minecraft Skin Creator to design skins that complement your BetterModel characters. Custom Hitboxes A model's visual appearance doesn't have to match its hitbox. You can make something look like a small decorative cube but have it be clickable over a large area. Or the reverse: make something huge-looking but with a tiny interaction zone. Useful for click-to-interact NPCs or invisible trigger zones. Common Gotchas and Tips Test your models in a dev environment first. BlockBench models are powerful, but not every feature translates perfectly to Minecraft. Some complex nested structures or unusual animation setups might behave differently than they did in BlockBench's viewport. Memory matters on busy servers. Models are loaded into memory and rendered every frame for every online player. If you're adding thousands of custom models to a server with 200 concurrent players, performance will suffer. Start conservative and add more as you test. The developers built BetterModel with async loading specifically to avoid stutters, but you still shouldn't go crazy. The plugin generates a resource pack automatically, but that resource pack only handles the textures. One geometry and animation are entirely server-side. This is why you don't need players to download anything (other than the texture pack, which happens transparently in most setups). Actually, the texture pack generation is automatic but configurable. Check the config file if you want fine-grained control over what gets packaged. Document your configuration choices early if you're working with a team, since changes to model structure or animation parameters might require updates. Server Administration and Voting Rewards If you're running a community server with voting systems and reward mechanics, BetterModel can make your voting reward NPCs and special merchants look spectacular. Players get invested in servers that feel polished, and custom models are a quick way to signal that attention to detail. If you're setting up voting systems, the Minecraft Votifier Tester is a handy tool for testing your vote rewards during development. Alternatives Worth Considering If BetterModel doesn't quite fit, a few other options exist. ModelEngine is probably the most well-known alternative. It's been around longer and has a bigger community, but it's also more resource-intensive and requires a commercial license for servers with more than 50 players. BetterModel is MIT-licensed and free regardless of server size. Mythic Mobs does some of this, but it's designed primarily for custom mobs with AI. If you're building complex custom enemies with intelligent behavior, Mythic Mobs excels. For decorative models and NPCs, BetterModel is more straightforward. Citizens is the classic NPC plugin, and it handles appearance customization. But for true 3D models with skeletal animation, it falls short. Citizens is better for interactive quest-givers and merchants; BetterModel is better for making those NPCs look unique. Getting Your Models Into Production You design in BlockBench like normal, save as.bbmodel, and BetterModel imports them directly. The plugin's GitHub wiki has examples of working models and setup guides. There's also a community wiki on DeepWiki with additional resources and troubleshooting tips. If you're new to BlockBench, there's a learning curve, but it's not steep. The community has tons of tutorials. And if you're already running a server with custom content, you're probably familiar with modeling anyway. One practical tip: keep your BlockBench models organized with clear naming and structure. Future-you'll be grateful when you're debugging why an animation isn't playing or a model's position is off. Support the project BetterModel is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### Custom Structure Modding: Complete Guide to StructureTutorialMod URL: https://minecraft.how/blog/post/structuretutorialmod-custom-structures Published: 2026-04-24 Author: ice GitHub · Minecraft community project StructureTutorialMod (TelepathicGrunt/StructureTutorialMod) A short example showing how to register a structure and get it to generate in all biomes in NeoForge, Forge, and Fabric! (check the branches) Star on GitHub ↗ If you've ever wanted to add custom structures to a Minecraft world but got overwhelmed by NBT files, template pools, and configuration, StructureTutorialMod exists specifically to untangle that mess. This teaching-focused mod breaks down the entire structure generation pipeline into four real-world examples you can read, learn from, and adapt to your own ideas. It's not a plugin or a shortcut - it's learning material disguised as code. What This Project Actually Does StructureTutorialMod is a heavily commented Java mod that shows you step-by-step how to register and generate Jigsaw structures in NeoForge, Forge, and Fabric. Each branch targets a different modloader, so you can switch between them depending on what you're developing for. The creator walked through the entire structure registration process and included inline comments explaining *why* each piece matters, not just *what* it does. The goal isn't to use this mod in your world for new features. It's to read it, understand it, and then build your own structure system. Every JSON file, every NBT placement, every processor list serves as an example. Some structures use only JSON (no code at all), while others layer in Java for advanced behavior. This range means you can start simple and work your way up. The Four Example Structures You'll Study The mod ships with four distinct structures, each teaching a different lesson. Think of them as difficulty levels. JSON Only House is the beginner's starting point. It demonstrates that you don't need a single line of Java code to get a structure generating. Two NBT pieces are connected using Jigsaw blocks and a template pool. The structure even includes a chest with a loot table that generates random items when you open it for the first time. It's simple enough to understand completely in an afternoon, yet complex enough to show how pieces fit together. Sky Fan takes the next step by adding Java code for placement logic. It refuses to spawn above terrain higher than y = 150, keeping the structure floating cleanly in the sky. This teaches you how to validate spawn locations and reject placements that don't meet your criteria. It also introduces processor lists - a way to randomize blocks throughout the structure without manually editing every variant. Sea Boat shows how to handle biome targeting with more precision. Instead of a single biome tag, it uses two: one to specify where it *can* spawn and another to specify where it *can't*, even if the first condition is met. But it also validates that the spawn location has water, so it doesn't awkwardly place a boat on land. This is what real-world structure selection looks like. End Phantom Balloon is the advanced example. So it uses custom placement logic to ensure it only spawns above large End islands, far from the world center. If you want structures with unusual placement rules, this is where you'll find answers. Getting Started: Installation and Setup Grab the latest source from GitHub and choose your branch. The main branch is NeoForge; other branches cover Fabric and Forge. You'll need JDK 21+ and Gradle installed on your system. bashgit clone https://github.com/TelepathicGrunt/StructureTutorialMod.git cd StructureTutorialMod git checkout fabric # or forge, or stay on main for neoforge./gradlew build Once built, the JAR goes into your mods folder. When you load the mod in Minecraft 26.1.2 (or whatever your branch supports - check the commit history for older versions), the example structures start generating in most biomes. Load up a new world and fly around. You'll see houses, floating structures, boats in oceans, and balloons in the End dimension. The real work begins when you open the `src/main/resources/data/structuretutorial/worldgen` folder. Every JSON file has explanatory comments. Open `structure/json_only_house.json` and read it line-by-line. Then cross-reference `worldgen/template_pool/json_only_house` to see how pieces connect. This hands-on reading is how you learn. Core Concepts You'll Master Jigsaw structures are the foundation. They're a system where you build structure pieces separately as NBT files, then connect them using Jigsaw blocks. One piece's Jigsaw block attaches to another piece's Jigsaw block, and they snap together. This modular approach means you can create complex structures by combining simple pieces. The tutorial mod uses two-piece structures, but you can nest dozens. GitHub project card for TelepathicGrunt/StructureTutorialMod Template pools are the JSON files that define which pieces can connect to each other and how often each appears. A pool might say "this Jigsaw connector can attach to either Piece A (50% chance) or Piece B (50% chance)." Minecraft randomly selects from the pool each time it generates a structure, creating variation without duplicating NBT files. Processor lists let you randomize blocks without creating multiple NBT files. Say you want some blocks in your structure to be oak wood 70% of the time and birch wood 30% of the time. Instead of building two separate NBT files, you define a processor that swaps blocks during placement. The example structures use this heavily. Custom structure placement is where Java code enters. The vanilla system spawns structures based on biomes and spacing, but you might want custom rules. This tutorial mod shows how to override placement to add height checks, water validation, or distance-from-world-center rules. This is pure logic - no NBT involved. Where to Find Tools and Resources To actually *build* your own structures in survival mode, use structure blocks (that's a vanilla Minecraft feature). There's a solid video tutorial on YouTube showing how to carve out a structure, save it to NBT using structure blocks, and export it. Once you've your NBT file, you can reference it in StructureTutorialMod's template pool system. If you need to search for specific blocks when designing your structure, minecraft.how's Block Search tool is invaluable for finding block IDs and properties. And if your structure involves the Nether, the Nether Portal Calculator helps you plan exact placements across dimensions. For reference material on vanilla structures, all of Minecraft's worldgen JSON and NBT files are archived at mcmeta's GitHub repository. Browse those files to see how Mojang structures are built. It's a goldmine if you're stuck. Common Stumbling Blocks (and How to Avoid Them) Most people try to understand everything at once. Don't. Start with JSON Only House. Read every line. Build that structure from scratch using the mod as a reference. Only then move to Sky Fan. Rushing through all four examples at once guarantees confusion. Another mistake: not understanding the difference between a structure and a structure set. A structure is the actual building you're placing. A structure set is the collection of structures Minecraft considers for placement in a biome, along with the spacing and separation rules. Both JSON files are necessary. NBT file issues trip people up constantly. If your NBT doesn't generate, check that the file path in your template pool JSON exactly matches the actual file location (including namespace). A typo like `structuretutorial:house` when you meant `structuretutorial:json_only_house` will silently fail to generate. One more: forgetting that you need to reload the world after modifying JSON files. Minecraft caches worldgen data. Use `/reload` in commands, or restart the server. Otherwise you'll spend an hour debugging a JSON syntax error that you already fixed ten minutes ago. Next Steps After You've Learned Once you understand the tutorial structures, branch out. Create your own NBT files using structure blocks in vanilla Minecraft. Add them to the template pools. Make a processor list to randomize materials. Test it in a new world. If you're building a real mod, you'll likely want more complex placement rules. Dig into the Java code for custom structure placements. The tutorial mod's examples are readable enough to adapt. And if you're stuck, the Minecraft modding community on Discord or specialized forums exists exactly for this. The tutorial mod's GitHub also has issues - don't hesitate to ask questions there. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Docker-MC-Proxy: Running a Minecraft Server Network URL: https://minecraft.how/blog/post/docker-mc-proxy-minecraft-network Published: 2026-04-24 Author: ice GitHub · Minecraft community project docker-mc-proxy (itzg/docker-mc-proxy) Docker image that provides a choice of Minecraft proxies, such as BungeeCord and Velocity Star on GitHub ↗ pache-2.0 Managing multiple Minecraft servers feels like overkill until it's not. Maybe you've outgrown a single server, or you want to split players between a survival world and a creative realm without forcing everyone to choose. A proxy sits between players and your actual servers, handling the traffic and shuffling players where they need to go. Docker-mc-proxy does exactly that, and it's dead simple to set up if you know Docker basics. What This Project Does Docker-mc-proxy is a containerized image that runs a Minecraft proxy server. And it supports BungeeCord (the most common choice), Velocity (the newer, faster alternative), and Waterfall (a community fork of BungeeCord with more features). it acts as a middleman: players connect to the proxy's address, and the proxy forwards them to whichever backend server you've configured. The image comes with built-in health checks using mc-monitor, so Docker and your orchestration tools know immediately if something's wrong. You're not squinting at logs wondering if the process is still alive. It's one of the itzg suite of Docker images (320 stars on GitHub), which tells you it's not some abandoned one-off project. The maintainer keeps it updated with Java 25 support and regular bug fixes. Why You'd Actually Use This Single-server setups break down once you hit a player threshold. A 1.20 world with 50 players crawling around starts lagging. You could bunker down and optimize the heck out of your server config, sure. Or you could split: survival on one server, minigames on another, and let the proxy handle routing. Players don't even notice the seam. There's also redundancy. If your main server crashes, you can spin up a backup instance and the proxy still works. You're not telling 100 players "the server's dead, see you later." Hosting providers love Docker deployments because they're predictable and resource-efficient. If you're running this on shared infrastructure or a VPS, containerization means you're not accidentally hogging RAM that breaks someone else's app. Installation and Basic Setup The simplest way to start is with Docker Compose. Here's a working example: yamlservices: mc: image: itzg/minecraft-server environment: EULA: "TRUE" ONLINE_MODE: "FALSE" volumes: - mc-data:/data proxy: image: itzg/mc-proxy environment: TYPE: BUNGEECORD CFG_MOTD: "Powered by Docker" ports: - "25565:25577" volumes: -./config.yml:/config/config.yml - proxy-data:/server volumes: mc-data: proxy-data: The critical bit: `ONLINE_MODE=FALSE` on the backend server. Proxies need this because they're handling authentication, not the individual servers. Without it, players get kicked with a "not authenticated" error. The proxy maps port 25565 (the standard Minecraft port) to its internal 25577. Players connect to your server IP on 25565, and the proxy does the rest. If you want to customize the server MOTD (that description players see in their server list), use the `CFG_MOTD` environment variable, or better yet, grab our Minecraft MOTD Creator to design it visually and paste it in. You can even use color codes. Now you need to configure where traffic goes. Create a `config.yml` file that tells the proxy which backend servers exist: yamlservers: survival: address: mc:25565 restricted: false creative: address: creative-server:25565 restricted: false listeners: - query_port: 25577 motd: "My Minecraft Network" tab_list: GLOBAL_PING default_server: survival Players land on survival by default. They can hop between worlds using in-game commands. Key Features That Actually Matter Built-in health checks are legitimately impressive. Docker can see whether the proxy is responsive without you writing custom scripts. Run `docker ps` and you'll see a `(healthy)` status instead of just `(up)`. This matters if you're running Kubernetes or any orchestration platform where dead containers get replaced automatically. Memory management is more flexible than you'd expect. The default is 512m, but you can tune it or let the JVM auto-size based on your container memory limit. If you're squeezing this onto a tiny VPS, there's a lot of knobs you can turn. Support for custom proxy JAR files means you're not locked into the three bundled options. Set `TYPE=CUSTOM`, point `BUNGEE_JAR_URL` to wherever your JAR lives, and you're done. Some communities run forks with custom features; this accounts for that. The image syncs configuration from `/config` on startup. If you're updating your proxy config via Docker volumes (which you should be), it picks up changes without needing to rebuild the image. Respects your config over anything bundled. Gotchas and Common Mistakes The biggest one: forgetting `ONLINE_MODE=FALSE` on backend servers. You'll see "not authenticated" errors and think something's broken when really you've just missed one flag. Port forwarding confusion comes up too. The container internally uses 25577, but you can map it to whatever external port you want. If you do `ports: "25565:25577"`, players connect to 25565, not 25577. Don't accidentally open 25577 on your firewall and wonder why nobody can join. Some people spin up multiple backend servers but don't realize the proxy needs to reach them over the network. If your servers are in separate containers, use service names (like `mc:25565` in compose) rather than localhost. Docker's internal DNS handles routing. Actually, there's another thing I keep forgetting: if you're upgrading the proxy JAR version, set `BUNGEE_JAR_REVISION` to a new number to force a re-download. Otherwise it'll cache the old version and you'll wonder why your fixes didn't apply. When Proxies Aren't the Answer If you've got under 30 concurrent players and no performance issues, a proxy is extra complexity you don't need. Paper and Purpur can handle decent player counts with solid optimization. Proxies also add latency. It's usually negligible on a LAN or modern internet, but in extreme cases (very old hardware, wonky networking), you might notice tick delays. Velocity is better about this than BungeeCord, but it's worth benchmarking for your setup. If you're running a competitive PvP server where every millisecond matters, you'll want to test whether the proxy's overhead is acceptable. Most players won't notice. Hardcore PvPers will. Alternatives Worth Considering Geyser (also itzg-maintained) is a different beast entirely - it translates Bedrock connections to Java Edition, not load-balancing. Not a replacement, but sometimes people confuse them. Traefik or Nginx can technically reverse-proxy Minecraft if you're running everything on Kubernetes and want unified ingress, but they're overkill. Velocity is simpler and faster for this specific use case. If you want something even lighter, there are single-purpose proxy projects floating around on GitHub, but they're usually less maintained and miss the operational niceties (health checks, easy config reloads) that make docker-mc-proxy reliable for production. Actually Running This in Production Docker makes this part smooth. Set resource limits, use restart policies, and let Docker handle failures. A typical setup reserves 512m-1g for the proxy itself unless you're routing hundreds of concurrent players. Log aggregation is your friend. The proxy outputs a lot of useful diagnostics. If you're running on a host with multiple services, feed those logs somewhere central (syslog, ELK, CloudWatch, whatever) so you can actually debug issues when they surface. For the MOTD, if you're rotating seasonal messages or want something dynamic, you can use environment variable substitution. Set `REPLACE_ENV_VARIABLES=true` and reference `${SOME_VAR}` in your config file. Also worth noting: if you need a custom server icon, the image can download and convert one automatically. Set the `ICON` environment variable to a URL and it'll handle the 64x64 PNG conversion for you. If you already have an icon in `/server`, use `OVERRIDE_ICON=true` to replace it. You can use our Minecraft Block Search to find specific block IDs if you're building block-art server icons in creative mode first (yes, people do this).itzg/docker-mc-proxy - Apache-2.0, ★320 Ready to try docker-mc-proxy? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit itzg/docker-mc-proxy on GitHub ↗ --- ### Running Multiple Island Games on One Server With BentoBox URL: https://minecraft.how/blog/post/bentobox-minecraft-island-games-setup Published: 2026-04-24 Author: ice GitHub · Minecraft community project BentoBox (BentoBoxWorld/BentoBox) Expandable Minecraft server plugin for island-type games like SkyBlock or AcidIsland. Star on GitHub ↗ .0 You want to run SkyBlock and OneBlock on your server, but installing two separate plugins feels wasteful. BentoBox solves that: it's a single, lightweight platform for island-type games that lets you mix and match game modes, share player data across them, and skip the resource overhead of duplicate systems. What BentoBox Actually Does BentoBox is a Java plugin for Paper servers that acts as the skeleton for island-based survival games. Think of it like this: instead of each game mode being a complete, standalone plugin with its own player databases and features, BentoBox provides the core infrastructure once. Game modes just plug in as addons. Out of the box, you get islands (the fundamental unit), player management, challenges, levels, leaderboards, and warping systems. Then you choose which game modes you want - SkyBlock, OneBlock, AcidIsland, CaveBlock, SkyGrid, and several others. You can run them all on the same server simultaneously, sharing player progress and the underlying systems. It's actively maintained and works with Paper 1.21.5 through 1.21.12, which means you're not stuck on an old Minecraft version. The project has 394 stars on GitHub and powers over 1,100 servers globally, so there's a real community behind it. Why Server Admins Actually Switch to BentoBox Running multiple island games used to mean installing separate plugins for each mode, each with duplicate challenge systems, leaderboards, and player data. That overhead is gone. One BentoBox installation handles all of it. If you run both SkyBlock and OneBlock, players see one unified leaderboard, one set of challenges they can work through across both modes, and shared warps. It's the resource efficiency angle that sells admins - you're not bloating your server jar with redundant systems. The addon ecosystem is solid. There are 20+ community-maintained addons for things like economy integration, custom challenges, advanced island protection, teleportation, and cosmetics. It's not a walled garden; developers have built a real plugin architecture around it. And if something breaks or a new Minecraft version drops, the maintainers actually update it. I've seen too many island plugins languish on 1.19 forever. Installing BentoBox (It's Straightforward) The core setup takes maybe five minutes if you've installed plugins before. First, download the BentoBox jar and place it in your plugins folder: bashcd /path/to/server/plugins wget https://github.com/BentoBoxWorld/BentoBox/releases/download/3.14.2/BentoBox-3.14.2.jar Start the server once. BentoBox creates its config files and folder structure on first run. Shut it down again. Now grab the game mode addons you want. You can find them on Hangar or at download.bentobox.world. Let's say you want SkyBlock and OneBlock: bashcd /path/to/server/plugins/BentoBox/addons wget https://hangar.papermc.io/BentoboxWorld/BSkyBlock/versions/latest/download wget https://hangar.papermc.io/BentoboxWorld/AOneBlock/versions/latest/download Restart the server. Both game modes are now live. Players can create islands in either mode, and their progress is tracked together. Optional: if you want to set up voting rewards or manage your server's DNS, you might find our Votifier tester useful for debugging vote events, and if you're hosting your server, check out our free Minecraft DNS tool to point a domain at your server without paying for expensive hosting. Key Features That Actually Matter Unified Islands. Players can own islands in multiple game modes. An island is an island - the same team, the same members, different game rules layered on top. Switching between SkyBlock and OneBlock means switching challenges and goals, not managing entirely separate accounts. GitHub project card for BentoBoxWorld/BentoBox Challenges and Progression. BentoBox ships with a challenges system where you define objectives ("collect 64 diamonds", "reach level 10"). Players work through them, unlock rewards, and climb global leaderboards. You can customize every reward, every description, even disable specific challenges. It's flexible without being overwhelming. Addon Extensibility. The core plugin isn't bloated because all the fancy stuff lives in addons. Need economy? There's an addon for that. Custom island sizes? Addon. Want to sell cosmetics in a GUI shop? Addon. You're not forced to load features you don't need. Protection and Island Control. Players flag their islands with custom protection settings - who can build, who can trade, who can fish. You can create a peaceful PvE experience or enable PvP within islands. The system respects player intent. Teleportation and Warps. Players create /home and /island commands that teleport them, warps let admins set public destinations, and the whole thing just works without janky offset calculations. What Actually Trips People Up Configuration files matter. BentoBox generates YAML configs for each game mode. If you tweak island size, max players per island, or protection defaults, actually understand what you're changing - wrong settings can lock players out of features or break progression. Locale files got upgraded recently (version 3.14.2 auto-renames underscored locales like pt_BR.yml to the modern pt-BR.yml format), so if you're upgrading from 3.13.x, check your logs to confirm the migration happened cleanly. Dependencies matter. BentoBox requires Java 21+. If you're running Java 17 somewhere, you'll hit immediate errors. Check your server's Java version first. Actually, if you're running multiple game modes, database performance becomes visible. BentoBox uses SQLite by default, which is fine for small servers (under 100 players), but if you're growing, migrate to MySQL early. The config supports it. How BentoBox Stacks Up Against Alternatives AcidIsland (standalone). There's an AcidIsland addon for BentoBox, but AcidIsland also exists as its own complete plugin. If you only want one game mode, the standalone is simpler. But if you're mixing modes, BentoBox's unified approach wins. Skyblock (proprietary variants). Some hosts and server managers ship their own SkyBlock implementations. They're often outdated, sometimes unsupported, and you're locked into whatever features they decided to include. BentoBox is open source, actively maintained, and you can fork or contribute. Custom implementations. Building your own island system is possible but genuinely foolish unless you have specific needs BentoBox can't meet. You're redoing things like island protection, player tracking, and database integrity that BentoBox already solved. The Real Takeaway BentoBox isn't revolutionary - it's just the right tool for its job. You want to run island games on a Paper server without reinventing the wheel. It works, it's maintained, and the community is active. Is it perfect? No. Customization requires editing YAML configs, and some complex scenarios might need addon development. But for the majority of servers running SkyBlock, OneBlock, or similar modes, BentoBox eliminates the friction of managing multiple separate plugins. If you're already running one island game mode and thinking about adding another, this plugin saves you weeks of plugin hunting and testing.BentoBoxWorld/BentoBox - EPL-2.0, ★394 Ready to try BentoBox? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit BentoBoxWorld/BentoBox on GitHub ↗ --- ### MineDown: Markdown Chat Formatting for Minecraft Servers URL: https://minecraft.how/blog/post/minedown-minecraft-chat-formatting Published: 2026-04-23 Author: ice Phoenix616/MineDown A MarkDown inspired markup library for Minecraft chat components If you've ever tried to format a Minecraft server message and hit the wall of legacy color codes and broken component syntax, you know the pain. MineDown solves that by letting you write formatted chat messages using markdown-inspired syntax instead of wrestling with JSON or color code strings. It's built on top of Kyori Adventure, the same chat API that powers Paper, Velocity, and modern Minecraft server infrastructure. What MineDown Actually Does MineDown is a Java library that bridges the gap between simple text and complex interactive Minecraft chat components. Instead of manually building component objects or memorizing hex color codes, you write readable markup that gets compiled into proper component messages. Colors, formatting, click events, hover text, gradients, even rainbows - it's all available through a single, consistent syntax. The core appeal here's simplicity. You can write something like &gold&[Click me](/command to run) and MineDown understands: apply gold color, make it clickable, add a command. No JSON parsing, no builder chains, no headaches. It's particularly useful if you're building a server with lots of dynamic text - quest systems, chat announcements, admin commands with formatted output. Any place where you'd normally have to choose between "keep it simple and ugly" or "make it pretty and spend hours on code," MineDown lets you pick both. Why You'd Actually Want This Server developers reach for MineDown for three main reasons: speed, readability, and power. Building a message with MineDown takes seconds. Building the same thing with raw Adventure components takes minutes. Consider a notification system. You want different colors for different alert types, maybe some bold text, possibly a hover tooltip. With MineDown, that's one string. Without it, you're chaining component builders and dealing with color constants. It also handles placeholders - both string-based replacements and full component replacements. So if you want to interpolate a player's name or swap out a ranked title with the correct color, MineDown makes that straightforward instead of building complex replacement logic yourself. And if you're migrating from an older server that used legacy color codes? MineDown still supports those, so you don't have to rewrite every message in your codebase. Installation and Basic Setup MineDown requires Kyori Adventure 4.25 or newer, and you need an Adventure platform library for your server type. If you're on Paper, Velocity, or other modern servers with native Adventure support, you're already set. Otherwise, grab the appropriate platform library from KyoriPowered's adventure-platform repository. Add MineDown to your project via Maven or Gradle. In Maven's pom.xml: xml de.themoep minedown-adventure [current version] For Gradle, add it to your dependencies block. Once you've got the dependency, you can start using it immediately in your plugin or server code. The basic pattern is straightforward: create a MineDown parser, pass it your markup string, get back a formatted component. The library handles all the parsing and component building behind the scenes. Formatting Options and Practical Examples MineDown supports a surprisingly wide range of formatting. Colors work through both legacy codes and named colors - &gold& for the gold color, or ff00ff& for hex colors if you want specific RGB values. Need a gradient? ff0000-#0000ff& creates a smooth fade from red to blue. And &rainbow& does exactly what it sounds like. Text formatting includes bold with **text**, italic with ##text##, underline with __text__, strikethrough with ~~text~~, and obfuscated text with ??text??. These work alongside colors, so you can have bold gold text that fades to rainbow. Interactive elements use familiar markdown link syntax. A simple link looks like [Click here](https://example.com). For commands, [Click]( /command to run) makes text execute a server command. Hover text works by adding it in parentheses after the link destination. A practical example: announcing a new quest. You might write something like &gold&**New Quest: &yellow&Dragon Slayer** &gray&[Accept](/quest accept dragonslayer) [Details](/quest info dragonslayer). That produces gold bold text with a color swap mid-message, followed by yellow interactive buttons. Without MineDown, you'd be building component objects with multiple styles and click handlers. Common Gotchas and Practical Tips The first thing that trips people up: Adventure needs to be on your classpath. If you get mysterious errors about missing classes, double-check your dependency is actually declared and downloaded. Paper includes Adventure built-in, but if you're developing a standalone library, you need to handle that yourself. Color codes use single ampersands, not double. &gold& works, &&gold&& doesn't. The library is strict about syntax, which is good for catching errors but can be annoying when you're learning. Placeholders need to be explicitly registered if you're using component-based replacements. String placeholders work automatically, but swapping out entire styled components requires setting up your replacement map first. This isn't hard, just easy to overlook. One more thing: if you're testing in the Minecraft client chat, remember that some formatting (like obfuscated text) looks weird when rendered at different scales or with certain fonts. Test in-game on actual servers when you're doing fine-tuning. Related Projects and Alternatives MineDown isn't the only library for formatted chat, but it's one of the most straightforward. If you need even more control, raw Adventure components give you absolute power at the cost of verbosity. If you want something even simpler and don't need interactivity, legacy color codes still work everywhere. There's also server infrastructure to think about beyond just chat - if you're running a public server, you might be managing DNS and networking alongside your message formatting. And if your server features player skins or cosmetics, browsing community skins for inspiration is always an option. For plugin developers specifically, the MineDownPlugin repository shows a complete working example if you want to see how to wire everything together. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### How FlowUpdater Powers Minecraft Launcher Development URL: https://minecraft.how/blog/post/flowupdater-minecraft-launcher-library Published: 2026-04-23 Author: ice GitHub · Minecraft community project FlowUpdater (FlowArg/FlowUpdater) The free and open source solution to update Minecraft. Star on GitHub ↗ .0 Building a custom Minecraft launcher? You need a reliable update system that doesn't break your players' installations. FlowUpdater is a free Java library that handles the tedious parts of Minecraft updates automatically - version management, file verification, mod loading, and integrity checking. It's what launcher developers reach for when they don't want to waste months building their own update pipeline. What FlowUpdater Actually Does Think of FlowUpdater as a bridge between your launcher and Minecraft's installation files. Instead of manually downloading versions, checking file hashes, and organizing mods, you feed it a configuration and it handles the rest. It checks which files you already have, downloads what's missing, verifies everything arrived correctly, and stages it for launch. The library adapts to what you throw at it. Your launcher might need vanilla Minecraft, or vanilla plus Forge, or a completely custom modpack from CurseForge. The project focuses on reliability and customization - those are the two words the maintainers emphasize. It's not trying to be an all-in-one solution with a fancy UI. It's a library. You integrate it into your own launcher and control how it works. Why You'd Build with FlowUpdater Most developers who use FlowUpdater fall into a few categories. First are the custom launcher builders - people making a branded client for their community or modpack. Instead of writing update logic from scratch, they pull in FlowUpdater and focus on their UI and features. Second are modpack creators distributing through CurseForge or their own servers, where FlowUpdater handles the messy parts of mod resolution and downloading. Server administrators working on player auto-update systems represent a third use case. You could embed FlowUpdater so that players automatically sync mods and configs the moment they log in. What separates FlowUpdater from just downloading files manually? Safety and speed. File corruption happens - network hiccups, partial downloads, disk errors. FlowUpdater verifies every file with checksums, so your players never accidentally run a broken installation. It also skips files it already has, so updates only download deltas. For someone with a slower connection updating a large modpack, that's the difference between five minutes and waiting an hour. Setting Up FlowUpdater in Your Project FlowUpdater is distributed through Maven Central. Add the dependency. In Gradle: javadependencies { implementation 'fr.flowarg:flowupdater:1.9.4' } Or Maven: xml fr.flowarg flowupdater 1.9.4 Next, build your configuration. At minimum you need a Minecraft version - whatever version your players need. Create that version object and pass it to FlowUpdater. Here's the critical part: run the update on a separate thread. FlowUpdater blocks until it's done downloading and organizing everything. If you don't thread it, your launcher UI freezes and users think the app crashed. One important note on CurseForge integration - the library includes built-in support, but it uses an API key belonging to the FlowUpdater maintainer. If you're forking the project or building something you'll distribute widely, you need your own CurseForge API key. Read the GPL-3.0 license carefully on that point. The Features That Matter FlowUpdater isn't pretending to be something it's not. It does a few things and does them well. GitHub project card for FlowArg/FlowUpdater Version management is straightforward. You specify a Minecraft version and FlowUpdater knows where to get it, what Java libraries it needs, and which assets (sounds, textures, models) go with it. For custom versions, you can pass in your own JSON configuration. Mod loader support covers the major ones. Forge, NeoForge, Fabric - FlowUpdater knows how to download and install each loader, and it understands version compatibility chains. CurseForge integration genuinely saves time if you're distributing modpacks. Instead of hosting your own mod files, you reference CurseForge project IDs and file IDs, and FlowUpdater pulls them automatically. Modpack creators save bandwidth costs and hours on file management. Custom mods and files work alongside everything else. If you have your own hosted mod or config file, pass a list with URLs, file sizes, and SHA-1 hashes. FlowUpdater treats them identically - download if missing, verify if present. Progress callbacks let you show users what's actually happening. You get total files to download, current progress, file names - data your UI can use for a proper progress bar instead of "please wait". Common Pitfalls and How to Avoid Them Threading is the first gotcha. I mentioned this above, but it's worth repeating because people skip it. Second: don't hardcode API keys in your source code. If you distribute your launcher's code on GitHub, anyone can steal that key and hit CurseForge's rate limits using your quota. Third is version string formatting. Minecraft version IDs follow specific patterns. Standard release versions and snapshot identifiers work, but random strings don't. If you're accepting user input for versions, validate it against a whitelist of known versions. Last one: file hashes matter. When you're adding custom mods to your list, calculate SHA-1 hashes correctly. A typo means FlowUpdater will think the file is corrupt and re-download it every time. When to Use Alternatives FlowUpdater is a library, not a launcher. If you want a finished launcher you can download and run immediately, look elsewhere - MultiMC, PrLauncher, and similar existing launchers handle that. FlowUpdater is for developers building their own. If you're coding in a language other than Java, you'll need a different solution. If your project is just two or three fixed mods and you're willing to host files yourself, building a simple download script might be overkill. But once you need versioning, auto-updates, and player-facing installations, FlowUpdater earns its place. For Minecraft server administrators, there's a middle ground. You could use FlowUpdater to build a small updater tool your players run before joining. One useful addition to your launcher: integrate with the minecraft.how whitelist creator so players can manage server whitelists easily. And if you're running your own server, the free DNS tool helps point custom domains to your servers. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Amethyst: Native C++ Modding for Minecraft Bedrock URL: https://minecraft.how/blog/post/amethyst-minecraft-bedrock-cpp-modding Published: 2026-04-23 Author: ice GitHub · Minecraft community project Amethyst (FrederoxDev/Amethyst) Native c++ modding for MCBE 1.21.0.3 for building client side mods Star on GitHub ↗ pache-2.0 Want to build client-side mods for Minecraft Bedrock Edition using native C++? Amethyst gives you direct access to MCBE's internals, but it's definitely not for everyone. You'll need solid C++ knowledge, patience with reverse engineering, and a tolerance for working at the metal where Minecraft's runtime actually lives. What Amethyst Actually Is Amethyst is a native modding framework for Minecraft Bedrock Edition built in C++. Unlike traditional Bedrock add-ons (which use JSON and behavior packs), Amethyst lets you write client-side mods that run directly against MCBE's compiled code. You're hooking into the game engine itself, which means you can do things that would be impossible through official modding APIs. The project started as a fully open-source library, but as of recent versions targeting MCBE 1.26.x, the maintainer has transitioned to a "bring your own types" model where the runtime core stays open but larger portions are closed source. The reasoning makes sense if you've spent time reverse-engineering: keeping everything public doesn't gain much adoption outside a tiny technical audience, and it limits how quickly the maintainer can iterate. If you're just getting started with modding, the project itself recommends looking at version 1.21.x, which remains fully open source and is "really the best version to mod" for people learning the ropes. Who Actually Needs This This isn't a tool for building fancy decorative add-ons or tweaking game balance. Amethyst exists for developers who: Amethyst Geode trailer in Minecraft Want to write client-side mods in C++ for Bedrock Edition Are comfortable reading decompiled bytecode and understanding game internals Need capabilities that official APIs simply don't expose Are willing to maintain their mods as Bedrock updates roll through That's a small circle. The maintainer is honest about this: the general Minecraft developer community doesn't really use it, which is part of why moving toward closed source made sense. If you're looking to casually mod Minecraft, Java Edition with Fabric or Forge is far more beginner-friendly. Bedrock modding in general is harder than Java, and Amethyst sits at the difficult end of that spectrum. Installation and Getting Started Grab the latest runtime release from the project's GitHub releases page. The current version (v2.2.1 at time of writing) is available as a downloadable zip. Extract it and you're looking at C++ headers, libraries, and build scaffolding. 3 close geodes in Minecraft You'll need: A C++ compiler and build tools (MSVC for Windows or Clang) Understanding of how to link against native libraries Knowledge of Bedrock's internal structure (or willingness to learn it by reading code) A matching version of MCBE 1.21.0.3 (or whichever version you're targeting) The project provides the runtime as the stable foundation, but beyond that you're doing actual development work. There aren't hand-holding tutorials or plugin managers here. You're writing C++, compiling DLLs, and injecting them into the game. What You Can Actually Build Native modding unlocks things that API-based add-ons can't touch. You get direct memory access to game objects, can intercept function calls at runtime, and can modify behavior at the engine level. That means custom client-side rendering, direct control over input and events, and modifications that integrate deeply with how Bedrock actually runs. Amethyst Geode Mineshaft in Minecraft But here's the catch: every update to Bedrock can break your mod. Memory offsets shift, function signatures change, and your reverse-engineered knowledge becomes obsolete. Maintaining an Amethyst mod across Bedrock versions is real work. This isn't like Fabric mods in Java, where the modding API moves at a predictable pace and gives you stability guarantees. That friction is intentional in how the maintainer talks about it. They're not trying to build a casual modding ecosystem. They're supporting people who specifically want to dig into Bedrock's native layer and are willing to pay the maintenance cost. The Open Source to Closed Source Shift Version 1.21.x stays fully open source, but 1.26.x moves to a mixed model. The core runtime remains public, but you're responsible for bringing types and abstractions above that. That maintainer's rationale is practical: reverse-engineering is useful to roughly 1% of the Minecraft community, and keeping everything open didn't create more adoption or community contribution. Closing the upper layers freed them to move faster and experiment with new approaches. AmethystGeodeAboveGround in Minecraft This is worth understanding before you invest time learning Amethyst. If you're starting fresh, you're probably targeting 1.21.x (stable, fully documented, open source). If you want latest Bedrock, you're working with 1.26.x and building more of the abstraction yourself. There's a broader thought lurking here: the maintainer has considered building a JavaScript layer for client-side modding instead, which would be far more accessible. That's not happening soon, but it hints at where Bedrock modding might go if someone wanted to democratize it beyond C++ developers. Context for Bedrock Modders If you're already deep in Bedrock modding through behavior packs or official APIs, Amethyst represents a different path entirely. You're not adding features within the game's scripting sandbox. You're reaching underneath it. The power is real, but so is the responsibility and the learning curve. 2 spawners, geode and mineshaft in Minecraft The project currently sits at 531 stars on GitHub, which reflects its positioning as a specialized tool for a niche audience. It's not trying to be Fabric. It's trying to be exactly what it is: a framework for people who want native control over Bedrock Edition and know what they're signing up for. If you're running a Minecraft server and want to explore free DNS management for your domain, minecraft.how's free Minecraft DNS tool is worth checking out. And if you're building custom Bedrock content, our Minecraft Skin Creator lets you design player skins right in the browser. Neither replaces native modding, but they're useful in adjacent workflows. Is It Worth Learning? Only if you specifically need native modding for Bedrock. If you want to build mods quickly, Java Edition has a healthier ecosystem. If you want to mod Bedrock but don't need C++, explore official add-ons and behavior packs first. But if you're a C++ developer curious about game internals, or if you've got a specific Bedrock mod idea that *requires* native access, Amethyst is the serious tool for the job. The 1.21.x version being fully open source makes it a good learning entry point. You can see how the runtime hooks into MCBE without dealing with closed-source layers yet. Just go in with realistic expectations. This is advanced development. The maintainer isn't hiding that. It's why they're moving toward closed source and focusing on people who actually understand what they're doing.FrederoxDev/Amethyst - Apache-2.0, ★531 Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Sandstone: Building Better Minecraft Datapacks with TypeScript URL: https://minecraft.how/blog/post/sandstone-minecraft-datapacks-framework Published: 2026-04-23 Author: ice sandstone-mc/sandstone Sandstone | Next Generation Framework for Minecraft If you've ever tried to hand-write a complex Minecraft datapack, you know the pain: memorizing command syntax, organizing dozens of function files, fixing typos in `/execute` chains, and wishing your editor could just tell you what comes next. Sandstone is a TypeScript framework that fixes all of this by letting you write datapacks and resource packs in actual code, with IDE autocompletion and proper language features. What Sandstone Actually Is Sandstone isn't a visual editor or a GUI tool. It's a TypeScript library that compiles down to vanilla Minecraft files. You write your datapacks in TypeScript, get full IDE support (autocomplete for commands, type checking for arguments), and it generates the exact JSON and mcfunction files Minecraft expects. The output is completely vanilla-compatible. Whether you're building a small adventure map or a massive server plugin, Sandstone generates optimized, clean Minecraft files you can drop into any world. The project currently has 219 stars on GitHub and is MIT licensed, with active development and a Discord community backing it up. The latest release focused on fixing flow control statements to work more reliably with commands like `/teleport`. Why You'd Actually Use This Here's the honest pitch: Sandstone is for anyone who's tired of the vanilla datapack workflow. If you've built a custom Minecraft server or complex map, you know that even small changes to command logic mean hunting through nested JSON files. Sandstone changes that completely. A4 Omicron Let's say you're building a dungeon with complex mob behavior. In vanilla, you'd write function files spread across multiple directories, debug them by reading command output in logs, and curse under your breath when you realize `/execute` needs five more subcommands. In Sandstone, you write it like normal code. You get IDE hints. Anyone can refactor safely. Anyone can actually test your logic before deploying it to your world. And here's something genuinely useful: Sandstone lets you organize functions however you want. Vanilla forces one function per file. Sandstone doesn't care. You can dump related functions in a single file, or keep the traditional structure. It adapts to how you want to work, not the other way around. If you're sharing code (custom systems, raycasting libraries, spell mechanics, whatever), the NPM ecosystem means you can package your functions and let other creators drop them into their projects. Stop reinventing raycasting every time you start a new datapack. Getting Started: Installation and Setup You'll need Node.js installed (version 16 or newer). Then it's straightforward: A4 Omicron bashnpm install sandstone@beta Create a simple datapack project and write your first function. The project's Getting Started guide at sandstone.dev walks you through it, but the basic workflow is: write TypeScript, run the compiler, and grab your generated files from the output directory. The `@beta` tag means the framework is still in active development. That's not necessarily a red flag (beta software can be perfectly stable), but it's worth knowing you're not on a final 1.0 yet. The maintainers are responsive to bug reports. Key Features That Matter IDE Autocompletion is the real MVP here. Start typing a command and Sandstone tells you exactly what arguments come next. You don't memorize `/execute at @s run command...` anymore. Your editor shows you: `at -> at (entity) or at (block) or...`. Same deal for predicates, loot tables, and advancements. This alone saves hours on larger projects. The model in Minecraft The built-in abstractions are surprisingly thoughtful. Native if/else statements compile down to the right `execute if/unless` chains automatically. Loops, boolean logic (`and`, `or`, `not`), even a sleep statement that waits before running the next command. These aren't magic (you can see the generated commands), but they're optimized better than most hand-written code because the library researches what's fastest for each scenario. Control flow matters. In vanilla, writing a proper if/else chain across multiple functions is tedious and error-prone. Sandstone handles the command flow for you: typescriptif(player.has_item) { player.give_reward() } else { player.send_message('You need the item first') } That compiles to optimized execute chains. The library switches between different command structures depending on complexity to keep performance solid. And the NPM ecosystem means you're not starting from scratch. Popular functions and libraries (raycasting, vector math, advanced `/tellraw` wrappers) are already packaged up. Install, import, done. It's a small but growing ecosystem. What Trips People Up TypeScript adds a learning curve if you've only done vanilla datapacks before. You'll need to learn basic TypeScript syntax. If JavaScript-style syntax feels foreign, there's a ramp-up period. Nothing impossible, but it's not zero friction. Model comparison, unfixated Since this is a compiler, you need a build step. Write code, run the compiler, check the output. That's extra compared to directly editing function files. Some people prefer the immediacy of vanilla editing (though actually, testing complex datapacks usually involves reloading anyway, so the mental overhead is similar). Also, the project is in beta. And that means you might hit edge cases or breaking changes between versions. The maintainers fix things responsibly, but it's not a stable 1.0 yet. For personal projects or experiments, that's fine. For critical server infrastructure, you might want to wait a bit longer or pin your version carefully. Alternatives: Other Datapack Frameworks If Sandstone doesn't feel right, there are other approaches. Some people use Minecraft Command Language (MCL) for a more minimal syntax. Others stick with vanilla and use VS Code extensions for command validation. And some builders just prefer the raw JSON workflow (which honestly, props to you for the patience). Model comparison, unfixated But Sandstone's combination of TypeScript syntax, IDE support, and an actual NPM ecosystem puts it ahead for serious datapack work. You get a real programming language, not a Domain Specific Language bolted on top of Minecraft commands. For map builders working at scale, especially those sharing code or maintaining large projects over time, Sandstone is genuinely worth the time investment. For one-off mechanics or small adventure maps, you might not need it. But if you've ever wished your datapack development felt less like archaeology and more like actual programming, Sandstone solves that problem.sandstone-mc/sandstone - MIT, ★219 Ready to try sandstone? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit sandstone-mc/sandstone on GitHub ↗ --- ### AnarchyExploitFixes: Protecting Your Minecraft Server From Packet Exploits URL: https://minecraft.how/blog/post/anarchyexploitfixes-protect-minecraft-server Published: 2026-04-23 Author: ice GitHub · Minecraft community project AnarchyExploitFixes (xGinko/AnarchyExploitFixes) Fix exploits on anarchy Minecraft servers Star on GitHub ↗ .0 Running a truly lawless Minecraft anarchy server sounds fun until someone crashes the entire world with a crafted packet, duplicates infinite resources, or spawns 10,000 mobs to lag you offline. AnarchyExploitFixes is a Paper plugin that blocks the most common ways players wreck anarchy servers, so you can actually keep the chaos contained. What This Plugin Actually Does AnarchyExploitFixes stops packet-based attacks and hacked item exploits that plague anarchy servers. Instead of preventing every action (like vanilla anti-cheat), it specifically targets the vectors that cause server crashes, infinite duplication, and game-breaking mechanics. Written in Java with over 400 stars on GitHub, it's become standard protection on servers ranging from tiny test realms to high-traffic anarchies. The plugin works by intercepting malformed packets before they reach the server's core systems. Players can still perform legitimate actions, but the ones that bypass normal game rules get blocked. Think of it as a bouncer that knows exactly which sketches are actually harmful. Why Anarchy Servers Get Destroyed Without It In a typical survival server, you're protected by permission systems and moderators. Anarchy servers intentionally remove that - no moderators, no rules, everyone plays raw. That freedom is the whole appeal. But it also means someone can craft a packet that dupes diamonds infinitely, crashes the server entirely, or locks up chunks so nobody can build there. Without exploit protection, anarchy servers tend to last about three weeks before they become unplayable. With it? Some of the servers listed in AnarchyExploitFixes' directory (like constantiam.net) have been running for years. You're not making anarchy less anarchic - you're just removing the specific methods that trivialize survival. And that matters if you want pvp, building, and resource competition to actually mean something. Installation: What You Actually Need First, the boring requirements: your server needs to be running Paper (a Minecraft server fork), and you'll need the PacketEvents library installed separately. PacketEvents is a dependency - AnarchyExploitFixes can't run without it, so grab that first from the PacketEvents GitHub repository. Once you've both.jar files: Place both PacketEvents.jar and AnarchyExploitFixes.jar into your server's plugins/ folder Restart the server Edit the config file that appears in plugins/AnarchyExploitFixes/ Restart again to apply your settings Downloads are available from Modrinth or the GitHub releases page. The plugin maintains separate builds for modern servers (1.20.6+) and legacy versions (1.12.2-1.19.4), so grab the version that matches your server. bashcd /path/to/server/plugins wget https://modrinth.com/plugin/anarchyexploitfixes/version/2.7.12-Modern # Modern servers cd.../stop.sh java -Xmx30G -Xms30G -jar paper.jar nogui # restart After the first start, check the logs. If you see errors about PacketEvents not being found, you haven't installed the dependency correctly. What It Actually Protects Against The plugin blocks several categories of exploits, and the latest version (2.7.12) added some new ones. Here's what actually matters: Packet-based crashes: Certain packet sequences cause server hangs or instant shutdowns. AnarchyExploitFixes catches these before they propagate. NBT (Named Binary Tag) exploits: Items with impossible data - infinite enchantments, negative damage values, ridiculous lore size - get filtered out. This prevents duping and certain crash vectors. Bundle exploits: A recent addition that stops clients from crashing servers using the bundle mechanic. Illegal DataComponent items: Minecraft 1.20+ uses DataComponents instead of NBT for some data. The plugin checks those too. Chat spam and ping flooding: Basic denial-of-service attempts through chat or ping packets. One thing to know upfront: this doesn't catch everything. The README mentions that some exploits are already handled by other plugins like LPX AntiPacketExploit or Panilla. You might want to run multiple anti-exploit tools if you're paranoid (and if you're running an anarchy server at scale, you probably should be). Configuration and What You'll Probably Change The config file is extensive. Most servers leave most options at defaults, but a few tweaks matter. GitHub project card for xGinko/AnarchyExploitFixes By default, AnarchyExploitFixes logs every blocked exploit attempt. On a high-player server, that's thousands of log lines per hour and can slow down your logs. Consider disabling debug output unless you're actively investigating something. You can disable specific modules if they cause issues with custom plugins or legitimate playstyles you want to support. For example, if your players legitimately use special enchantment systems, you might soften NBT filtering. But be careful - every rule you disable is a potential attack vector. The "first join messages" setting got its own toggle in version 2.7.12, which is nice if you prefer not to spam new players with anti-exploit notifications. Gotchas and What Trips People Up One of the biggest mistakes: forgetting that PacketEvents needs to be installed as a separate plugin. You'll place the jar in plugins/, restart, and see error messages about PacketEvents being missing. It's not the plugin's fault - you just skipped a step. Performance-wise, AnarchyExploitFixes is designed to be lightweight, but on a server with hundreds of concurrent players, every packet inspection has overhead. The changelog for 2.7.12 mentions performance improvements across various modules, so if you're on an older version, update. A latest release also dropped NBT-API shading (previously the plugin bundled its own copy), which cuts load times and reduces conflicts with other plugins. If you're running an old Paper version (pre-1.20), compatibility can get weird. Stick to the Legacy build if you're on 1.19.4 or below. How It Compares to Alternatives LPX AntiPacketExploit is more focused and catches a narrower set of exploits, making it faster but less full. Panilla specializes in hacked items specifically. Most anarchy servers with serious uptimes use at least one of these alongside AnarchyExploitFixes because they catch different things. There's no "one plugin does it all" approach to anarchy security. AnarchyExploitFixes stands out for being actively maintained (the 2.7.12 release supports Minecraft through 1.21.8), highly configurable, and open-source so you can see exactly what it's doing. Tools Worth Pairing With This If you're setting up an anarchy server, you'll also want to monitor your server's health. Use our Minecraft Server Status Checker to verify players can actually connect when you think they can, especially after applying security updates. It's a quick sanity check that saves you from silent connectivity issues. And if you're documenting your server (custom rules, whitelist, server message), the Minecraft MOTD Creator lets you build a server greeting that stands out in the server list without needing to touch YAML files. - 🔗 GitHub: [xGinko/AnarchyExploitFixes](https://github.com/xGinko/AnarchyExploitFixes) - GPL-3.0, ★409 Ready to try AnarchyExploitFixes? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit xGinko/AnarchyExploitFixes on GitHub ↗ --- ### SenkoSan: Adding a Unique Avatar to Your Minecraft Experience URL: https://minecraft.how/blog/post/senkosan-minecraft-avatar-guide Published: 2026-04-23 Author: ice Gakuto1112/SenkoSan "Senko-san (仙狐さん)" the avatar for Figura, the skin mod for Minecraft. Minecraft's default skins are fine, but they're static. SenkoSan is different. It's a fully animated avatar based on the anime character Senko, complete with a swaying tail, expressive ears, costume changes, and animations that react to your health and hunger. If you've been looking for a way to inject actual personality into your character, this is it. What SenkoSan Actually Is Before we go further: this isn't a simple skin mod. SenkoSan is an avatar built for Figura, which is a totally different beast. Figura lets modders create complex, animated characters with custom models, physics, and interactive features that regular skins just can't do. Think of it as upgrading from a static poster to an actual 3D character that moves and reacts. SenkoSan specifically recreates Senko, a fox spirit character from the anime "Sewayaki Kitsune no Senko-san." The avatar includes multiple character variants too (Shiro, Suzu, and Sora), all available as separate branches in the same repository. You download whichever character appeals to you. The core concept is straightforward: instead of being stuck with a 64x64 skin texture, you get a fully modeled character with fur, clothing, ears, and a tail that actually moves when you do. One tail sways as you walk. Your ears twitch. Your expressions change based on whether you're healthy or starving. It sounds excessive, but honestly? It's fun. Why You'd Actually Use This Customization. That's the short answer. Multiplayer servers where everyone's trying to stand out rely on skins, sure, but skins are fundamentally limited. You're painting details onto a rigid body model. With SenkoSan, you get an avatar that moves differently, responds to game state, and comes with about 20 different costumes built in. Your character isn't just a visual choice anymore - it's part of how you interact with the world. Roleplay communities get the most out of this. If you're part of a server where people maintain characters and stories, SenkoSan lets you actually embody someone instead of just wearing a costume. The sitting animation, various emotes triggered by arrow keys, the "action wheel" for specific poses - it all adds up to a character that feels present. There's also the pure "I want something cool" factor. Building a PC or running a Minecraft server is already a hobby. Why not customize your avatar to match that energy? And yeah, Figura avatars are a bit niche, so there's that small-community appeal of being one of the people who bothered to set this up. Installation: What You Actually Need First things first: Figura is a Fabric mod, so you need Fabric installed on your game. If you're using Forge or haven't set up Fabric before, that's a separate step. Head to fabricmc.net to grab the Fabric installer for your Minecraft version. Then you need Figura itself. The README specifies version 0.1.5, which should work with recent Java editions. Grab that from Modrinth. Once Fabric and Figura are working, download the SenkoSan avatar files (available as Senko.zip, Shiro.zip, etc. from the latest release on GitHub). Extract the contents into your Figura avatar folder, which by default lives at: bash%appdata%/.minecraft/figura/avatars/ On Linux, that path is ~/.minecraft/figura/avatars/. On Mac, ~/Library/Application Support/minecraft/figura/avatars/. Launch the game, and you should see the avatar available in your Figura menu. Load it, and you're done. The tricky part (and it catches people) is making sure Figura is actually enabled in your mod settings. Open the Figura configuration and make sure the avatar is active before joining a server. Some servers also need to have avatar rendering enabled for clients, so if you load in and don't see the custom avatar on yourself, double-check the Figura menu in-game. What Makes This Avatar Special The animations are the main event here. Senko's tail doesn't just exist - it responds to your movement, swaying naturally as you walk. You can press X to make her ears twitch and Z to make the tail wag on command. Small details, but they make the character feel alive. Health and hunger tracking is another layer. As your health bar drops, Senko's ears droop and her facial expression darkens. Starving? Her expression gets worse. And this isn't just cosmetic - it creates this weird emotional feedback loop where you actually care about staying fed because your avatar's face gets sad. The blinking is automatic too, which sounds minor until you realize it makes the whole character feel less plastic. Costumes are where the real variety comes in. About 20 different outfits are available, ranging from casual to elaborate. You can swap costumes without reloading, so you've got flexibility in how your character presents. And yes, there are sitting animations paired with some costumes - specific animations only play when you're actually sitting, which adds another layer of detail for roleplay scenarios. The action wheel system gives you access to poses for screenshots and specific animations that don't tie to movement. And because we're talking about an anime character, there are some anime-specific touches: Senko sleeps like a fox at bedtime (curled up in a tight ball), and if you're on a double bed, she'll actually sleep on the adjacent bed with you. Sleeping with darkness effect triggers a different pose. These are gimmicks, basically, but the kind that make the mod feel fully realized instead of half-finished. Weapon changes are subtle but cool. Swords become naginatas (traditional Japanese polearms), and holding both a naginata and a shield puts her in a defensive stance. Again, small detail, but it shows the creator actually thought about how the character moves in different situations. Real Limitations to Know Performance is the honest conversation. Figura avatars are heavier than skins. If you're running a potato PC or playing on a server with 50 people all using complex avatars, you'll feel the difference. Frame rates dip, especially in multiplayer. If you're already struggling to hit 60 FPS, this mod might not be for you. Server compatibility matters too. Not every server is cool with Figura avatars. Some admin teams disable them, especially on more serious survival servers or competitive ones. Your custom avatar shows up fine on your screen, but other players might not see it. Worth checking with the community before investing time in setting it up for a specific server. The mod is also still in active development. That means it can break between Minecraft updates. If the latest version of Minecraft drops and Figura isn't updated yet, you can't use avatars until Figura catches up. Version 0.1.5 is specifically noted as the target version in the README, so stick with that unless you know a newer version is stable. One gotcha: the creator notes that some animations only work on Minecraft 1.20 and newer. If you're playing on an older version, some features won't be available. And this is mentioned in the project but easy to miss if you're just downloading files. Other Figura Avatars Worth Checking Out SenkoSan is solid, but it's not the only Figura avatar out there. If anime character avatars aren't your thing, there are plenty of others: some based on game characters, some original designs. The Figura community shares avatars on GitHub, Modrinth, and Discord. If you want something simpler or less anime-focused, there are minimalist avatars, dragon avatars, and creature designs. The appeal of Figura is that the modding community has built hundreds of options. SenkoSan just happens to be one of the most polished and actively maintained. That said, if you like what SenkoSan offers - expressive animations, costume swaps, character depth - you're unlikely to find anything better in that specific niche. Most other avatars exist as passion projects with less ongoing support. The Setup Is Worth It If You're Already Modding Installing SenkoSan won't take you longer than 10 minutes if you already have Fabric and Figura running. And once it's loaded, you get this weird sense of ownership over your character that vanilla Minecraft just doesn't deliver. You're not "Steve with a custom skin." You're an actual character with animations and personality. The real question is whether Figura itself is worth the performance hit and the server-compatibility friction. For most casual players, probably not. But if you're part of a community, if you like roleplay, or if you just enjoy tweaking your Minecraft experience to be as weird and personalized as possible, SenkoSan is the kind of project that makes the effort feel justified. The 102 GitHub stars and the multiple character variants (Senko, Shiro, Suzu, Sora) suggest there's a real audience for this thing, and for good reason. Just make sure your server admins know you'll be using a custom avatar, and make sure your PC can handle it. Beyond that, you're in for a character with actual personality - something Minecraft doesn't normally give you.Gakuto1112/SenkoSan - MIT, ★102 Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### How to Add Anvil Input GUIs to Your Minecraft Server URL: https://minecraft.how/blog/post/anvilgui-minecraft-input-guide Published: 2026-04-23 Author: ice GitHub · Minecraft community project AnvilGUI (WesJD/AnvilGUI) Capture user input in Minecraft through an anvil GUI in under 20 lines of code Star on GitHub ↗ Building a Minecraft plugin that needs player input is a common problem. You could ask them via chat, but that floods the chat log. Anyone could build a custom inventory GUI, but that requires textures and extra code. Anvil screens are actually perfect for simple text input, and AnvilGUI is the library that makes them work across every Minecraft version without touching a line of NMS code. This matters because Minecraft's internals change constantly. Anvil GUIs in version 1.20 are handled completely differently than in 1.21. Most plugin devs either stick to their server version or use reflection hacks to support multiple versions. AnvilGUI does that reflection work for you. What AnvilGUI Actually Does AnvilGUI is a wrapper around Minecraft's anvil inventory designed specifically for capturing text from players. Instead of diving into net.minecraft.server (the obfuscated internals that change every patch), you write clean builder-pattern code. The library detects which version you're running and loads the right implementation at runtime. Here's what that looks like in practice. The core workflow is straightforward: player sees an anvil screen with a title and some default text. They type something, click the output slot (the rightmost one), and your code runs. You validate the input, close the screen, or ask them to try again. All with event handlers. When You'd Actually Use This Text input from players shows up everywhere in plugin development. Quest systems asking for character names. Custom nickname commands. Auction houses where sellers set prices. Shop systems with player bids. Even coordinate-conversion tools like our Nether Portal Calculator need clean input interfaces. GitHub project card for WesJD/AnvilGUI And here's the thing: anvil GUIs feel native to Minecraft. The interface is already there, players instantly understand it, and it doesn't break immersion with weird dialogs or popup menus. If you were building something like our Minecraft MOTD Creator (which lets players design server messages), an anvil input would slot perfectly into that flow. Some plugins use chat for input, but that clogs the chat log and looks messy. Others build full custom inventory GUIs, which requires custom textures and way more code. Anvils hit the sweet spot: they're built-in, they feel vanilla, and AnvilGUI abstracts away the version compatibility nightmare. Installing AnvilGUI First, add the Maven repository. As of version 1.10.11, the repo moved to a new URL: AYIB Zuri in Minecraft xml mvn-wesjd-net https://mvn.wesjd.net/ Then add the dependency: xml net.wesjd anvilgui 1.10.12-SNAPSHOT compile The scope being compile means AnvilGUI gets bundled into your final JAR. Now for the part that trips people up: shading. AnvilGUI is a library, not a standalone plugin, so you need maven-shade-plugin to bundle it into your plugin's JAR. This prevents classpath conflicts if multiple plugins on the same server use AnvilGUI. xml org.apache.maven.plugins maven-shade-plugin 3.5.0 package shade net.wesjd.anvilgui your.plugin.package.anvilgui Replace your.plugin.package with your actual package name. This relocates AnvilGUI into your namespace so it doesn't conflict with other plugins. How the API Works Here's a complete example from the project: Anvil1 in Minecraft javanew AnvilGUI.Builder().onClose(stateSnapshot -> { stateSnapshot.getPlayer().sendMessage("You closed the inventory."); }).onClick((slot, stateSnapshot) -> { if(slot!= AnvilGUI.Slot.OUTPUT) { return Collections.emptyList(); } if(stateSnapshot.getText().equalsIgnoreCase("you")) { stateSnapshot.getPlayer().sendMessage("You've magical powers!"); return Arrays.asList(AnvilGUI.ResponseAction.close()); } else { return Arrays.asList(AnvilGUI.ResponseAction.replaceInputText("Try again")); } }).preventClose().text("What's the meaning of life?").title("Enter your answer").plugin(plugin).open(player); The builder pattern chains method calls. Title is the text above the anvil. Text is the default input (pre-filled content). OnClose fires when the player closes without submitting. OnClick fires when they click a slot in the anvil. The slot parameter tells you what they clicked. There's INPUT (left slot), OUTPUT (right slot where results show), and RESULT (the actual item they'd get if this were a real recipe). You almost always check for OUTPUT since that's the submit button. StateSnapshot contains the player and whatever text they've typed. You validate it, and return ResponseActions. ResponseAction.close() shuts the screen. ResponseAction.replaceInputText() updates the input field - useful for error messages like "that name's taken" or "try again". PreventClose() removes the escape key option, forcing players to either submit or click other slots. Use this for critical information you absolutely need from them. Plugin(plugin) is your plugin instance. It's needed for event registration and version detection under the hood. One more powerful thing: you can customize almost everything. Longer titles, read-only text, different slot behaviors based on input. The API gives you control. Common Mistakes and Gotchas The shading configuration is the biggest one. Skip maven-shade-plugin and your plugin won't even load. You'll get ClassNotFoundException at runtime, and it takes a second to realize why. Anvil2 in Minecraft Another pattern that confuses people: onClick expects a List to return. An empty list (Collections.emptyList()) is valid and just keeps the screen open. The compiler catches missing returns anyway, so this usually isn't an issue in practice. Input text in the anvil isn't colored or specially formatted. It's just text. Beyond the title and default content, there's not much visual customization available. If you need fancier visuals (custom colors, formatted text), you'd want a different approach. About version support: AnvilGUI works on recent versions. Actually, it works on older ones too via reflection-based version detection. Check the releases page if you're running something really old, but the short answer is that if your server can load the library, it works. The library doesn't handle i18n translation for you. If your server supports multiple languages, you're translating the title and text yourself before passing them to AnvilGUI. Alternatives and When to Use Them If anvil screens aren't the right fit, you've other options. Anvil3 in Minecraft Sign GUIs let players write on a sign, then you read it. Simpler in some ways, but it doesn't feel as integrated. Players see a sign instead of an anvil. Book GUIs use Minecraft's writable book interface. Great for longer text, but overkill for a single input field. It's a heavier interaction. Full custom inventory GUIs give you maximum control. Buttons, sliders, icons, colors - whatever you want. The tradeoff is more code and custom textures. If you're building something complex, it might be worth it. For simple text input, it's overkill. Chat input is always technically possible. Just ask the player to respond in chat or use a command. It works, but it spams the chat log and feels janky. Most modern plugins avoid it. Final Thoughts AnvilGUI solves a specific problem well: capturing text from players without fighting Minecraft's version-specific code. It's a Java library with MIT licensing, actively maintained, and it's got a solid 542 stars on GitHub. If you're building a plugin that needs player input and an anvil makes sense for your use case, spend ten minutes integrating this. It'll save you from version-compatibility debugging hell down the road. Anvil4 in Minecraft Support the project AnvilGUI is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### MidnightControls: Play Minecraft Java Edition With a Gamepad URL: https://minecraft.how/blog/post/midnightcontrols-minecraft-controller Published: 2026-04-23 Author: ice GitHub · Minecraft community project MidnightControls (TeamMidnightDust/MidnightControls) A Minecraft mod adding controller support and enhanced controls overall. Star on GitHub ↗ Java Edition never got the controller love that Bedrock did. MidnightControls fills that gap, letting you play Minecraft with a gamepad - Xbox, PlayStation, Switch Pro, or whatever you've got - without awkward keyboard workarounds. If you've switched to Java for modding or vanilla servers but miss console-style controls, this mod is genuinely worth your time. What MidnightControls Actually Does MidnightControls is a Fabric and Quilt mod that adds controller support to Java Minecraft, forked from the discontinued LambdaControls project. It's been under active maintenance by the Midnight Dust team since the original creator stepped back, and it shows - recent releases fixed critical issues like virtual mouse problems that broke splitscreen play. The mod doesn't just map your gamepad to keyboard keys. It integrates controllers natively, with proper analog stick handling, trigger sensitivity, button mapping, and even on-screen button indicators that match Bedrock Edition's style. You get actual console-quality input, not a bandaid. It also brings Bedrock features to Java. Touchscreen support for handheld or touch-capable setups, fly drifting so you actually move through the air while flying instead of just hovering, reach-around for placing blocks at awkward angles, and a surprisingly deep settings menu where you can tweak everything from stick deadzone to per-action sensitivity. Who This Is For Console players switching to Java Edition for modded servers or pure vanilla play are the obvious audience. Keyboard-and-mouse controls feel unnatural if you've spent years on console, and this mod makes the transition way smoother. Accessibility is another big one. Carpal tunnel, arthritis, or just physical preferences mean some players need a controller to play comfortably. Java Edition's default setup excludes them entirely - MidnightControls changes that. And honestly? Sometimes you just want to sit on the couch and relax instead of hunching over a desk. Build a world from your couch, manage your inventory with a gamepad, do combat without your wrists screaming. Installation (It's Simple) MidnightControls requires Fabric or Quilt, the two main modloaders for Java Edition. If you don't have one installed, grab the Fabric Launcher or Quilt Launcher from their official sites. Most players use something like MultiMC or Prism Launcher anyway, which makes modloader management trivial. Once your modloader is set up: Download the latest JAR from GitHub (v1.9.4 is current, supporting Minecraft 1.20.4 and 1.20) Drop it into your .minecraft/mods folder Launch the game That's it. The mod loads automatically and you'll get a settings screen on first run. Plug in your controller and you're gaming. Key Features in Action Built-in controller recognition handles most modern gamepads out of the box - Xbox, PlayStation (both DualShock and DualSense), Switch Pro, Joy-Cons, and tons of third-party hardware. If yours shows up orange in settings, it's detected but not in the default mapping. Create a custom profile and you're golden. The wiki at midnightdust.eu walks you through it if you get stuck. GitHub project card for TeamMidnightDust/MidnightControls The on-screen button indicator is borrowed straight from Bedrock Edition. A small HUD element shows which button does what, great for teaching other players or just remembering your custom bindings. Toggle it off anytime if it's distracting. Customization runs deep without being overwhelming. Stick sensitivity adjusts independently for looking vs. turning (so you're not fighting the same deadzone in both), triggers can work as buttons or analog inputs, and every single binding is remappable. Most people leave the defaults alone and it works fine. But if you're picky - and Minecraft players often are - you've got full control. Virtual mouse support got fixed in v1.9.4, which was a big deal. Before, it was bugged and made splitscreen multiplayer unplayable. Now it's stable. Worth noting if you run multiple players on one PC. Common Gotchas and Tips Controller detection is solid these days, but older or obscure hardware sometimes doesn't match any built-in profile. You'll see it flagged orange. Just add a custom mapping in settings and move on. Fly drifting feels great once you're used to it, but it catches a lot of new users off guard. Hold a direction while flying and you'll drift sideways instead of hovering in place. Disable it in settings if you find yourself flying into mountains. This is a client-side mod only, meaning you don't need server permission to use it on any server. Hop on a vanilla server, a modded server, whatever - your controller works everywhere. The reach-around feature is subtle but handy. You can interact with blocks at angles you normally couldn't reach without repositioning your character. Takes a few minutes to stop thinking about it and start using it naturally. Alternatives Worth Knowing About MidnightControls is the best-maintained controller mod for Java. InputFix exists and does similar things, but it's less actively updated. Some players use external tools like Xpadder to map controllers to keyboard keys, but it's janky and has latency compared to native support. If you're on Bedrock Edition, you don't need any of this - controller support is built in. But if you're locked to Java for modded play or specific servers, MidnightControls is the obvious choice. The 207 stars on GitHub and active release cycle show it's got real community support behind it. Worth Setting Up If keyboard-and-mouse controls have been holding you back from Java Edition, or if you've got a controller collecting dust, MidnightControls removes that friction. It's stable, it's actively maintained, and it genuinely makes the game feel more console-like in the best way. And once you've got your controls dialed in, there's a whole world of servers and community builds waiting. Grab a skin from the Minecraft skin browser or jump into a community by checking out the Minecraft server list. Controller support opens up a different way to play, and plenty of other players are already doing it. Ready to try MidnightControls? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit TeamMidnightDust/MidnightControls on GitHub ↗ --- ### How BetonQuest Transforms Your Minecraft Server URL: https://minecraft.how/blog/post/betonquest-minecraft-quests Published: 2026-04-23 Author: ice GitHub · Minecraft community project BetonQuest (BetonQuest/BetonQuest) An advanced and powerful quest scripting plugin for Minecraft. Features built-in RPG style conversations and integration for over 40+ other plugins. Star on GitHub ↗ .0 If you've ever wanted to build a custom story into your Minecraft server - quests with branching dialogue, NPCs who actually react to your choices, or a progression system that keeps players engaged - you've probably hit the limitations of vanilla servers. BetonQuest solves this by giving you a quest scripting system that's flexible enough to build almost anything. What This Project Does BetonQuest is a quest scripting plugin for Spigot/Bukkit servers (those are the most common Minecraft server software, if you haven't set one up before). It lets you build custom quests - think storylines, objectives, rewards, and all the glue that holds them together - without touching code. Instead, you write simple YAML configuration files that describe what happens when players interact with the world. What does that actually look like in practice? You define NPCs who can have conversations, set up quest stages where players need to kill specific mobs or collect items, add conditions so certain dialogue only shows if players meet requirements, and trigger actions when objectives complete. But here's what makes it genuinely useful: it doesn't force you into a rigid system. You're not stuck with "kill 10 mobs" and "bring me 5 items" as your only options. With integration for 40+ other Minecraft plugins (think custom items, mob AI modifications, visual effects, economy systems), you can build quest logic that's as simple or as intricate as your server's needs. The latest release (v2.2.1) added better NPC pathfinding and improved chest-based quest objects, which matters if you're building quest systems that rely on inventory management or navigation. The plugin's been around since 2014 and has 314 stars on GitHub. Why You'd Use It Suppose you're running a creative survival server where you want to tell an actual story - not just "here's a world, build stuff." BetonQuest is exactly the tool for that. Custom quests are how servers differentiate themselves from vanilla survival. They give players a reason to log in multiple times a week, follow storylines, and engage with other players for group quests. I've seen servers use it to build MMO-style progression systems where players level up through quests, unlock new areas, and work toward narrative goals. That's not something you can do with vanilla Minecraft, at least not without a ton of command block nonsense. It's also useful if you're running a roleplay server where NPCs need to react differently based on player choices. Quest conversations can branch based on conditions (player level, items in inventory, other quests completed), so you can build actual dialogue trees. That's table stakes for any serious roleplay setup. Servers with economies also use it to gate access to certain areas or items through quest completion. How to Install Installing BetonQuest is straightforward if you're already running a Bukkit/Spigot server. Head to the official GitHub releases page and download the latest JAR file (v2.2.1 as of now). Drop it into your server's plugins folder, restart the server, and it'll auto-generate configuration files. Basic setup steps: bash1. Download BetonQuest.jar from GitHub releases 2. Place it in your server's plugins/ directory 3. Restart your server 4. Configuration files generate automatically in plugins/BetonQuest/ After that, you'll want to create your first quest. BetonQuest uses YAML files, which is more readable than JSON if you've never worked with configuration files before. You define conversations, objectives, events, and conditions in separate YAML files, then wire them together with references. The documentation on betonquest.org is pretty thorough, though it assumes you're comfortable with YAML syntax. Actually, let me clarify: you don't need to code, but you do need to understand YAML structure and how to nest properties correctly. If you're setting up a server and want to verify everything's working, the Minecraft.How server properties generator and votifier tester are handy tools to have nearby while you're configuring. They help ensure your server's advertised correctly and voters can reach it. Key Features and How They Work 4 things that make BetonQuest worth the effort to learn: GitHub project card for BetonQuest/BetonQuest Conversations are what most people set up first. NPCs can have dialogue that triggers conditions (does the player have a required item? completed an earlier quest?), changes appearance or behavior based on player choices, and advances quest stages. You can add sound effects, custom item requirements, and even hand-specific interactions (which was added in v2.2.1 to prevent players from accidentally triggering multiple quests on the same click). Objectives are the meat of your quests. You've got the obvious ones (kill N mobs, collect X items, reach a location) but also weirder stuff like "open a chest N times" or "perform an action with a tool." You can layer conditions on top - maybe players only complete the objective if they're holding a specific item, or only between certain hours, or only if another quest is active. It's flexible in ways that feel unnecessarily specific until you actually need it. Events trigger when objectives complete (or when conditions fire, or on a delay). Give the player an item, run a command, teleport them, apply a potion effect, trigger particle effects, play a sound, start a timer - the integration list is long. This is where the "40+ plugin integrations" comes in: you can hook into plugins like CustomModelData, Citizens (NPC framework), MythicMobs (advanced mob AI), and others. It expands what's possible without forcing you to code custom logic. Conditions gate everything. A conversation branch only shows if player level is above 10. An objective only completes if the player's in a specific region. A reward doesn't trigger unless the player's holding the right item. You build complex quest logic by combining simple conditions, and it's way more flexible than "if X happened, do Y" - it's "if X and Y and Z happened, and player has A and B, and it's currently Tuesday..." Tips and Common Gotchas Here's what trips up most people: YAML is whitespace-sensitive. That means indentation actually matters. If your quest doesn't load, it's 80% likely to be an indentation problem. This is probably the single biggest gotcha. Text editors that auto-correct indentation (some use tabs, some use spaces) will drive you crazy. Use a YAML-aware editor or validate your files. NPC pathfinding can get weird on certain terrain. If your NPCs are getting stuck or taking bizarre routes, check whether the navigation nodes are properly placed and whether the terrain has weird block configurations (half-slabs, stairs, etc.). The v2.2.1 release improved error messages here, which helps, but it's still something to test. Conversation start/end sounds need to reference actual resource pack sounds, not missing ones. This was a bug in earlier versions but got fixed in v2.2.1. If you're upgrading from an older version, double-check that your custom sounds are actually available in your resource pack. Mismatched sounds won't break your server, but the dialogue will play silently, which feels broken. The chestput objective used to block chest access entirely. That's fixed now, but if you're on an older version and wondering why nobody on your server can open chests after creating a chestput quest, that's why. Upgrade to v2.2.1 or newer. Alternatives to Consider There are other quest plugins out there, so it's worth knowing what else exists. The most direct competitor is Quests (also on Spigot), which is simpler and more beginner-friendly. If you just want "kill mobs, get reward, done," Quests is faster to set up. BetonQuest trades ease for flexibility - you get more features, but the learning curve is steeper. MythicMobs isn't strictly a quest plugin - it's for advanced mob AI. But if you're already using MythicMobs for boss fights or custom encounters, BetonQuest integrates with it, so you can build quests that interact with MythicMobs creatures. It's more of a "use both" situation than a replacement choice. For complex storyline systems, some servers use a combination of BetonQuest plus custom plugins or mod frameworks. Not essential for most servers, though. Support the project BetonQuest is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### Carbon: Build Custom Chat Systems for Minecraft Servers URL: https://minecraft.how/blog/post/carbon-chat-minecraft Published: 2026-04-23 Author: ice "Carbon is a modern chat plugin built on channels, with just about every single setting and format configurable." Hexaoxide/Carbon · github.com .0 Running a Minecraft server means dealing with chat spam, formatting nightmares, and the same boring default system every player expects. Carbon fixes that. It's a Java plugin that replaces your chat entirely with a channel-based system that you can customize however you want. What Carbon Does (and Why It Matters) Carbon is a chat plugin for Minecraft Java Edition servers that swaps out the default chat system for something way more organized. Instead of everyone shouting into one endless stream, you get channels - think Discord, but in your server. You can create channels for different purposes (trading, off-topic, announcements), set permissions, and customize how messages look. The whole thing is configurable. Colors, prefixes, formats, who talks where, everything. If the default chat was a bicycle, Carbon is a fully customizable car. It's built on a simple idea: most servers with more than a handful of active players need some way to organize conversation. Without it, new players see global spam, important messages disappear instantly, and moderators get buried. Carbon solves this without being bloated or requiring you to learn a complicated system. Who Actually Uses This (And Why) Most servers that adopt Carbon fall into a few categories: Growing communities where chat spam becomes a problem after hitting 50+ concurrent players Admins who want moderation control without hiring a dozen moderators Servers mimicking Discord to keep the in-game experience feeling familiar to players Roleplay and faction servers that need immersive chat separation Networks with multiple mini-games that need separate chat channels per game You don't need Carbon if your server has 5-10 players hanging out casually. But once you hit that point where global chat becomes overwhelming, it stops being optional pretty fast. Small survival communities often skip it. Larger hub servers can't live without it. Server networks almost always adopt something like Carbon out of necessity. Installing and Configuring Carbon First, grab the latest version from GitHub. Make sure your server runs Java Edition (26.1.2 is the current release version, though Carbon works on earlier versions too - newer is always safer). The installation process is straightforward: Download Carbon's.jar file from the GitHub releases page Drop it into your server's plugins folder Start your server (Carbon creates default configuration files on first launch) Stop the server and edit the config files to your liking Restart and test in-game Configuration files are in YAML format, which is pretty readable if you've touched any other plugin configs before. You'll set up channels, assign permissions, and define chat formats here. A basic channel setup looks something like this: yamlchannels: general: display-name: "&bGeneral" color: "BLUE" trades: display-name: "&6Trading" color: "GOLD" staff: display-name: "&c[STAFF]" color: "RED" permission: "carbon.staff" The permission line means only players with that specific permission node can access that channel. You'll use a permissions plugin (LuckPerms is the standard) to actually grant those permissions to players or groups. After editing configs, reload the plugin in-game using /carbon reload or restart the server. Test it with different player accounts to make sure permissions work as expected. This is the part that usually trips people up - it's not hard, but it requires attention to detail. Features That Actually Make a Difference Channel Switching: Players switch channels with a command. You can make it smooth with chat aliases, or keep it simple. Either way, it keeps conversations organized without forcing people into complicated menus. Format Control: Every channel can have its own message format. Staff channels look completely different from general. Trading chat can include custom prefixes showing whether someone is selling or buying. You're not locked into how messages appear - this is where Carbon shines compared to vanilla or other minimal plugins. Permissions Integration: It plays nice with standard Minecraft permission plugins. Assign a player to a group, and they automatically get access to channels their group needs. No manual fiddling per individual player. Private Channels: Create channels only specific players (or ranks) can see. Great for staff discussions, secret shops in roleplay servers, or guild-only chat on faction servers. This is genuinely useful for servers with any kind of hierarchy. Message Formatting: Control how player names appear, add team colors, include custom brackets - the flexibility here lets you match your server's aesthetic. If you're already using a fancy MOTD with the Minecraft MOTD Creator, Carbon's formatting options let you keep that same polish in-game. One thing worth mentioning: Carbon's strength is flexibility, not automation. So it won't auto-sort messages or create smart filters by itself. You're configuring a system, not turning on a black box. If you want advanced filtering or spam detection, you might need to combine Carbon with dedicated chat moderation plugins like ChatControl. Common Gotchas and How to Avoid Them Configuration Syntax Errors: YAML is picky about indentation. Two spaces, not tabs. One wrong indent and your entire config breaks silently. Use a text editor that shows spaces visually (VS Code, Notepad++, not plain Notepad). Test your configs before restarting. Permission Conflicts: If multiple plugins touch chat, they can fight. Test plugin interactions in a dev server before pushing to production. Add Carbon alone, restart, verify it works. Then add other chat-related plugins one at a time and test after each addition. Performance on Large Servers: Carbon itself is lightweight, but on servers with hundreds of concurrent players, processing every message takes CPU cycles. The more complex your formats and channels, the more work per message. This usually isn't a deal-breaker, but don't go overboard with deeply nested configurations if you're running at 200+ players. Missing Permissions: You set up a channel but players can't access it? Double-check they've the right permission node assigned. A common mistake is forgetting to reload permissions after editing configs, or assigning permissions to the wrong group. Another common issue: testing with op players. Op players bypass some permission checks. Always test with non-op players to verify permissions actually work. Why Chat Matters for Your Server's Vibe Here's something admins don't always realize: chat is the first thing players notice after spawning in. Broken chat makes a server feel amateurish. Good chat setup makes players feel like they're part of something intentional and well-managed. Carbon gives you the tools. Smart use of channels - separating general chat from trading, having a welcome channel for new players, creating roleplay-specific channels - actually changes how your community feels. Players pay attention when a server has clearly thought through how communication works. And if you're setting up organized chat channels, you might want to polish other first-impression elements too. The Minecraft Text Generator can help you craft formatted announcements that match your chat aesthetic and look professional in those new channels. Alternatives Worth Knowing About Carbon isn't the only chat plugin out there, though it's grown solid traction (173 GitHub stars, active maintenance). VentureChat is older and has a huge community - lots of tutorials online and plugin compatibility tested. It's got more features out of the box, but it's also heavier on server resources and harder to configure lightly. Pick it if you want more automation and don't mind the extra complexity. ChatControl focuses on moderation and filtering, so if you primarily want to stop spam and manage offensive language, that's its niche. It works great for that specific problem, but doesn't offer channel organization like Carbon. If you want something simpler - just colors and basic formatting without channels - vanilla Minecraft's built-in chat formatting with JSON components is actually sufficient for many small servers. For servers wanting full channel control with customization and active maintenance, Carbon stands out because it's GPL-licensed (you can inspect the code), doesn't push unnecessary features, and the configuration is straightforward once you understand the basics. Ready to try Carbon? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit Hexaoxide/Carbon on GitHub ↗ --- ### Lamp: Building Minecraft Commands Without the Boilerplate URL: https://minecraft.how/blog/post/lamp-minecraft-command-framework Published: 2026-04-23 Author: ice "A modern annotations-driven commands framework for Java and Kotlin " Revxrsal/Lamp · github.com If you've ever written a custom Minecraft server command, you know the pain. Parsing arguments, handling subcommands, validating permissions - it's repetitive, error-prone, and every plugin does it differently. Lamp cuts through that mess by letting you define commands with annotations and letting the framework handle the complexity. What Lamp Actually Is Lamp isn't a mod or a plugin. It's a command framework for Java and Kotlin developers building plugins, bots, and server tools. Think of it like a Swiss Army knife for command handling. With 335 stars on GitHub, it's built by the community for the community. The core idea is dead simple: annotate your command methods with @Command, define your parameters, and Lamp handles the rest. No parsing boilerplate. No manual validation. No arguments array spaghetti code. What makes it different from rolling your own command handler is the thoughtfulness. The project explicitly avoids the gotchas that plague other frameworks. So it uses immutable builders, strong typing, and compiler annotations to catch mistakes before runtime. Who Actually Needs This Three groups benefit from Lamp: server administrators building custom commands, plugin developers tired of writing boilerplate, and Discord bot developers who want clean command definitions. GitHub project card for Revxrsal/Lamp If you're running a Minecraft server and want custom commands for admin tasks without wrestling with argument parsing, you need a plugin developer who uses Lamp. If you're that developer, Lamp saves you hours per project. And if you're building Discord bots, Lamp's multi-platform approach means you get consistent command syntax across platforms. You don't need this if you're a casual player. This is pure developer tooling. How Multi-Platform Actually Works One of Lamp's best features is platform abstraction. A single codebase can target Bukkit, Velocity, Minestom, JDA (Discord), and other platforms using the same annotation-based command syntax. Minecraft Lamp (torch) In practice, this means if you write a command once, you can compile it for multiple platforms without rewriting the command logic. The framework handles platform-specific details like how responses are sent, who "actors" are, and how permissions map to each platform's system. This isn't perfect - some features are platform-specific - but it's a massive time saver for developers maintaining multiple server implementations or bots across different services. Features That Actually Matter Lamp handles several things that make developers' lives easier. Here's what stands out. Minecraft Lamp (torch) Parameter handling with context resolvers. Need to turn a player name into a LivingEntity? Or parse a location from three arguments? Lamp can resolve custom types automatically. You define the resolver once, and it applies everywhere that type appears in a command parameter. Optional parameters and defaults. The @Optional and @Default annotations let you skip the ugly null checks and manual defaulting. If a parameter isn't provided, Lamp fills it with the default value you specified. Flags and switches. Unix-style options like - switch and -s are built in. You can combine short flags (-spr) and mix flags throughout commands. This is genuinely nice for admin commands where you might want multiple modifiers. Multiple command variants. Need the same logical command to work with different signatures? @Command lets you define several methods with the same base command but different parameters. Lamp picks the right one based on what the user provides. Custom annotations. You can extend Lamp's behavior with your own annotations and define how they work. And this means you can add framework-aware validation specific to your server without hacking the parser. Getting Started (Actually Simple) Installation depends on your platform. For a Bukkit plugin, add Lamp to your build system and register it in your plugin's onEnable method. Minecraft Lamp (torch) gradledependencies { implementation 'io.github.revxrsal:lamp.bukkit:4.0.0-rc.16' } Then create a command class. Here's the bare minimum: java@Command("greet user") @Description("Sends a greeting") public void greet(CommandActor actor, @Default("World") String name) { actor.reply("Hello, " + name + "!"); } Register it with Lamp's command manager, and you're done. The framework handles parsing, validation, and dispatch. For Discord bots or other platforms, the process is similar but you'd use the JDA or Minestom implementations instead. The command definitions stay almost identical. Real-World Use Cases Here's where Lamp shines: actual problems it solves. Minecraft Lamp (torch) Server admins often need quick utilities like teleporting players, managing whitelist entries, or tweaking server settings. A developer using Lamp can build a clean admin command panel in a fraction of the time it'd take with manual argument parsing. Better yet, if you're checking your server status externally, you might want commands that integrate with external APIs. Lamp's context resolvers let you fetch player data from your database and inject it cleanly into commands. For large networks, you might have a Discord bot that mirrors in-game commands (like checking who's online). Lamp supports that use case directly. Write the command once, register it on multiple platforms, and they all behave identically. And if you're building something like a public server list with admin tools, custom commands for server owners to manage their listings are way cleaner with Lamp than with hand-rolled parsers. Common Pitfalls (Things That Trip People Up) Lamp reduces errors, but there are still gotchas. Minecraft Lamp (torch) First: parameter order matters. If you have optional parameters followed by required ones, Lamp won't know how to parse. The framework is designed to be fool-proof, but you still need to think about your command structure. Optional parameters should come after required ones. Second: context resolvers need to be registered before the command is registered. If you define a custom type but forget to add the resolver, you'll get a compile-time error (which is actually good). But you need to know where to add it. Third: multi-platform doesn't mean "identical everywhere." Some features are Bukkit-only or Discord-only. You'll need to understand your target platform's limitations. Lamp documents this clearly, but it's worth reading the platform-specific guides before assuming your command will work everywhere. Alternatives Worth Knowing Lamp isn't the only command framework, though it's probably the most polished for multi-platform use. Cloud is another popular option, especially for Discord bots. It's more heavyweight and has different design goals. If you're building exclusively for one platform, Cloud might be worth comparing. Some developers just write their own command parser. This works fine for small projects, but it scales badly. By the time you've added optional parameters, flags, and multi-platform support, you've basically rebuilt Lamp from scratch. For simple one-off scripts, rolling your own is fine. For anything you'll maintain for more than a few months, a framework beats reinventing the wheel. Support the project Lamp is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### The Maintenance Plugin: Keep Your Minecraft Server Polished URL: https://minecraft.how/blog/post/minecraft-server-maintenance-plugin-guide Published: 2026-04-23 Author: ice "Enable maintenance mode on your Minecraft server" kennytv/Maintenance · github.com .0 Running a Minecraft server means one thing: you'll eventually need downtime. Updates, backups, security patches, bug fixes - it all requires the server to go offline. But when you just shut everything down without warning, your players get kicked mid-session, confused about what's happening, and frustrated they can't join back immediately. That's where a maintenance plugin saves the day. Maintenance is a plugin that lets you gracefully put your server into maintenance mode. Instead of a brutal disconnect, players see a custom message explaining why the server's temporarily unavailable, when it'll be back online, and maybe a cool server icon. Some of your trusted admins and testers can still join and work while everyone else is locked out. It's the difference between looking professional and just... disappearing. What Maintenance Does for Your Server At its core, this plugin lets you toggle maintenance mode on and off. But "toggle maintenance" undersells what's actually happening under the hood. When you enable maintenance, the server stays running - you're not shutting it down. Players trying to connect see a custom message instead of a timeout error. You can completely customize that message, swap in a different server icon, set an automatic timer to re-enable the server at a specific time, and grant a whitelist of players who can still join. Think of it as a "Don't Disturb" sign for your server, except the sign is interactive and informative. It runs on multiple server types: Paper (the most popular choice for production servers), Spigot, BungeeCord for proxy setups, Sponge, and Velocity. If you're running a network of servers behind a proxy, you can even link them through Redis so one command toggles maintenance across all instances. Why You'd Actually Use This Say you're running a small survival server with 20 regular players. You've spotted a nasty bug in the economy plugin that's spawning infinite diamonds. You need to shut down, roll back the database, update the plugin, and test it. Without Maintenance, you just stop the server. Players spawn back in their homes tomorrow confused, thinking the server's dead. Some might assume it's abandoned and not come back for a week. With Maintenance enabled, they see: "Server is down for urgent bug fixes. Back online in 30 minutes." Suddenly they know what's happening and when to expect the server again. Some will even log back in after 30 minutes specifically because they know when it's coming back. Now scale that to a larger server with 100+ concurrent players during peak hours. You're applying a security patch. You need every player to disconnect cleanly so the update doesn't corrupt data. Maintenance mode lets you queue a message that gives players a 5-minute warning to log out safely, then forcibly disconnect them when the timer hits. Way less chaotic than a crash. And if you're managing a network of servers - say, a Skyblock, Survival, and Creative realm all behind BungeeCord - you can apply maintenance to just the Skyblock server without touching the others. Your players can still play Creative while Skyblock gets fixed. Getting It Running Installation is straightforward. Download the appropriate JAR for your server type (Paper, Velocity, etc.) and drop it in your plugins folder. GitHub project card for kennytv/Maintenance bashcd /path/to/server/plugins wget https://github.com/kennytv/Maintenance/releases/download/5.0.0/Maintenance-Paper-5.0.0.jar Restart your server, and the plugin generates its config file automatically. Most of the default settings are sensible - you probably want to change the maintenance message and maybe the MOTD icon. The config file is heavily commented, so you'll know what each option does. If you want to customize the message further, you might want to explore a Minecraft text generator to get formatting and colors just right before pasting it into the config. Once configured, you toggle maintenance with a simple command: `/maintenance on` or `/maintenance off`. If you're using a proxy like BungeeCord, you can apply it to specific servers: `/maintenance on survival-1` to put only your main survival server in maintenance mode. Features That Actually Matter Beyond the basics, Maintenance has a few standout features worth knowing about. Auto-timers. You can set a timer that automatically re-enables the server after a certain duration. Scheduled a 1-hour maintenance window? Set the timer and forget it - the server comes back online automatically. Helpful for when you're working late and don't want to remember to flip the switch. The whitelist. You can grant specific players access during maintenance while everyone else is locked out. Perfect for letting your core admins and builders continue working on fixes or event prep. The whitelist is separate from your normal server whitelist, so it integrates cleanly. Dynamic messages with variables. The plugin supports placeholder variables in your maintenance message. Use `%TIMER%` to show players exactly how long until the server's back. If your endtimer says the server comes back in 45 minutes, the message displays that countdown in real-time. Players see "Server coming back in 45 minutes," and they don't keep refreshing the server list wondering what's going on. Multi-language support. If your server has international players, the plugin's translated into tons of languages. The community maintains translations via Crowdin. It's a small detail, but it shows you're thinking about your non-English players. Proxy linking with Redis. Running multiple servers behind Velocity or BungeeCord? Sync maintenance status across all instances through a Redis connection. One command toggles maintenance on every server at once instead of running the command on each proxy individually. Saves time on large networks. Tips and Gotchas to Know The biggest gotcha: maintenance mode prevents logins, but it doesn't forcibly disconnect already-connected players. If someone's already on the server when you enable maintenance, they'll keep playing. You'll need to manually kick them or tell them to log out. This is actually intentional - it's safer than forcibly booting everyone, which could cause data corruption if they had unsaved changes. The Cheapest Way To Earn Your Free Ticket To How To Make Flower Beds | How To Make Flower Beds Some server managers don't realize maintenance mode keeps the server running. If you're trying to restart the entire JVM process, maintenance won't help - you still need to shut down and restart the actual server software. Maintenance is for graceful, online maintenance, not for reboots. Also, if you're adjusting other server settings while in maintenance mode (like tweaking your server properties), keep in mind that some property changes require a full restart to take effect. Maintenance mode doesn't get around those limitations. One more thing: the default MOTD message is fine, but it's generic. Spend 10 minutes personalizing it to match your server's tone. A message that says "[MAINTENANCE] Custom survival server is down for updates" feels way more professional than the stock message, and your players will appreciate the personal touch. Comparing to Other Options There are other maintenance solutions out there, but Maintenance stands out for customization flexibility. Some plugins lock you into rigid messaging. Others don't support multi-language or proxy setups. Maintenance covers all those bases without bloat. If you're running a vanilla server and just want the absolute simplest "server is down" message, you could technically just stop the server. But you lose the ability to let staff members stay connected or show players a custom reason. Not worth the trade-off. For most server types (Paper, Velocity, BungeeCord), Maintenance is honestly the best free option. It's lightweight, actively maintained, and handles edge cases most other plugins ignore. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### SkyHanni: How to Enhance Your Hypixel SkyBlock Experience URL: https://minecraft.how/blog/post/skyhanni-skyblock-mod-guide Published: 2026-04-23 Author: ice GitHub · Minecraft community project SkyHanni (hannibal002/SkyHanni) SkyHanni is a Minecraft Mod for Hypixel SkyBlock. Star on GitHub ↗ .1 If you play Hypixel SkyBlock and aren't using SkyHanni, you're burning time on tasks that a mod could handle for you. This Fabric mod transforms the SkyBlock experience with smart highlights, helpful reminders, and customizable displays that actually reduce tedium instead of adding clutter. What You're Getting With SkyHanni SkyHanni isn't a "make me better" mod. And it doesn't give you unfair advantages or break Hypixel rules. What it does is eliminate friction from repetitive gameplay loops. Think of it as quality-of-life tooling for activities you're already doing dozens of times per session. The mod adds several categories of features: helpful GUI windows that display important information at a glance, smart chat enhancements that remind you about time-sensitive events, object highlighters that focus your attention on what matters in crowded screens, and customizable overlays for your scoreboard and tab list. If you're doing farming runs, slayer quests, Bingo challenges, or Rift content, there's almost certainly a SkyHanni feature designed to reduce busywork. It's written in Kotlin and built for Fabric. That means it's lightweight and plays nicely with other mods in most cases. Who Actually Uses This (and Why) Serious SkyBlock players use SkyHanni. But "serious" doesn't mean no-life grinding. It means players who've done the same task enough times to find it annoying and wonder if there's a better way. That's most of the active SkyBlock community. The mod shines during specific activities. Farming becomes less of a visual puzzle when SkyHanni highlights pests before you destroy your crops by accident. Slayer quests have timers and damage notifications you don't have to manually track. Fishing expeditions show reward rarities in real time. Mining in the Dwarven Mines or Deep Caverns gets a safety net with lava warnings and ore highlighting. The Rift dungeon (one of SkyBlock's most complex areas) has multiple SkyHanni tools specifically designed to reduce confusion in an already overwhelming space. And honestly, once you've played with these features, going back feels like playing with one eye closed. Installation (It's Straightforward, Mostly) You'll need a few pieces in place first. SkyHanni requires Fabric as your mod loader (not Forge, at least not for the latest versions). If you don't have Fabric installed yet, the process is standard: download the Fabric installer for your Minecraft version, run it, and point it at your game directory. Once Fabric is ready, grab the latest SkyHanni release for your Minecraft version. The project supports 1.8.9 (if you're running ancient gear or have specific reasons), 1.21.5, 1.21.8, and 1.21.10. That JAR file goes directly into your mods folder. bashcp SkyHanni-6.0.0-mc1.21.10.jar ~/.minecraft/mods/ Launch Minecraft with the Fabric profile and load into a SkyBlock server. You'll see a new command available: type /sh or /skyhanni to open the settings menu. That's where all the customization happens. One thing to watch: Fabric modding in general has a smaller margin for error than Forge. Adding conflicting mods or running without required dependencies can break things silently. The SkyHanni community on Discord is active if something doesn't work the first time. Features That Actually Save Time SkyHanni v6.0.0 added 17 new features, but the real value is in the ones you'll use every session. Here are the ones players swear by: GitHub project card for hannibal002/SkyHanni Farming Assistance is surprisingly complex. The mod can highlight pests before they damage your crops, display hoe levels so you know when upgrades help, and even mute the obnoxious hoe level-up sound. If you're rotating through multiple islands doing farming tasks, these small QoL touches compound over hours of play. Dungeon Helpers show unopened chests in Croesus encounters and provide a Secret Tracker tool that guesses where secrets are hiding. For players new to dungeons, this is less "cheating" and more "explaining the game's rules." Dungeons deliberately hide their win conditions; this mod makes them transparent. Slayer Notifications send chat reminders and overlay alerts when important events happen during slayer quests. You don't miss phase changes or boss mechanics because you were glancing at Discord. The Rift, one of SkyBlock's hardest content areas, gets its own suite: Ubik Cube timers, Bacte Kill Zone warnings, and general navigation helpers that honestly should be in the base game. Customizable Displays let you reshape your HUD to your preferences. Reorganize your scoreboard, change chat formatting, add or remove elements as you see fit. This one separates SkyHanni from "just" a helper mod. It's genuinely flexible. Things That Trip Up New Users SkyHanni's settings menu is powerful but dense. First-timers often enable everything and end up with a cluttered screen. Real talk: disable 70% of features you don't need yet. You'll know when something's missing. The mod also won't work on vanilla servers or non-SkyBlock content. If you hop to other Hypixel games (Bed Wars, Skywars, etc.), SkyHanni mostly sits dormant. That's intentional by design - it's purpose-built for SkyBlock's specific mechanics. Compatibility matters. Some mods conflict with SkyHanni, especially ones that also modify GUIs or inventory rendering. The Discord FAQ and known issues list are required reading if you're running a large modpack alongside SkyHanni. Other Mods Worth Knowing About If you're optimizing your SkyBlock setup, other projects exist in the same space. Distant Horizons improves render distance without destroying FPS, which helps during exploration. Badlion Client and Lunar Client both have built-in SkyBlock features, though they're closed-source. There's also Skyclient, a full modpack preset that includes SkyHanni plus carefully vetted compatible mods, if you want a pre-configured experience. None of these are "replacements" - they serve different needs. SkyHanni is the most feature-rich open-source option specifically for SkyBlock mechanics. Getting Started Without Overthinking It Install it. Load into SkyBlock. Type /sh. Leave most features alone for your first session. Enable something that annoys you (like accidentally breaking crops) and see how it feels. Build from there. The community around SkyHanni is genuinely helpful. If you hit a wall, the Discord channels for bug reports, support, and suggestions are active. And if you know Kotlin and want to contribute features yourself, the project welcomes pull requests. The GitHub repo links to a contributor guide. It's worth mentioning too: if you're building and customizing your own Minecraft experience, tools like our Skin Creator let you design custom cosmetics, and if you're planning any Nether Portal networks for transportation or resources, the Nether Portal Calculator handles the math so you don't have to. SkyHanni does one thing exceptionally well: it makes SkyBlock feel less like a spreadsheet and more like a game you actually want to play. Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### Shulker: Managing Minecraft Servers With Kubernetes URL: https://minecraft.how/blog/post/shulker-kubernetes-minecraft-servers Published: 2026-04-23 Author: ice GitHub · Minecraft community project Shulker (jeremylvln/Shulker) A Kubernetes operator for managing complex and dynamic Minecraft infrastructures, including game servers and proxies. Star on GitHub ↗ .0 If you're running more than one Minecraft server and you've got basic Kubernetes knowledge, Shulker might be the tool you didn't know you needed. It's a Kubernetes operator that automates provisioning, scaling, and managing Minecraft game servers and proxies at scale. This isn't for casual players spinning up a single server on their laptop. It's for people running infrastructure (hosting companies, large networks, anyone orchestrating dozens of servers) who want to stop doing repetitive server management by hand. What This Project Actually Does Shulker sits on top of Kubernetes and treats Minecraft servers as containerized workloads. Instead of SSH-ing into machines, clicking buttons in a hosting panel, or writing custom scripts to start/stop servers, you define Minecraft infrastructure in Kubernetes manifests. Shulker watches those manifests and creates or tears down real servers to match what you declared. Think of it as infrastructure-as-code for Minecraft. The core architecture uses agents deployed alongside your game servers. These agents communicate back to a central controller, which handles provisioning new server instances, managing proxies (like Velocity or Waterfall), and orchestrating the whole network. It's built in Rust, which means it's fast and memory-efficient compared to similar tools written in other languages. The project is now at v0.13.0 and includes a new CLI tool (shulker-cli) for managing servers programmatically. You can create servers on-the-fly from a fleet definition, or manage everything through standard Kubernetes objects. The latest release also patched bugs in LoadBalancer schema handling and fixed an SDK issue for manual server creation. Why You'd Actually Use This Most Minecraft servers run on a single machine. But if you're a hosting company or you're running a network with 50+ servers that need to scale up during peak hours and scale down to save costs, manual management becomes impossible. That's where Shulker solves a real problem. Dynamic scaling: Need 10 more servers for an event? Define it in Kubernetes and Shulker spins them up. Event ends? Scale back down automatically. No manual SSH: Stop logging into fifty machines to update server config or restart a process. Push changes to your manifest, Shulker handles the rollout. Self-healing infrastructure: A server crashes? Kubernetes restarts it. Shulker keeps everything running smoothly without you babysitting. Cost predictability: Run exactly as many resources as you need. If you're on cloud infrastructure, this saves real money. If you're running a small survival server for friends, you don't need this. If you're a hosting provider managing infrastructure for thousands of players, Shulker eliminates entire categories of operational headache. Installation and Prerequisites Shulker requires Kubernetes. Not Docker Compose, not a VPS with SSH access. Actual Kubernetes. If you're not already familiar with kubectl, custom resource definitions (CRDs), and YAML manifests, you'll need to learn those first. The Waiting Game. The project's documentation is at shulker.jeremylvln.fr with a getting-started guide covering prerequisites. Basic installation looks like this: bashkubectl apply -f https://github.com/jeremylvln/Shulker/releases/download/v0.13.0/stable.yaml That downloads the stable release manifest for v0.13.0. There's also a variant with Prometheus metrics included if you want monitoring. After applying the manifest, Shulker's operator deploys into your cluster and watches for Minecraft infrastructure objects. You'll also need container images for Minecraft servers. Shulker doesn't provide pre-built images; you define those separately, either using an existing Minecraft server image from Docker Hub or building your own. The operator orchestrates containers but doesn't create them for you. How the Key Features Actually Work At its core, Shulker uses Kubernetes custom resources (CRDs) to describe Minecraft infrastructure. You define a Fleet (a template for servers), then create MinecraftServer objects that reference the fleet. When you apply that manifest, Shulker spins up a Kubernetes Pod running your server container. Multiple servers? Define multiple MinecraftServer objects. Shulker creates as many Pods as you declare. The agent-based architecture is clever. Each server Pod runs a Shulker agent that maintains a gRPC connection back to the central controller. The controller stays informed about server health, player counts, and other metrics without needing SSH or constant polling. Network management is another strong point. Shulker handles proxy configuration for you. If you've got 20 servers and players connecting through a BungeeCord or Velocity proxy, Shulker updates proxy configs automatically as servers come and go. No manual proxy config edits. The new shulker-cli tool (added in v0.13.0) lets you create servers programmatically instead of writing manifests by hand. This is useful for hosting platforms that need dynamic server creation APIs. You can also manage everything through the gRPC API directly if you prefer. Real Gotchas and Common Pitfalls Steep learning curve is the first one. If you're thinking "I'll learn Kubernetes while setting up my Minecraft servers", you're in for a rough time. Shulker assumes you already know kubectl, understand Kubernetes networking, and can troubleshoot container issues. That's not a knock on the project; it's just being honest about who the audience is. The End City Container management adds another layer. You need to build or find Minecraft server images that work with Shulker's agent. If you use a standard Minecraft Java image but forget to include the agent binary, the server won't stay connected to the cluster. The errors you'll debug are Kubernetes-level, not always obvious Minecraft-level issues. Resource requests matter more than you think. Misconfigure Kubernetes resource limits on your Minecraft Pods and servers get OOMKilled (out of memory) under load. Shulker doesn't hide Kubernetes complexity; it expects you to understand your infrastructure layer. AGPL licensing is worth noting. If you modify Shulker and distribute it, you must share those modifications. For internal use this doesn't matter. For offering Shulker as part of a hosting service, it has legal implications you should discuss with legal counsel. The maintainer mentions being open to commercial licensing discussions on GitHub. Alternatives and How Shulker Compares If you need simpler server orchestration, Docker Compose on a single VPS gets you running servers without Kubernetes overhead. But it won't scale to dozens of servers easily, and failover is manual. Traditional hosting control panels (Pterodactyl, for example) let you manage multiple servers through a web UI. That's less declarative than Shulker, but it's also less of a learning curve if you're not Kubernetes-comfortable. Pterodactyl assumes you've already got VMs or physical machines; Shulker assumes you've got a Kubernetes cluster. Writing custom Kubernetes operators for Minecraft infrastructure is possible if you want something tailored to your exact needs. But that means building and maintaining your own code. Shulker is open-source and actively maintained, which saves that engineering effort if it solves your problem. The 378-star GitHub project has an active community and ongoing development. Latest releases happen regularly. If you're already running Kubernetes and managing multiple Minecraft servers, Shulker is genuinely worth evaluating. If you're not on Kubernetes, the barrier to entry is high enough that you should ask yourself whether you need this level of infrastructure first. Building Minecraft infrastructure is its own skill. Want to improve your server's visibility while you're building it? Check out Minecraft's MOTD Creator to craft compelling server descriptions that show up in the multiplayer menu. And if you're hosting player communities, Browse Minecraft Skins to find assets that match your server's theme.jeremylvln/Shulker - AGPL-3.0, ★378 Ready to try Shulker? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit jeremylvln/Shulker on GitHub ↗ --- ### TabTPS: Real-Time Server Performance Monitoring for Minecraft Admins URL: https://minecraft.how/blog/post/tabtps-minecraft-server-monitoring Published: 2026-04-23 Author: ice "Minecraft server mod/plugin to monitor TPS, MSPT, and other information in the tab menu, boss bar, and action bar." jpenilla/TabTPS · github.com If you run a Minecraft server, you've probably had that moment: players complaining about lag, and you've no idea if it's your server struggling or their connection. TabTPS puts server health metrics right in front of you (and your players) so everyone knows what's actually happening under the hood. What TabTPS Actually Does TabTPS is a server plugin and mod that displays live performance metrics where your players can actually see them. You can show TPS (ticks per second), MSPT (milliseconds per tick), and other server data in three different places: your player tab list, the action bar (that line of text above your hotbar), or as a boss bar at the top of the screen. Think of it this way: normally, if your server is running at 10 TPS instead of the standard 20, only you (as an admin) would know by checking logs. Your players would just feel the lag without understanding what's happening. TabTPS closes that gap. Players see the numbers. They understand the problem isn't them. And you get immediate feedback about what's actually stressing your server. It's surprisingly practical for a tool that sounds simple. Why This Matters for Server Admins Running a server means constantly balancing performance. Add too many plugins, and TPS tanks. Lag gets worse during prime hours when half your player base logs in. Building large mob farms? That eats resources. Running an ambitious world with custom terrain? More strain. Without visibility into what's happening, you're flying blind. You make changes and hope they help, but you never really know if it worked. TabTPS gives you that visibility, and it communicates directly to players who might otherwise blame the server unfairly. Plus, there's a psychological element. When players can see the server is struggling but you're actively working to fix it (and the metrics improve), they're way more patient. When they understand performance issues are temporary spikes rather than constant problems, they stick around. Transparency builds trust, and metrics are the most transparent thing you can give. Actually, this is one of those tools that feels optional until you run a server, then it becomes indispensable. Installing TabTPS on Your Server Type TabTPS supports multiple server platforms, which is huge. Whether you're running Paper (the most common choice for survival servers), Sponge, Fabric, or NeoForge, there's a version for you. For Paper servers, the installation is straightforward. Download the plugin JAR from the GitHub releases, toss it in your plugins folder, and restart the server. That's it. If you're setting up a new server from scratch, tools like the Server Properties Generator can help you configure basic server settings quickly, so you can focus on installing performance monitoring like TabTPS afterward. bash1. Download TabTPS JAR from the GitHub releases page 2. Place the JAR in your /plugins directory 3. Restart your server 4. Navigate to /plugins/TabTPS/ and customize configs as needed The Fabric and NeoForge versions require Fabric API as a dependency (at least for Fabric), so make sure that's installed first. That setup's the same conceptually, just make sure you're grabbing the right build for your platform and Minecraft version. This project supports Minecraft 26.1.2 and several earlier versions, so check the releases page to grab the one that matches your server version. The Main Features That Actually Matter TabTPS has more granular control than you'd expect from a "show me numbers" plugin. Display Configurations: You can create custom display configs in the config folder, and assign different ones to different permission groups. Maybe admins see detailed performance metrics, but regular players just see a simple TPS indicator. Or maybe you change the display based on server load. The flexibility is there. You can even customize what information gets displayed where, which matters more than it sounds when you're trying to keep your UI clean. Themes: There's a theming system for colors. Not critical, but nice if you want the metrics to match your server's brand or just make them easier to read at a glance. The /tickinfo and /mspt Commands: These show you a breakdown of what's eating CPU time on each tick. Is it the main game thread? Plugin overhead? Mob pathfinding? You get numbers. It won't pinpoint exactly which plugin is the culprit (you'd need more advanced profiling tools for that), but it narrows the field faster than guessing. Ping Display: The /ping, /ping [player], and /pingall commands show player latency. This is useful for diagnosing whether lag is server-side or player-side. If everyone reports lag but ping numbers are normal, it's definitely your server. If everyone's ping spikes together, someone on the network's having a rough time. Memory Info: The /memory command shows how much RAM different parts of the JVM are using. This is less useful for casual servers but genuinely helpful if you're trying to figure out why your server is eating 12GB of RAM when you allocated 8GB. You can see garbage collection pressure, heap usage, and spot memory leaks before they become critical. Configuration Tips and Common Gotchas One thing that catches people off guard: the display configs use a permission system. By default, everyone gets tabtps.defaultdisplay, which works fine. But if you start creating custom configs, remember that only players with the associated permission will use that config. If a player has permission for multiple configs, their priority setting in the main config determines which one kicks in. This is intentional, but it trips people up because they assume the last permission wins. If you're running permissions via LuckPerms or another plugin, make sure your permission nodes are actually being applied. I've seen servers where the display just doesn't show up, and it's because the permission wasn't synced properly. Double-check your permissions setup if the metrics aren't appearing. The reload command (/tabtps reload) lets you update configs without restarting, which is handy. But be aware that some changes might require a full restart to take effect properly, depending on what you're modifying. When in doubt, restart. One more thing: the tab display works best when you're not already using massive portions of the tab list for other plugins. If you've got a huge scoreboard or banner system that uses the tab list, TabTPS needs space to work with. It's not incompatible, but you'll want to plan your layout. If you're designing a custom look for your server, consider whether player names, team displays, and performance metrics can coexist without cluttering the screen. For smaller servers, consider starting with a simple action bar display instead of reworking your entire tab list. It's less intrusive, gives everyone the info they need, and you can always expand it later. You could also use the Minecraft Text Generator to create custom formatting for your other server messages, keeping everything visually cohesive. Alternatives and When They Matter Spark is legendary in the server admin community for performance profiling. If you need deep CPU and memory analysis, Spark is probably better. But Spark is more for admins diving into logs and data; TabTPS is for real-time visibility that everyone sees. They actually work well together. Spark diagnoses the problem. TabTPS shows it to your players. There are a few other monitoring plugins out there, but most solve a different problem. GeyserMC has some performance monitoring, but it's coupled to Bedrock support, so only relevant if you're running a hybrid server. ProtocolLib can help with network profiling, but again, different tool for a different job. Honestly, TabTPS fills a pretty specific niche (real-time metrics everyone can see), and the alternatives either overlap too much or solve a different problem. For what it does (showing metrics your players can see without needing external dashboards), it doesn't have a direct competitor in the plugin ecosystem. That's actually why it's remained relevant for so long. The project itself is well-maintained, currently supports Minecraft 26.1.2, and the 320 GitHub stars reflect a solid community that actually uses it. Written in Java with an MIT license, it's transparent and free to use on any server type that supports the plugin API. Support the project TabTPS is maintained by the open-source community. If it saved you time or powered something cool, leave a ⭐ on the repo, report bugs, or contribute back. Small actions keep tools like this alive. --- ### PolyMC Launcher: Managing Multiple Minecraft Setups in 2026 URL: https://minecraft.how/blog/post/polymc-minecraft-launcher-guide Published: 2026-04-23 Author: ice PolyMC/PolyMC A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC) ⭐ 2,012 stars.0 If you're juggling multiple Minecraft setups - vanilla survival, modded servers, snapshots, texture packs you're testing - managing them separately is painful. PolyMC is a custom launcher that organizes all of them in one place, letting you switch between completely different game configurations instantly. What PolyMC Actually Does PolyMC is a custom launcher for Minecraft, built as a fork of MultiMC with a focus on stability and predictability. Instead of having a single Minecraft installation that you'd need to mess with to switch between vanilla and modded, or different Java versions, PolyMC lets you create isolated "instances" for each setup you want to maintain. Think of instances like separate game folders that don't interfere with each other. You've one for your Survival world, another for testing mods, one with Fabric, one with Forge, whatever. Launch whichever you want without touching anything else. The launcher itself is written in C++ and runs on Windows, macOS, and Linux. It's open source under the GPL-3.0 license, with around 2,000 GitHub stars and active development. Why You'd Actually Need This The default Minecraft launcher works fine if you're only playing vanilla. But most people want more. You might want to test mods without nuking your main world. Or run the same world on different Java versions to see if one performs better. Or jump between modded servers that require completely different mod lists. Each instance in PolyMC can have its own Java version, memory allocation, mods folder, resource packs, and game version. This matters more than it sounds - some older mods break on newer Java versions, and manually juggling all that gets tedious fast. If you're building a modpack for friends, PolyMC makes testing way easier. If you're a server admin who needs to match your client setup to the server config, you've got precise control per instance. Installation and First Launch Installation depends on your OS. The project provides downloads on their website, with multiple options for each platform. On Linux with AppImage (simplest for most): bashwget https://github.com/PolyMC/PolyMC/releases/download/7.0/PolyMC-Linux-7.0-x86_64.AppImage chmod +x PolyMC-Linux-7.0-x86_64.AppImage./PolyMC-Linux-7.0-x86_64.AppImage If you're on Arch, there's an AUR package (polymc-git for development builds). Debian users can grab polymc-git from the MPR. The project also publishes Qt6 builds if you're particular about your libraries. Windows and macOS get standard installers. One note for macOS - if you use AppImageLauncher, make sure it's version 3.0 alpha-4 or newer, otherwise it'll break PolyMC's AppImage. Creating Instances and Managing Versions When you create a new instance, PolyMC asks which game version you want. Pick anything from old releases to the latest (26.1.2 as of April 2026) or even snapshots. You select your mod loader - Vanilla, Forge, Fabric, NeoForge (new in v7.0) - and that's mostly it. From there, each instance has its own folder structure. Mods go in the mods folder, resource packs in resourcepacks, etc. You can launch from PolyMC with custom Java arguments if you need them. Want to allocate 8GB of RAM to one instance and 4GB to another? Set it per instance. Version 7.0 switched the Minecraft page to use tabs, which is cleaner. There's also a detail that saves headaches - you can set a default mod download platform so PolyMC knows whether to pull from Modrinth or CurseForge by default. Features That Actually Matter Java management is legitimately useful here. PolyMC can auto-download Java versions for you, including newer builds like JDK 21. Each instance can use a different Java version independently. This solves a huge category of "my mods don't work" problems because some mods break on newer Java versions and need older releases. GitHub project card for PolyMC/PolyMC Mod loader support is full. Fabric and Forge obviously work. Recent versions added full NeoForge support (the Forge fork that's gaining traction). You can also run vanilla instances if you just want to organize without modding. The launcher includes built-in tools for managing versions. You can install resource packs directly from the instance settings rather than hunting through folders. If you're setting up a server, PolyMC can help you sync your client instance to match your server's modlist and avoid painful troubleshooting later. And if you're using the Server Properties Generator to configure your server, you can apply those same settings to your PolyMC instance. The Minecraft Whitelist Creator also pairs well if you're managing player access. Common Gotchas New Users Hit Storage is the big one. Each instance is a full copy of the game, so 10 instances with 100+ mods each means serious disk space. Java detection sometimes needs babying. If PolyMC can't find your Java installation automatically, you'll need to point it manually. The logs are explicit about what went wrong, which helps. Modpack importing works, but it's got limits. Not every modpack launcher format is fully supported, and some built for other launchers might need tweaks. The project keeps improving this, but it's not 100% transparent. And here's something that catches people: account migration. If you're switching from the default launcher, you keep your Microsoft account login (assuming you've migrated from your old Mojang account). But you need to log in first - PolyMC won't pull credentials from the old launcher. How It Stacks Against Other Launchers The official Minecraft Launcher is fine. It launches the game. The result doesn't give you instance management or version control, which PolyMC does. If you're only playing vanilla, it's probably fine. If you're touching mods, PolyMC is objectively better. MultiMC is PolyMC's ancestor - stable, well-established, but PolyMC's specifically designed to be its more predictable successor. The fork exists because the original MultiMC maintainer wasn't accepting certain changes the community wanted. CurseForge Launcher and GDLauncher are fine if you only install modpacks and don't care about fine-grained control. Both are more "point and click modpack installer" than "precise control over every game setting." Building From Source (If You Want) Most people won't need to. But if you're on an unsupported OS or want the absolute latest development build, the project provides build instructions. It's C++, so you'll need CMake and a compiler. The Nix package was recently updated if you're already in that ecosystem. If you fork it for a custom build, the project's policy is straightforward: change the API keys in CMakeLists.txt to your own (or empty string to disable them), and make it clear it's not the official PolyMC. That's it. The Takeaway PolyMC solves a real problem for anyone managing multiple Minecraft setups. It's stable, well-maintained, cross-platform, and genuinely free. If you're tired of manually swapping mods or Java versions, it's worth an afternoon to set up. The community's active on Discord and Reddit if you hit issues. It's not flashy. It just works, which is exactly what you want from a launcher.PolyMC/PolyMC - GPL-3.0, ★2012 Where to go from here Read the source on GitHub (docs, examples, and the issue tracker) Browse open issues to see what the community is working on Check recent releases for the latest build or changelog --- ### PacketEvents: Building Smarter Minecraft Servers with Packet Interception URL: https://minecraft.how/blog/post/packetevents-minecraft-packet-library Published: 2026-04-23 Author: ice "PacketEvents is a protocol library tailored to Minecraft Java Edition, designed to facilitate the processing and transmission of packets." retrooper/packetevents · github.com .0 If you've ever wondered how anti-cheat systems catch hackers, how custom game modes work, or how some servers add features Minecraft doesn't officially support, the answer almost always involves packet interception. PacketEvents is the library that makes this possible, and if you're developing for Minecraft servers, it's probably worth understanding. What This Project Does PacketEvents is a protocol library that sits between your Minecraft server and its players, giving you the ability to intercept, inspect, and modify the packets flowing back and forth. Instead of being locked into vanilla Minecraft behavior, you can listen for specific packet events and react to them in real-time. Think of packets like messages. When a player hits someone, moves, places a block, or uses an item, their client sends a packet to the server describing that action. Normally, your server just processes these packets as-is. With PacketEvents, you can read those messages, check if something looks wrong, and either allow it or block it. You could detect impossible movement speeds, prevent glitched item duplications, or add entirely custom mechanics that normal plugins can't achieve. The library works across multiple server platforms - Spigot, Velocity, BungeeCord, Fabric, and Sponge all get support. That means whether you're running a small survival server or a massive network, PacketEvents speaks the same language. Why You'd Actually Use It Most casual players and server owners never directly touch PacketEvents. But the plugins they use every day almost certainly do. Here's what it enables: Anti-cheat detection: Catching aimbots, speed hacks, and reach exploits by analyzing player input in real-time. Custom mechanics: Building features the vanilla game doesn't have without waiting for Mojang to add them. Network optimization: Filtering unnecessary packets to reduce bandwidth on proxy networks. Analytics: Tracking player behavior and server health at the packet level. Exploit patching: Protecting against known vulnerabilities before they get patched. If you're running a competitive server, hosting a mini-games network, or developing any serious server software, PacketEvents is practically mandatory. It's one of those invisible technologies that makes the Minecraft server ecosystem actually work. Getting PacketEvents Running Installation depends on your platform, but the general workflow is straightforward. For Spigot/Paper servers: Download the plugin JAR from the releases page or Modrinth, drop it into your plugins folder, and restart. PacketEvents works as both a standalone plugin and as a library for other plugins to depend on. For developers building plugins that use PacketEvents: Add it as a dependency in your build configuration. If you're using Gradle, add this to your build.gradle: gradlerepositories { maven { url "https://repo.codemc.io/repository/maven-public/" } } dependencies { implementation 'com.github.retrooper:packetevents-spigot:2.12.1' } (Obviously swap out the version for whatever's current.) Then in your plugin code, you hook into PacketEvents' event system to listen for specific packet types. The official documentation walks through the basic setup, and the JavaDocs cover the API in detail. That said, actually using it requires Java and Maven/Gradle familiarity. And this isn't a tool for non-developers. If you're just a server owner, you'll be installing plugins built by others who use PacketEvents behind the scenes. Key Capabilities The library abstracts away a lot of the tedium in Minecraft protocol handling. Here are the standout features: GitHub project card for retrooper/packetevents Event-based packet listening: Instead of manually parsing binary data, you register listeners for specific packet events. Want to know when a player clicks? Listen for the packet. Want to modify their position? Intercept and rewrite it. This is miles cleaner than raw protocol work. Multi-version support: Minecraft's protocol changes constantly. PacketEvents handles the complexity of supporting multiple versions (including recent snapshots) without you having to rewrite your code for each update. Version 2.12.1 supports up to Minecraft 26.1.2 and development snapshots, which is crucial for staying current. Wrapper classes for common packets: Instead of bit-shifting and reading raw buffers, you get typed classes for things like player movement, block placement, and inventory updates. The latest release added WrapperPlayServerChunkBiomes for biome data, for example. These classes are actual Java objects with readable fields. Cross-platform compatibility: The same packet handling logic works on Spigot, Velocity, Fabric, and other platforms. Write once, deploy everywhere (mostly). For something like a cosmetics plugin, you'd use PacketEvents to intercept animation packets and add custom effects. For an anticheat, you'd listen to movement packets and validate them against server-side player state. For a skin system, you could modify the skin data packets. The flexibility is genuinely impressive. Things That'll Trip You Up No library is perfect, and PacketEvents has a few rough edges worth knowing about. Protocol knowledge still helps. PacketEvents abstracts a lot, but understanding what packets actually do and when they fire matters. If you don't know that player position packets arrive separately from look packets, your anti-cheat will have problems. The protocol documentation is your friend here. Performance matters at scale. Packet events fire constantly on any server. If your listeners are slow or block the packet thread, you'll lag the entire server. Write efficient code, offload heavy work to async tasks, and profile before deploying to production. Compatibility requires careful testing. Each Minecraft version release can shift packet structures slightly. PacketEvents usually keeps up quickly (they support 26.1.2 as of the latest release), but plugins written against older versions sometimes break. The library handles most of it, but edge cases happen. Decompilation and obfuscation can be weird. Some of PacketEvents' internal references rely on mappings to Minecraft's obfuscated names. If you're debugging, you might end up staring at decompiled code with unfamiliar variable names. It's workable but not fun. Similar Projects Worth Knowing About ProtocolSupport: An older library that does similar packet interception. Still actively used, but PacketEvents tends to update faster for new versions. ViaVersion: Focused specifically on version compatibility - it lets older clients connect to newer servers and vice versa. Different problem than PacketEvents solves, but they sometimes work together. MCProtocolLib: More of a low-level protocol implementation library. More control, steeper learning curve, less commonly used for production servers. PacketEvents strikes a good balance: high-level enough to be practical, low-level enough to be powerful. The Bigger Picture If you're just playing vanilla Minecraft, PacketEvents never touches your experience. But every time you play on a polished server with working anti-cheat, custom features, or stable performance across hundreds of players, somebody's probably using this library behind the scenes. It's foundational infrastructure for the Minecraft server ecosystem. The project's maintained actively (846 stars on GitHub, GPL-3.0 license), gets regular updates for new Minecraft versions, and has a solid community on Discord for support. Development builds are available between releases if you want to live on the edge. Whether you're an experienced plugin developer or just curious how Minecraft servers actually work under the hood, it's worth a look. If you're building any kind of competitive or feature-rich server, it's not optional - it's just how things are done. Speaking of custom features, if you ever want to create custom player skins or visualizations, the Minecraft community has tools for that too. You can browse existing player skins or even create your own custom skins to design characters that match your server's aesthetic. Ready to try packetevents? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit retrooper/packetevents on GitHub ↗ --- ### Fetchr: The Minecraft Bingo Gamemode That's Actually Addictive URL: https://minecraft.how/blog/post/fetchr-bingo-minecraft-gamemode Published: 2026-04-23 Author: ice GitHub · Minecraft community project bingo (NeunEinser/bingo) A custom item fetch gamemode for Minecraft Star on GitHub ↗ Tired of jumping into a vanilla world with no clear objective beyond "build stuff"? Fetchr drops you into a structured, competitive bingo game where you're racing against the clock (and probably your friends) to collect items on a 5x5 card. It's survival Minecraft with a purpose, and it genuinely changes how you approach the game. What's Fetchr, Really? At its core, Fetchr is a datapack-based gamemode that overlays a bingo board onto vanilla survival gameplay. You spawn in a random location with an empty inventory and a card showing 25 items you need to collect. Get five in a row (horizontal, vertical, or diagonal) and you've hit a Bingo. Collect all 25 and you've gone "Blackout." Simple concept. Deceptively fun. The project started as a creative way to give vanilla Minecraft a scorecard. Instead of playing indefinitely with no finish line, you're working toward concrete goals. And because the items are randomized with each new world, it never feels like you're replaying the same game twice. The repository sits at NeunEinser/bingo on GitHub with 104 stars and is built entirely in mcfunction (Minecraft's native scripting language). That means it requires zero mods. This is pure datapack magic. Game Modes: More Variety Than You'd Expect Fetchr isn't just "collect items." The project includes several distinct game modes, each shifting your strategy entirely. Bingo Mode is the straightforward version: first to five in a line wins. It's quick, competitive, and rewards smart item hunting over pure grinding. Blackout Mode pushes you to collect all 25 items on the card. This is the long game. Want a real challenge? The items stay randomized, so a Blackout on this world won't look like a Blackout on the next one. Then there's the weird stuff: 20 No Bingo mode flips the script entirely. Collect 20 items without accidentally triggering a Bingo. It sounds impossible (mathematically, it's the maximum before you're guaranteed a line), but it forces you to think three moves ahead. Get it wrong and you've locked yourself out. Multi Bingo lets you score multiple Bingos at once by targeting intersecting lines. Get creative and you could unlock four different lines with a single item. That moment when it clicks is genuinely satisfying. If you're playing with others, Lockout Mode means only one team can claim each item. Once you've locked in more items than any other team can possibly get, you've won. It's the competitive version, and it turns Fetchr from a speed run into a strategic game of poker. Blind Mode hides the card until items are revealed. You'll need to memorize which items typically come from which biomes and resources. Getting Fetchr Running: Installation Breakdown Fetchr ships in two flavors: a complete world download and a datapack-only version. Pick based on how you want to play. GitHub project card for NeunEinser/bingo Singleplayer Setup is dead simple. Download the world file (Fetchr-5.2.2.zip from the latest release), extract it to your saves folder, load it up. You're done. The world is pre-configured and ready to go. Make sure you're running the compatible Minecraft version listed with the release. For multiplayer servers, download the zip, extract it in your server directory alongside your server.jar, then check the included server.properties file. The key settings are already there; you just need to verify they're set correctly if you've an existing config. One important note: vanilla servers and Fabric with Lithium work fine. Paper and Spigot don't, despite what you might expect. The server's performance tuning breaks subtle aspects of how the datapack detects item changes. If you want to use just the datapack version (say, on a world you've already started), grab the datapack zip, extract it to your world's datapacks folder, then run /reload. Fair warning: Blind Mode requires a clean world spawn since it needs to detect the initial setup phase. After you set up multiplayer, don't forget to generate your whitelist if you want to restrict access. The Minecraft Whitelist Creator makes it painless to add players before the game starts. Gameplay Strategy: What Actually Works Fetchr rewards planning as much as speed. Early on, ignore rare items. You're not competing for diamonds or netherite when you've got six different blocks to find. Hit the low-hanging fruit first: wood, dirt, stone, whatever's on your card and immediately findable. This padding stacks your early progress. Watch the board. If you're three items away from a horizontal Bingo and two away from a diagonal, chart a course that completes both simultaneously. One smart play beats five rushed moves. In Lockout Mode with teammates, communicate which items you're going for. Nothing worse than two people grabbing the same item when you needed different ones. If you're playing with a group coordinating for a longer session, keep a written list. The Nether is usually worth the trip early if you've got portal materials on your card. Once you're there, the Portal Calculator at Minecraft.How's Nether Portal Calculator helps you navigate between overworld coordinates and nether coordinates efficiently. Save yourself ten minutes of walking. Blind Mode changes everything. You'll rely on muscle memory of item spawning. Slimes spawn in swamps. Blazes drop from Blazes in the Nether. If you don't know, dig into the category chests scattered around the map to figure out the item pools. It's detective work disguised as survival. Common Gotchas and Pitfalls Fetchr is stable, but there are a few things that catch new players. Roblox - Men are actively opting out of dating, relationships and marriage to avoid dealing with weaponised feminist freaks, Windows 11 wonks and Ehaho junk products Entity rendering lag used to freeze mobs when you lowered your render distance before the game started. Version 5.2.2 fixed this, so update if you're running 5.2.0 or 5.2.1. The fix is datapack-only; you don't need a new world. The card detects items when they're in your inventory. Drop an item and pick it up later: it doesn't re-detect. So plan your inventory carefully in Blind Mode where you're hunting items you can't see. Multiplayer desync sometimes happens if the server tick rate is irregular. Stick to vanilla or Fabric + Lithium. If you're getting weird behavior with stale entities or items not registering, check your server's TPS first. The resource pack is optional but recommended. It includes the bingo card UI and makes the lobby much clearer. Without it, you'll still see the card, but the presentation gets rough. Why Fetchr Stands Out Datapack-based survival gamemodes aren't new, but Fetchr nails the execution. The randomized cards mean every playthrough feels different. So this multiple goal types mean you're not just grinding the same objective every time. And here's the thing nobody mentions: it's genuinely good for group cohesion. Lockout Mode turns your friend group into a competitive team. You're laughing when someone snipes an item you needed, strategizing in voice chat, celebrating when you nail a four-line Multi Bingo. That's the magic. It's survival Minecraft with actual stakes. The project is actively maintained, the MIT license means you can modify it for your server, and there are builds for recent versions. If you've been looking for a way to give vanilla Minecraft a competitive edge without adding fifty mods, this is it.NeunEinser/bingo - MIT, ★104 Ready to try bingo? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit NeunEinser/bingo on GitHub ↗ --- ### Pakku: The Modpack Manager That Actually Works URL: https://minecraft.how/blog/post/pakku-modpack-manager-minecraft Published: 2026-04-23 Author: ice "A multiplatform modpack manager for Minecraft: Java Edition. Create modpacks for CurseForge, Modrinth or both simultaneously." juraj-hrivnak/Pakku · github.com .2 Building modpacks for Minecraft is exhausting when done manually. You're juggling mod dependencies, maintaining compatibility across versions, and if you're serious about distribution, you're essentially creating the same pack twice (once for CurseForge, once for Modrinth). Pakku cuts through all that mess. What's Pakku, Really? Pakku is a command-line modpack manager that borrows its philosophy from package managers like npm or Cargo. You define your modpack once, and Pakku handles the rest: dependency resolution, version management, and simultaneous export to CurseForge, Modrinth, or both. Built in Kotlin and released under EUPL-1.2, it's got 121 GitHub stars and a solid foundation. The core idea is simple but powerful: treat your modpack like a software project. Version control it. Collaborate on it. Export it as finished packages without manual duplication. Why You'd Actually Want This Let me be honest: you don't need Pakku to make a modpack. People have been doing it for years. But there's a difference between "possible" and "practical." If you're running a private server with a custom modpack, you're probably managing mods manually right now. A new mod releases, you update it, you hope nothing breaks, you distribute the new version to your players. It works. But it's slow and error-prone. Pakku shines when you're managing more than five or six mods, especially if you want your modpack available on multiple platforms simultaneously, you're collaborating with other people on development, you need version history and rollback capability, or you're running a server that evolves frequently. One key advantage: dependency management. Add a mod that requires three others, and Pakku figures out the dependency tree. You get the mods you asked for plus everything they need without manual hunting. Getting It Running Pakku runs anywhere Java 11+ is installed. Grab the latest release from GitHub: bash# Download and extract (v1.3.3 is the latest) wget https://github.com/juraj-hrivnak/Pakku/releases/download/v1.3.3/Pakku-1.3.3.tar tar -xf Pakku-1.3.3.tar cd Pakku-1.3.3 # Check available commands./pakku - help That's it. You're ready to go. The Core Workflow Starting a new modpack is straightforward: bashpakku init my-awesome-pack cd my-awesome-pack This creates a config file. Set your Minecraft version and pick your platforms (CurseForge, Modrinth, or both). Adding mods is where Pakku flexes its real strength: bashpakku add mod-name Pakku searches your configured platforms, resolves dependencies automatically, and adds the mod to your project. It's like npm install, but for Minecraft mods. When you're ready to release, export everything: bashpakku export One command. Both formats. Zero manual fiddling. You can also inspect what's in your pack, update individual mods, sync with your game folder, or diff between versions. Actually, the diff command is nice if you're trying to figure out what changed between releases of your own pack. What Actually Stands Out The multiplatform approach is genuinely rare. Most tools lock you into CurseForge or Modrinth. With Pakku, you describe your pack once and deploy to both simultaneously. That's significant if your players are scattered across different launchers. GitHub project card for juraj-hrivnak/Pakku Version control integration comes built in. Your modpack becomes a Git repository by default, meaning you can track changes, collaborate on branches, and roll back if something breaks. This is transformative if you're working with other people. CI/CD automation is another strength. If you're using GitHub Actions or similar, you can wire up automatic exports. Update a mod, push the commit, and your new package builds itself. That's the kind of workflow you'd expect from modern software development, adapted for Minecraft modpacks. The import functionality deserves mention too. Take an existing modpack from CurseForge or Modrinth, run `pakku import`, and you get a new Pakku project with everything already configured. You're not starting from scratch even if you've already got something going. Real-World Scenarios Imagine maintaining a custom modpack for your server and wanting it on both CurseForge and Modrinth. Manually keeping both in sync is tedious and you'll eventually forget to update one. With Pakku, you update your config once, run export, and done. Or you're working with friends on a collaborative pack. Without version control, coordination is messy: "did you update this mod?" "which version are we using?" With Pakku as a Git repo, everyone's on the same page. If your pack adds new blocks or mechanics to explore, tools like the Minecraft Block Search can help you create documentation for your players about what's available. And if you're setting up custom commands or welcome messages for your server, the Minecraft Text Generator helps you format those cleanly. Common Gotchas and Tips Dependency resolution only works as well as the metadata provided by CurseForge or Modrinth. If a mod declares its dependencies incorrectly (and some do), Pakku will reflect that mistake. Always test your exported pack in your launcher before going live. The latest release (v1.3.3) fixed an issue with Modrinth project file exports, which shows the project is actively maintained. Updates are steady but not disruptive - the command structure remains stable across versions. One thing that tripped me up initially: make sure your config actually lists the platforms you want. If you're exporting to Modrinth, Modrinth needs to be in there. It sounds obvious, but easy to miss when you're switching between platforms. How This Compares to Alternatives Manual methods work but don't scale. Five mods are manageable; fifty mods across two platforms is tedious and error-prone. MultiMC and similar launchers are excellent for playing modpacks, but they're client-side focused. They don't help you build and maintain a pack from the creator's perspective. Pakku fills that specific gap. Some modpack creators use custom scripts or spreadsheets. They work, but you lose collaboration, version control, and CI/CD integration entirely. Pakku occupies a unique niche: it's specifically designed for modpack development workflows. Getting Started The official documentation is solid and worth reading through. There's also a Discord community if you get stuck (the maintainer is responsive and helpful). Start with a test pack. Add three or four mods, export it, and test it in your launcher. Get a feel for the workflow before scaling up to a real project. The learning curve is gentle and the payoff is real. If you're doing any serious modpack work, it's worth trying. Ready to try Pakku? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit juraj-hrivnak/Pakku on GitHub ↗ --- ### PCL Community Edition: The Lightweight Minecraft Launcher You Didn't Know You Needed URL: https://minecraft.how/blog/post/pcl-ce-minecraft-launcher-guide Published: 2026-04-23 Author: ice "PCL 社区版 由社区开发者维护与管理" PCL-Community/PCL-CE · github.com ⭐ 3,753 stars Basic .NETpache-2.0 Tired of bloated launchers that eat RAM just sitting idle? PCL Community Edition is a stripped-down Windows launcher that lets you manage Java Edition installations, swap between versions, and load mods without any of the unnecessary frills. Built by the community and actively maintained, it's become the go-to alternative for players who want speed and control. What This Launcher Actually Does PCL-CE handles the core stuff: installing and managing multiple Minecraft versions, keeping your mods organized, and switching between installations on the fly. It's written in Visual Basic.NET (3,753 stars on GitHub) and focuses on getting you into the game faster than the official launcher can load. Unlike some launchers that try to be everything at once, PCL-CE knows its lane. You get version management. Most players get mod support through Fabric and NeoForge. Anyone get memory optimization tools. What you don't get is social features, skin shops, or realms integration, which honestly makes it faster. The community-maintained version (Community Edition) diverges from the original PCL in useful ways. It adds features the main project hasn't gotten to yet, fixes bugs on its own timeline, and doesn't require you to report issues to an upstream maintainer who might not respond for months. Why You'd Actually Switch to PCL-CE Speed. If you're used to the official launcher, you've probably noticed it takes forever just to open. PCL-CE launches in seconds and gets out of your way. Seriously, the difference is jarring once you experience it. The latest version (2.14.6, released April 18) includes refined Chinese resource searching, which matters if you're tapping into mod communities across different regions, but the speed benefit applies whether you're installing modpacks or vanilla versions. Resource management is where it really shines. You can cap memory usage, swap between 32-bit and 64-bit Java, and tweak JVM arguments without diving into hidden configuration files. There's no guesswork. If you've ever had a modpack crash because memory allocation went wrong, you'll appreciate having these controls right in the UI. Multi-version support is smooth too. Want to run 1.20.1 vanilla while keeping a 1.16.5 modded installation separate? Create both, switch between them, and PCL-CE keeps everything isolated. No version conflicts, no launcher confusion. Getting PCL-CE Installed Windows 10 1809 or newer gets full support. Windows 8 might work but you're on your own for troubleshooting. Windows 7 is out of luck. You'll need.NET 8 Desktop Runtime installed first, which is a quick download from Microsoft. Installation is straightforward: Head to the GitHub releases page and grab either the x64 or ARM64 executable (x64 for most people) Run the installer Choose your Minecraft directory during setup Launch and you're done The installer handles dependency checking, so you won't end up with a broken setup if.NET is missing. If you do hit issues, the community Discord (linked on the GitHub page) is usually responsive. Not "AAA support team" responsive, but actual humans who use the launcher will help you debug. The Best Features and How They Work Save file compatibility. The most recent update added support for Minecraft 26.1 save formats. If you've got old worlds and you're nervous about upgrading to the latest snapshot, PCL-CE lets you confirm compatibility before you commit. That's a small thing but it saves the panic of "did I just break my world?" GitHub project card for PCL-Community/PCL-CE Mod installation detection. You can mix Fabric and NeoForge mods without PCL freaking out. The launcher automatically figures out which mod loader you're using for each version. In version 2.14.6, they fixed a critical issue where NeoForge 26.1 wasn't even showing up in the installer list. That's the kind of specific, real-world problem the community team actually cares about. Memory optimization. There's a built-in memory swap feature that frees up RAM on the fly, useful if you're playing on a system with limited resources. It's not magic (you can't create memory from nothing), but if you've got 16GB and only 8GB allocated to Java, it'll squeeze more efficiency out of what you've got. One caveat: earlier versions had a bug where you needed admin rights to use this. That's fixed now, but it's a good reminder to stay current with updates. Chinese resource search. If you pull from Chinese modding communities or want to browse mods across language barriers, the recent update added more precise searching. You're not locked into English-only resource discovery, which opens up modpacks and tools you might not find on curseforge alone. Lightweight resource monitoring. The launcher itself runs lean. We're talking maybe 100MB of RAM when idle, compared to the official launcher which can bloat to 500MB+ doing nothing. When you're trying to run a modpack, that matters. Things That'll Trip You Up The launcher doesn't auto-update. You'll need to grab new releases manually from GitHub. It's not a big deal if you check in every month or two, but if you ignore updates for six months and then wonder why mods aren't working, that's on you. The changelog for recent versions shows they're actively fixing Minecraft 26.1 compatibility issues, so staying current actually matters. It's Windows-only for real use. There's theoretical cross-platform support if you're a developer with.NET 10 SDK (the README mentions this), but unless you're comfortable compiling from source, this is a Windows tool. OptiFine and LiteLoader installations had a path bug in earlier versions where they'd install to the wrong directory if you added them alongside other mods. Version 2.14.6 fixed this. It's fixed now, but it's worth knowing if you're mixing multiple mod tools. Other Launchers Worth Knowing About MultiMC / Prism Launcher. Cross-platform, open-source, incredibly powerful. If you're on macOS or Linux, this is actually your only real option. Even on Windows, some people prefer it for the finer-grained instance management. The trade-off is it's heavier and less snappy than PCL-CE. The Official Launcher. Gets the job done, but it's slow and you don't get fine control over version management or memory allocation without digging into launcher_profiles.json. Use it if you want simplicity and don't care about speed. Feather Client. Lighter weight and with some built-in optimizations, but it's more limited on mod compatibility than PCL-CE and the community is smaller. Worth checking out if you're looking for something even more minimal. The choice really depends on your setup. Using Windows and want speed? PCL-CE is your pick. Cross-platform or want maximum control? Prism Launcher. Just want it to work and don't care about performance? Official launcher is fine. When You Should Actually Use This You've got multiple modpacks running and you're tired of the launcher taking 30 seconds to open. You want to know exactly how much RAM each version uses. You're playing on a 2k-block-wide world and need memory optimization (check out our block search tool if you're hunting specific terrain). You're mixing mod loaders and want something that doesn't question it. You care about privacy and want software that isn't phone-home bundled with other stuff. If you're playing vanilla, updating once a month, and the official launcher doesn't bother you? You don't need this. That's honest feedback. But if you're the type who runs five different versions, loads 50+ mods, and wants the launcher to get out of your way? You're going to feel the difference immediately. The community that maintains PCL-CE actually plays Minecraft, and you can tell by how the tool is built. They solve problems they ran into themselves instead of guessing at what players need. One more thing worth mentioning: if you're trying to calculate your coordinates when you venture into the Nether, our Nether portal calculator saves you the mental math. Ready to try PCL-CE? Grab the source, read the full documentation, or open an issue on GitHub. Star the repo if you find it useful. It helps the maintainers and surfaces the project for other Minecraft players. Visit PCL-Community/PCL-CE on GitHub ↗ ---