Archived project. This repository is preserved for historical reference and is not actively maintained.
A custom Spigot plugin developed for the Craftable Skyblock server. SkyblockCore provided server-specific commands, gameplay systems, staff tools, and utility features tailored to the Craftable Skyblock experience.
This repository preserves the custom SkyblockCore plugin developed for the Craftable Skyblock server.
The plugin was created to support server-specific functionality for the Craftable Skyblock experience, including community point features, player utilities, staff communication tools, social commands, and mcMMO-related credit functionality.
This project is part of the broader Craftable server archive and represents one of the custom plugins used to extend the behavior of a Craftable Minecraft server beyond standard plugin configuration.
This repository is intended as an archive and preservation project, not as an actively maintained production plugin.
This plugin is archived. It was written for Spigot 1.16.3 and has not been updated since development concluded. It is published here for preservation and reference purposes only.
Known issues discovered during code review are documented in the Known Limitations section below.
A server-side community point economy. Points are stored per player (by UUID) in credits.yml. Staff can award points using a dedicated admin command, and players can check their balance at any time.
Players can commend one another using /commend. Commendations are rate-limited to prevent abuse, and PlaceholderAPI is used to detect shared IP addresses to prevent self-commendation.
A parallel credit economy for mcMMO skill progression. Credits are stored in mcmmo.yml. Staff can issue credits, players can check their balance, and a /redeem workflow allows players to convert credits into mcMMO skill levels via a chat-based confirmation flow integrated with DeluxeMenus.
/helpop— sends a message to all online staff with thestaff.notifypermission, with a 60-second cooldown/report— reports a player to online staff, with duplicate-report prevention
/smelt— instantly smelts items held in hand or across the entire inventory; supports ores, raw food, logs, and several building materials/nightvision— toggles the Night Vision potion effect for eligible players
Seven static-link commands that display the Craftable Network's social media URLs in chat: /discord, /facebook, /instagram, /reddit, /tiktok, /twitter, /youtube.
- Killstreak announcements — broadcasts a server-wide message at milestones (every 5 kills, up to 200)
- Kill sound effect — plays a firework sound for the killer on each PvP kill
- Custom fishing rod — distributes a custom unbreakable fishing rod from a specific button in the world lobby
- Custom villager drops — replaces the default villager loot table with emerald drop rates that scale with the Looting enchantment
- Blaze drowning drops — gives a chance for blazes to drop a blaze rod when killed by drowning
Registers a craftable PlaceholderAPI expansion providing two placeholders:
%craftable_balance%— the player's Essentials economy balance%craftable_points%— the player's community point balance
| Command | Arguments | Permission | Description |
|---|---|---|---|
/points |
— | — | Check your community point balance |
/cpgive |
<player> <amount> |
points.give |
Award community points to a player |
/commend |
<player> |
— | Commend another player (daily rate limit applies) |
/helpop |
<message> |
— | Send a support message to online staff (60s cooldown) |
/report |
<player> <reason> |
— | Report a player to online staff |
/credits |
— | — | Check your mcMMO credit balance |
/mcreditsgive |
<player> <amount> |
credits.give |
Award mcMMO credits to a player |
/redeem |
[skill] |
— | Redeem mcMMO credits for skill levels |
/smelt |
[hand|all] |
smelt.use |
Instantly smelt items (hand = held item, all = full inventory) |
/nightvision |
— | nightvision.use |
Toggle Night Vision effect |
/discord |
— | — | Display the Discord server link |
/facebook |
— | — | Display the Facebook page link |
/instagram |
— | — | Display the Instagram profile link |
/reddit |
— | — | Display the subreddit link |
/tiktok |
— | — | Display the TikTok profile link |
/twitter |
— | — | Display the Twitter profile link |
/youtube |
— | — | Display the YouTube channel link |
Aliases:
/points—cp,communitypoints,cpoints/nightvision—nv/credits—mbal/mcreditsgive—creditsgive
| Permission | Description | Default |
|---|---|---|
points.give |
Allows use of /cpgive to award community points |
op |
staff.notify |
Receive /helpop alerts and other staff notifications |
op |
reports.notify |
Receive /report alerts |
op |
smelt.use |
Allows use of the /smelt command |
op |
credits.give |
Allows use of /mcreditsgive to award mcMMO credits |
op |
nightvision.use |
Allows use of the /nightvision command |
op |
Note:
staff.notifyandreports.notifyare two distinct permission nodes used for HelpOP and Report notifications respectively, thoughplugin.ymlonly formally declaresstaff.notify. Servers should grant both nodes to staff ranks.
| Dependency | Version | Purpose |
|---|---|---|
| Spigot / Paper | 1.16.3 | Server API |
| mcMMO | Any compatible | Runtime requirement; the plugin will refuse to load if absent |
The plugin will load without these, but features that depend on them will not function correctly.
| Dependency | Purpose |
|---|---|
| PlaceholderAPI | Required for %craftable_*% placeholders and the /commend IP check |
| Essentials | Required for the %craftable_balance% placeholder (economy API) |
| DeluxeMenus | Required for the /redeem GUI menu (dm open redeem_menu) |
| Dependency | Version | Scope |
|---|---|---|
| Spigot API | 1.16.3-R0.1-SNAPSHOT | provided |
| PlaceholderAPI | 2.10.9 | provided |
| Apache Commons Collections | 4.4 | compile |
SkyblockCore does not ship a config.yml. All configuration is handled through the two data files it generates on first run.
Stores community point balances keyed by player UUID.
# Example
550e8400-e29b-41d4-a716-446655440000: 50Stores mcMMO credit balances keyed by player UUID.
# Example
550e8400-e29b-41d4-a716-446655440000: 100Both files are read and written live by the plugin; there is no reload command.
Note: Several values that would ideally be configurable — including the fishing rod dispenser block coordinates
(171, 98, 228)in worldworldand all social media URLs — are hardcoded in the source and would require recompilation to change.
src/net/craftable/skyblockcore/
├── Main.java # Plugin entry point; registers all commands, listeners, and data files
├── CommunityPoints/
│ ├── CPCommand.java # /points — view balance
│ ├── CPGive.java # /cpgive — award points
│ └── CommendCommand.java # /commend — commend a player
├── Staff/
│ ├── HelpOPCommand.java # /helpop — message staff
│ └── ReportCommand.java # /report — report a player
├── General/
│ ├── FishingRod.java # Listener — dispenses custom fishing rod from button
│ ├── RodListener.java # Listener — prevents moving the custom rod into containers
│ ├── Smelt.java # /smelt — instant item smelting
│ ├── KillSoundEffect.java # Listener — plays sound on PvP kill
│ ├── NightVision.java # /nightvision — toggle night vision
│ ├── VillagerDrops.java # Listener — custom villager emerald loot table
│ └── BlazeDrops.java # Listener — blaze rod drop on drowning
├── McMMO/
│ ├── mBal.java # /credits — view mcMMO credit balance
│ ├── mCreditsGive.java # /mcreditsgive — award mcMMO credits
│ ├── Redeem.java # /redeem — initiate skill level redemption
│ ├── RedeemListener.java # Listener — processes chat input during redemption
│ └── RedeemMuteChat.java # Listener — restricts commands/chat during redemption
├── Messages/
│ └── KillStreak.java # Listener — broadcasts killstreak milestones
├── SocialMedia/
│ ├── Discord.java
│ ├── Facebook.java
│ ├── Instagram.java
│ ├── Reddit.java
│ ├── TikTok.java
│ ├── Twitter.java
│ └── Youtube.java
├── PlaceholderAPI/
│ └── Placeholders.java # %craftable_balance% and %craftable_points% expansion
└── TabCompleters/
├── SmeltTabCompleter.java # Tab completion for /smelt (hand, all)
└── RedeemTabCompleter.java # Tab completion for /redeem (skill names)
The project uses Apache Maven with the Maven Shade plugin to produce a shaded JAR.
- JDK 8 or later
- Maven 3.x
- A local Maven repository containing the Spigot 1.16.3 API (typically installed via BuildTools)
mvn clean packageThe compiled plugin JAR will be placed in target/SkyblockCore-0.0.1-SNAPSHOT.jar.
The build uses
maven-shade-pluginto bundle Apache Commons Collections into the output JAR.
This section is provided for historical reference. This plugin is archived and not recommended for production use.
- Build the plugin JAR as described above, or obtain a pre-built JAR.
- Place the JAR in your server's
plugins/directory. - Ensure mcMMO is installed — this is a hard requirement.
- Optionally install PlaceholderAPI, Essentials, and DeluxeMenus for full feature support.
- Start the server. The plugin will create
credits.ymlandmcmmo.ymlinplugins/SkyblockCore/on first run. - Grant
staff.notifyandreports.notifyto staff ranks in your permissions plugin.
| Field | Value |
|---|---|
API version (plugin.yml) |
1.16 |
Target Spigot version (pom.xml) |
1.16.3-R0.1-SNAPSHOT |
| Minimum Java | 8 |
The plugin was written for Spigot 1.16.3. Compatibility with other server software versions or newer API releases has not been tested.
The following issues were identified during code review of the archived source. They are documented here for completeness and were not resolved before the project was archived.
| Issue | Location | Description |
|---|---|---|
NullPointerException on /commend |
CommendCommand.java |
main.commendcooldown is referenced but never initialized in Main.java. Executing /commend will throw a NullPointerException. |
| Permission node mismatch | ReportCommand.java vs plugin.yml |
ReportCommand broadcasts to players holding reports.notify, but plugin.yml only formally declares staff.notify. Both nodes should be granted to staff. |
| Tab completer skill mismatch | RedeemTabCompleter.java |
Suggests 15 skills (including Repair, Salvage, and Smelting) but Redeem.java only handles 12. Selecting the extra three produces no action. |
| Hardcoded world location | FishingRod.java |
The fishing rod dispenser button is fixed at coordinates (171, 98, 228) in world world and cannot be changed without recompilation. |
| Hardcoded social URLs | SocialMedia/*.java |
All social media links are hardcoded strings and cannot be reconfigured without recompilation. |
| Undeclared DeluxeMenus dependency | Redeem.java |
The /redeem GUI is opened via a hardcoded console command (dm open redeem_menu), which assumes DeluxeMenus is installed with a menu named redeem_menu. This dependency is not declared in plugin.yml. |
No license file is present in this repository. All rights remain with the original authors. This code is published for archival and reference purposes only.