Minecraft Paper/Spigot plugin that brings Hypixel SkyBlock items, bosses, and mechanics to vanilla survival. Combat-focused, designed as a standalone plugin — incompatible with other combat plugins.
- Java: 21 | Minecraft: 1.21.11 | Server: Paper or Spigot
- Build:
mvn clean install(output intarget/) - Entry point:
misc.Plugin(singleton viaPlugin.getInstance()) - No test suite — all testing is manual/in-game
src/main/java/
commands/ # Command executors (registered in Plugin.onEnable)
items/ # Custom items by category
armor/ # Armor pieces
ingredients/ # Crafting materials (mining/, misc/, witherLords/)
misc/ # Misc items
summonItems/ # Boss summoning items
weapons/ # Weapons (Scylla, Claymore, etc.)
listeners/ # Event handlers (21+ classes)
mobs/ # Boss/mob implementations (57+ classes)
enderDragons/ # Dragon variants
generic/ # General bosses
hardmode/ # Hard mode variants (enderDragons/, generic/, withers/)
withers/ # Wither lords
misc/ # Core utilities (Plugin, Utils, AddRecipes, BossBarManager)
src/main/resources/
plugin.yml # Plugin metadata
- Implement
items.CustomIteminterface; register inCustomItem.ItemRegistry - Static
getItem()returns a freshItemStackwith lore, attributes, enchants - First lore line = item ID (namespaced:
skyblock/{category}/{name}) - Ability items implement
AbilityItem(right/left click, mana cost, cooldown) - Glint-only items use
setEnchantmentGlintOverride(true)— do NOT add Knockback 1 ItemReloader.refreshItem()rebuilds items fromgetItem()on login; only preserves enchantments for items without glint override
- Implement
mobs.CustomMobinterface; register inCustomMob.MobRegistry - Singletons — one instance per mob type
- Key methods:
onSpawn(),whenDamaged(),whenDamaging() - Tag with
"SkyblockBoss"scoreboard tag; usesetPersistent(true) - Hard mode triggered by BAD_OMEN potion effect on nearest player
- Register in
Plugin.onEnable()viagetServer().getPluginManager().registerEvents() CustomDamageusesEventPriority.LOWEST(runs first)- Heavy NMS usage in damage system (
net.minecraft.*, CraftBukkit classes)
DamageDatatracks context: blocking, arrow type, lightning, trident- Flow: detect custom mob → call
whenDamaging()/whenDamaged()→ apply modifiers
- Scoreboard objective
"Intelligence"(0–2500 max) - Passive regen: +1 every 5 seconds
- Action bar display via NMS packet
- Indentation: Tabs
- Naming: PascalCase classes, camelCase methods/vars
- Item IDs:
skyblock/{category}/{snake_case_name} - Colors:
ChatColor.*constants - Potion effects: duration
-1= infinite, amplifier255= max level - No JavaDoc — code is self-documenting; comments only for complex logic
- Bug fixes:
fix {description}(e.g., "fix enchant glint?") - Features:
{verb} {feature}(e.g., "implement wind burst") - Balancing:
more balancing,{item} changes - Keep messages short and lowercase
- Create class in
items/{category}/ - Implement
CustomItem(orAbilityItemfor abilities) - Add static
getItem()with lore ID as first line - Register in
CustomItem.ItemRegistry - Add to
ItemReloader.refreshItem()switch - Optionally add recipe in
AddRecipes
- Create class in
mobs/{category}/ - Implement
CustomMob - Register in
CustomMob.MobRegistry - Add drops in
CustomDrops - Optionally add advancement in
Plugin.setupAdvancements()
- Create class in
commands/implementingCommandExecutor - Register in
Plugin.onEnable()andplugin.yml
- Spigot API 1.21.11-R0.1-SNAPSHOT (provided)
- Spigot NMS 1.21.11-R0.1-SNAPSHOT remapped-mojang (provided)
- DiscordSRV 1.30.4 (optional soft dependency)
- NEVER run mvn on this project, including subcommands like clean, build, or test.
- python3 does not exist, use python instead.