MineClear - Mine Sweeper Game Plugin
A mine sweeper game plugin developed for Nukkit servers, supporting custom game areas, timing functions, and game record saving.
Features
...
Custom mine sweeper game areas
Game timing function
Game record saving
Automatic game reset when player leaves the area
Automatic game reset when player switches maps
Custom mine count setting
Beautiful game interface
MineClear - Mine Sweeper Game Plugin
A mine sweeper game plugin developed for Nukkit servers, supporting custom game areas, timing functions, and game record saving.
Features
...
Custom mine sweeper game areas
Game timing function
Game record saving
Automatic game reset when player leaves the area
Automatic game reset when player switches maps
Custom mine count setting
Beautiful game interface
MineClear - Mine Sweeper Game Plugin
A mine sweeper game plugin developed for Nukkit servers, supporting custom game areas, timing functions, and game record saving.
Features
...
Custom mine sweeper game areas
Game timing function
Game record saving
Automatic game reset when player leaves the area
Automatic game reset when player switches maps
Custom mine count setting
Beautiful game interface
MineClear - Mine Sweeper Game Plugin
A mine sweeper game plugin developed for Nukkit servers, supporting custom game areas, timing functions, and game record saving.
Features
...
Custom mine sweeper game areas
Game timing function
Game record saving
Automatic game reset when player leaves the area
Automatic game reset when player switches maps
Custom mine count setting
Beautiful game interface
Fake Inventories
Easily create fake inventories that players can interact with.
Download
Usage
1. Add Dependency in plugin.yml
depend: - FakeInventories2. Get Service
public void onEnable() { RegisteredServiceProvider<FakeInventories> provider = getServer().getServiceManager().getProvider(FakeInventories.class); if (provider == null || provider.getProvider() == null) {...
Easily create fake inventories that players can interact with.
depend:
- FakeInventories
public void onEnable() {
RegisteredServiceProvider<FakeInventories> provider =
getServer().getServiceManager().getProvider(FakeInventories.class);
if (provider == null || provider.getProvider() == null) {
getLogger().error("FakeInventories not found!");
getServer().getPluginManager().disablePlugin(this);
return;
}
FakeInventories fakeInventories = provider.getProvider();
}
Single Chest (27 slots):
ChestFakeInventory inventory = new ChestFakeInventory();
// or with custom title
ChestFakeInventory inventory = new ChestFakeInventory(null, "Custom Title");
Double Chest (54 slots):
DoubleChestFakeInventory inventory = new DoubleChestFakeInventory();
// or with custom title
DoubleChestFakeInventory inventory = new DoubleChestFakeInventory(null, "Custom Title");
Hopper (5 slots):
HopperFakeInventory inventory = new HopperFakeInventory();
// or with custom title
HopperFakeInventory inventory = new HopperFakeInventory(null, "Custom Title");
inventory.setItem(0, Item.get(Item.DIAMOND));
inventory.setItem(1, Item.get(Item.GOLD_INGOT, 0, 64));
inventory.addListener(event -> {
Player player = event.getPlayer();
SlotChangeAction action = event.getAction();
int slot = action.getSlot();
Item sourceItem = action.getSourceItem(); // item before change
Item targetItem = action.getTargetItem(); // item after change
// Cancel the action (prevent item modification)
event.setCancelled();
// Handle click logic
player.sendMessage("You clicked slot " + slot);
});
player.addWindow(inventory);
public class MyPlugin extends PluginBase {
public void openMenu(Player player) {
ChestFakeInventory menu = new ChestFakeInventory(null, "My Menu");
// Set menu items
menu.setItem(0, Item.get(Item.DIAMOND).setCustomName("Option 1"));
menu.setItem(1, Item.get(Item.EMERALD).setCustomName("Option 2"));
menu.setItem(2, Item.get(Item.GOLD_INGOT).setCustomName("Option 3"));
// Handle clicks
menu.addListener(event -> {
event.setCancelled(); // Prevent taking items
Player p = event.getPlayer();
int slot = event.getAction().getSlot();
switch (slot) {
case 0:
p.sendMessage("Selected Option 1");
break;
case 1:
p.sendMessage("Selected Option 2");
break;
case 2:
p.sendMessage("Selected Option 3");
break;
}
p.removeWindow(event.getInventory()); // Close menu
});
player.addWindow(menu);
}
}
<repositories>
<repository>
<id>repo-lanink-cn</id>
<url>https://repo.lanink.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.nukkitx</groupId>
<artifactId>fakeinventories</artifactId>
<version>1.0.3-MOT-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
1.1.0
注意事项
- 从版本
1.0.1配置文件的自动更新不会受到配置文件的控制,配置文件如果有新的内容将会自动执行更新- 从版本
1.0.1起会对配置文件的版本号有异常的配置文件进行重置,在重置时会对旧配置文件进行备份- 不要随意修改配置文件的版本号,否则配置文件的更新机制所带来的后果需要自负
- 建议备份好已经配置好的配置文件,以便在配置文件自动更新时出现问题可以及时恢复
更新内容
- 删除代码中无用的参数 < ea296d7c >
- 调整并精简部分代码 <...
FireworkShow Plugin
A Nukkit plugin that creates spectacular automated firework displays in your Minecraft Bedrock Edition server.
Features
- Automated Firework Shows: Create stunning firework displays that run automatically in specified worlds
- Multi-World Support: Configure different firework shows for different worlds
- Customizable Positions: Set multiple spawn positions for fireworks in each world
-...
FireworkShow Plugin
A Nukkit plugin that creates spectacular automated firework displays in your Minecraft Bedrock Edition server.
Features
- Automated Firework Shows: Create stunning firework displays that run automatically in specified worlds
- Multi-World Support: Configure different firework shows for different worlds
- Customizable Positions: Set multiple spawn positions for fireworks in each world
-...
A Nukkit plugin that creates spectacular automated firework displays in your Minecraft Bedrock Edition server.
fireworkshow.admin (default: op)FireworkShow-3.0.0-SNAPSHOT.jar from releasesplugins folderconfig.yml fileThe plugin creates a config.yml file with the following structure:
configVersion: 4
# Global default settings (shared by all worlds)
global:
spawnTick: 40 # Ticks between spawns (20 = 1 second)
fireworkFlightDuration: 1 # Flight duration (1-3 recommended)
muteSpawnSound: false # Mute spawn sound
muteExplodeSound: false # Mute explosion sound
splitGroups: false # Alternate between position groups
# Per-world configurations
worlds:
lobby:
enabled: true
positions:
- {x: -12, y: 87, z: 29}
- {x: -29, y: 87, z: -12}
# ... more positions
spawnTick: Time between firework spawns (in ticks, 20 ticks = 1 second)fireworkFlightDuration: How long fireworks fly before exploding (1-3 recommended)muteSpawnSound: Whether to mute the firework launch soundmuteExplodeSound: Whether to mute the firework explosion soundsplitGroups: Split positions into alternating groups for varied patternsEach world can override global settings and has:
enabled: Whether fireworks are active in this worldpositions: List of coordinates where fireworks spawnAll commands use the base command /fireworkshow or /fws:
/fws help - Show command help/fws reload - Reload configuration/fws list - List all configured worlds/fws enable <world> - Enable fireworks in a world/fws disable <world> - Disable fireworks in a world/fws pos add <world> [x y z] - Add a firework spawn position/fws pos remove <world> <index> - Remove a position by index/fws pos list <world> - List all positions in a world/fws pos clear <world> - Clear all positions in a world/fws set <world> <setting> <value> - Set world-specific setting/fws global <setting> <value> - Set global settingspawnTick - Time between spawns (integer)flightDuration - Flight duration (integer, 1-3)muteSpawn - Mute spawn sound (true/false)muteExplode - Mute explosion sound (true/false)splitGroups - Use alternating groups (true/false) /fws pos add lobby 0 80 0
/fws pos add lobby 10 80 10
/fws enable lobby
/fws set lobby spawnTick 20
/fws set lobby flightDuration 2
/fws set lobby muteSpawn true
/fws set lobby muteExplode true
splitGroups option can help distribute load across multiple ticksfireworkshow.admin - Access to all plugin commands (default: op)The plugin supports multiple languages:
en_US)zh_CN)Language is automatically detected based on your server's language setting.
CustomCraft
A custom crafting and furnace recipe plugin for Nukkit-MOT
Features
- Supports shapeless crafting (similar to dye crafting)
- Supports shaped crafting (similar to tool crafting, requires a specific pattern)
- Supports craft count limits
- Supports extra output items
- Supports NBT items as crafting inputs or outputs
- Provides convenient in-game commands to add item configurations
Installation
- Download the CustomCraft plugin
.jar...
A custom crafting and furnace recipe plugin for Nukkit-MOT
.jar fileplugins folder of your Nukkit-MOT serverplugins/CustomCraftConfig file location: plugins/CustomCraft/craft.json
| Field | Type | Description |
|---|---|---|
| type | Integer | Recipe type: 0 = shapeless, 1 = shaped |
| maxCraftCount | Integer | Maximum craft count: -1 = unlimited, other values = specific limit (feature not fully implemented yet) |
| input | Array/Object | Input materials (see formats below) |
| output | String | Output item (format: ItemID:Damage:Amount) |
| shape | Array | Required for shaped recipes, defines crafting grid pattern |
| extraOutput | Array | Optional, list of additional output items |
The plugin supports three item formats:
ItemID:Damage:Amount58:0:1 → 1 crafting table (ID: 58, damage: 0)3:0 → dirt (ID: 3, damage: 0), amount defaults to 135:14:5 → 5 red wool (ID: 35, damage: 14)Used for items with enchantments, custom names, lore, or other NBT data.
ItemName@nbt/craft add <name> to save itName@nbtExamples:
"input": ["GodSword@nbt"]"output": "GodSword@nbt"Notes:
nbtItems.json in the formatItemID:Damage:Amount:NBTData (auto-generated, no manual editing required)/craft add <name>/craft add <name> and treat it as an NBT itemUsed for modern namespaced IDs:
namespace:item:amountminecraft:diamond_sword:1minecraft:netherite_ingot:1{
"type": 1,
"maxCraftCount": -1,
"input": {
"A": "GodSword@nbt",
"B": "minecraft:diamond:0:1",
"C": "minecraft:netherite_ingot:1"
},
"shape": [
"ABA",
"BCB",
"ABA"
],
"output": "SuperGodSword@nbt"
}
(Converting dirt into a crafting table)
{
"recipes": [
{
"type": 0,
"maxCraftCount": -1,
"input": [
"3:0"
],
"output": "58:0:1"
}
]
}
(9 dirt arranged in a 3×3 grid to craft a table, plus 1 extra dirt)
{
"recipes": [
{
"type": 1,
"maxCraftCount": -1,
"input": {
"A": "3:0"
},
"shape": [
"AAA",
"AAA",
"AAA"
],
"output": "58:0:1",
"extraOutput": [
"3:0:1"
]
}
]
}
The shape array defines the layout of items in the crafting grid:
"AAA" → all three slots filled with material A"A A" → left and right slots filled, middle empty" A " → only the center slot filledMultiple materials can be defined:
{
"type": 1,
"input": {
"A": "5:0",
"B": "280:0"
},
"shape": [
"AAA",
" B ",
" B "
],
"output": "269:0:1"
}
This example crafts a wooden pickaxe using planks and sticks.
If you want to use items with special attributes (enchantments, custom names, etc.) as inputs or outputs, use in-game commands to add them.
File location: plugins/CustomCraft/nbtItems.json
This file is maintained automatically and usually should not be edited manually:
{
"ItemName": "ItemID:Damage:Amount:NBTData"
}
Field Description:
ItemName: Custom identifier used in recipesItemID: Numeric ID or namespaced IDDamage: Item damage / metadataAmount: Item amountNBTData: Base64-encoded NBT data, or not if none{
"GodSword": "276:0:1:CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAA==",
"NormalDiamond": "264:0:1:not",
"CustomItem": "minecraft:diamond_sword:1:nbt"
}
/craft add GodSword
{
"type": 0,
"input": ["GodSword@nbt", "diamond:0:8"],
"output": "SuperGodSword@nbt"
}
Notes:
Edit craft.json, add recipes following the format above, then reload the plugin with /reload.
NBT items preserve all special attributes, including:
/craft add GodSwordItemName@nbt"input": ["GodSword@nbt"]"output": "GodSword@nbt"{
"type": 1,
"maxCraftCount": 1,
"input": {
"A": "diamond:0",
"B": "emerald:0"
},
"shape": [
"AAA",
"ABA",
"AAA"
],
"output": "GodSword@nbt"
}
{
"type": 0,
"maxCraftCount": -1,
"input": ["GodSword@nbt", "nether_star:0:1"],
"output": "SuperGodSword@nbt"
}
Important Notes:
nbtItems.json/reload| Command | Description | Permission |
|---|---|---|
/craft add <name> |
Save the held item to nbtItems configuration | customcraft.craft |
Permission Notes:
customcraft.craft is granted to OPs by defaultQ: Changes don’t take effect?
A: Restart the server after editing configuration files.
Q: How do I use enchanted items as ingredients?
A: Save them with /craft add <name> and reference them using name@nbt.
Q: Is the @nbt suffix required?
A: Yes, it is mandatory when referencing items from nbtItems.json.
Q: What’s the difference between normal and namespaced item formats?
A:
ID:Damage:Amount (e.g. 276:0:1)minecraft:item_name (e.g. minecraft:diamond_sword)Q: What is extraOutput used for?
A: It allows additional items to be given alongside the main output.
Q: Does maxCraftCount = 1 mean only one player can craft it?
A: No, it limits crafting per player, not globally.
Q: How do I view saved NBT items?
A: Open plugins/CustomCraft/nbtItems.json.
If you encounter issues or have suggestions, feel free to submit an issue:
ElySecurity Server Security Plugin
A powerful Minecraft Nukkit server security plugin providing comprehensive player management and content security features.
🚀 Features
🔒 Core Security Functions
- OP Permission Management - Dual storage mode: Database/File
- Permission Status Synchronization - Real-time detection and synchronization of player permissions
- Content Security Detection - Supports dual detection via local and Baidu API
🛡️ Anti-Violation...
A powerful Minecraft Nukkit server security plugin providing comprehensive player management and content security features.
Place ElySecurity.jar into the plugins/ directory and restart the server.
Edit plugins/ElySecurity/config.yml:
# Basic Settings
language: "zh_CN" # Language: zh_CN / en_US
# Storage Mode Selection
mysql:
enabled: false # Disable MySQL, use file storage
Execute in the console:
op add YourGameID
mysql:
enabled: false
OP list will be saved at: plugins/ElySecurity/admin.yml
mysql:
enabled: true
host: "localhost"
port: 3306
database: "elysecurity"
username: "root"
password: "your_password"
anti-spam:
enabled: true
message-interval: 1000 # Message interval(ms)
similarity-threshold: 0.8 # Similarity threshold
punishment: "kick" # Punishment method: warning/kick
prohibited-words:
enabled: true
mode: "local" # local/baidu/both
punishment: "mute" # Punishment method: warning/kick/mute
mute-duration: 300 # Mute duration(seconds)
| Command | Permission | Description | Example |
|---|---|---|---|
/op add <player> |
elysecurity.op | Add OP permission | /op add Steve |
/op remove <player> |
elysecurity.op | Remove OP permission | /op remove Alex |
⚠️ Note: OP commands can only be executed from the server console.
plugins/ElySecurity/
├── config.yml # Main configuration file
├── admin.yml # OP list (File mode)
├── prohibited-words.yml # Prohibited word library
├── lang/
│ ├── zh_CN.yml # Chinese language file
│ └── en_US.yml # English language file
└── logs/ # Log directory
redis:
enabled: true
host: "localhost"
port: 6379
password: ""
baidu-api:
enabled: true
api-key: "your_api_key"
secret-key: "your_secret_key"
Edit prohibited-words.yml:
local-words:
- "Banned Word 1"
- "Banned Word 2"
- "Banned Word 3"
admin.ymlops table in MySQLWhen reporting issues, please provide:
Feature suggestions are welcome via GitHub Issues.
This project is licensed under the MIT License. See the LICENSE file for details.
Other plugins can call this plugin's Baidu content moderation function via:
// Get the ElySecurity plugin instance
PluginBase elySecurity = getServer().getPluginManager().getPlugin("ElySecurity");
// Check if content violates rules
if (elySecurity instanceof cn.ElysianArena.ElySecurity.Main) {
cn.ElysianArena.ElySecurity.Main main = (cn.ElysianArena.ElySecurity.Main) elySecurity;
cn.ElysianArena.ElySecurity.security.ViolationResult result = main.getProhibitedWords().checkContent(playerName, content);
if (result.isViolated()) {
// Handle violating content
String source = result.getSource(); // Violation source (local/baidu)
List<String> details = result.getViolationDetails(); // Violation details
double confidence = result.getConfidence(); // Confidence level
}
}
The returned ViolationResult object contains the following fields:
violated: Whether it violates rulesviolationType: Violation type IDsubType: SubtypeviolationDetails: Violation details (e.g., matched keywords)source: Detection source (local/baidu)confidence: Confidence levelmessage: Additional messageRedirectCMD
A very simple command replacement plugin, initially designed for ElysianArena.
Feature Overview
This plugin allows customization of command aliases via a configuration file. When a player or the console executes a registered alias command, it automatically triggers a predefined series of commands.
Core Features
- Dynamic Command Registration: Automatically registers commands based on the configuration file...
commands:
- name: "startgame"
description: "Command to start the game"
recommand:
- "say The game is about to start!"
- "effect @a clear"
- "time set day"
PepperShop-MOT
A Nukkit plugin, developed based on PepperShop, which in turn is based on QuickShopX, and QuickShopX itself is derived from the original QuickShop plugin by author WetABQ.
Features of PepperShop-MOT
- Support for Nukkit-MOT
- Compatible with the latest version of the Land plugin...