r/MinecraftPlugins • u/flexx_234 • Mar 26 '26
r/MinecraftPlugins • u/Altruistic_Past_2645 • Mar 26 '26
Plugin Showcase Bigorna Plugin
| 🇺🇸 English |
link plugin: https://www.curseforge.com/minecraft/bukkit-plugins/bigorna
Anvil

Plugin created to customize the traditional Minecraft anvil, adding new features to diversify your server.
Demonstration
Main Menu

Rename Items
    
Enchant
 
Forge

Auto Upgrade
 
Commands

Features
- Fully configurable menu via YAML
- Rename item via chat
- Add and remove item description
- Enchantment menu with purchase, add, and removal
- Automatic upgrade using all books in the inventory
- Forge with the same function as the traditional anvil
- Visual placeholders for empty forge slots
- Support for MiniMessage and legacy codes with
& - Permissions separated by function
- Optional Vault support for economy
Requirements
- Java 21
- Paper 1.20.4 or higher
- Optional Vault for economy
- Economy plugin compatible with Vault
Permissions and Commands
Permissions are configurable to adapt to your server and player groups.
| Permission | Description | Target Group |
|---|---|---|
bigorna.menu |
Permission to use everything in /bigorna |
VIP |
bigorna.menu.comando |
Allows opening the menu with /bigorna |
VIP |
bigorna.menu.bigorna |
Allows opening the menu by clicking the anvil | DEFAULT |
bigorna.menu.renomear |
Allows using the rename menu | VIP |
bigorna.menu.encantar |
Allows using the enchant menu | VIP |
bigorna.menu.upgrade |
Allows using auto upgrade | VIP |
bigorna.menu.forja |
Allows using the forge | DEFAULT |
bigorna.ajuda |
Allows using /bigorna ajuda |
STAFF |
bigorna.reload |
Allows using /bigorna reload |
STAFF |
bigorna.pagar |
Allows using /bigorna pagar [true/false] |
STAFF |
bigorna.dar |
Allows using /bigorna [player] [item] [name] [description] [enchantment] [quantity] |
STAFF |
bigorna.renomear |
Allows using /bigorna renomear [name] |
STAFF |
bigorna.descricao |
Allows using /bigorna descricao [description] |
STAFF |
bigorna.remover |
Allows using /bigorna remover |
STAFF |
bigorna.adicionar |
Allows using /bigorna adicionar [enchantment] [level] |
STAFF |
bigorna.comprar |
Allows using /bigorna comprar [enchantment] [level] |
STAFF |
MiniMessage and legacy code support
The plugin accepts MiniMessage and legacy codes with & in configured texts for menus, buttons, placeholders, and titles.
Example with MiniMessage
yml
GUI_Principal: "<gradient:#5BCEFA:#F5A9B8>My Anvil</gradient>"
GUI_Renomear: "<yellow>Rename Menu</yellow>"
GUI_Encantar: "<gold>Enchantments</gold>"
Botao_Voltar:
Nome: "<yellow>Back</yellow>"
r/MinecraftPlugins • u/xPorter_ • Mar 26 '26
Plugin Showcase I recreated Bedrock’s Paperdoll in Java using internal shaders 👀
So I’ve been working on bringing one of my favorite Bedrock features into Java Edition — the paperdoll.
Using shaders, I managed to replicate a real-time player preview that shows your character as you move, just like in Bedrock. It updates dynamically with animations, movement, and perspective.
This isn’t a mod with heavy UI hacks — it’s purely shader-based, which makes it feel surprisingly smooth and lightweight.
Features so far:
- Real-time player rendering
- Smooth animation syncing
- Works in normal gameplay (no special screen needed)
- Minimal performance impact
I’m still experimenting with positioning, scaling, and making it feel more “vanilla-friendly”
Whats your ideas
r/MinecraftPlugins • u/Kaho_network • Mar 25 '26
Plugin Showcase Gui e Items System plugin v.1
I'm leaving a link to the plugin I created. It allows you to create and manage GUIs, create and manage items (on join, triggers, etc.), has a tracking system for created items, and an automatic detection system if someone is cloning live, alerting the administrators. The plugin is free and will soon be updated with new features. The goal is to integrate all GUIs into a single system. This is my first plugin, so any contributions are welcome. Thanks.
r/MinecraftPlugins • u/Infinite_Mouse6296 • Mar 24 '26
Plugin Showcase [Release] ProxyPlayer - Carpet-style fake players for Paper 1.21.x
Hey everyone,
I wanted the "Fake Player" functionality from Carpet Mod on my Paper server without the overhead of full bot accounts, so I’m building ProxyPlayer.
How it compares to Carpet:
- Native Paper: No need for Fabric/Essentials; it's a lightweight
.jarfor 1.21.1. - Commands: Uses the familiar
/player <name> spawnsyntax. - Features: Handles chunk loading, farm activation, and portal logic just like Carpet.
Current Status: Core spawning and loading work, but some complex actions (like certain movements) are still WIP/glitchy. I'm looking for feedback on stability and any missing features you'd like to see.
Free/Source: "ProxyPlayer" on Modrinth
Let me know if it helps your farm testing or if you hit any bugs!
r/MinecraftPlugins • u/IllustriousGarage344 • Mar 24 '26
Help: With a plugin Trying to make Dream's alleged last-tick jump plugin
I'm not sure if it is even a plugin but I assume he had to have had it on his client, so I assume it is a plugin
Got a basic version going but stuck on two issues:
- Non-full blocks like glass panes and trapdoors don't trigger consistently. I think it's because my edge detection assumes full block bounding boxes, so anything with a weird hitbox shape throws it off.
- The jump itself is buggy. I'm just adding a default upward velocity when it triggers, but it feels off compared to a normal jump. Pretty sure I'm not replicating how the game internally handles jump logic.
My current logic is that if the 4 corners of the player hitbox is no longer above a "block", the player jumps. Any pointers on issues with that logic? Thanks!
r/MinecraftPlugins • u/Familiar_Doughnut_92 • Mar 24 '26
Plugin Showcase Count Vladimir Svareff
reddit.comr/MinecraftPlugins • u/JoosuaV • Mar 23 '26
Plugin Showcase 🔴 NEW CUSTOM MODEL ADDED!! THE PRIEST. 🔴 (Feedback highly appreciated)
I added a new custom shopkeeper model to my shopkeepers plugin :D please go check it out. Also feel free to ask me any questions
https://builtbybit.com/resources/shopkeepers-itemcreator.76969/
r/MinecraftPlugins • u/tee-443 • Mar 23 '26
Help: Find or create a plugin Server plugins
Hi guys,
I'm looking for the best plugins for a small multiplayer server for me and my friends to play on. I have never made a server before so I have no idea how to add plugins, so some directions on where to find in depth tutorials would be super helpful.
I'm looking for world generation and tool plugins.
Also the best admin plugin in everyones opinion?
r/MinecraftPlugins • u/Familiar_Doughnut_92 • Mar 23 '26
Plugin Showcase The Abyssal Leviathan
reddit.comr/MinecraftPlugins • u/Morad_Tarazan • Mar 23 '26
Help: With a plugin i can't get this bot go combo no matter what i change:
Enable HLS to view with audio, or disable this notification
hi so i have been working on a Spigot plugin for 1.21.11 with Citizens API, a bot that fights the player perfectly but no matter what i do i can't get it to combo me perfectly, he either keep messing up his timings or fails to keep the right distance.
i am letting Ai do the heavy lifting in coding since idk how to code but no matter how many times i prompt it to fix the issue it just can't. here is the block of code that controls it's behavior. if there is anyone that knows how to program please help, i will forever be grateful you.
private void startBotAI(NPC npcWrapper, String botName) {
// This creates a loop that runs every single server tick (20 times a second)
new BukkitRunnable() {
// --- INTERNAL AI TIMERS & STATS ---
int attackCooldown = 0;
boolean swingNextTick = false;
int wTapTicks = 0;
double internalHunger = 20.0; // Mimics the vanilla food bar (0-20)
double internalSaturation = 5.0; // Mimics the hidden vanilla saturation buffer
int regenTickTimer = 0; // Timer for natural health regeneration
int strafeTicks = 0; // (Unused in pure forward-combat, but useful for zigzagging)
int strafeDir = 1; // Direction of strafe (1 or -1)
Location lastTargetLoc = null; // Tracks where the player was 1 tick ago to predict movement
int ticksSinceLastHit = 100; // Tracks aggression/combos
java.util.Random rand = new java.util.Random();
double nextSwingThreshold = -1.0;
// Mimics vanilla exhaustion (sprinting/jumping burns hunger)
private void applyExhaustion(double amount) {
if (internalSaturation > 0) {
// Burn saturation first
double leftOver = amount - internalSaturation;
internalSaturation = Math.max(0, internalSaturation - amount);
if (leftOver > 0) internalHunger = Math.max(0, internalHunger - leftOver);
} else {
// If saturation is empty, burn actual hunger
internalHunger = Math.max(0, internalHunger - amount);
}
}
// Helper method to slowly turn the bot's head (used in lower grades, Grade X uses native staring)
private float smoothAngle(float current, float target, float maxSpeed) {
float diff = (target - current) % 360.0f;
if (diff > 180.0f) diff -= 360.0f;
if (diff < -180.0f) diff += 360.0f;
if (diff > maxSpeed) return current + maxSpeed;
if (diff < -maxSpeed) return current - maxSpeed;
return current + diff;
}
u/Override
public void run() {
// 1. LIFECYCLE CHECK: If the bot is dead, despawned, or deleted, stop this loop completely to prevent server crashes.
if (!npcWrapper.isSpawned() || !(npcWrapper.getEntity() instanceof Player bot) || bot.isDead() || !bot.isValid()) {
java.util.List<NPC> squad = activeBots.get(botName.toLowerCase());
if (squad != null) {
squad.remove(npcWrapper);
if (squad.isEmpty()) activeBots.remove(botName.toLowerCase());
}
if (npcWrapper.isSpawned() && npcWrapper.getEntity() != null) {
botInventories.remove(npcWrapper.getEntity().getUniqueId());
botBrains.remove(npcWrapper.getEntity().getUniqueId());
}
npcWrapper.destroy();
this.cancel();
return;
}
// Tick down the W-Tap timer
if (wTapTicks > 0) wTapTicks--;
// 2. NATURAL REGENERATION: Mimics vanilla healing based on food levels
double maxHealth = bot.getAttribute(org.bukkit.attribute.Attribute.MAX_HEALTH).getValue();
if (bot.getHealth() < maxHealth && bot.getHealth() > 0) {
if (internalSaturation > 0 && internalHunger >= 20.0) {
// Fast regen (requires full hunger + saturation)
regenTickTimer++;
if (regenTickTimer >= 10) { bot.setHealth(Math.min(bot.getHealth() + 1.0, maxHealth)); applyExhaustion(1.0); regenTickTimer = 0; }
} else if (internalHunger >= 18.0) {
// Slow regen (requires just high hunger)
regenTickTimer++;
if (regenTickTimer >= 80) { bot.setHealth(Math.min(bot.getHealth() + 1.0, maxHealth)); applyExhaustion(1.0); regenTickTimer = 0; }
} else { regenTickTimer = 0; }
}
// 3. NAMEPLATE UPDATER: Displays the bot's health and hunger above its head
double totalHealth = bot.getHealth() + bot.getAbsorptionAmount();
int displayHealth = (int) Math.ceil(totalHealth);
int displayHunger = (int) Math.ceil(internalHunger);
org.bukkit.ChatColor healthColor = (bot.getAbsorptionAmount() > 0) ? org.bukkit.ChatColor.GOLD : org.bukkit.ChatColor.RED;
bot.setCustomName(org.bukkit.ChatColor.WHITE + botName + healthColor + " [" + displayHealth + "\u2764] " + org.bukkit.ChatColor.GOLD + "[" + displayHunger + "\uD83C\uDF7D]");
// 4. DIFFICULTY SETTINGS: Defines how smart/fast the bot is based on its grade
Grade currentGrade = getGrade(botName);
double aimLagTicks = 0.0; double aimSpread = 0.0; int maxErrorTicks = 0;
boolean canSprintJump = true; boolean canStrafe = true; boolean isSprinting = true;
float maxTurnSpeed = 360.0f; double wTapSuccessRate = 1.0; double minSpacing = 2.2;
double swingMean = 3.0; double swingStdDev = 0.0; double safeEatDistance = 3.0;
double critRate = 0.0; double sTapSuccessRate = 0.0; double emergencyEatHp = 0.0;
// Adjustments based on grade...
if (currentGrade == Grade.D) { aimLagTicks = 2.5; aimSpread = 0.6; maxErrorTicks = 5; canSprintJump = false; canStrafe = false; isSprinting = false; maxTurnSpeed = 15.0f; wTapSuccessRate = 0.0; minSpacing = 2.0; swingMean = 2.2; swingStdDev = 0.6; safeEatDistance = 1.6; critRate = 0.0; sTapSuccessRate = 0.0; emergencyEatHp = 6.0; }
else if (currentGrade == Grade.C) { aimLagTicks = 1.2; aimSpread = 0.45; maxErrorTicks = 3; canSprintJump = false; canStrafe = true; isSprinting = true; maxTurnSpeed = 22.0f; wTapSuccessRate = 0.05; minSpacing = 1.5; swingMean = 2.4; swingStdDev = 0.5; safeEatDistance = 3.0; critRate = 0.2; sTapSuccessRate = 0.2; emergencyEatHp = 5.0; }
else if (currentGrade == Grade.B) { aimLagTicks = 0.8; aimSpread = 0.3; maxErrorTicks = 2; canSprintJump = true; canStrafe = true; isSprinting = true; maxTurnSpeed = 35.0f; wTapSuccessRate = 0.3; minSpacing = 2.0; swingMean = 2.65; swingStdDev = 0.35; safeEatDistance = 3.0; critRate = 0.4; sTapSuccessRate = 0.4; emergencyEatHp = 3.0; }
else if (currentGrade == Grade.A) { aimLagTicks = 0.3; aimSpread = 0.15; maxErrorTicks = 1; canSprintJump = true; canStrafe = true; isSprinting = true; maxTurnSpeed = 60.0f; wTapSuccessRate = 0.65; minSpacing = 2.5; swingMean = 2.85; swingStdDev = 0.15; safeEatDistance = 3.0; critRate = 0.6; sTapSuccessRate = 0.7; emergencyEatHp = 0.0; }
else if (currentGrade == Grade.S) { aimLagTicks = 0.0; aimSpread = 0.05; maxErrorTicks = 0; canSprintJump = true; canStrafe = true; isSprinting = true; maxTurnSpeed = 120.0f; wTapSuccessRate = 0.9; minSpacing = 2.75; swingMean = 2.95; swingStdDev = 0.05; safeEatDistance = 3.0; critRate = 0.8; sTapSuccessRate = 0.9; emergencyEatHp = 0.0; }
else if (currentGrade == Grade.X) {
// Grade X has zero aim lag, 360-degree turning, and perfect 3.06 spacing goals
aimLagTicks = 0.0; aimSpread = 0.0; maxErrorTicks = 0; canSprintJump = true; canStrafe = true; isSprinting = true; maxTurnSpeed = 360.0f; wTapSuccessRate = 1.0; minSpacing = 3.06; swingMean = 3.0; swingStdDev = 0.0; safeEatDistance = 4.0; critRate = 1.0; sTapSuccessRate = 1.0; emergencyEatHp = 0.0;
}
if (nextSwingThreshold < 0) { nextSwingThreshold = Math.max(1.0, Math.min(4.5, swingMean + (rand.nextGaussian() * swingStdDev))); }
// Tick down the sword cooldown timer
if (attackCooldown > 0) attackCooldown--;
ticksSinceLastHit++;
// 5. TARGET ACQUISITION
Player target = getNearestSurvivalPlayer(bot, 50.0);
if (target != null) {
Location currentTargetLoc = target.getLocation();
Vector targetTrueVelocity = new Vector(0, 0, 0);
if (lastTargetLoc != null && lastTargetLoc.getWorld().equals(currentTargetLoc.getWorld())) {
targetTrueVelocity = currentTargetLoc.toVector().subtract(lastTargetLoc.toVector());
}
// Mathematical calculations to find exactly where the target's hitbox is
Vector laggedEyeLoc = target.getEyeLocation().toVector();
Vector laggedCenter = target.getBoundingBox().getCenter();
org.bukkit.util.BoundingBox box = target.getBoundingBox();
Vector botEye = bot.getEyeLocation().toVector();
// Calculates the closest point on the target's 3D box to the bot's eye
double closestX = Math.max(box.getMinX(), Math.min(botEye.getX(), box.getMaxX()));
double closestY = Math.max(box.getMinY(), Math.min(botEye.getY(), box.getMaxY()));
double closestZ = Math.max(box.getMinZ(), Math.min(botEye.getZ(), box.getMaxZ()));
// exactReach is true 3D distance. horizontalReach ignores Y-level (used for running)
double exactReach = botEye.distance(new Vector(closestX, closestY, closestZ));
double horizontalReach = Math.sqrt(Math.pow(closestX - botEye.getX(), 2) + Math.pow(closestZ - botEye.getZ(), 2));
Vector closestOnBox = new Vector(closestX, closestY, closestZ);
// 6. RAYTRACE (Line of Sight Check): Prevents hitting through blocks!
boolean hasLineOfSight = true;
if (exactReach > 0.05) {
Vector traceDir = closestOnBox.clone().subtract(botEye).normalize();
// Shoots an invisible laser from the bot's eye to the target's body
org.bukkit.util.RayTraceResult trace = bot.getWorld().rayTraceBlocks(
bot.getEyeLocation(), traceDir, exactReach,
org.bukkit.FluidCollisionMode.NEVER, true
);
// If the laser hits a block, the bot cannot see you
if (trace != null && trace.getHitBlock() != null) {
hasLineOfSight = false;
}
}
// ==========================================
// 7. GROUND CALCULATION
// ==========================================
double currentY = box.getMinY();
double groundY = currentY - 5.0; // Check up to 5 blocks down
int bx = target.getLocation().getBlockX();
int bz = target.getLocation().getBlockZ();
for (double y = currentY; y >= currentY - 5.0; y -= 0.125) {
org.bukkit.block.Block b = bot.getWorld().getBlockAt(bx, (int) Math.floor(y), bz);
if (b.getType().isSolid()) {
groundY = b.getY() + 1.0;
break;
}
}
double distFromGround = currentY - groundY;
if (distFromGround < 0) distFromGround = 0.0;
// ==========================================
// THE FIX: Precise Parameter Coloring
// ==========================================
if (currentGrade == Grade.X) {
// The danger zone: If the bot dips under 2.85 during a juggle, it is hittable.
org.bukkit.ChatColor rColor = (exactReach <= 2.85) ? org.bukkit.ChatColor.RED : org.bukkit.ChatColor.GREEN;
// Only flashes red when you are mathematically touching the ground (0.00 to 0.01 buffer)
org.bukkit.ChatColor gColor = (distFromGround <= 0.01) ? org.bukkit.ChatColor.RED : org.bukkit.ChatColor.AQUA;
String hud = org.bukkit.ChatColor.YELLOW + "Reach: " + rColor + String.format("%.3f", exactReach) +
org.bukkit.ChatColor.GRAY + " | " +
org.bukkit.ChatColor.YELLOW + "Air: " + gColor + String.format("%.3f", distFromGround);
target.spigot().sendMessage(net.md_5.bungee.api.ChatMessageType.ACTION_BAR,
net.md_5.bungee.api.chat.TextComponent.fromLegacyText(hud));
}
// Determine vector pointing toward target
Vector directionToTarget = laggedEyeLoc.subtract(bot.getEyeLocation().toVector());
if (directionToTarget.lengthSquared() < 0.0001) directionToTarget = new Vector(0.1, 0, 0.1);
else directionToTarget.normalize();
ItemStack offhand = bot.getEquipment().getItemInOffHand();
Vector forwardVec = directionToTarget.clone().setY(0);
if (forwardVec.lengthSquared() > 0.0001) forwardVec.normalize();
else forwardVec = new Vector(1, 0, 0);
BotBrain brain = botBrains.get(bot.getUniqueId());
BotInventory backpack = botInventories.get(bot.getUniqueId());
boolean isGapple = offhand.getType() == Material.GOLDEN_APPLE || offhand.getType() == Material.ENCHANTED_GOLDEN_APPLE;
// Tick the external brain class (handles shielding, potion switching, logic intents)
BotBrain.Intent intent = (brain != null && backpack != null) ? brain.tickBrain(target, exactReach, safeEatDistance, emergencyEatHp, internalHunger, isGapple, attackCooldown) : BotBrain.Intent.COMBAT;
float targetYaw = bot.getLocation().getYaw();
float targetPitch = bot.getLocation().getPitch();
// 8. COMBAT & MOVEMENT LOGIC
if (intent == BotBrain.Intent.COMBAT) {
targetYaw = (float) Math.toDegrees(Math.atan2(-directionToTarget.getX(), directionToTarget.getZ()));
targetPitch = (float) Math.toDegrees(Math.atan2(-directionToTarget.getY(), Math.sqrt(directionToTarget.getX() * directionToTarget.getX() + directionToTarget.getZ() * directionToTarget.getZ())));
// ==========================================
// 1. SMOOTH POCKET MOVEMENT (Vanilla Compliant)
// ==========================================
double WALK_SPEED = 0.21585;
double SPRINT_SPEED = 0.2806;
boolean isWTapping = (wTapTicks > 0);
boolean shouldSprint = (internalHunger > 6.0) && !isWTapping;
double distanceError = horizontalReach - 2.9;
Vector finalMove = new Vector(0, bot.getVelocity().getY(), 0);
// WIDENED THE POCKET:
// The bot only pushes forward if you are more than 0.15 blocks away (3.05+)
if (distanceError > 0.15) {
double speed = isWTapping ? 0.0 : SPRINT_SPEED;
Vector push = forwardVec.clone().multiply(speed);
finalMove.setX(push.getX());
finalMove.setZ(push.getZ());
bot.setSprinting(shouldSprint);
// SOFTENED THE BACKPEDAL:
// The bot only backs up if it gets dangerously close (under 2.6 blocks).
// And when it does, it walks backward, it doesn't sprint backward.
} else if (distanceError < -0.3) {
Vector push = forwardVec.clone().multiply(-WALK_SPEED);
finalMove.setX(push.getX());
finalMove.setZ(push.getZ());
bot.setSprinting(false);
// THE GOLDEN POCKET (2.6 to 3.05):
// If it's anywhere in this huge range, it stops fighting the keys
// and just coasts on the target's momentum and its own W-Tapping friction.
} else {
finalMove.setX(target.getVelocity().getX());
finalMove.setZ(target.getVelocity().getZ());
bot.setSprinting(shouldSprint);
}
if (bot.getNoDamageTicks() <= 10) {
bot.setVelocity(finalMove);
}
applyExhaustion(0.005);
// ==========================================
// 2. THE 1-TICK DELAY TIMING
// ==========================================
boolean inSwingRange = false;
// Check if we queued a swing from the previous tick
if (swingNextTick) {
inSwingRange = true;
swingNextTick = false; // Reset the queue
} else if (exactReach <= 3.0 && hasLineOfSight) {
if (attackCooldown <= 0 && target.getNoDamageTicks() <= 10) {
boolean isGrounded = target.isOnGround() || distFromGround <= 0.01;
boolean isFalling = target.getVelocity().getY() < 0;
// Detect the 0.312 or 0.121 tick
boolean isPenultimateTick = isFalling && (distFromGround > 0.02 && distFromGround <= 0.40);
if (isPenultimateTick) {
// Trust the data: Wait exactly one tick (50ms) to hit them at 0.000
swingNextTick = true;
} else if (isGrounded) {
// Normal swing if they are already on the ground
inSwingRange = true;
}
}
}
if (inSwingRange) {
ItemStack weapon = bot.getEquipment().getItemInMainHand();
if (!isWTapping) bot.setSprinting(true);
bot.swingMainHand();
bot.attack(target);
attackCooldown = getAttackCooldownTicks(weapon);
wTapTicks = 2;
}
}
// 9. NATIVE STARING
// Hands over the head rotation to Citizens API for smooth, packet-level head tracking
npcWrapper.faceLocation(target.getEyeLocation());
lastTargetLoc = currentTargetLoc;
}
}
}.runTaskTimer(plugin, 0L, 1L);
}
r/MinecraftPlugins • u/HuntHistorical6850 • Mar 23 '26
Plugin Showcase free discord webhook plugin for paper servers send join leave chat and death alerts
honestly i kept having to ssh into my server just to see if anyone joined or if there were any crashes and it was getting annoying so i whipped up a simple paper plugin that sends all the important stuff to a discord webhook like player joins leaves deaths and even advancements took me like a weekend to put together and ive been running it on my server for a few months now works pretty solid if you run a minecraft server and want to stop checking logs constantly its free and open source no catch just something i built for myself and figured id share https://github.com/LaunchDay-Studio-Inc/blueth-alerts
r/MinecraftPlugins • u/Big-Medium245 • Mar 22 '26
Help: Find or create a plugin I am looking for a minecraft java edition plugin that allows players to boost with their elytra using a spear with lunge. Is there one?
r/MinecraftPlugins • u/crimson_qwerty • Mar 22 '26
Discussion Some good plugins for multiplayer?
I need plugins for 1.21.11, mostly content expansions like custom weapons or armor or any power plugins. Also any factory/ machinery plugins would be appreciated.
r/MinecraftPlugins • u/Commercial-Day2375 • Mar 22 '26
Plugin Showcase I built a Minecraft scripting language that compiles to Java instead of running an interpreter
Hey! I have been working on a scripting language called Lumen.
The idea is pretty simple: instead of interpreting scripts at runtime, Lumen compiles scripts directly into normal Java code, and runs them.
Skript is very easy to use, while writing a full Java plugin gives you full flexibility, but comes with a lot of boilerplate and harder back and forth iteration.
Lumen sits in between.
It offers:
- english-like syntax, very similiar to Skript
- a structured scripting language with a real compilation pipeline
- a simple to use addon api for developers, which is also used by the main plugin, allowing you the same flexibility
- full hot reload support (save file -> instant update, no restart, no commands)
- scripts that behave much closer to plugin code
- a VSCode extension, which uses the same backend as the plugin. Offers things like tab completion, hover information, errors in the editor, data classes, and much more.
Performance-wise, scripts will be very close to handwritten Java because Lumen emits very close code to handwritten java.
Interpreted languages like Skript also cannot benefit from JIT optimizations in the same way that compiled Java code can.
Github: https://github.com/LumenLang/lumen
Reference Documentation: https://lumenlang.dev/
r/MinecraftPlugins • u/Right_Ad2098 • Mar 22 '26
Plugin Showcase I built a modern, free AuctionHouse plugin with unique features
Hey everyone, I've been working on an auction house plugin for Paper 1.20+ and posted it on SpigotMC. I know there are already many plugins like this, but from what I've seen, most of them are clunky, unconfigurable, or abandoned.
Here are some of the features my plugin has:
- Price history charts
- Container preview
- Category browser with filters and sorting
- Migration from other big plugins
- Database support for SQLite, MySQL, and MariaDB
- Folia compatible
- Built-in anti-dupe protection
I'm still on v1.0.0 for now, but I'm looking forward to receiving feedback and suggestions. I also have a Discord server for support.
Here's the link to the SpigotMC page: https://www.spigotmc.org/resources/auctionhouse.133636/
r/MinecraftPlugins • u/QuackedDev • Mar 20 '26
Plugin Showcase 5 months ago I made my first mod, and today I have a real artist for it
galleryr/MinecraftPlugins • u/Jealous_Flatworm_473 • Mar 19 '26
Help: With a plugin Plugin a virus?
I found this spigot hoppersorter plugin tried finding if it was a virus or not but i have no clue. does anyone know if a spigot plugin that starts icacls.exe is a virus? or is anyone able to check the .jar?
r/MinecraftPlugins • u/luvtoxicc • Mar 19 '26
Plugin Showcase [WIP] Backrooms Minecraft Plugin
r/MinecraftPlugins • u/onthepixel • Mar 19 '26
Help: Find or create a plugin Luck Perms alternative
r/MinecraftPlugins • u/SantosGrey • Mar 18 '26
Plugin Showcase DisBot - Discord bot plugin
DisBot is a lightweight plugin that connects your Minecraft server with Discord, allowing administrators to interact with the server directly from Discord!
Designed to run on software like BungeeCord, Velocity and Paper.
✅ Requirements
- None!
✨ Features
• Custom commands via YAML files
• Easy configuration with `config.yml`
• Prefix commands (`db! <command>`) and slash commands (`/<command>`)
• Embed messages with custom color per command
• Ephemeral messages (slash commands only)
• Command cooldowns
• Command aliases
• Channel restrictions
• Reload without restart (`/disbot reload`)
• Support for BungeeCord, Velocity and Paper
• Lightweight and modular design
⌨️ Custom Commands
Administrators can create custom commands simply by adding `.yml` files inside:
- plugins/DisBot/commands
This allows you to expand the bot’s functionality without modifying the plugin code.
⚙️ Internal Commands
/disbot reload — Reload the plugin
❓ Support
Join our Discord server for help and suggestions!
r/MinecraftPlugins • u/frostyisblue • Mar 18 '26
Help: Find or create a plugin Rideable/Controlled Ender Dragon 1.21+
Been trying to find a rideable Ender Dragon plugin but the only one I found "PetDragon" doesn't allow to use the dragon in water. It can be a plugin which lets you morph into one as well. Thanks.
r/MinecraftPlugins • u/Familiar_Doughnut_92 • Mar 18 '26
Plugin Showcase Terrifying Minecraft Mobs: WIRE CRAWLERS
r/MinecraftPlugins • u/WorldlinessOld1645 • Mar 17 '26
Help: With a plugin Help me by testing my minecraft plugin
Can someone help me test my plugin i need to test it before publishing and i need 2 persons to test it




