Configuration
ShadowSkyBlock
A complete skyblock: world, islands, roles, missions, bank and rankings.
Where the files are
plugins/ShadowSkyBlock/ The plugin creates them on first start and updates them by itself on new versions, keeping your changes.
Applying changes
/is admin reload Reloads the files without restarting the server.
No setting found
Try another word, or search every plugin.
Settings
The files that decide how the plugin behaves. Start here.
config.yml
General settings 93 settings
config.ymlplugins/ShadowSkyBlock/config.yml File notes
The island module of the Shadow suite.
A note on language
This file, like every other config, is written in English: keys, values and comments. The only text that is translated is the text a player reads - messages, menu titles, item names and lore - and that lives in its own file (see "messages.language" further down).
Keep reading
WORKING WITH THE REST OF THE SUITE
There is nothing to set up: ShadowSkyBlock finds ShadowEssentials, ShadowPermissions, ShadowRegions and an economy plugin by itself when they are there, and works just the same when they are not. To see what it hooked into and what it did not, in game: /island suite
UPDATING
On update your files are moved to the new version automatically: everything you changed is kept, new options arrive with their defaults. The files as they were before are in backup/<date>/, and if something needs your attention you will find PORTING-<version>.txt in this folder, saying what to fix by hand.
Where islands, members, upgrades and missions are stored
Out of the box: an H2 database inside plugins/ShadowSkyBlock/data/. Nothing to install, nothing to configure, works straight away.
Keep reading
Move to MySQL (mysql.enabled: true) if you run a real server, if you want the backups to sit with those of your other plugins, or if several servers have to share the same islands. The database you name must already exist and the user must be allowed to create tables in it: the plugin does the rest.
storage5 keysstorage.mysql7 keysenabledfalsehost"127.0.0.1"port3306database"shadowskyblock"username"root"password""parameters"useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8"Appended to the JDBC connection string.
storage.h21 keyauto-serverfalsetrue = you can open the file with DBeaver while the server is running.
storagefallback-to-localtruetrue = when MySQL is configured but does not answer, the plugin falls back to the local database instead of refusing to start. Set it to false only if you would rather have a failed start than islands saved in the wrong place.
table-prefix"ssb_"Prefix put in front of every table the plugin creates. Useful when the same database is shared with other plugins or services. If it finds "bsb_" tables from an old BetterSkyblock install, the plugin renames them itself on the first start: nothing is lost.
storage.pool5 keysmaximum-pool-size10minimum-idle2connection-timeout-ms10000idle-timeout-ms600000max-lifetime-ms1800000island32 keysstarting-radius20Starting radius of an island, in blocks from its centre.
spacing250Distance between the centres of two islands side by side on the world grid. It has to be more than twice the largest radius reachable, or neighbouring islands could touch and their protections overlap.
height100The height (Y) islands are generated at.
world-name"skyblock_world"Name of the world given over to skyblock. Created if it is not there.
natural-leavestrueLeaves of a freshly built island - the starter tree, or a pasted schematic - behave like real ones: they stay while the trunk is there and fall once it is cut. A schematic saved from hand-placed leaves would otherwise keep an eternal canopy hanging in the air, and one saved with the wrong "distance from the log" would shed its leaves by itself. Set to false to paste schematics exactly as saved.
island.level2 keysIsland level. The running count only sees blocks placed or broken by hand: /island level recounts the island's real blocks (per island, at most once every recalc-cooldown-seconds; admins skip the wait). With auto-recalc-minutes above 0 every island is recounted on a timer too.
recalc-cooldown-seconds60auto-recalc-minutes0islandallow-phantomsfalsePhantoms in the island worlds. Off, and not by accident.
Keep reading
On a skyblock you build suspended in the void: there is no roof to hide under and nowhere to run, so a phantom that finds a player who has not slept is not a threat to handle, it is a fall. Servers turn them off by hand on every skyblock anyway; this saves the step.
Worth knowing: a Phantom is not a Monster in the Bukkit API, so turning off hostile spawning in the island settings does NOT stop them. This is the only switch that does.
Set to true if you want them: the vanilla "go to sleep" pressure comes back, in every island world (island, its Nether, its End).
island.delete-cooldown3 keysHow long a player waits between deleting one island and the next, so nobody can create and delete on repeat (to farm the starter chest, for one). The first deletions are free: the wait starts from the "after-deletions"-th onwards.
enabledtrueafter-deletions2From which deletion the wait kicks in (2 = the first is free, from the second onwards there is a wait).
seconds600island.default-rules8 keysWhat the rules of an island start as. Every owner can then change them for their own island from /island settings -> Island Rules; until they do, the island follows what is written here - so changing a value here changes it for every island nobody has touched.
NOTE: these are not Minecraft gamerules. A gamerule covers a whole world and every island shares the same world, so the plugin applies these island by island by watching the events.
mob-griefingfalseMobs that break or change blocks: creepers, endermen, ghasts, sheep eating grass, villagers farming.
hostile-spawningtrueNatural spawning of hostile mobs inside the island. Spawners, eggs and breeding stay allowed even with this off.
animal-spawningtrueNatural spawning of animals and other passive mobs inside the island.
pvpfalseWhether players can hit each other on the island.
fire-spreadfalseFire spreads and eats blocks.
tnt-damagefalsePlayer explosions (TNT, beds in the Nether) break blocks.
leaf-decaytrueLeaves cut off from a log decay on their own.
keep-inventoryfalseDying on your OWN island does not cost you your inventory. See "allow-keep-inventory-choice" below: whether the owner gets to choose it, or whether it stays locked to this value for everybody.
islandallow-keep-inventory-choicetrueWith false, the "keep-inventory" rule above is locked for the whole server: the button disappears from the Island Rules menu and only the default just written counts, ignoring whatever owners had saved before. With true (the default) every island turns it on and off for itself.
allow-sethometrueWith true, the owner - or a member holding SET_HOME - can move with /island sethome the exact spot the island brings them back to: respawn after death, falling into the void under the island, coming back from a private portal and /island home all point there instead of the island's centre. With false the command is off and the centre is always used.
clear-drops-on-home-teleporttrueWith true, every time a player is brought back to their island's home - death, a fall into the void, the way back from a private portal, /island home - the plugin first clears every item lying on the ground of that island: no mess and no lag piling up over time. CAREFUL: it only touches items on the ground, never what is inside a chest or any other container, but it destroys them for good even when they were left there on purpose (a swap between members, say). Turn it off if you would rather tidy up by hand.
island.portals2 keysThe server's SHARED Nether and End - the real ones, belonging to the main world - are not this plugin's business: set them up yourself with Multiverse or another world plugin if you want them. By default a portal built on an island stays decorative: it lights up but takes nobody anywhere, which is deliberate now that each island has its own PRIVATE Nether and End (see below). A portal that does nothing beats players dropped into the shared Nether of an ordinary survival server.
allow-netherfalseWith true, a Nether portal lit on an island really does lead to the server's Nether (the one tied to the "island.world-name" world).
allow-endfalseWith true, an End portal or gateway lit on an island really does lead to the server's End.
islandprivate-nether-world-name"skyblock_world_nether"When allow-nether/allow-end are false (the default), every island gets a small PRIVATE platform in the Nether and in the End instead, inside two void worlds shared by all the islands - not one world each, far too heavy. They are reached through a real portal lit on your own island (12 Ender eyes for the End, exactly as usual): the plugin builds both the platform and the way back, already lit. /island end stays a direct shortcut, handy before a real End portal has been built.
private-end-world-name"skyblock_world_the_end"private-platform-radius-nether2Radius of the two private platforms (2 = 5x5, 4 = 9x9), each on its own.
private-platform-radius-end4private-platform-material-nether"NETHERRACK"Materials the private platform and portal are built from. Each has to be a valid Bukkit Material name ("NETHERRACK", "END_STONE", "OBSIDIAN"); a misspelt one is reported in the log and the default is used.
private-platform-material-end"END_STONE"private-portal-frame-material"OBSIDIAN"private-nether-schematic"PrivateNether.schem"The name of a file inside plugins/WorldEdit/schematics/ (WorldEdit or FastAsyncWorldEdit needed) to paste in place of the plain flat platform, centred on X/Z over the centre of the private structure, its base at the right level, the FIRST time that island needs one. Leave it empty ("") for the classic flat platform, which is always available even without WorldEdit. In the Nether every non-air block pasted is recoloured using "private-nether-block-mix" below; in the End the schematic is left exactly as you made it, with no portal added by the plugin.
private-end-schematic"PrivateEnd.schematic"private-nether-structure-radius15A horizontal radius used ONLY to work out whether the schematic was already pasted once, since its real size is unknown until it is pasted the first time: it has to cover at least half the width of your structure. Ignored when no schematic is configured, where the flat platform's own radius is used instead.
private-end-structure-radius15island.private-nether-block-mix6 keysThe mix of typical Nether blocks used to recolour the private Nether schematic after pasting. Every number is a relative weight rather than an exact percentage: the higher, the more common. Leave the section empty to keep the schematic's own blocks.
NETHERRACK70BLACKSTONE10BASALT8SOUL_SAND6SOUL_SOIL4MAGMA_BLOCK2islandprivate-nether-keep-inventorytrueDying in the private Nether or End does not cost the inventory. This is a server-wide switch, not a per-island one like "default-rules.keep-inventory" above, and it ships on because death in those two dimensions is nearly always a fall, not a risk the player chose to take.
private-end-keep-inventorytruevoid-catch-min-y40Below this Y - in the main skyblock world, or on a private Nether/End platform - a falling player is put back at the home of THEIR island, or at spawn when they have none, instead of falling through the void forever. It does not cover the hub area, which has its own threshold in spawn.region.min-y.
leaderboard-size10How many rows each /island top leaderboard shows.
island.starter-platform10 keysThe classic starter platform, used when WorldEdit/FAWE is not installed or the player picks no schematic from island_schematics/: a lump of dirt with a tree and a chest. Every Material below has to be a valid Bukkit name; a misspelt one is reported in the log and the default is used.
surface-material"GRASS_BLOCK"middle-material"SAND"The island is an L: a 5x3 arm (the player appears in its middle) with a 3x3 square hanging off its east end, where the tree grows. Three layers - the surface, a middle one and a bottom one - plus one bedrock block under the spawn, so there is always a block nobody can mine away.
bottom-material"STONE"bedrock-material"BEDROCK"log-material"OAK_LOG"leaves-material"OAK_LEAVES"chest-material"CHEST"sign-material"OAK_SIGN"include-water-buckettrueThe classic water bucket next to the chest, which together with the lava gives obsidian and stone right away. With false it is not placed.
water-material"WATER"islandspawn-anchor-material"DIRT"The material forced under a player's feet when they first appear at the centre of an island made from a SCHEMATIC - not the classic platform above. The highest solid block found there (leaves ignored, so a tree over the centre does not spawn them in the canopy) is replaced with this, so the spawn is always the same predictable block instead of whatever the schematic happened to put exactly in the middle.
disable-thunderstormstrueWith true, no thunderstorms in the skyblock world. Weather in Minecraft belongs to a whole world rather than to one area, so this covers all of "world-name", islands included; but since every island still has its own PERSONAL weather (see island.default-rules above, shown to that player only), real lightning stays a nuisance worth switching off here.
spawn10 keysWhere a player is sent when they have no island to go back to - right after /island delete confirm, for instance. CAREFUL: islands are laid out along the X axis starting at x=0.5 (slot 0) and only ever go positive (slot*spacing), so keeping "x" below negative guarantees this point never falls inside an island, present or future. When there is no block under it yet, the plugin builds a small platform itself on the first start (see ShadowSkyBlockPlugin#ensureSpawnPlatform). Change these to send players to your real hub or lobby.
world"skyblock_world"x-499.5NOTE: to stand in the middle of block X=-500 the right value is -499.5, not -500.5 (a Location rounds down: -500.5 falls in block -501). Always check it this way when changing these numbers: you want block N, you write N + 0.5, never N - 0.5.
y133.0Where a player stands at the hub. The plain quartz platform is laid one block below this value, so Y133 is the height they walk on either way. It is also the real floor of the Hub.schematic of the reference server (checked block by block): below it there is a decorative solid mass down to Y105 and then a pocket of air, not a floor to stand on. 101 was wrong: a player put there floats in the void above that pocket, and the game "corrects" it by looking for solid ground, making them appear at Y133 as if teleported (a reported bug, fixed here).
z2.5yaw0.0pitch0.0schematic""The name of a file inside plugins/WorldEdit/schematics/ (WorldEdit or FastAsyncWorldEdit needed) pasted here automatically - centred on X/Z, its base at "y" - the FIRST time the block at these coordinates is still air. It is the same check used for the safety platform under spawn, which is indeed skipped when something is written here.
Keep reading
It ships EMPTY on purpose, and the hub is the plain quartz platform below: a name written here takes the platform's place, so a name that points at a file this server has not got in plugins/WorldEdit/schematics/ would leave the hub with no floor at all. Write the name of your own hub only once that file is really there - it is pasted on the next start - or paste it whenever you like with /island admin pasteschem, which works with this line left empty.
platform-material"SMOOTH_QUARTZ"Material and radius of the plain safety platform built under spawn when "schematic" above is empty. Ignored when it is set.
platform-radius4spawn.region4 keysThe protected hub area: a rectangle centred on the x/z above, for the full height of the world. Inside it players can use what is already placed - furnaces, enchanting tables, levers - but not break it or place anything new, no mob spawns (hostile or peaceful), and ender pearls do not work. Anyone who drops below "min-y", by falling off the edge of the hub, is brought back here to spawn: it replaces the old invisible barrier blocks, with nothing left to place by hand in the world.
enabledtrueradius-x60radius-z60min-y80IMPORTANT: it has to sit BELOW the "y" above, the floor players walk on, or they are teleported at every step instead of only when they really fall out of the structure. The plugin never lets it go past "y - 1" anyway, as a safety net.
messages2 keyslanguage"en"The language the plugin speaks to players in. It names a file inside plugins/ShadowSkyBlock/lang/, so "en" reads lang/en.yml and "it" reads lang/it.yml: the plugin ships these two, English by default.
Keep reading
Only what a player reads is translated: chat messages, menu titles, item names and lore. Commands, config keys and comments stay English everywhere, so a guide, a macro or a support answer works whatever language a server runs in.
To add your own: copy lang/en.yml to lang/<code>.yml, translate the values - never the keys - and write that code here.
prefix"&b[ShadowSkyBlock] &r"Licence
With no key the plugin runs the FREE version: the whole island engine, within the limits listed in the console at start-up. With a signed key it runs Premium. There is nothing to download and nothing missing: the paid features sit inside the jar the whole time, switched off.
Keep reading
The key does NOT go here. You activate it in game with
/island license claim <purchase code>
and it ends up in license.yml, a separate file on purpose - so a support request that says "send me your config" does not arrive with your licence inside it. The "key" field below is only for people who would rather ship the same configuration to several servers.
license4 keysTHE KEY LIVES IN license.yml (same folder as this file), or in the central plugins/ShadowControl/licenses.yml for the whole suite. The 'key' below is only a fallback for deploy systems that generate config.yml: leave it empty.
The key does NOT live here: it lives in license.yml, in this folder, written at first start (or in plugins/ShadowControl/licenses.yml for the whole suite).
grace-days7Days of grace before falling back to free when a subscription has just run out or the address does not match - far more often a NAT or a proxy than a theft. 0-60.
activation-url'https://shadow-licences.riccardobotins.workers.dev'Base address of the activation service. The plugin appends /claim and /check itself. Empty = manual activation with a key only.
resolve-public-iptrueAsks the activation service above which public address this server has (activation-url + /ip: it answers with the address it sees, and nothing about the server is sent). It is the only reliable way to know from behind a NAT, and it is what makes a licence sold for "play.example.net" work on a machine whose local addresses are all 10.x. Only when a licence is installed: a server without a key asks nobody. false = never ask.
server-ip""The address this server is known by, when it differs from the ones it can see for itself. Only needed when a licence looks tied to another address despite being the right one.
missions1 keyMissions. Daily, weekly and monthly missions start over at midnight of this time zone ("Europe/Rome", "UTC"...). Empty = the server's own zone.
timezone""bStats (anonymous usage statistics, https://bstats.org)
What is sent, every 30 minutes: how many servers run the plugin, the plugin version, the Minecraft/Paper version, the Java version, the operating system and core count, how many players are online (a number, nothing else), the edition (free/premium) and which economy moves the island money (ShadowEconomy, Vault or none). The server is identified only by a random serverUuid, generated once and stored in plugins/bStats/config.yml.
Keep reading
No player data leaves at all: no names, no UUIDs, no addresses, no coordinates.
false here turns off only ShadowSkyBlock. enabled: false in plugins/bStats/config.yml - the file shared by every plugin that uses bStats - turns them all off at once. Read at start-up: a change takes effect at the next restart.
metrics1 keyenabledtrue economy.yml
The island economy 5 settings
economy.ymlplugins/ShadowSkyBlock/economy.yml File notes
Everything money-related in one file, kept out of config.yml so you do not have to hunt for it among unrelated settings.
ShadowSkyBlock ships no economy of its own. Money features need an economy: ShadowEconomy, or Vault with an economy plugin. - ShadowEconomy is used directly whenever it is installed, with or
without Vault.
- Otherwise any economy plugin registered in Vault: EssentialsX, CMI
and the like (see the manual).
With neither, everything below (island bank, money costs and rewards of upgrades/missions/perks) switches itself off in the menus instead of throwing errors. /island suite shows which economy was hooked.
currency''The ShadowEconomy currency island money is counted in: bank, costs, rewards and the balance placeholders. Leave it empty ('') for ShadowEconomy's default currency. A name ShadowEconomy does not have falls back to the default one, with a warning in the console. Vault has a single currency, so with Vault this setting is ignored.
bank4 keysstarting-balance0Starting balance of the shared bank when an island is created.
min-transaction0.01Smallest and largest amount for a single deposit or withdrawal, both from /island bank deposit|withdraw and from the bank menu.
max-transaction1000000history-size200How many movements the bank menu keeps available in its history (/island bank -> History). Display only: every transaction is stored in the database for good either way.
generators.yml
Generators 19 settings
generators.ymlplugins/ShadowSkyBlock/generators.yml File notes
This file ships in English. Its Italian version is esempi/it/generators.yml, next to this one in the plugin folder, and the plugin never reads it: to run the Italian one, copy it over this file and use /island admin reload. The messages and menus follow "messages.language" in config.yml on their own; this file is content you write, so it stays as it is.
The island ore generator.
When lava and water meet inside an island, the block that would normally be cobblestone is replaced with one drawn from this table. Every island has its own "prestige" level: the higher it is, the richer the table of materials. Prestige is bought from the generator menu (/island generator) and counts for every member of the island.
The numbers under "materials" are WEIGHTS and do not have to add up to 100: they are normalised on their own. 50/30/20 and 5/3/2 give the same result. The menu always shows the real percentage it worked out.
How this table is meant to progress: each prestige takes 4 points off cobblestone, gives 2 to the ore the previous prestige unlocked, and lets the new ore in at 2%. The item cost of a prestige always asks for the ore of the prestige BEFORE it - never the one it is about to unlock - so you are never asked for an ore you have no way of getting yet.
enabledtruefallback-materialCOBBLESTONEUsed only when a prestige has no valid material (a config typo): this way the generator never stops working altogether.
takes-over[COBBLESTONE]Which naturally formed blocks the generator takes over.
Keep reading
Lava and water touching do not always make the same block. Flowing lava touched by water FROM THE SIDE makes COBBLESTONE, lava falling straight DOWN into water makes STONE, lava over soul soil next to blue ice makes BASALT, and a lava SOURCE touched by water makes obsidian.
Only what is listed here is turned into an ore. Left as it is, the classic cobblestone generator feeds the table above while the stone generator, the basalt one and obsidian keep behaving exactly as in vanilla - which is what players expect when they build one on purpose. Add STONE or BASALT to the list if you want those taken over as well.
prestiges9 keysprestiges.02 keysdisplay-name"&7Basic"prestiges.0.materials2 keysWhere every island starts: free, there is nothing to buy.
COBBLESTONE97COAL_ORE30:
1, 2, 3, 4, 5, 6, 7prestiges.83 keysThe last prestige. ANCIENT_DEBRIS and not NETHERITE_SCRAP: the scrap is an item and does not exist as a block, so a generator asked for it would have nothing to place. The debris is the block you mine and smelt into the scrap, which is what "netherite grezza" means here.
display-name"&5&lAncient Debris"prestiges.8.cost2 keysmoney600000items[{ material: EMERALD, amount: 12 }]prestiges.8.materials10 keysCOBBLESTONE65COAL_ORE5COPPER_ORE4IRON_ORE4REDSTONE_ORE4LAPIS_ORE4GOLD_ORE4DIAMOND_ORE4EMERALD_ORE4ANCIENT_DEBRIS2 island_levels.yml
Island levels 121 settings
island_levels.ymlplugins/ShadowSkyBlock/island_levels.yml File notes
Sets how an island's "level" is worked out. The level is shown on the scoreboard (%island_level%), on the leaderboards (/island top) and in /island level, and comes from the points an island collects.
Every time a member places one of the blocks listed below inside their own island, the island earns the points shown; breaking it takes them back (never below zero). Blocks that are not listed are worth 0 points, so they do not move the level at all. The level itself is simply:
level = island_points / points-per-level (rounded down)
NOTE: the running count follows what players place and break, block by block, from the moment the plugin is on. What was already standing before is not in it - which is what /island level is for: it recounts the real blocks of the island and writes the total back (see "island.level" in config.yml for its cooldown, and auto-recalc-minutes to have every island recounted on a timer).
HOW THIS TABLE IS BUILT
Three bands, and they are what makes the level mean something:
1-2 what an island is made of - dirt, sand, cobblestone, planks. It is
free and endless, so it is worth a point: a level earned this way
is a level of real building, 100 blocks at a time.
3-10 what somebody had to work for - a furnace, a crafting table, a
trip to the Nether: worked stone, glass, quartz, obsidian.
20+ what an island keeps rather than spends: the metal blocks, and at
the top the beacon and netherite, which are a season's work.Add or remove whatever you like: a block worth 0 is simply left out.
points-per-level100blocks120 keysThe ground an island stands on
blocksDIRT1COARSE_DIRT1ROOTED_DIRT1GRASS_BLOCK1PODZOL2MYCELIUM2MOSS_BLOCK2SAND1RED_SAND1GRAVEL1CLAY2SNOW_BLOCK1ICE1PACKED_ICE3BLUE_ICE6Stone: what the generator gives, and what a mason makes of it
blocksCOBBLESTONE1MOSSY_COBBLESTONE2STONE2SMOOTH_STONE3STONE_BRICKS3CRACKED_STONE_BRICKS3MOSSY_STONE_BRICKS4CHISELED_STONE_BRICKS4GRANITE2POLISHED_GRANITE3DIORITE2POLISHED_DIORITE3ANDESITE2POLISHED_ANDESITE3TUFF2POLISHED_TUFF3CALCITE3DEEPSLATE2COBBLED_DEEPSLATE2POLISHED_DEEPSLATE3DEEPSLATE_BRICKS3DEEPSLATE_TILES4BRICKS4TERRACOTTA3SMOOTH_SANDSTONE3SANDSTONE2CHISELED_SANDSTONE3RED_SANDSTONE2Wood
An island is not built of oak alone, and the starter chest ships a sapling of every tree on purpose: they are all worth the same.
blocksOAK_LOG3SPRUCE_LOG3BIRCH_LOG3JUNGLE_LOG3ACACIA_LOG3DARK_OAK_LOG3MANGROVE_LOG3CHERRY_LOG3PALE_OAK_LOG3CRIMSON_STEM4WARPED_STEM4OAK_PLANKS1SPRUCE_PLANKS1BIRCH_PLANKS1JUNGLE_PLANKS1ACACIA_PLANKS1DARK_OAK_PLANKS1MANGROVE_PLANKS1CHERRY_PLANKS1PALE_OAK_PLANKS1BAMBOO_PLANKS1CRIMSON_PLANKS2WARPED_PLANKS2Glass, light and the blocks that cost a furnace or a trip to the Nether
blocksGLASS2TINTED_GLASS4GLOWSTONE4LANTERN3SOUL_LANTERN4SHROOMLIGHT5SEA_LANTERN10QUARTZ_BLOCK5SMOOTH_QUARTZ5QUARTZ_PILLAR5CHISELED_QUARTZ_BLOCK6QUARTZ_BRICKS6PRISMARINE4PRISMARINE_BRICKS5DARK_PRISMARINE5PURPUR_BLOCK4END_STONE2END_STONE_BRICKS3NETHERRACK1NETHER_BRICKS3RED_NETHER_BRICKS4BLACKSTONE2POLISHED_BLACKSTONE3POLISHED_BLACKSTONE_BRICKS4GILDED_BLACKSTONE12BASALT2POLISHED_BASALT3SMOOTH_BASALT3SOUL_SAND2SOUL_SOIL2MAGMA_BLOCK3OBSIDIAN8CRYING_OBSIDIAN14AMETHYST_BLOCK8BONE_BLOCK3SLIME_BLOCK6HONEY_BLOCK6HAY_BLOCK2DRIED_KELP_BLOCK2What an island keeps instead of spending
These are the blocks that move a level on their own, and the reason /island top is worth a look.
blocksCOAL_BLOCK5COPPER_BLOCK8RAW_COPPER_BLOCK8REDSTONE_BLOCK8LAPIS_BLOCK8IRON_BLOCK25RAW_IRON_BLOCK20GOLD_BLOCK50RAW_GOLD_BLOCK40ANCIENT_DEBRIS30EMERALD_BLOCK150DIAMOND_BLOCK200NETHERITE_BLOCK500SPAWNER100BEACON250 island_scoreboard.yml
The island scoreboard 5 settings
island_scoreboard.ymlplugins/ShadowSkyBlock/island_scoreboard.yml File notes
The side panel with the island's statistics.
This one ships switched off, and that is on purpose
Minecraft gives a player one sidebar, and on this suite one plugin owns it: ShadowEssentials, everywhere - lobby, survival, minigames and islands. On an island it does not show lobby things: it draws its own "skyblock" board, and asks us for the level, the members, the radius and the bank. One sidebar, consistent across the server, and neither plugin fighting the other for it every tick.
This one is still worth having in two cases:
- ShadowEssentials is not installed (skyblock without the hub); - you want it, different from the hub's, on the islands only.
For either: set "enabled: true" below and, if ShadowEssentials is there, "scoreboard.yield-to-skyblock: true" in its modules/tablist.yml. If the plugin spots a clash it cannot settle on its own it switches its own board off and writes in the console what to change: you will never find both of them on at once.
enabledfalseThe master switch for this scoreboard.
only-in-skyblock-worldtrueOnly read when "enabled" above is true. It says WHERE a board that shows shows, and a board that is off has nothing to place: with "enabled: false" this scoreboard appears nowhere, whatever is written here.
true = only in the island world (island.world-name in config.yml)
false = in every world. Use it only once ShadowEssentials' own board is off,
or the two overlap outside the skyblock world.enabled-by-defaulttrueWhat a player who has never chosen from /island settings (or /island scoreboard) sees the first time they join.
update-interval-ticks20title"&b&lShadowSkyBlock"The lines, top to bottom (15 at most, Minecraft's own limit). They are text a player reads, so they are not written here: they come from the language file, in the server's language ("scoreboard.lines" in lang/<language>.yml, the one "messages.language" in config.yml picks). To draw your own board, write "lines:" in this file - yours win, in every language. The placeholder names stay English. For instance:
lines: - "&7" - "&f%player_name%" - "&7Money: &a%player_money%" - "&7" - "&fIsland: &b%island_name%" - "&7Level: &e%island_level%"
Player placeholders:
%player_name% the name of whoever is looking at the board %player_money% their own money (needs an economy plugin) %has_island% yes/no in the server language (lang: scoreboard.has-island-yes/-no) %island_count% how many islands exist on this server
Rank placeholders, read through the suite (ShadowEssentials -> ShadowPermissions, LuckPerms or Vault). Empty when none is installed:
%rank_prefix% the rank's prefix %rank_suffix% the rank's suffix %rank_group% the name of the main group
Island placeholders:
%island_name% the island's name (built from its owner) %island_owner% the owner's name %island_role% the role of whoever is looking (lang: scoreboard.owner-role if theirs) %island_level% the island's level (see island_levels.yml) %island_members% members right now, owner included %island_max_members% the member limit %island_radius% the island's protected radius, in blocks %island_bank% money in the island's shared bank
A line whose placeholder does not apply - %island_level% for somebody with no island - is skipped on its own.
What somebody with no island sees
The lines above are all about an island, and every one of them is skipped for a player who has none - which left the panel showing a title and nothing else, looking broken. These take their place instead: a board that says something, and points at the one command that matters.
Keep reading
These come from the language file too ("scoreboard.no-island-lines"). To write your own, add "no-island-lines:" here; "no-island-lines: []" goes back to showing nothing.
missions.yml
Missions 34 settings
missions.ymlplugins/ShadowSkyBlock/missions.yml File notes
This file ships in English. Its Italian version is esempi/it/missions.yml, next to this one in the plugin folder, and the plugin never reads it: to run the Italian one, copy it over this file and use /island admin reload. The messages and menus follow "messages.language" in config.yml on their own; this file is content you write, so it stays as it is.
Missions shown in the "Missions" menu (reached from the control panel, /island panel, or /island missions). Add, remove or change as many as you like: the menu adapts itself.
Every mission has:
display: material/name/lore shown in the menu. Name and lore are text
a player reads, written right here: this file ships in
English (see the top of the file for the Italian one).
scope: who carries the progress:
PLAYER - every player has their own separate progress
ISLAND - progress is shared by every member of the island
objective: what has to be done.
type: one of the many types available (full list below).
material: optional - when present it filters for that block/item
(type: BREAK_BLOCK + material: STONE = stone only).
Left out, the event counts whatever the material is.
For HARVEST_CROP and PLANT_SEED it is the crop BLOCK
(WHEAT, CARROTS, POTATOES, BEETROOTS, NETHER_WART...), for
FILL_BUCKET/EMPTY_BUCKET the bucket (WATER_BUCKET,
LAVA_BUCKET), for CRAFT_ITEM/SMELT_ITEM the result.
custom-name: optional, ONLY for type: CUSTOM_ITEM_OBTAIN - asks for an
item carrying this exact name (from any item plugin, Oraxen
for instance) instead of any vanilla material.
amount: how many times it has to be done - or how much has to pile
up, for the "cumulative" types listed below - to finish it.
period: when the mission starts over (default PERMANENT):
PERMANENT - done once, stays done
DAILY - starts over every day at midnight
WEEKLY - starts over every Monday
MONTHLY - starts over on the first day of the month
(midnight of the zone in config.yml, missions.timezone)
levels: optional, for a PERMANENT mission with several steps: a list of
{ amount, rewards } entries, one per level. Each level pays its
own rewards when reached; the mission is over after the last.
With "levels" the objective's "amount" is ignored.
rewards: rewards handed out ONCE on completion. Every reward has a
"type":
MONEY - { type: MONEY, amount: 500 } (needs ShadowEconomy, or Vault with an economy plugin)
COMMAND - { type: COMMAND, command: "..." } (run from the console, %player% replaced)
MESSAGE - { type: MESSAGE, text: "..." }
ITEM - { type: ITEM, material: DIAMOND, amount: 3 }
Any reward may also carry "description": the line the menu
shows for it (needed for COMMAND rewards, which cannot describe
themselves).Objective types available (type):
BREAK_BLOCK, PLACE_BLOCK, PLANT_SEED, HARVEST_CROP, FISH_CATCH, CRAFT_ITEM, SMELT_ITEM, ENCHANT_ITEM, TAME_ANIMAL, BREED_ANIMAL, SHEAR_SHEEP, FILL_BUCKET, EMPTY_BUCKET, EAT_FOOD, KILL_MOB, KILL_PLAYER, DIE, JUMP, SHOOT_ARROW, HIT_ARROW_TARGET, OPEN_CONTAINER, RIDE_ENTITY, SLEEP_IN_BED, PURCHASE_UPGRADE, INVITE_MEMBER, CUSTOM_ITEM_OBTAIN - "cumulative" (amount adds up the real value, not always +1): DEAL_DAMAGE, TAKE_DAMAGE (damage points), WALK_DISTANCE, SWIM_DISTANCE, ELYTRA_DISTANCE (blocks travelled), GAIN_EXPERIENCE (experience points), LEVEL_UP (levels gained), DEPOSIT_BANK_MONEY (coins deposited)
The missions below are a full first season: they start on day one (a cobblestone generator, a wooden pickaxe, the first crops) and lead a player through the whole island - farming, mining, mobs, fishing, the bank, the upgrades. Rewards grow with the effort. Keep, cut or rewrite.
missions63 keysDay one
missions.first_wood4 keysmissions.first_wood.display3 keysmaterialOAK_LOGname"&6The First Tree"lore["&7Break &e10 &7oak logs"]missions.first_woodscopePLAYERmissions.first_wood.objective3 keystypeBREAK_BLOCKmaterialOAK_LOGamount10missions.first_woodrewards[{ type: ITEM, material: OAK_SAPLING, amount: 4 }, { type: MONEY, amount: 100 }, { type: MESSAGE, text: "&aMission complete: The First Tree! Plant the saplings again." }]+2
first_wood:
first_table, first_generator, first_home, place_dirt_1, expand_1, expand_2, light_it_up, break_stone_1, break_stone_2, break_stone_3, iron_age, glassmaker, first_crops, harvest_wheat_1, harvest_wheat_2, root_vegetables, potato_farmer, nether_garden, sugar_baron, rancher, shepherd, tamer, well_fed, fisherman_1, fisherman_2, monster_hunter_1, monster_hunter_2, gladiator_1, archer, tough_skin, enchanter, walker_1, walker_2, swimmer, water_carrier, scholar, good_night, banker_1, banker_2, first_upgrade, upgrade_collector, recruiter, daily_cobble, daily_crops, daily_mobs, daily_fish, daily_bank, weekly_lumber, weekly_miner, weekly_farmer, weekly_hunter, weekly_smelter, weekly_builder, monthly_harvest, monthly_slayer, monthly_treasury, cobble_empire, wheat_dynasty, monster_legendmissions.daily_wood5 keysDaily missions - start over every day at midnight. Small goals, small rewards, every single day.
missions.daily_wood.display3 keysmaterialOAK_LOGname"&eWood of the Day"lore["&7Break &e32 &7oak logs"]missions.daily_woodscopePLAYERperiodDAILYmissions.daily_wood.objective3 keystypeBREAK_BLOCKmaterialOAK_LOGamount32missions.daily_woodrewards[{ type: MONEY, amount: 150 }]missions.monthly_quarry5 keysMonthly missions - start over on the first day of the month. ISLAND scope: the whole team works on them together.
missions.monthly_quarry.display3 keysmaterialSTONE_BRICKSname"&6Great Quarry"lore["&7Break &e20000 &7cobblestone", "&8Counts for the whole island"]+1
missions.monthly_quarryscopeISLANDperiodMONTHLYmissions.monthly_quarry.objective3 keystypeBREAK_BLOCKmaterialCOBBLESTONEamount20000missions.monthly_quarryrewards[{ type: MONEY, amount: 15000 }, { type: ITEM, material: DIAMOND_BLOCK, amount: 2 }]+1
missions.pumpkin_baron5 keysTiered permanent missions - "levels": every step has its own amount and rewards, and the mission is over for good after the last one. Add as many levels as you like, with the amounts you like.
missions.pumpkin_baron.display3 keysmaterialPUMPKINname"&dPumpkin Baron"lore["&7Harvest pumpkins: every level", "&7asks for more", "&8Counts for the whole island"]+2
missions.pumpkin_baronscopeISLANDperiodPERMANENTmissions.pumpkin_baron.objective2 keystypeBREAK_BLOCKmaterialPUMPKINmissions.pumpkin_baronlevels[{ amount: 5000, rewards: […] }, { amount: 20000, rewards: […] }, { amount: 100000, rewards: […] }]+2
player_upgrades.yml
Player upgrades 8 settings
player_upgrades.ymlplugins/ShadowSkyBlock/player_upgrades.yml File notes
This file ships in English. Its Italian version is esempi/it/player_upgrades.yml, next to this one in the plugin folder, and the plugin never reads it: to run the Italian one, copy it over this file and use /island admin reload. The messages and menus follow "messages.language" in config.yml on their own; this file is content you write, so it stays as it is.
Personal perks (temporary boosts). Unlike island upgrades, these belong to the single player who bought them - or was given them - and the other members of the same island do NOT get them unless they buy or receive their own. You can buy one for yourself (cost-self), for every member of your island at once (cost-team, usually dearer), or gift one to a named player (same price as cost-self).
Every perk has:
display: material/name/lore shown in the menu. Name and lore
are text a player reads, written right here: this
file ships in English (see the top of the file for
the Italian one).
effect: a Minecraft PotionEffectType (JUMP_BOOST, SPEED,
HASTE, REGENERATION, FIRE_RESISTANCE, WATER_BREATHING,
NIGHT_VISION, SATURATION, LUCK, STRENGTH, RESISTANCE,
SLOW_FALLING, DOLPHINS_GRACE, ABSORPTION, and so on)
amplifier: the level of the effect (0 = level I, 1 = level II, ...)
duration-seconds: how long it lasts (86400 = one day)
cost-self / cost-team: same format as upgrades.yml -> costThe perks below cover the whole day of a skyblock player: getting around (jump, speed, slow falling), working (haste, night vision, water breathing, dolphin's grace), fighting (strength, resistance, regeneration, absorption) and living (saturation, fire resistance, luck). Prices climb with how much the perk changes the game.
perks14 keysperks.jump_boost6 keysperks.jump_boost.display3 keysmaterialRABBIT_FOOTname"&dJump Boost II"lore["&7Jump higher for 2 days"]perks.jump_boosteffectJUMP_BOOSTamplifier1duration-seconds172800perks.jump_boost.cost-self1 keymoney2000perks.jump_boost.cost-team1 keymoney15000jump_boost:
speed_boost, haste_boost, regeneration_boost, night_vision, fire_resistance, water_breathing, dolphins_grace, slow_falling, strength_boost, resistance_boost, absorption_boost, saturation_boost, luck_boost roles.yml
Island roles 7 settings
roles.ymlplugins/ShadowSkyBlock/roles.yml File notes
Roles you can give to island members. The island owner ALWAYS holds every permission, so there is no need (and no way) to list them here.
Every role has:
display-name: the name shown in menus and messages. It is text a player
reads, so the roles below take theirs from the language
file (roles.<role>.display-name in lang/<language>.yml),
in the server's language. Write one here to use your own
instead: it wins, in every language. A role you add
yourself needs one, or it shows its id. Colour codes with
"&" work (&e = yellow).
priority: ordering in the menus only (higher = further up)
permissions: what this role is allowed to do, out of:
BREAK_BLOCKS - break blocks
PLACE_BLOCKS - place blocks
USE_BUCKET - use buckets (water/lava/milk)
USE_CONTAINERS - open chests/barrels/furnaces/other containers
USE_DOORS - open doors/trapdoors/gates
INTERACT_REDSTONE - use levers/buttons/pressure plates
PVP - hit other players on the island
DAMAGE_ANIMALS - hit animals/passive mobs on the island
INTERACT_ENTITIES - interact with entities (villagers, panels...)
INVITE_MEMBERS - invite new members
KICK_MEMBERS - kick members out
MANAGE_ROLES - change another member's role
MANAGE_UPGRADES - buy and manage island upgrades
MANAGE_SETTINGS - change the island rules (mob griefing, spawning,
PvP, fire, time, weather...)
SET_HOME - move the island's teleport point
DELETE_ISLAND - delete the islandAdd or remove roles freely: the roles menu shapes itself around whatever is in this file.
default-rolememberroles3 keysroles.co_owner2 keyspriority80permissions[BREAK_BLOCKS, PLACE_BLOCKS, USE_BUCKET, USE_CONTAINERS, USE_DOORS, INTERACT_REDSTONE, DAMAGE_ANIMALS, INTERACT_ENTITIES, INVITE_MEMBERS, KICK_MEMBERS, MANAGE_UPGRADES, MANAGE_SETTINGS, SET_HOME]+10
roles.member2 keyspriority50permissions[BREAK_BLOCKS, PLACE_BLOCKS, USE_BUCKET, USE_CONTAINERS, USE_DOORS, INTERACT_REDSTONE, DAMAGE_ANIMALS, INTERACT_ENTITIES]+5
A member who may break and place blocks but not pull a lever cannot run the farms they helped build: the switches go with the building.
roles.visitor2 keyspriority0permissions[ ] starter_chest.yml
The starter chest 1 setting
starter_chest.ymlplugins/ShadowSkyBlock/starter_chest.yml File notes
What goes into the starter chest of a new island. It applies both to the built-in generation (IslandGenerator, when you are not using schematics) and to ANY schematic picked from the menu: once the schematic is pasted, the plugin looks for the FIRST chest near the island's spawn point and fills it with these items (a schematic made for skyblock usually already has an empty chest inside, waiting to be filled).
Every entry is a Minecraft material plus an amount.
items[{ material: LAVA_BUCKET, amount: 1 }, { material: OAK_SAPLING, amount: 2 }, { material: SPRUCE_SAPLING, amount: 1 }, { material: BIRCH_SAPLING, amount: 1 }, { material: JUNGLE_SAPLING, amount: 1 }, { material: ACACIA_S …+20
materialTwo saplings, not one: the first tree can burn, be built over or be lost to a misplaced lava bucket, and a skyblock with no wood left is a skyblock over.
materialOne sapling of every other overworld tree, so the island can grow any wood.
If the chosen schematic has NO chest anywhere near the spawn point, the plugin puts one there for you (holding the "items" above) and stands a welcome sign on top of it. Up to 4 lines; an empty line "" writes nothing. This is text a player reads, so it comes from the language file, in the server's language ("starter-chest.fallback-sign" in lang/<language>.yml). To write your own, add it here - yours wins, in every language:
fallback-sign: - "&6&lWelcome!" - "&7Your starter" - "&7chest" - ""
upgrades.yml
Island upgrades 26 settings
upgrades.ymlplugins/ShadowSkyBlock/upgrades.yml File notes
This file ships in English. Its Italian version is esempi/it/upgrades.yml, next to this one in the plugin folder, and the plugin never reads it: to run the Italian one, copy it over this file and use /island admin reload. The messages and menus follow "messages.language" in config.yml on their own; this file is content you write, so it stays as it is.
Upgrades a player can buy from the "Upgrades" menu (reached from the control panel, /island panel, or /island upgrades). Add, remove or change as many as you like, and give each one AS MANY LEVELS as you like: the menu adapts itself both to the number of upgrades and to the number of levels of each.
Every upgrade has:
display: material/name/lore shown in the menu. Name and lore are text a
player reads, written right here: this file ships in English
(see the top of the file for the Italian one).
type: what it does when it goes up a level. Possible values:
RADIUS - grows the island's protected radius by "amount" blocks
MEMBER_LIMIT - raises the member limit by "amount"
BLOCK_LIMIT - raises by "amount" how many blocks of the listed
"materials" the island may hold. Needs:
materials: [ PISTON, STICKY_PISTON ]
base-limit: 64 (what an island starts with)
A block no upgrade lists has no ceiling at all.
The count starts the day the ceiling exists:
what was already on the island is not counted.
CROP_BOOST - crops grow faster: "amount" is the extra
percentage (100 = twice as fast, 50 = one and a
half). Works on every crop with growth stages.
XP_BOOST - members gain "amount"% more experience while
on their own island
MOB_DROP_BOOST - mobs killed by a member on the island drop
"amount"% more (100 = double drops)
SPAWNER_BOOST - the island's spawners spawn faster: "amount" is
the extra percentage (100 = twice as often,
200 = three times). Vanilla spawners and
ShadowSpawners stacks alike.
levels: one entry per level (1, 2, 3, ...). Every level has:
amount: what THAT level adds - not a hand-written running total: if
level 1 gives +10 and level 2 gives +15, a player who reaches
level 2 has been given +25 altogether
cost: what buying that level takes. "money" needs an economy:
ShadowEconomy, or Vault with an economy plugin. "items" can
also ask for a CUSTOM item (from any plugin, Oraxen for
instance) by adding "custom-name" with the exact name shown
on the item.
duration: OPTIONAL. Makes the level temporary: "2h", "90m", "3d",
"1h30m" or a plain number of seconds. When it runs out the
upgrade drops back to level 0 and can be bought again - a
"boost" rather than a permanent purchase. Buying the next
level while one is still running renews the clock. Left out,
the level is forever.
rewards: EXTRA rewards handed out on reaching that level, on top of
the effect itself. Same format as missions.yml.
There is no level "after the last one": once a player has bought the
highest level defined here, the upgrade reads as maxed out.WHAT THE FREE VERSION GETS
Upgrades work without a licence, up to a ceiling: the first few upgrades in this file are active and each can be bought up to a certain level. The exact numbers are printed in the console at start-up, and anything left out is named there too - a limit nobody tells you about reads as a bug. The menu still shows the levels beyond it, so a player can see where the road goes; it is the purchase that stops. A licence key lifts both ceilings.
upgrades12 keysupgrades.radius3 keysupgrades.radius.display3 keysmaterialGOLDEN_SHOVELname"&6Island Expansion"lore["&7Raises the protected radius", "&7of your island"]+1
upgrades.radiustypeRADIUSupgrades.radius.levels3 keysupgrades.radius.levels.13 keysamount10upgrades.radius.levels.1.cost1 keymoney5000upgrades.radius.levels.1rewards[ ]upgrades.radius.levels.23 keysamount15upgrades.radius.levels.2.cost1 keymoney15000upgrades.radius.levels.2rewards[ ]upgrades.radius.levels.33 keysamount20upgrades.radius.levels.3.cost2 keysmoney40000items[{ material: DIAMOND_BLOCK, amount: 5 }]upgrades.radius.levels.3rewards[{ type: MESSAGE, text: "&aIsland expanded to…]radius:
member_limit, piston_limit, hopper_limit, redstone_limit, rail_limit, spawner_limit, crop_boost, farm_boost, xp_boost, mob_drop_boostupgrades.spawner_boost3 keysSpawners, on a timer: like crop_boost, it runs out and is bought again. The founders decide the multiplier per level here: amount 100 is x2, 200 is x3. Levels add up while they last.
upgrades.spawner_boost.display3 keysmaterialSPAWNERname"&cFast Spawners (timed)"lore["&7The spawners of your island spawn", "&7twice as fast for a while"]+1
upgrades.spawner_boosttypeSPAWNER_BOOSTupgrades.spawner_boost.levels2 keysupgrades.spawner_boost.levels.14 keysamount100duration3hupgrades.spawner_boost.levels.1.cost1 keymoney20000upgrades.spawner_boost.levels.1rewards[{ type: MESSAGE, text: "&aSpawners at double…]upgrades.spawner_boost.levels.24 keysamount100duration3hupgrades.spawner_boost.levels.2.cost1 keymoney50000upgrades.spawner_boost.levels.2rewards[{ type: MESSAGE, text: "&aSpawners at triple…]Languages
The texts the plugin shows to players, one file per language.
lang/
Texts and messages 2 files
lang/plugins/ShadowSkyBlock/lang/ File notes
Every message a player reads, editable without touching the code.
The plugin's own language: English is the default, and lang/it.yml holds the Italian (set "messages.language: it" in config.yml to use it). Translating the plugin means copying this file and rewriting the values - never the keys.
Minecraft colour codes: & followed by a character (&a = green, &c = red).
Every message the plugin shows to players, one file per language. The keys are not listed one by one: here are the files, how many texts they hold and the placeholders they use.
| File | Language | Texts |
|---|---|---|
lang/en.yml reference | — | 553 |
lang/it.yml | — | 553 |
Most used placeholders
The plugin replaces them with the right value: leave them written as they are.
%value%%level%%name%%player%%max%%material%%amount%%world%%total%<player>%time%%seconds%%percent%%role%
Message groups
island23upgrades3general11admin177hub1license53level11warp7missions24economy2command11help2bank9generator4perks6portal4chat3like4scoreboard10suite28menus85roles3starter-chest1gui71