diff --git a/0.2.x/api/index.html b/0.2.x/api/index.html index 51653ec58..48b0d11e0 100644 --- a/0.2.x/api/index.html +++ b/0.2.x/api/index.html @@ -622,7 +622,7 @@
Javadoc: https://jd.screamingsandals.org/sbw-0-2-x/BedWars-API/
+Javadoc: https://docs.screamingsandals.org/BedWars/javadoc/0.2.36/
diff --git a/0.2.x/arena/index.html b/0.2.x/arena/index.html index 90e7c4f1b..02ec78d5f 100644 --- a/0.2.x/arena/index.html +++ b/0.2.x/arena/index.html @@ -666,7 +666,7 @@Now it's time to add the teams. To add a team, do /bw admin <arena> team add <team name> <team colour> <team size>
.
For the colors, you can use this TeamColor enum: RED
, BLUE
, GREEN
, YELLOW
, MAGENTA
, PINK
, LIME
, BLACK
, WHITE
, ORANGE
, LIGHT_GRAY
, GRAY
, LIGHT_BLUE
, CYAN
and BROWN
.
For the colors, you can use this TeamColor enum: RED
, BLUE
, GREEN
, YELLOW
, MAGENTA
, PINK
, LIME
, BLACK
, WHITE
, ORANGE
, LIGHT_GRAY
, GRAY
, LIGHT_BLUE
, CYAN
and BROWN
.
Warning
You must create at least 2 teams.
diff --git a/0.2.x/search/search_index.json b/0.2.x/search/search_index.json index 6e04c799c..470ef2036 100644 --- a/0.2.x/search/search_index.json +++ b/0.2.x/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"ScreamingBedWars","text":"Flexible BedWars plugin, formerly coded as a replacement for BedwarsRel. Supported versions: [1.8.8 - 1.21.3], recommended versions: [1.21.1].
"},{"location":"#support","title":"Support","text":"If you need any help, you can contact us on Discord. Make sure to read this documentation, the servers' rules and the FAQ's before asking for support.
If you find any bugs, feel free to report it into GitHub issues, we will look into it.
"},{"location":"#features","title":"Features","text":"Warning
Note that API is going to be changed in future versions (0.3.0+)
"},{"location":"api/#maven","title":"Maven","text":"<repositories>\n <repository>\n <id>screaming-repo</id>\n <url>https://repo.screamingsandals.org/public/</url>\n </repository>\n</repositories>\n\n<dependencies>\n <dependency>\n <groupId>org.screamingsandals.bedwars</groupId>\n <artifactId>BedWars-API</artifactId>\n <version>0.2.36</version>\n <scope>provided</scope>\n </dependency>\n</dependencies>\n
"},{"location":"api/#gradle","title":"Gradle","text":"repositories {\n maven { url 'https://repo.screamingsandals.org/public/' }\n}\n\ndependencies {\n compileOnly 'org.screamingsandals.bedwars:BedWars-API:0.2.36'\n}\n
"},{"location":"api/#hooking-into-the-api","title":"Hooking into the API","text":"import org.screamingsandals.bedwars.api.BedwarsAPI;\n\n...\nBedwarsAPI api = BedwarsAPI.getInstance();\n...\n
Javadoc: https://jd.screamingsandals.org/sbw-0-2-x/BedWars-API/
"},{"location":"arena/","title":"Making an arena","text":"World
This tutorial presumes that you already have a world with your desired BedWars map, loaded with a plugin like Multiverse or SlimeWorldManager and that you already are in the world with your BedWars map.
"},{"location":"arena/#creating-the-arena","title":"Creating the arena","text":"Create the arena by executing this command: /bw admin <arena name> add
.
To set the first position, go into the first corner of your map and execute this command: /bw admin <arena name> pos1
. To set the second position, go into the second corner of your map and execute this command: /bw admin <arena name> pos2
.
Positions
pos1
is one corner of the arena and pos2
is the corner of the arena, that is opposing to pos1
!
Now it's time to add the teams. To add a team, do /bw admin <arena> team add <team name> <team colour> <team size>
.
For the colors, you can use this TeamColor enum: RED
, BLUE
, GREEN
, YELLOW
, MAGENTA
, PINK
, LIME
, BLACK
, WHITE
, ORANGE
, LIGHT_GRAY
, GRAY
, LIGHT_BLUE
, CYAN
and BROWN
.
Warning
You must create at least 2 teams.
"},{"location":"arena/#setting-team-spawns","title":"Setting team spawns","text":"Stand where you would like to have the team spawn, and look in the direction that you want your players to be oriented when they spawn, as the yaw will also be taken into account. Set the team's spawn with this command: /bw admin <arena> team spawn <team>
and repeat until all teams have a spawn.
Stand on top of the bed, look down on the head of the bed and execute this command to set the bed location: /bw admin <arena name> team bed <team name>
. Repeat until all teams have a bed.
Target blocks
The team's target block isn't limited to a bed, in fact BedWars has support for any block (the Dragon Egg, cakes and the Respawn Anchor have special support to allow BedWars to operate as EggWars, AnchorWars or CakeWars out of the box).
"},{"location":"arena/#adding-resource-generators","title":"Adding resource generators","text":"Stand at the block where you want the generator to be and execute this command: /bw admin <arena name> spawner add <resource> <true/false>
.
Valid default resources: bronze
, iron
and gold
(diamond and emerald is not included out of the box, you will have to add it yourself in the configuration).
The true/false part of the command means if there should be a hologram (true) or if there should be no hologram (false).
"},{"location":"arena/#adding-merchants","title":"Adding merchants","text":"Now it's time to add the shops. Stand where you would like your shop entity to be, look forward and execute this command: /bw admin <arena> store add <name of villager entity> [file with shop] [use main shop]
(last two command parts can be omitted).
Example: /bw admin <arena> store add &aStore shop.yml false
, /bw admin <arena> store add &aStore
Store entity types
If you would like to have a different entity as the store, do the following: /bw admin <arena> store type <living entity>
. This sets entity type of store (Villager, Horse, Cow, etc.). If you would like to have a player with a skin as the shop keeper, use this command: /bw admin <arena> store type Player:skinname
.
Add the lobby location for the arena by executing this command: /bw admin <arena> lobby
.
Add the spectator location for the arena by executing this command: /bw admin <arena> spec
.
Last but not least, remember to save the arena with /bw admin <arena> save
.
You can use signs to join the arena. Follow these steps to create such sign.
Alternatively, you can create a leave sign by writing word leave
instead of arena name.
These entities allow players to select their team by right clicking at them. There are two ways how these entities can be created.
"},{"location":"arena/#creation-by-jointeam-command","title":"Creation by jointeam command","text":"/bw admin <arena> jointeam <team>
Create any living entity with custom name same as team name and place it in your lobby. The plugin will use the name to determine the team.
"},{"location":"bungee/","title":"BungeeCord mode","text":"Screaming BedWars supports a BungeeCord mode, which allows for single-arena servers with arena autojoin. This document provides instructions on how to configure this mode.
Velocity Support
This mode is also compatible with Velocity. Ensure bungee-plugin-message-channel
is enabled in the velocity.toml
file on your proxy.
To enable BungeeCord mode, locate the bungee
section in config.yml
and set enabled
to true
. Then, configure each option according to your requirements:
serverRestart
- Determines whether the server should restart after the game ends. This is not mandatory for the plugin; adjust this setting as needed. To enable server restarts, an existing startup script (.sh
or .bat
) must be defined in spigot.yml
.serverStop
- Similar to serverRestart
, but only shuts down the server. Use this only if you have separate software managing automatic server startup.server
- Specifies the hub server to which players are moved after the game ends.auto-game-connect
- Determines whether users should automatically join the BedWars game upon server join. This should typically be enabled unless managed by an addon.kick-when-proxy-too-slow
- If the proxy fails to move the player to the hub server or is too slow, the server will kick players who are waiting for too long.random-game-selection
- Enables random selection of arenas if multiple arenas are on the same server. Set enabled
to true
to use this feature. The preselect-games
option is useful for knowing the next selected game before any player joins (at server startup or after the previous game ends).motd
- Useful for server selection plugins utilizing MOTD text, such as BungeeSigns. If enabled, the plugin will update the MOTD based on the current state and player count. There are five states: waiting
, waiting_full
, running
, rebuilding
, and disabled
. Use the placeholders %name%
for arena name, %current%
for current player count, and %max%
for maximum player count. Messages can be colored using legacy color codes (\u00a7<color code>
).The configuration section might look like this:
bungee:\n enabled: false\n serverRestart: true\n serverStop: false\n server: hub\n auto-game-connect: false\n kick-when-proxy-too-slow: true\n random-game-selection:\n enabled: true\n preselect-games: false\n motd:\n enabled: false\n waiting: '%name%: Waiting for players [%current%/%max%]'\n waiting_full: '%name%: Game is full [%current%/%max%]'\n running: '%name%: Game is running [%current%/%max%]'\n rebuilding: '%name%: Rebuilding...'\n disabled: '%name%: Game is disabled'\n
"},{"location":"bungee/#configuring-hub-servers","title":"Configuring Hub Servers","text":"While there is no lobby plugin for Screaming BedWars, any server selection plugin can be used, such as BungeeSigns. Plugins that can read MOTD are preferred as they can relay the game state to your hub server.
If you prefer to use inventory-based GUIs instead of signs and wish to display information from the server's MOTD, you can utilize any inventory plugin compatible with PlaceholderAPI, such as DeluxeMenus. The Pinger expansion is recommended, as it provides the necessary placeholders for this purpose. To create a server selector using DeluxeMenus, you may refer to this guide and review this example.
Synchronizing Statistics
For BungeeCord networks, it is common to synchronize statistics to a database. Configure the database
section as described here. Ensure all servers are connected to the same database.
To access statistics in the lobby, the simplest option is to install Screaming BedWars on your hub server as well. Ensure this instance is NOT in BungeeCord mode. Alternatively, you can create an addon to retrieve statistics. The database structure is detailed at the end of the database configuration section.
"},{"location":"commands/","title":"Commands and Permissions","text":""},{"location":"commands/#permissions","title":"Permissions","text":"bw.admin
- Allows you to create/edit an arena, reload the plugin and use the cheat command if enabled.bw.vip.startitem
- Allows you to start the game using the item. All players will be automatically distributed to teams.bw.vip.forcejoin
- Allows you to join even if the game is full (player without this permission will be kicked).bw.otherstats
- Allows you to see stats of other players.bw.admin.alljoin
- Allows you to use /bw alljoin command.bw.disable.joinall
- Protects you from effects of /bw alljoin command.bw.cmd.join
- Allows you to use /bw join command.bw.cmd.leave
- Allows you to use /bw leave command.bw.cmd.stats
- Allows you to use /bw stats command.bw.cmd.rejoin
- Allows you to use /bw rejoin command.bw.cmd.autojoin
- Allows you to use /bw autojoin command.bw.cmd.list
- Allows you to use /bw list command.bw.cmd.leaderboard
- Allows you to use /bw leaderboard command.Every permission can be prefixed with misat11.
. Note that this egoism is deprecated and will be removed in a future release.
All permissions starting with bw.cmd.
are allowed by default even if the permission is not explicitly given. This can be changed in config.yml
in section default-permissions
default-permissions:\n join: true\n leave: true\n stats: true\n list: true\n rejoin: true\n autojoin: true\n leaderboard: true\n
"},{"location":"commands/#commands","title":"Commands","text":"Every command has its own specified permission in brackets.
<argument>
is required argument. [argument]
is optional argument, and the command can be executed if this argument is not specified. However, every optional argument before this optional argument must be specified in order to be able to use this argument.
/bw help
- Shows list of commands (no permission required)/bw join [arena]
- Join the arena (permission: bw.cmd.join
)/bw leave
- Leave the arena (permission: bw.cmd.leave
)/bw list
- Lists all available arenas (permission: bw.cmd.list
)/bw stats
- Shows your statistics (permission: bw.cmd.stats
)/bw stats <player>
- Shows your statistics (permission: bw.cmd.stats
together with bw.otherstats
or bw.admin
)/bw leaderboard
- Shows top players on this server (permission: bw.cmd.leaderboard
)/bw rejoin
- Joins the latest game you have played (permission: bw.cmd.rejoin
)/bw autojoin
- Joins random game (permission: bw.cmd.autojoin
)/bw party warp
- Warps all players in your party to your game or towards you (permission: bw.cmd.party
, requires Parties plugin and party
section in config.yml enabled)All these commands require bw.admin
permission if not specified.
/bw admin <arena> info [section]
- Shows all information about the arena/bw admin <arena> add
- Creates a new arena/bw admin <arena> lobby
- Sets lobby position to your position/bw admin <arena> spec
- Sets specatator's spawn to your position/bw admin <arena> pos1
- Sets the extreme point of the arena to your position/bw admin <arena> pos2
- Sets the second extreme point of the arena to your position/bw admin <arena> pausecountdown <seconds>
- Sets the pause duration before game starts/bw admin <arena> minplayers <minimum>
- Sets minimum of players needed to start the game/bw admin <arena> time <seconds>
- Sets the game's duration/bw admin <arena> team add <team> <color> <max players>
- Add a team to the game/bw admin <arena> team color <team> <color>
- Change team color/bw admin <arena> team maxplayers <team> <max players>
- Change max team players/bw admin <arena> team spawn <team>
- Sets team spawn to your position/bw admin <arena> team bed <team> [looking_at|standing_on]
- Sets team target block to your target position (it can be any block, not just bed)/bw admin <arena> jointeam <team>
- Sets the ability to connect to a team using an entity/bw admin <arena> spawner add <bronze|gold|iron> [hologram] [first level] [name] [team] [max spawned resources]
- Add item spawner to your position (alternatively you can specify max spawned resources without specifying team)/bw admin <arena> spawner reset
- Remove all spawners/bw admin <arena> spawner remove
- Removes all spawners at location/bw admin <arena> store add [name above dealer head] [file with shop] [use main shop]
- Add trading villager to your position/bw admin <arena> store remove
- Remove trading villager from your position/bw admin <arena> store type <living entity>
- Sets entity type of store (Villager, Horse, Cow, Pig etc.)/bw admin <arena> store child
- Mark this shopkeeper as child/bw admin <arena> store adult
- Mark this shopkeeper as adult/bw admin <arena> config <constant> <value>
- Sets value of constant variable for game/bw admin <arena> arenatime <type>
- Sets time in arena (DAY, NIGHT, etc.)/bw admin <arena> arenaweather <type>
- Sets weather in arena (default, CLEAN, DOWNFALL)/bw admin <arena> postgamewaiting <seconds>
- Sets the waiting time before player is teleported out of the arena/bw admin <arena> customprefix <name|off>
- Enables custom prefix for arena/bw admin <arena> save
- Saves the game and activates it!/bw admin <arena> edit
- Turns the game off and switches the arena to edit mode/bw admin <arena> remove
- Remove the arenaThese command have to be enabled manually using the config option enable-cheat-command-for-admins
. The admin must be in the game (running or in waiting lobby) in order to execute cheat.
/bw cheat give <resource> [amount] [player]
- Gives player specified amount of resource/bw cheat kill [player]
- Kills specified player/bw cheat startemptygame
- Starts a game with only one team (useful for testing)/bw cheat destroybed <team>
- Destroys bed of the specific team/bw cheat destroyallbeds
- Destroys all beds in the game/bw cheat jointeam [team]
- Joins an admin to the specified team or to current team ignoring its size (can also be used while the game is running, however the team must have some players)Additionaly to /bw cheat
command, there is the /bw cheatIn <game> <cheat> [params...]
command. This command allows the admin to execute cheat in a game they are not joined to, or from console. Currently supports the following cheats: give
, kill
, destroybed
ad destroyallbeds
.
/bw alljoin [arena]
- Joins all players without bw.disable.alljoin
permission to the arena (permission: bw.admin.alljoin
)/bw reload
- Reloads the plugin/bw mainlobby [enable|set]
- Enables main lobby or sets main lobby location/bw dump [paste.gg|pastes.dev]
- Dumps information about the server and gives you link to the dump. This link can be useful for support./bw addholo [leaderboard|stats]
- Adds new hologram to your position/bw removeholo
- After executing this command, the player can right-click the holographic statistic to remove it# the language of the plugin's messages\nlocale: en\n# enables debug messages, may help with resolving certain problems\ndebug: false\n# is crafting in the arenas allowed?\nallow-crafting: false\n# should items be kept when the player dies in the arena?\nkeep-inventory-on-death: false\n# should player's armor be colored after choosing their team in the lobby?\nin-lobby-colored-leather-by-team: true\n# should the entity for joining teams have a visible name?\njointeam-entity-show-name: true\n# are teammates allowed to damage themselves?\nfriendlyfire: false\n# do items drop from players when killed in the arena?\nplayer-drops: true\n# should the players be joined to a random team after the lobby waiting time passes?\n# if false, the game won't start until everyone chooses a team\njoin-randomly-after-lobby-timeout: false\n# should BedWars prevent players from killing the merchants?\nprevent-killing-villagers: true\n# should the compass for choosing teams be available in the lobby?\ncompass-enabled: true\n# should BedWars join the player to a random team when he joins the lobby?\njoin-randomly-on-lobby-join: false\nadd-wool-to-inventory-on-join: true\nprevent-spawning-mobs: true\nspawner-holograms: true\nspawner-disable-merge: true\nprevent-lobby-spawn-mobs-in-radius: 16\nspawner-holo-height: 0.25\nspawner-holograms-countdown: true\ndamage-when-player-is-not-in-arena: false\nremove-unused-target-blocks: true\nallow-block-falling: true\ngame-start-items: false\nplayer-respawn-items: false\n# When game-start-items is enabled, the player is going to get all items listed in the following list.\n# Example:\n# gived-game-start-items:\n# - wooden_sword\n# - leather_helmet\n# - leather_boots\n# - leather_leggings\n# - leather_chestplate\ngived-game-start-items: []\ngived-player-respawn-items: []\ndisable-hunger: false\nautomatic-coloring-in-shop: true\nsell-max-64-per-click-in-shop: true\nenable-cheat-command-for-admins: false\nshopkeepers-are-silent: true\ndestroy-placed-blocks-by-explosion-except: []\ndestroy-placed-blocks-by-explosion: true\nholo-above-bed: true\nallow-spectator-join: false\ndisable-server-message:\n player-join: false\n player-leave: false\ndisable-flight: true\nrespawn-cooldown:\n enabled: true\n time: 5\nstop-team-spawners-on-die: false\nallow-fake-death: false\n# Whether or not should 1.19.4 display entities be used or not. Does work only on 1.19.4+\nprefer-1-19-4-display-entities: true\nremember-what-scoreboards-players-had-before: false\nuse-chunk-tickets-if-available: true\nreset-full-spawner-countdown-after-picking: true\nplayers-can-win-game-only-after-seconds: 0\nkick-players-upon-final-death:\n enabled: false\n delay: 5\nallowed-commands: []\nchange-allowed-commands-to-blacklist: false\nbungee:\n enabled: false\n serverRestart: true\n serverStop: false\n server: hub\n auto-game-connect: false\n kick-when-proxy-too-slow: true\n random-game-selection:\n enabled: true\n preselect-games: false\n motd:\n enabled: false\n waiting: '%name%: Waiting for players [%current%/%max%]'\n waiting_full: '%name%: Game is full [%current%/%max%]'\n running: '%name%: Game is running [%current%/%max%]'\n rebuilding: '%name%: Rebuilding...'\n disabled: '%name%: Game is disabled'\nfarmBlocks:\n enable: false\n blocks: []\nscoreboard:\n enable: true\n title: '&a%game%&r - %time%'\n bedLost: '&c\u2718'\n anchorEmpty: '&e\u2718'\n bedExists: '&a\u2714'\n teamTitle: '%bed%%color%%team%'\ntitle:\n enabled: true\n fadeIn: 0\n stay: 20\n fadeOut: 0\nshop:\n rows: 4\n render-actual-rows: 6\n render-offset: 9\n render-header-start: 0\n render-footer-start: 45\n items-on-row: 9\n show-page-numbers: true\n inventory-type: CHEST\n citizens-enabled: false\n allow-execution-of-console-commands: true\nitems:\n jointeam: COMPASS\n leavegame: SLIME_BALL\n startgame: DIAMOND\n shopback: BARRIER\n shopcosmetic: GRAY_STAINED_GLASS_PANE\n pageback: ARROW\n pageforward: ARROW\n team-select: WHITE_WOOL\nvault:\n enable: true\n reward:\n kill: 5\n win: 20\n final-kill: 5\n bed-destroy: 0\nresources:\n gold:\n material: GOLD_INGOT\n color: GOLD\n name: Gold\n interval: 20\n translate: resource_gold\n spread: 1.0\n iron:\n material: IRON_INGOT\n color: GRAY\n name: Iron\n interval: 10\n translate: resource_iron\n spread: 1.0\n bronze:\n material: BRICK\n color: DARK_RED\n name: Bronze\n interval: 1\n translate: resource_bronze\n spread: 1.0\nrespawn:\n protection-enabled: true\n protection-time: 10\n show-messages: true\nspecials:\n action-bar-messages: true\n dont-show-success-messages: false\n rescue-platform:\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: GLASS\n protection-wall:\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: CUT_SANDSTONE\n tnt-sheep:\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n arrow-blocker:\n protection-time: 10\n delay: 5\n warp-powder:\n teleport-time: 6\n delay: 0\n magnet-shoes:\n probability: 75\n golem:\n speed: 0.25\n follow-range: 10\n health: 20\n name-format: '%teamcolor%%team% Golem'\n show-name: true\n delay: 0\n collidable: false\n teamchest:\n turn-all-enderchests-to-teamchests: true\n throwable-fireball:\n damage: 3.0\n incendiary: true\n damage-thrower: true\n auto-igniteable-tnt:\n explosion-time: 8\n damage-placer: true\n damage: 4.0\nsounds:\n bed_destroyed:\n sound: ENTITY_ENDER_DRAGON_GROWL\n volume: 1\n pitch: 1\n my_bed_destroyed:\n sound: ENTITY_ENDER_DRAGON_GROWL\n volume: 1\n pitch: 1\n countdown:\n sound: UI_BUTTON_CLICK\n volume: 1\n pitch: 1\n game_start:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\n team_kill:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\n player_kill:\n sound: ENTITY_PLAYER_BIG_FALL\n volume: 1\n pitch: 1\n item_buy:\n sound: ENTITY_ITEM_PICKUP\n volume: 1\n pitch: 1\n upgrade_buy:\n sound: ENTITY_EXPERIENCE_ORB_PICKUP\n volume: 1\n pitch: 1\n respawn_cooldown_wait:\n sound: UI_BUTTON_CLICK\n volume: 1\n pitch: 1\n respawn_cooldown_done:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\ngame-effects:\n end:\n effects:\n - ==: Firework\n flicker: false\n trail: false\n colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL\n power: 1\n type: Firework\n start: {}\n kill: {}\n teamkill: {}\n lobbyjoin: {}\n lobbyleave: {}\n respawn: {}\n beddestroy: {}\n warppowdertick: {}\nlobby-scoreboard:\n enabled: true\n title: '&eBEDWARS'\n content:\n - ' '\n - '&fMap: &2%arena%'\n - '&fPlayers: &2%players%&f/&2%maxplayers%'\n - ' '\n - '&fWaiting ...'\n - ' '\nstatistics:\n enabled: true\n type: yaml\n show-on-game-end: false\n bed-destroyed-kills: false\n scores:\n kill: 10\n final-kill: 0\n die: 0\n win: 50\n bed-destroy: 25\n lose: 0\n record: 100\ndatabase:\n host: localhost\n port: 3306\n db: database\n user: root\n password: secret\n table-prefix: bw_\n type: mysql\n driver: default\n params:\n useSSL: false\n serverTimezone: Europe/Prague\n autoReconnect: true\n cachePrepStmts: true\n prepStmtCacheSize: 250\n prepStmtCacheSqlLimit: 2048\nbossbar:\n use-xp-bar: false\n lobby:\n enable: true\n color: YELLOW\n style: SEGMENTED_20\n game:\n enable: true\n color: GREEN\n style: SEGMENTED_20\n # The backend-entity field is present only if the server is running on 1.8.8. Allowed values: wither, dragon\n backend-entity: dragon\nholograms:\n enabled: true\n headline: Your &eBEDWARS&f stats\n leaderboard:\n headline: '&6Bedwars Leaderboard'\n format: '&l%order%. &7%name% - &a%score%'\n size: 10\nchat:\n override: true\n format: '<%teamcolor%%name%&r> '\n separate-chat:\n lobby: false\n game: false\n send-death-messages-just-in-game: true\n send-custom-death-messages: true\n default-team-chat-while-running: true\n all-chat-prefix: '@a'\n team-chat-prefix: '@t'\n all-chat: '[ALL] '\n team-chat: '[TEAM] '\n death-chat: '[DEATH] '\n disable-all-chat-for-spectators: false\nrewards:\n enabled: false\n player-win:\n - /example {player} 200\n player-win-run-immediately:\n - /example {player} 200\n player-end-game:\n - /example {player} {score}\n player-destroy-bed:\n - /example {player} {score}\n player-kill:\n - /example {player} 10\n player-final-kill:\n - /example {player} 10\n player-game-start:\n - /example {player} 10\n player-early-leave:\n - /example {player} {death} 10\n team-win:\n - /example {team} 10\n player-team-win:\n - /example {team} {death} 10\n game-start:\n - /example Hello World!\nlore:\n generate-automatically: true\n text:\n - '&7Price:'\n - '&7%price% %resource%'\n - '&7Amount:'\n - '&7%amount%'\nsign:\n lines:\n - '&c&l[BedWars]'\n - '%arena%'\n - '%status%'\n - '%players%'\n block-behind:\n enabled: false\n waiting: ORANGE_STAINED_GLASS\n rebuilding: BROWN_STAINED_GLASS\n in-game: GREEN_STAINED_GLASS\n game-disabled: RED_STAINED_GLASS\nhotbar:\n selector: 0\n color: 1\n start: 2\n leave: 8\nbreakable:\n enabled: false\n asblacklist: false\n explosions: false\n blocks: []\nleaveshortcuts:\n enabled: false\n list:\n - leave\nmainlobby:\n enabled: false\n location: ''\n world: ''\nturnOnExperimentalGroovyShop: false\npreventSpectatorFlyingAway: false\nremovePurchaseMessages: false\nremovePurchaseFailedMessages: false\nremoveUpgradeMessages: false\ndisableCakeEating: true\ndisableDragonEggTeleport: true\npreventArenaFromGriefing: true\nupdate-checker:\n zero:\n console: true\n admins: true\n one:\n console: true\n admins: true\ntarget-block:\n allow-destroying-with-explosions: false\n respawn-anchor:\n fill-on-start: true\n enable-decrease: true\n sound:\n charge: BLOCK_RESPAWN_ANCHOR_CHARGE\n used: BLOCK_GLASS_BREAK\n deplete: BLOCK_RESPAWN_ANCHOR_DEPLETE\n cake:\n destroy-by-eating: true\nevent-hacks:\n damage: false\n destroy: false\n place: false\ntab:\n enable: false\n header:\n enabled: true\n contents:\n - '&aMy awesome BedWars server'\n - '&bMap: %map%'\n - '&cPlayers: %respawnable%/%max%'\n footer:\n enabled: true\n contents:\n - '&eexample.com'\n - '&fWow!!'\n - '&a%spectators% are watching this match'\n hide-spectators: true\n hide-foreign-players: false\ndefault-permissions:\n join: true\n leave: true\n stats: true\n list: true\n rejoin: true\n autojoin: true\n leaderboard: true\n party: true\n# The following sections requires Parties plugin to be installed\nparty:\n enabled: false\n autojoin-members: false\n notify-when-warped: true\n
"},{"location":"config/#custom-resources","title":"Custom resources","text":"Tip
If you want to switch to emerald
, diamond
, iron
and gold
specifically, you may want to have another Hypixel features on your server, like upgrades. In that case, we would recommend you checking out SBA.
Open the config (plugins/BedWars/config.yml
) and scroll down, until you find a section called resources
. Using Ctrl+F
helps you to search for it.
Here is an example on how to add emerald
, diamond
, iron
and gold
.
resources:\n emerald: # resource name\n material: EMERALD # resource material (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html)\n color: GREEN # resource color (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ChatColor.html)\n name: Emerald # resource in-game name\n interval: 60 # resource spawn time in seconds\n translate: resource_emerald # resource translation key\n spread: 1.0 # resource spread radius\n diamond:\n material: DIAMOND\n color: BLUE\n name: Diamond\n interval: 30\n translate: resource_diamond\n spread: 1.0\n iron:\n material: IRON_INGOT\n color: WHITE\n name: Iron\n interval: 2\n translate: resource_iron\n spread: 1.0\n gold:\n material: GOLD_INGOT\n color: GOLD\n name: Gold\n interval: 8\n translate: resource_gold\n spread: 1.0\n
"},{"location":"config/#database-connection","title":"Database connection","text":"In config.yml you can find a section called database
. Under this section, you can configure the database connection. Currently only MySQL and MariaDB are officially supported, yet the configuration allows you to provide a custom driver for a newer version of the database system or a driver for a different SQL-like database system like PostgreSQL. Pull requests fixing support with different database systems are welcome :)
To enable the database connection, you have to set something to be saved in database. Currently only statistics can be saved to the database. To enable that, locate the statistics
section and switch type
from yaml
to database
.
There are following fields in the database section:
host
is the hostname or IP address of the database server, defaults to localhost
.port
is the port of the database server, defaults to 3306
which is the default port for MySQL/MariaDB.db
is the name of the database, defaults to database
user
is the user of the database system with access to database specified db
. The user needs to be able to change the structure of the database. Defaults to root
, though applications should not have root access.password
is the password of the database user. Defaults to secret
, though you should choose better password (possibly generated).table-prefix
is a string which is prepended to table names, defaults to bw_
.type
is type of the database system, defaults to mysql
(valid for both MySQL and MariaDB when the MySQL driver is used).driver
is the driver, which is going to be used. There are two possible options:default
. The driver will be chosen based on the type. Both Spigot and Paper servers provide driver for type mysql
. Other plugins may provide other drivers to the classpath.mysql-connector-j-8.0.0.jar
. The path is always relative to the plugins/BedWars
folder, so we recommend putting the jar to this folder. The driver needs to be JDBC 4-compatible. The driver is not available to other plugins, and does not affect them in any way.params
is a map containing specific options for the driver. You should check documentation of the chosen database system before modifying it. By default, following parameters are set: params:\n useSSL: false # change this to true if your database server requires SSL or runs on a different machine and has SSL enabled\n serverTimezone: Europe/Prague # default value is based on your system\n autoReconnect: true\n cachePrepStmts: true\n prepStmtCacheSize: 250\n prepStmtCacheSqlLimit: 2048\n
Driver version
If you use an ancient Minecraft version like 1.8.8, but you have new version of MySQL/MariaDB, the driver bundled in Spigot 1.8.8 may be incompatible. Get a new version of MySQL Connector J here: select Platform Independent, download the archive and extract the mysql-connector-j-8.x.x.jar file from it (other files from the archive are not relevant). Put the JAR file in plugins/BedWars
folder, and change driver
from default
to the name of the file, eg. mysql-connector-j-8.4.0.jar
.
stats_players table structure
In specific cases, the automatic creation of the database table may fail. In that case you may need to create it manually, using the following code or its variation.
CREATE TABLE IF NOT EXISTS `bw_stats_players` (\n `kills` int(11) NOT NULL DEFAULT '0',\n `wins` int(11) NOT NULL DEFAULT '0',\n `score` int(11) NOT NULL DEFAULT '0',\n `loses` int(11) NOT NULL DEFAULT '0',\n `name` varchar(255) NOT NULL,\n `destroyedBeds` int(11) NOT NULL DEFAULT '0',\n `uuid` varchar(255) NOT NULL,\n `deaths` int(11) NOT NULL DEFAULT '0',\n PRIMARY KEY (`uuid`)\n);\n
"},{"location":"config/#game-effects","title":"Game effects","text":"In config.yml you can find a section called game-effects
. Here you can set some visual effects that will enhance your game experiences.
end
- This effect is called when game ends.start
- This effect is called when game starts.kill
- This effect is called when someone kills someone.teamkill
- This effect is called when someone kills someone and bed or other target block is destroyed.lobbyjoin
- This effect is called when someone enters the lobby.lobbyleave
- This effect is called when someone leaves the lobby.respawn
- This effect is called when someone is respawned.beddestroy
- This effect is called when someone destroys bed or other target block.warppowdertick
- This effect is caled when someone is teleported by Warp Powder.Particle
- Particle effect (click here for list)Effect
- Effect (click here for list)Firework
- Launches a fireworkList
- Multiple effects on one eventgame-effects:\n start:\n type: Particle\n value: LAVA # uppercase key from the list\n # options below are optional\n count: 2 # how many particles will be spawned (default - 1)\n offsetX: 1 # offset from the event location (default - 0 for each coordinate)\n offsetY: 1\n offsetZ: 1\n extra: 1 # extra data, depends on each particle (default - 1)\n
"},{"location":"config/#effect","title":"Effect","text":"game-effects:\n start:\n type: Effect\n value: DOOR_CLOSE # uppercase key from the list\n
"},{"location":"config/#firework","title":"Firework","text":"Firework effect types are listed here
game-effects:\n end:\n type: Firework\n power: 1 # power of the firework\n effects: # list of firework effects\n - ==: Firework\n flicker: false\n trail: false\n colors: # list of colors\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL # effect type\n
"},{"location":"config/#list","title":"List","text":"game-effects:\n end:\n type: List\n list: # list of effects\n - type: Particle\n value: LAVA\n count: 2\n extra: 1\n - type: Effect\n value: DOOR_CLOSE # uppercase key from the list\n - type: Firework\n power: 1 # power of the firework\n effects: # list of firework effects\n - ==: Firework\n flicker: false\n trail: false\n colors: # list of colors\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL # effect type\n
"},{"location":"config/#custom-language","title":"Custom language","text":"And that's it, you have your own language!
"},{"location":"placeholderapi/","title":"PlaceholderAPI","text":"This plugin registers placeholders to PlaceholderAPI.
These placeholders are intended for use in other plugins and may not function if used in the BedWars configuration. However, they can be utilized in shop.yml
and other shop-related files if PlaceholderAPI is installed. Use the slightly modified syntax: %papi.<placeholder_name>%
(e.g., %papi.bedwars_all_games_players%
).
%bedwars_all_games_players%
- Returns the total number of players across all games.%bedwars_all_games_maxplayers%
- Returns the total maximum number of players across all games.%bedwars_all_games_anyrunning%
- Returns true
if any game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_all_games_anywaiting%
- Returns true
if any game is currently in waiting
state; otherwise false
.The placeholders in this section are specific to a player, based on the context in which they are used, most commonly the viewer of a message, hologram, etc.
"},{"location":"placeholderapi/#information-about-the-current-game","title":"Information about the current game","text":"Some of these placeholders contain a parameter <team_name>
. Replace it with the name of the team. For example, if the team name is red
, you would use %bedwars_current_game_team_red_bed%
.
%bedwars_current_game%
- Returns the name of the current game.%bedwars_current_game_players%
- Returns the number of players in the game.%bedwars_current_game_minplayers%
- Returns the minimum number of players required for the game to start.%bedwars_current_game_maxplayers%
- Returns the maximum number of players that can join the game.%bedwars_current_game_world%
- Returns the name of the world where the arena is located.%bedwars_current_game_state%
- Returns the current state of the game. Possible values are: waiting
, running
, game_end_celebrating
, rebuilding
, and disabled
.%bedwars_current_game_time%
- Returns the remaining time in seconds.%bedwars_current_game_timeformat%
- Returns the remaining time formatted as MM:SS
.%bedwars_current_game_elapsedtime%
- Returns the elapsed time in seconds.%bedwars_current_game_elapsedtimeformat%
- Returns the elapsed time formatted as MM:SS
.%bedwars_current_game_team_<team_name>_colored%
- Returns the team name in color.%bedwars_current_game_team_<team_name>_color%
- Returns the team color code as &<legacy color code>
.%bedwars_current_game_team_<team_name>_ingame%
- Returns whether the team is currently playing, as a string: yes
or no
.%bedwars_current_game_team_<team_name>_players%
- Returns the number of players in the team.%bedwars_current_game_team_<team_name>_maxplayers%
- Returns the maximum number of players in the team.%bedwars_current_game_team_<team_name>_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_current_game_team_<team_name>_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.%bedwars_current_game_team_<team_name>_teamchests%
- Returns the number of team chests.%bedwars_current_game_running%
- Returns true
if the game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_current_game_waiting%
- Returns true
if the game is currently in waiting
state; otherwise false
.%bedwars_current_available_teams%
- Returns the number of existing teams.%bedwars_current_connected_teams%
- Returns the number of teams currently playing.%bedwars_current_teamchests%
- Returns the number of team chests across all teams.%bedwars_current_team%
- Returns the name of the player's team.%bedwars_current_team_color%
- Returns the color of the player's team as &<legacy color code>
.%bedwars_current_team_colored%
- Returns the team name in color.%bedwars_current_team_players%
- Returns the number of players in the team.%bedwars_current_team_maxplayers%
- Returns the maximum number of players in the team.%bedwars_current_team_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_current_team_teamchests%
- Returns the number of team chests.%bedwars_current_team_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.When using these placeholders, replace <game>
with the specific game identifier and <team_name>
with the name of the team. For example, if the game identifier is game1
and the team name is red
, you would use %bedwars_game_game1_team_red_colored%
.
%bedwars_game_<game>_name%
- Returns the name of the game.%bedwars_game_<game>_players%
- Returns the number of players in the game.%bedwars_game_<game>_minplayers%
- Returns the minimum number of players required for the game to start.%bedwars_game_<game>_maxplayers%
- Returns the maximum number of players that can join the game.%bedwars_game_<game>_world%
- Returns the name of the world where the arena is located.%bedwars_game_<game>_state%
- Returns the current state of the game. Possible values are: waiting
, running
, game_end_celebrating
, rebuilding
, and disabled
.%bedwars_game_<game>_available_teams%
- Returns the number of existing teams.%bedwars_game_<game>_connected_teams%
- Returns the number of teams currently playing.%bedwars_game_<game>_teamchests%
- Returns the number of team chests in the game.%bedwars_game_<game>_time%
- Returns the remaining time in seconds.%bedwars_game_<game>_timeformat%
- Returns the remaining time formatted as MM:SS
.%bedwars_game_<game>_elapsedtime%
- Returns the elapsed time in seconds.%bedwars_game_<game>_elapsedtimeformat%
- Returns the elapsed time formatted as MM:SS
.%bedwars_game_<game>_team_<team_name>_colored%
- Returns the team name in color.%bedwars_game_<game>_team_<team_name>_color%
- Returns the team color code as &<legacy color code>
.%bedwars_game_<game>_team_<team_name>_ingame%
- Returns whether the team is currently playing, as a string: yes
or no
.%bedwars_game_<game>_team_<team_name>_players%
- Returns the number of players in the team.%bedwars_game_<game>_team_<team_name>_maxplayers%
- Returns the maximum number of players in the team.%bedwars_game_<game>_team_<team_name>_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_game_<game>_team_<team_name>_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.%bedwars_game_<game>_team_<team_name>_teamchests%
- Returns the number of team chests.%bedwars_game_<game>_running%
- Returns true
if the game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_game_<game>_waiting%
- Returns true
if the game is currently in waiting
state; otherwise false
.Custom leaderboards
You can create custom leaderboards using placeholders to display player statistics in various ways. To achieve this, consider using the ajLeaderboards plugin with the placeholders listed below. This allows for greater flexibility beyond what the BedWars plugin offers.
The placeholders in this section are specific to a player, based on the context in which they are used, most commonly the viewer of a message, hologram, etc.
%bedwars_stats_deaths%
- Returns the number of deaths.%bedwars_stats_destroyed_beds%
- Returns the number of destroyed beds.%bedwars_stats_kills%
- Returns the number of kills.%bedwars_stats_loses%
- Returns the number of losses.%bedwars_stats_score%
- Returns the total score.%bedwars_stats_wins%
- Returns the number of wins.%bedwars_stats_games%
- Returns the total number of games played.%bedwars_stats_kd%
- Returns the kill/death ratio.When using these placeholders, replace <player>
with the specific player's name. For example, if the player's name is Misat11
, you would use %bedwars_otherstats_Misat11_deaths%
.
%bedwars_otherstats_<player>_deaths%
- Returns the number of deaths.%bedwars_otherstats_<player>_destroyed_beds%
- Returns the number of destroyed beds.%bedwars_otherstats_<player>_kills%
- Returns the number of kills.%bedwars_otherstats_<player>_loses%
- Returns the number of losses.%bedwars_otherstats_<player>_score%
- Returns the total score.%bedwars_otherstats_<player>_wins%
- Returns the number of wins.%bedwars_otherstats_<player>_games%
- Returns the total number of games played.%bedwars_otherstats_<player>_kd%
- Returns the kill/death ratio.Screaming BedWars plugin uses our own lib called SimpleInventories to create and render inventory-based guis, and therefore shops. This article will show you some basics of this format. Check this wiki for more advanced variables.
"},{"location":"shop/#creating-a-new-item","title":"Creating a new item","text":"To create a new item, first you need to know internal item's name. You can use Minecraft Wiki to get the specific resource name. The name usually starts with minecraft:
, this part can be omitted from the final name.
You can also use modern names in legacy environments (1.8.8-1.12.2). If the modern name does not work, check this page for old names. Old names are deprecated and they may not be supported in future releases of BedWars.
There are two supported formats of items. We call them short stack
and long stack
.
This format can describe only material name, amount, display name and lore. Except for material name, every part is optional. Each part is divided using semicolon.
items:\n- stone\n- dirt;2\n- diamond_pickaxe;;Super Sword\n- tnt;3;Trinitrotoluene;Does explode\n
To specify price and make the item buyable, suffix this format with for <amount> <resource>
:
items:\n- stone for 1 bronze\n- dirt;2 for 3 iron\n- diamond_pickaxe;;Super Sword for 5 gold\n- tnt;3;Trinitrotoluene;Does explode for 9 iron\n
In order to be able to specify other attributes (for example properties
), we have to convert this from string to map. This is done by splitting the string into variables stack
and price
:
items:\n- stack: stone\n price: 1 bronze\n- stack: dirt;2\n price: 3 iron\n- stack: diamond_pickaxe;;Super Pickaxe\n price: 5 gold\n- stack: tnt;3;Trinitrotoluene;Does explode\n price: 9 iron\n
"},{"location":"shop/#using-long-stack","title":"Using long stack","text":"Long stack allows you to create items with enchantments and other attributes. Let's see the previous example rewritten in this format:
items:\n- stack: \n type: stone\n price: 1 bronze\n- stack: \n type: dirt\n amount: 2\n price: 3 iron\n- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxe\n price: 5 gold\n- stack: \n type: tnt\n amount: 3\n display-name: Trinitrotoluene\n lore:\n - Does explode\n price: 9 iron\n
As we can see, the stack
attribute is now a map, which allows more attributes to be present. For example, we can enchant our Super Pickaxe with Fortune III.
- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxe\n enchants:\n fortune: 3\n price: 5 gold\n
The enchantment names can be found here.
For list of all available options visit this page.
"},{"location":"shop/#using-item-as-a-category","title":"Using item as a category","text":"You can use any item as a category (even if the item is in another category). Players can then click on that item to open the category. The format is very similar, the only thing you have to specify is a list called items
, where you put items of that specific category. Format of items in items
is same as format in the base data
list.
- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxes\n lore:\n - You will never mine with anything else!\n items:\n - wooden_pickaxe for 10 gold\n - golden_pickaxe for 20 gold\n
"},{"location":"specials/","title":"Specials","text":"Special items can be sold in the shop and have unique behaviors when used. For example, they can spawn entities, reduce knockback, gives potion effects, etc.
Addons can also introduce new special items.
Every special item in the shop is configured using properties
.
The Arrow Blocker is an item that allows you to block arrows for a certain period of time when used.
There are two configurable options for an Arrow Blocker:
protection-time
- The duration (in seconds) during which a player cannot be damaged by projectiles.delay
- The cooldown period (in seconds) after usage during which the player cannot use another Arrow Blocker.Here is an example of the Arrow Blocker configured in the shop:
- price: 5 of gold\n properties:\n - name: \"ArrowBlocker\"\n protection-time: 10\n delay: 5\n stack:\n type: ender_eye\n display-name: \"Arrow Blocker\"\n lore:\n - \"Block arrows that are coming\"\n - \"for you with black magic.\"\n - \"I mean, with this item.\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n arrow-blocker:\n protection-time: 10\n delay: 5\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 5 of gold\n properties: \"ArrowBlocker\"\n stack:\n type: ender_eye\n display-name: \"Arrow Blocker\"\n lore:\n - \"Block arrows that are coming\"\n - \"for you with black magic.\"\n - \"I mean, with this item.\"\n
"},{"location":"specials/#auto-ignitable-tnt","title":"Auto Ignitable TNT","text":"The Auto Ignitable TNT is a special item that spawns ignited TNT when placed.
There are three configurable options for the Auto Ignitable TNT:
explosion-time
- The time (in seconds) after which the spawned TNT explodes.damage-placer
- Whether or not the player who placed the TNT should also take damage.damage
- The damage dealt by the TNT.TNT jumping
Addons like SBA provide additional customization to this item related to jumping. Please refer to their documentation for more details.
Here is an example of the Auto Ignitable TNT configured in the shop:
- price: 3 of iron\n properties:\n - name: \"AutoIgniteableTnt\"\n explosion-time: 5\n damage-placer: false\n damage: 4.0\n stack:\n type: tnt\n display-name: \"Autoigniteable TNT\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n auto-igniteable-tnt:\n explosion-time: 5\n damage-placer: false\n damage: 4.0\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 3 of iron\n properties: \"AutoIgniteableTnt\"\n stack:\n type: tnt\n display-name: \"Autoigniteable TNT\"\n
"},{"location":"specials/#golem","title":"Golem","text":"The Golem is a special item that spawns a golem to attack enemy teams.
There are multiple configurable options for this special item:
speed
- The golem's speed.follow-range
- The range within which the golem will follow enemies.health
- The golem's health.show-name
- Whether the golem's name should be displayed above its head.delay
- The cooldown period before another golem can be spawned.collidable
- Whether players collide with the golem.name-format
- The format of the name shown above the golem's head. There are two placeholders: %teamcolor%
for the team's color and %team%
for the team's name.Here is an example of the Golem configured in the shop:
- price: 24 of iron\n properties:\n - name: \"Golem\"\n speed: 0.25\n follow-range: 16.0\n health: 20\n show-name: true\n delay: 0\n collidable: true\n name-format: \"%teamcolor%%team% Golem\"\n stack:\n type: ghast_spawn_egg\n display-name: \"Golem\"\n lore:\n - \"An iron golem that will protect\"\n - \"your team from the enemies.\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n golem:\n speed: 0.25\n follow-range: 16.0\n health: 20\n show-name: true\n delay: 0\n collidable: true\n name-format: \"%teamcolor%%team% Golem\"\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 24 of iron\n properties: \"Golem\"\n stack:\n type: ghast_spawn_egg\n display-name: \"Golem\"\n lore:\n - \"An iron golem that will protect\"\n - \"your team from the enemies.\"\n
"},{"location":"specials/#lucky-block","title":"Lucky Block","text":"The Lucky Block is a special item inspired by the LuckyBlock Addon for BedWarsRel. This block can be placed anywhere, and when broken, a random configured event will occur. Lucky Blocks are not available in the shop by default; therefore, you must add them to the shop manually.
Like other special items, Lucky Blocks use properties
for their configuration. The property for these blocks is called LuckyBlock
and includes a data
section. This section is a list of events that may occur.
There are 5 event types:
nothing
- As the name implies, it does nothing.teleport
- This event teleports the player along the Y-axis. The variable height
is used to configure this relative teleportation. For example, if a player is at height 60 and the configured height is 50, they will be teleported to Y 110.tnt
- A primed TNT entity is spawned when this event occurs, which explodes immediately.potion
- This event gives the player a potion effect. The effect is configured using the variable effect
.item
- This event gives the player an item. This item is configured using the variable stack
.Below is an example of a fully configured Lucky Block with all these events included. Additionally, each event can have a variable message
. This message will be sent to the player who broke the block.
- price: 7 of iron\n properties:\n - name: \"LuckyBlock\"\n data:\n - type: tnt\n - type: nothing\n - type: teleport\n height: 50\n - type: item\n stack: dirt\n message: \"This sends you message. You can add it to any event type.\"\n - type: potion\n effect:\n effect: blindness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n stack:\n type: sponge\n amount: 1\n display-name: \"Lucky Block\"\n
Unlike other special items, there is no global configuration for Lucky Blocks.
"},{"location":"specials/#magnet-shoes","title":"Magnet Shoes","text":"Wearing this special item randomly absorbs all received knockback, giving you an advantage in PvP.
There is a single configurable option for this special item:
probability
- A number (0-100) representing the percentage chance that the shoes will absorb the knockback.Here is an example of Magnet Shoes configured in the shop:
- price: 6 of iron\n properties:\n - name: \"MagnetShoes\"\n probability: 75\n stack:\n type: iron_boots\n display-name: \"Magnet-Shoes\"\n lore:\n - \"Wear those shoes and have a 75%\"\n - \"chance of getting no knockback!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n magnet-shoes:\n probability: 75\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 6 of iron\n properties: \"MagnetShoes\"\n stack:\n type: iron_boots\n display-name: \"Magnet-Shoes\"\n lore:\n - \"Wear those shoes and have a 75%\"\n - \"chance of getting no knockback!\"\n
"},{"location":"specials/#protection-wall","title":"Protection Wall","text":"The Protection Wall is a special item that builds a wall when used.
There are several configurable options for this item:
is-breakable
- Whether it is possible to break the blocks of the wall.delay
- The cooldown period before another protection wall can be built.break-time
- The time (in seconds) after which the wall disappears. Can be set to 0
to disable the automatic breaking of the wall.width
- The width (in blocks) of the wall. This must be an odd number; the plugin will print a warning and add an extra block if the number is even.height
- The height (in blocks) of the wall.distance
- The distance (in blocks) from the player activating the item to where the wall appears, in the direction the player is facing.material
- The material used to build the wall. If the material is colorable, it will automatically be converted to the team's color.Here is an example of a Protection Wall configured in the shop:
- price: 64 of bronze\n properties:\n - name: \"protectionwall\"\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: cut_sandstone\n stack:\n type: bricks\n display-name: \"Protection Wall\"\n lore:\n - \"Instantly builds a wall that\"\n - \"can save your life!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n protection-wall:\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: cut_sandstone\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 64 of bronze\n properties: \"protectionwall\"\n stack:\n type: bricks\n display-name: \"Protection Wall\"\n lore:\n - \"Instantly builds a wall that\"\n - \"can save your life!\"\n
"},{"location":"specials/#rescue-platform","title":"Rescue Platform","text":"The Rescue Platform is similar to the Protection Wall, but instead of wall it builds a platform that the player can use when falling to prevent fall damage or falling off the map.
There are several configurable options for this item:
is-breakable
- Determines whether it is possible to break blocks of the platform.delay
- The cooldown period before another rescue platform can be built.break-time
- The time (in seconds) after which the platform disappears. Can be set to 0
to disable the automatic breaking of the platform.distance
- The distance (in blocks) below the player activating the item where the platform appears.material
- The name of the material used to build the platform. If the material is colorable, it will automatically be converted to the team's color.Here is an example of a Rescue Platform configured in the shop:
- price: 64 of bronze\n properties:\n - name: \"rescueplatform\"\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: glass\n stack:\n type: blaze_rod\n display-name: \"Rescue Platform\"\n lore:\n - \"Protect yourself from falling into\"\n - \"the void with a Rescue Platform.\"\n - \"This is your last hope!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n rescue-platform:\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: glass\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 64 of bronze\n properties: \"rescueplatform\"\n stack:\n type: blaze_rod\n display-name: \"Rescue Platform\"\n lore:\n - \"Protect yourself from falling into\"\n - \"void with a Rescue Platform.\"\n - \"This is your last hope!\"\n
"},{"location":"specials/#team-chest","title":"Team Chest","text":"Placing this item creates a chest accessible only by the placing team. All of these chests share the same inventory, similarly to an ender chest.
For legacy reasons, any ender chest in the shop is turned into a team chest regardless of the given properties. To disable this behavior, you have to set specials.teamchest.turn-all-enderchests-to-teamchests
to false
in config.yml
.
Explicitly created team chests in the shop look like this:
- price: 1 of gold\n properties: \"teamchest\"\n stack: ender_chest\n
Warning
The type needs to be ender_chest
for the item to work!
The Throwable Fireball represents a fireball that can be thrown from the hand of a player.
There are several configurable options for this item:
damage
- The amount of damage dealt by the fireball.incendiary
- Determines whether the explosion causes fire.damage-thrower
- Determines whether the fireball should damage its thrower if it explodes near them.Fireball jumping
Addons like SBA provide additional customization to this item related to jumping. Please refer to their documentation for more details.
Here is an example of a Throwable Fireball configured in the shop:
- price: 40 of iron\n properties:\n - name: \"ThrowableFireball\"\n damage: 3.0\n incendiary: true\n damage-thrower: true\n stack:\n type: fire_charge\n display-name: \"Fireball\"\n lore:\n - \"Is it a bird? Is it a plane?\"\n - \"By the time you know\"\n - \"you are dead!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n throwable-fireball:\n damage: 3.0\n incendiary: true\n damage-thrower: true\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 40 of iron\n properties: \"ThrowableFireball\"\n stack:\n type: fire_charge\n display-name: \"Fireball\"\n lore:\n - \"Is it a bird? Is it a plane?\"\n - \"By the time you know\"\n - \"you are dead!\"\n
"},{"location":"specials/#tnt-sheep","title":"TNT Sheep","text":"The TNT Sheep is a special item that summons an explosive sheep, following enemy players. Upon summoning, it targets the closest enemy.
There are several configurable options for this special item:
speed
- The sheep's speed.follow-range
- The range within which the sheep will follow enemies.max-target-distance
- The maximum distance (in blocks) from which the initial target can be. The sheep does not spawn if there is no target within this distance.explosion-time
- The time (in seconds) after which the TNT explodes and the sheep disappears.Here is an example of the TNT Sheep configured in the shop:
- price: 10 of gold\n properties:\n - name: \"TNTSheep\"\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n stack:\n type: sheep_spawn_egg\n display-name: \"TNT Sheep\"\n lore:\n - \"Use the TNT-Sheep! It will\"\n - \"walk towards your closest enemy\"\n - \"and explode within 8 seconds!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n tnt-sheep:\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 10 of gold\n properties: \"TNTSheep\"\n stack:\n type: sheep_spawn_egg\n display-name: \"TNT Sheep\"\n lore:\n - \"Use the TNT-Sheep! It will\"\n - \"walk towards your closest enemy\"\n - \"and explode within 8 seconds!\"\n
"},{"location":"specials/#tracker","title":"Tracker","text":"The Tracker is a simple special item that displays the distance and direction of the nearest enemy. It is recommended for the Tracker to be a compass since the item sets the compass target of its user. Unlike other special items, this item is permanent, and you can use it repeatedly.
Here is an example of the Tracker configured in the shop:
- price: 5 of iron\n properties: \"Tracker\"\n stack:\n type: compass\n display-name: \"Tracker\"\n lore:\n - \"Wanna know where your closest target is?\"\n - \"Let's try this out!\"\n
"},{"location":"specials/#trap","title":"Trap","text":"A Trap is a placeable special item. When an enemy steps on a trap, all configured events will occur. Additionally, the team will be notified that someone has triggered their trap.
Unlike other special items, there is no global configuration for traps. The only option here is data
, which is a list containing all the events.
There are 3 event types:
sound
- Plays a specified sound.effect
- Applies a potion effect to the victim. The effect is configured using the variable effect
.damage
- Deals a specified amount of damage to the player.Here is an example of a fully configured trap:
- price: 3 of iron\n properties:\n - name: \"Trap\"\n data:\n - damage: 2.0\n - sound: ENTITY_SHEEP_AMBIENT\n - effect:\n effect: blindness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n - effect:\n effect: weakness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n - effect:\n effect: slowness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n stack:\n type: string\n display-name: \"Trap\"\n lore:\n - \"Get informed if an enemy steps on your trap\"\n - \"and your enemy won't be able to move properly.\"\n
"},{"location":"specials/#warp-powder","title":"Warp Powder","text":"The Warp Powder is a special item that teleports you to the team spawn when used. However, you must wait a few seconds without moving, otherwise, the teleportation will be canceled.
There are two configurable options for Warp Powder:
teleport-time
- The cooldown (in seconds) before the player gets teleported.delay
- The cooldown period (in seconds) after usage during which the player cannot use another Warp Powder.Here is an example of Warp Powder configured in the shop:
- price: 7 of iron\n properties:\n - name: \"WarpPowder\"\n teleport-time: 6\n delay: 0\n stack:\n type: gunpowder\n display-name: \"Warp Powder\"\n lore:\n - \"When using this powder you'll get\"\n - \"teleported to you spawn point within 6 seconds\"\n - \"Warning: Any movement will stop the process\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n warp-powder:\n teleport-time: 6\n delay: 0\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 7 of iron\n properties: \"WarpPowder\"\n stack:\n type: gunpowder\n display-name: \"Warp Powder\"\n lore:\n - \"When using this powder you'll get\"\n - \"teleported to you spawn point within 6 seconds\"\n - \"Warning: Any movement will stop the process\"\n
"},{"location":"troubleshooting/","title":"Troubleshooting and FAQ","text":""},{"location":"troubleshooting/#non-op-players-cannot-use-signs","title":"Non-OP players cannot use signs","text":"Move the sign out of vanilla spawn protection (for example, if you have the spawn protection in server.properties set to 16, move 34 blocks away from spawn location) or change spawn protection to zero. Non-OP players can't do some things in spawn protection.
"},{"location":"troubleshooting/#position-1-and-position-2","title":"Position 1 and Position 2","text":"These two positions serve to designate an area to be considered an arena. (such as axe in WorldEdit)
See the Arena
"},{"location":"troubleshooting/#bed-cannot-be-destroyed","title":"Bed cannot be destroyed","text":"BedWars allows you to use any block as the target block, so you won't see any error when you set it to, for example, floor. So check it, and make you sure you're looking at the bed head when setting the team target block.
"},{"location":"troubleshooting/#adding-a-sign","title":"Adding a sign","text":"Place a sign and write [BedWars]
or [BWGame]
(case-sensitive) as the first line, and the name of your arena as the second line. Make sure that your sign is not in range of vanilla's spawn protection.
Use the applycolorbyteam
property, for example:
- price: 1\n price-type: bronze\n properties:\n - name: \"applycolorbyteam\"\n stack:\n type: white_wool\n amount: 2\n
"},{"location":"troubleshooting/#upgrades","title":"Upgrades","text":"See the Upgrades article.
"},{"location":"troubleshooting/#language-file","title":"Language file","text":"See the Configuration article.
"},{"location":"troubleshooting/#placeholderapi-placeholders","title":"PlaceholderAPI placeholders","text":"See the Placeholder API article.
"},{"location":"troubleshooting/#changing-the-message-prefix","title":"Changing the message prefix","text":"Prefix is changeable globally in the language file or per arena with this command: /bw admin <arena> customprefix &6My Awesome Prefix
.
See the Configuration article.
"},{"location":"troubleshooting/#broken-shop","title":"Broken shop","text":"Make sure your shop is YAML valid with yamlchecker, has proper materials and format.
"},{"location":"troubleshooting/#compass-teleports-the-player","title":"Compass teleports the player","text":"Well, you probably have WorldEdit or FastAsyncWorldEdit. The compass is used to teleport through walls. However it works only for people with permission or with OP. You can disable this tool or bound it to another item in WorldEdit configuration. You can also change the team selection item to another one in BedWars configuration.
"},{"location":"troubleshooting/#permissions","title":"Permissions","text":"See the Commands and Permissions page.
"},{"location":"troubleshooting/#adding-start-and-respawn-items","title":"Adding start and respawn items","text":"You can by doing the following
"},{"location":"troubleshooting/#start-game","title":"Start game","text":"game-start-items: true\ngived-game-start-items:\n- leather_helmet\n- leather_boots\n- leather_leggings\n- leather_chestplate\n- wooden_sword\n
"},{"location":"troubleshooting/#respawn","title":"Respawn","text":"player-respawn-items: true\ngived-player-respawn-items: \n- leather_helmet\n- leather_boots\n- leather_leggings\n- leather_chestplate\n- wooden_sword\n
"},{"location":"troubleshooting/#villagers-do-not-spawn","title":"Villagers do not spawn","text":"Here is some info on how to troubleshoot this error:
Yes, there are. Check out this page
"},{"location":"troubleshooting/#changing-damage-or-explosion-power-of-fireball","title":"Changing damage or explosion power of Fireball","text":"Go in your config.yml and there are settings for the Fireball. It is located under specials, it is not that hard to find \ud83d\ude1b
Same goes for basically any other special item. \ud83d\ude42
"},{"location":"troubleshooting/#setting-up-the-plugin-with-bungeecord","title":"Setting up the plugin with Bungeecord","text":"The plugin has a single-arena bungeecord mode. Check out this page.
"},{"location":"troubleshooting/#pvp-does-not-work","title":"PvP does not work","text":"Make sure:
/mvm set pvp true <world name>
./rg flag <region name> pvp allow
);spawn-protection
disabled (set it to 0 in server.properties).Keep in mind that BedWars does not moderate PvP. If PvP does not work for you, it is caused by a misconfiguration or another plugin. If tips above did not help you, please contact us on our Discord server.
If you have WorldGuard installed, you can also use a command to check which plugin blocks PvP. The command is /wg debug testdamage -t <player_name>
and you need a second player to test this out. Click here to read more about this command.
That is not a BedWars issue, increase your server's game difficulty (from easy to normal for example).
"},{"location":"troubleshooting/#changing-arena-name","title":"Changing arena name","text":"First, we will provide no support if you mess this up somehow, arena files are not supposed to be edited by people.
plugins/BedWars/arenas
test arena
and always needs to be one string, that means test-arena
. The name also must be unique, that means you cannot have two arenas with the same name.SomeClass has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class SomeClass)
This means you are using Java 8 (52.0), but the plugin requires at least Java 11 (55.0), if you want to know how to update, visit this page (It tells you about updating to Java 17 which can run software for Java 11; similar methods can be used for Java 11)
Currently BedWars 0.2.36 does not require Java 11, however the most famous addon SBA requires at least Java 11. New version of BedWars (0.3.0+) will require at least Java 11.
"},{"location":"troubleshooting/#using-no-norwegian-language","title":"Using no (Norwegian) language","text":"Well, Yaml specification says that literal no
means false
. To use no
as no
, you need to cast it to string locale: \"no\"
A plugin is overriding player spawns on your server, those might include (but not limited to) EssentialsSpawn, WorldGuard, etc. Remove those plugins or disable them in bedwars worlds.
"},{"location":"upgrades/","title":"Upgrades","text":""},{"location":"upgrades/#spawner-resource-quantity-upgrade","title":"Spawner resource quantity upgrade","text":"This is how it should look in you shop.yml file:
- price: 1\n price-type: bronze\n upgrade:\n entities:\n - type: spawner\n spawner-type: bronze\n add-levels: 0.2\n max-level: 2\n shop-name: \"Bronze upgrade of the team %team%\"\n notify-team: true\n stack:\n type: diamond_block\n amount: 1\n display-name: \"Bronze upgrade of the team %team%\"\n
Let's get into it.
upgrade
, entities
and type: spawner
. If any of these will be missing, upgrades won't work.spawner-name
, spawner-type
and team-upgrade
add-levels
parameter defines how much levels we are going to add. (Default start level for the spawner is 1)max-level
defines the maximum level you can upgrade to. (default is no limit)shop-name
is displayed after you buy the upgrade. That's all.notify-team
if this is true, information will be send to all the players of the team.spawner-name
: You need to have your spawner name defined in arena.yml file or while creating arena (/bw admin arenaName spawner add <spawnerType> <holoEnabled> <startLevel (default: 1)> <customName> <team>
). spawner-type
& team-upgrade
: You need to have team defined with the spawner.Flexible BedWars plugin, formerly coded as a replacement for BedwarsRel. Supported versions: [1.8.8 - 1.21.3], recommended versions: [1.21.1].
"},{"location":"#support","title":"Support","text":"If you need any help, you can contact us on Discord. Make sure to read this documentation, the servers' rules and the FAQ's before asking for support.
If you find any bugs, feel free to report it into GitHub issues, we will look into it.
"},{"location":"#features","title":"Features","text":"Warning
Note that API is going to be changed in future versions (0.3.0+)
"},{"location":"api/#maven","title":"Maven","text":"<repositories>\n <repository>\n <id>screaming-repo</id>\n <url>https://repo.screamingsandals.org/public/</url>\n </repository>\n</repositories>\n\n<dependencies>\n <dependency>\n <groupId>org.screamingsandals.bedwars</groupId>\n <artifactId>BedWars-API</artifactId>\n <version>0.2.36</version>\n <scope>provided</scope>\n </dependency>\n</dependencies>\n
"},{"location":"api/#gradle","title":"Gradle","text":"repositories {\n maven { url 'https://repo.screamingsandals.org/public/' }\n}\n\ndependencies {\n compileOnly 'org.screamingsandals.bedwars:BedWars-API:0.2.36'\n}\n
"},{"location":"api/#hooking-into-the-api","title":"Hooking into the API","text":"import org.screamingsandals.bedwars.api.BedwarsAPI;\n\n...\nBedwarsAPI api = BedwarsAPI.getInstance();\n...\n
Javadoc: https://docs.screamingsandals.org/BedWars/javadoc/0.2.36/
"},{"location":"arena/","title":"Making an arena","text":"World
This tutorial presumes that you already have a world with your desired BedWars map, loaded with a plugin like Multiverse or SlimeWorldManager and that you already are in the world with your BedWars map.
"},{"location":"arena/#creating-the-arena","title":"Creating the arena","text":"Create the arena by executing this command: /bw admin <arena name> add
.
To set the first position, go into the first corner of your map and execute this command: /bw admin <arena name> pos1
. To set the second position, go into the second corner of your map and execute this command: /bw admin <arena name> pos2
.
Positions
pos1
is one corner of the arena and pos2
is the corner of the arena, that is opposing to pos1
!
Now it's time to add the teams. To add a team, do /bw admin <arena> team add <team name> <team colour> <team size>
.
For the colors, you can use this TeamColor enum: RED
, BLUE
, GREEN
, YELLOW
, MAGENTA
, PINK
, LIME
, BLACK
, WHITE
, ORANGE
, LIGHT_GRAY
, GRAY
, LIGHT_BLUE
, CYAN
and BROWN
.
Warning
You must create at least 2 teams.
"},{"location":"arena/#setting-team-spawns","title":"Setting team spawns","text":"Stand where you would like to have the team spawn, and look in the direction that you want your players to be oriented when they spawn, as the yaw will also be taken into account. Set the team's spawn with this command: /bw admin <arena> team spawn <team>
and repeat until all teams have a spawn.
Stand on top of the bed, look down on the head of the bed and execute this command to set the bed location: /bw admin <arena name> team bed <team name>
. Repeat until all teams have a bed.
Target blocks
The team's target block isn't limited to a bed, in fact BedWars has support for any block (the Dragon Egg, cakes and the Respawn Anchor have special support to allow BedWars to operate as EggWars, AnchorWars or CakeWars out of the box).
"},{"location":"arena/#adding-resource-generators","title":"Adding resource generators","text":"Stand at the block where you want the generator to be and execute this command: /bw admin <arena name> spawner add <resource> <true/false>
.
Valid default resources: bronze
, iron
and gold
(diamond and emerald is not included out of the box, you will have to add it yourself in the configuration).
The true/false part of the command means if there should be a hologram (true) or if there should be no hologram (false).
"},{"location":"arena/#adding-merchants","title":"Adding merchants","text":"Now it's time to add the shops. Stand where you would like your shop entity to be, look forward and execute this command: /bw admin <arena> store add <name of villager entity> [file with shop] [use main shop]
(last two command parts can be omitted).
Example: /bw admin <arena> store add &aStore shop.yml false
, /bw admin <arena> store add &aStore
Store entity types
If you would like to have a different entity as the store, do the following: /bw admin <arena> store type <living entity>
. This sets entity type of store (Villager, Horse, Cow, etc.). If you would like to have a player with a skin as the shop keeper, use this command: /bw admin <arena> store type Player:skinname
.
Add the lobby location for the arena by executing this command: /bw admin <arena> lobby
.
Add the spectator location for the arena by executing this command: /bw admin <arena> spec
.
Last but not least, remember to save the arena with /bw admin <arena> save
.
You can use signs to join the arena. Follow these steps to create such sign.
Alternatively, you can create a leave sign by writing word leave
instead of arena name.
These entities allow players to select their team by right clicking at them. There are two ways how these entities can be created.
"},{"location":"arena/#creation-by-jointeam-command","title":"Creation by jointeam command","text":"/bw admin <arena> jointeam <team>
Create any living entity with custom name same as team name and place it in your lobby. The plugin will use the name to determine the team.
"},{"location":"bungee/","title":"BungeeCord mode","text":"Screaming BedWars supports a BungeeCord mode, which allows for single-arena servers with arena autojoin. This document provides instructions on how to configure this mode.
Velocity Support
This mode is also compatible with Velocity. Ensure bungee-plugin-message-channel
is enabled in the velocity.toml
file on your proxy.
To enable BungeeCord mode, locate the bungee
section in config.yml
and set enabled
to true
. Then, configure each option according to your requirements:
serverRestart
- Determines whether the server should restart after the game ends. This is not mandatory for the plugin; adjust this setting as needed. To enable server restarts, an existing startup script (.sh
or .bat
) must be defined in spigot.yml
.serverStop
- Similar to serverRestart
, but only shuts down the server. Use this only if you have separate software managing automatic server startup.server
- Specifies the hub server to which players are moved after the game ends.auto-game-connect
- Determines whether users should automatically join the BedWars game upon server join. This should typically be enabled unless managed by an addon.kick-when-proxy-too-slow
- If the proxy fails to move the player to the hub server or is too slow, the server will kick players who are waiting for too long.random-game-selection
- Enables random selection of arenas if multiple arenas are on the same server. Set enabled
to true
to use this feature. The preselect-games
option is useful for knowing the next selected game before any player joins (at server startup or after the previous game ends).motd
- Useful for server selection plugins utilizing MOTD text, such as BungeeSigns. If enabled, the plugin will update the MOTD based on the current state and player count. There are five states: waiting
, waiting_full
, running
, rebuilding
, and disabled
. Use the placeholders %name%
for arena name, %current%
for current player count, and %max%
for maximum player count. Messages can be colored using legacy color codes (\u00a7<color code>
).The configuration section might look like this:
bungee:\n enabled: false\n serverRestart: true\n serverStop: false\n server: hub\n auto-game-connect: false\n kick-when-proxy-too-slow: true\n random-game-selection:\n enabled: true\n preselect-games: false\n motd:\n enabled: false\n waiting: '%name%: Waiting for players [%current%/%max%]'\n waiting_full: '%name%: Game is full [%current%/%max%]'\n running: '%name%: Game is running [%current%/%max%]'\n rebuilding: '%name%: Rebuilding...'\n disabled: '%name%: Game is disabled'\n
"},{"location":"bungee/#configuring-hub-servers","title":"Configuring Hub Servers","text":"While there is no lobby plugin for Screaming BedWars, any server selection plugin can be used, such as BungeeSigns. Plugins that can read MOTD are preferred as they can relay the game state to your hub server.
If you prefer to use inventory-based GUIs instead of signs and wish to display information from the server's MOTD, you can utilize any inventory plugin compatible with PlaceholderAPI, such as DeluxeMenus. The Pinger expansion is recommended, as it provides the necessary placeholders for this purpose. To create a server selector using DeluxeMenus, you may refer to this guide and review this example.
Synchronizing Statistics
For BungeeCord networks, it is common to synchronize statistics to a database. Configure the database
section as described here. Ensure all servers are connected to the same database.
To access statistics in the lobby, the simplest option is to install Screaming BedWars on your hub server as well. Ensure this instance is NOT in BungeeCord mode. Alternatively, you can create an addon to retrieve statistics. The database structure is detailed at the end of the database configuration section.
"},{"location":"commands/","title":"Commands and Permissions","text":""},{"location":"commands/#permissions","title":"Permissions","text":"bw.admin
- Allows you to create/edit an arena, reload the plugin and use the cheat command if enabled.bw.vip.startitem
- Allows you to start the game using the item. All players will be automatically distributed to teams.bw.vip.forcejoin
- Allows you to join even if the game is full (player without this permission will be kicked).bw.otherstats
- Allows you to see stats of other players.bw.admin.alljoin
- Allows you to use /bw alljoin command.bw.disable.joinall
- Protects you from effects of /bw alljoin command.bw.cmd.join
- Allows you to use /bw join command.bw.cmd.leave
- Allows you to use /bw leave command.bw.cmd.stats
- Allows you to use /bw stats command.bw.cmd.rejoin
- Allows you to use /bw rejoin command.bw.cmd.autojoin
- Allows you to use /bw autojoin command.bw.cmd.list
- Allows you to use /bw list command.bw.cmd.leaderboard
- Allows you to use /bw leaderboard command.Every permission can be prefixed with misat11.
. Note that this egoism is deprecated and will be removed in a future release.
All permissions starting with bw.cmd.
are allowed by default even if the permission is not explicitly given. This can be changed in config.yml
in section default-permissions
default-permissions:\n join: true\n leave: true\n stats: true\n list: true\n rejoin: true\n autojoin: true\n leaderboard: true\n
"},{"location":"commands/#commands","title":"Commands","text":"Every command has its own specified permission in brackets.
<argument>
is required argument. [argument]
is optional argument, and the command can be executed if this argument is not specified. However, every optional argument before this optional argument must be specified in order to be able to use this argument.
/bw help
- Shows list of commands (no permission required)/bw join [arena]
- Join the arena (permission: bw.cmd.join
)/bw leave
- Leave the arena (permission: bw.cmd.leave
)/bw list
- Lists all available arenas (permission: bw.cmd.list
)/bw stats
- Shows your statistics (permission: bw.cmd.stats
)/bw stats <player>
- Shows your statistics (permission: bw.cmd.stats
together with bw.otherstats
or bw.admin
)/bw leaderboard
- Shows top players on this server (permission: bw.cmd.leaderboard
)/bw rejoin
- Joins the latest game you have played (permission: bw.cmd.rejoin
)/bw autojoin
- Joins random game (permission: bw.cmd.autojoin
)/bw party warp
- Warps all players in your party to your game or towards you (permission: bw.cmd.party
, requires Parties plugin and party
section in config.yml enabled)All these commands require bw.admin
permission if not specified.
/bw admin <arena> info [section]
- Shows all information about the arena/bw admin <arena> add
- Creates a new arena/bw admin <arena> lobby
- Sets lobby position to your position/bw admin <arena> spec
- Sets specatator's spawn to your position/bw admin <arena> pos1
- Sets the extreme point of the arena to your position/bw admin <arena> pos2
- Sets the second extreme point of the arena to your position/bw admin <arena> pausecountdown <seconds>
- Sets the pause duration before game starts/bw admin <arena> minplayers <minimum>
- Sets minimum of players needed to start the game/bw admin <arena> time <seconds>
- Sets the game's duration/bw admin <arena> team add <team> <color> <max players>
- Add a team to the game/bw admin <arena> team color <team> <color>
- Change team color/bw admin <arena> team maxplayers <team> <max players>
- Change max team players/bw admin <arena> team spawn <team>
- Sets team spawn to your position/bw admin <arena> team bed <team> [looking_at|standing_on]
- Sets team target block to your target position (it can be any block, not just bed)/bw admin <arena> jointeam <team>
- Sets the ability to connect to a team using an entity/bw admin <arena> spawner add <bronze|gold|iron> [hologram] [first level] [name] [team] [max spawned resources]
- Add item spawner to your position (alternatively you can specify max spawned resources without specifying team)/bw admin <arena> spawner reset
- Remove all spawners/bw admin <arena> spawner remove
- Removes all spawners at location/bw admin <arena> store add [name above dealer head] [file with shop] [use main shop]
- Add trading villager to your position/bw admin <arena> store remove
- Remove trading villager from your position/bw admin <arena> store type <living entity>
- Sets entity type of store (Villager, Horse, Cow, Pig etc.)/bw admin <arena> store child
- Mark this shopkeeper as child/bw admin <arena> store adult
- Mark this shopkeeper as adult/bw admin <arena> config <constant> <value>
- Sets value of constant variable for game/bw admin <arena> arenatime <type>
- Sets time in arena (DAY, NIGHT, etc.)/bw admin <arena> arenaweather <type>
- Sets weather in arena (default, CLEAN, DOWNFALL)/bw admin <arena> postgamewaiting <seconds>
- Sets the waiting time before player is teleported out of the arena/bw admin <arena> customprefix <name|off>
- Enables custom prefix for arena/bw admin <arena> save
- Saves the game and activates it!/bw admin <arena> edit
- Turns the game off and switches the arena to edit mode/bw admin <arena> remove
- Remove the arenaThese command have to be enabled manually using the config option enable-cheat-command-for-admins
. The admin must be in the game (running or in waiting lobby) in order to execute cheat.
/bw cheat give <resource> [amount] [player]
- Gives player specified amount of resource/bw cheat kill [player]
- Kills specified player/bw cheat startemptygame
- Starts a game with only one team (useful for testing)/bw cheat destroybed <team>
- Destroys bed of the specific team/bw cheat destroyallbeds
- Destroys all beds in the game/bw cheat jointeam [team]
- Joins an admin to the specified team or to current team ignoring its size (can also be used while the game is running, however the team must have some players)Additionaly to /bw cheat
command, there is the /bw cheatIn <game> <cheat> [params...]
command. This command allows the admin to execute cheat in a game they are not joined to, or from console. Currently supports the following cheats: give
, kill
, destroybed
ad destroyallbeds
.
/bw alljoin [arena]
- Joins all players without bw.disable.alljoin
permission to the arena (permission: bw.admin.alljoin
)/bw reload
- Reloads the plugin/bw mainlobby [enable|set]
- Enables main lobby or sets main lobby location/bw dump [paste.gg|pastes.dev]
- Dumps information about the server and gives you link to the dump. This link can be useful for support./bw addholo [leaderboard|stats]
- Adds new hologram to your position/bw removeholo
- After executing this command, the player can right-click the holographic statistic to remove it# the language of the plugin's messages\nlocale: en\n# enables debug messages, may help with resolving certain problems\ndebug: false\n# is crafting in the arenas allowed?\nallow-crafting: false\n# should items be kept when the player dies in the arena?\nkeep-inventory-on-death: false\n# should player's armor be colored after choosing their team in the lobby?\nin-lobby-colored-leather-by-team: true\n# should the entity for joining teams have a visible name?\njointeam-entity-show-name: true\n# are teammates allowed to damage themselves?\nfriendlyfire: false\n# do items drop from players when killed in the arena?\nplayer-drops: true\n# should the players be joined to a random team after the lobby waiting time passes?\n# if false, the game won't start until everyone chooses a team\njoin-randomly-after-lobby-timeout: false\n# should BedWars prevent players from killing the merchants?\nprevent-killing-villagers: true\n# should the compass for choosing teams be available in the lobby?\ncompass-enabled: true\n# should BedWars join the player to a random team when he joins the lobby?\njoin-randomly-on-lobby-join: false\nadd-wool-to-inventory-on-join: true\nprevent-spawning-mobs: true\nspawner-holograms: true\nspawner-disable-merge: true\nprevent-lobby-spawn-mobs-in-radius: 16\nspawner-holo-height: 0.25\nspawner-holograms-countdown: true\ndamage-when-player-is-not-in-arena: false\nremove-unused-target-blocks: true\nallow-block-falling: true\ngame-start-items: false\nplayer-respawn-items: false\n# When game-start-items is enabled, the player is going to get all items listed in the following list.\n# Example:\n# gived-game-start-items:\n# - wooden_sword\n# - leather_helmet\n# - leather_boots\n# - leather_leggings\n# - leather_chestplate\ngived-game-start-items: []\ngived-player-respawn-items: []\ndisable-hunger: false\nautomatic-coloring-in-shop: true\nsell-max-64-per-click-in-shop: true\nenable-cheat-command-for-admins: false\nshopkeepers-are-silent: true\ndestroy-placed-blocks-by-explosion-except: []\ndestroy-placed-blocks-by-explosion: true\nholo-above-bed: true\nallow-spectator-join: false\ndisable-server-message:\n player-join: false\n player-leave: false\ndisable-flight: true\nrespawn-cooldown:\n enabled: true\n time: 5\nstop-team-spawners-on-die: false\nallow-fake-death: false\n# Whether or not should 1.19.4 display entities be used or not. Does work only on 1.19.4+\nprefer-1-19-4-display-entities: true\nremember-what-scoreboards-players-had-before: false\nuse-chunk-tickets-if-available: true\nreset-full-spawner-countdown-after-picking: true\nplayers-can-win-game-only-after-seconds: 0\nkick-players-upon-final-death:\n enabled: false\n delay: 5\nallowed-commands: []\nchange-allowed-commands-to-blacklist: false\nbungee:\n enabled: false\n serverRestart: true\n serverStop: false\n server: hub\n auto-game-connect: false\n kick-when-proxy-too-slow: true\n random-game-selection:\n enabled: true\n preselect-games: false\n motd:\n enabled: false\n waiting: '%name%: Waiting for players [%current%/%max%]'\n waiting_full: '%name%: Game is full [%current%/%max%]'\n running: '%name%: Game is running [%current%/%max%]'\n rebuilding: '%name%: Rebuilding...'\n disabled: '%name%: Game is disabled'\nfarmBlocks:\n enable: false\n blocks: []\nscoreboard:\n enable: true\n title: '&a%game%&r - %time%'\n bedLost: '&c\u2718'\n anchorEmpty: '&e\u2718'\n bedExists: '&a\u2714'\n teamTitle: '%bed%%color%%team%'\ntitle:\n enabled: true\n fadeIn: 0\n stay: 20\n fadeOut: 0\nshop:\n rows: 4\n render-actual-rows: 6\n render-offset: 9\n render-header-start: 0\n render-footer-start: 45\n items-on-row: 9\n show-page-numbers: true\n inventory-type: CHEST\n citizens-enabled: false\n allow-execution-of-console-commands: true\nitems:\n jointeam: COMPASS\n leavegame: SLIME_BALL\n startgame: DIAMOND\n shopback: BARRIER\n shopcosmetic: GRAY_STAINED_GLASS_PANE\n pageback: ARROW\n pageforward: ARROW\n team-select: WHITE_WOOL\nvault:\n enable: true\n reward:\n kill: 5\n win: 20\n final-kill: 5\n bed-destroy: 0\nresources:\n gold:\n material: GOLD_INGOT\n color: GOLD\n name: Gold\n interval: 20\n translate: resource_gold\n spread: 1.0\n iron:\n material: IRON_INGOT\n color: GRAY\n name: Iron\n interval: 10\n translate: resource_iron\n spread: 1.0\n bronze:\n material: BRICK\n color: DARK_RED\n name: Bronze\n interval: 1\n translate: resource_bronze\n spread: 1.0\nrespawn:\n protection-enabled: true\n protection-time: 10\n show-messages: true\nspecials:\n action-bar-messages: true\n dont-show-success-messages: false\n rescue-platform:\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: GLASS\n protection-wall:\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: CUT_SANDSTONE\n tnt-sheep:\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n arrow-blocker:\n protection-time: 10\n delay: 5\n warp-powder:\n teleport-time: 6\n delay: 0\n magnet-shoes:\n probability: 75\n golem:\n speed: 0.25\n follow-range: 10\n health: 20\n name-format: '%teamcolor%%team% Golem'\n show-name: true\n delay: 0\n collidable: false\n teamchest:\n turn-all-enderchests-to-teamchests: true\n throwable-fireball:\n damage: 3.0\n incendiary: true\n damage-thrower: true\n auto-igniteable-tnt:\n explosion-time: 8\n damage-placer: true\n damage: 4.0\nsounds:\n bed_destroyed:\n sound: ENTITY_ENDER_DRAGON_GROWL\n volume: 1\n pitch: 1\n my_bed_destroyed:\n sound: ENTITY_ENDER_DRAGON_GROWL\n volume: 1\n pitch: 1\n countdown:\n sound: UI_BUTTON_CLICK\n volume: 1\n pitch: 1\n game_start:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\n team_kill:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\n player_kill:\n sound: ENTITY_PLAYER_BIG_FALL\n volume: 1\n pitch: 1\n item_buy:\n sound: ENTITY_ITEM_PICKUP\n volume: 1\n pitch: 1\n upgrade_buy:\n sound: ENTITY_EXPERIENCE_ORB_PICKUP\n volume: 1\n pitch: 1\n respawn_cooldown_wait:\n sound: UI_BUTTON_CLICK\n volume: 1\n pitch: 1\n respawn_cooldown_done:\n sound: ENTITY_PLAYER_LEVELUP\n volume: 1\n pitch: 1\ngame-effects:\n end:\n effects:\n - ==: Firework\n flicker: false\n trail: false\n colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL\n power: 1\n type: Firework\n start: {}\n kill: {}\n teamkill: {}\n lobbyjoin: {}\n lobbyleave: {}\n respawn: {}\n beddestroy: {}\n warppowdertick: {}\nlobby-scoreboard:\n enabled: true\n title: '&eBEDWARS'\n content:\n - ' '\n - '&fMap: &2%arena%'\n - '&fPlayers: &2%players%&f/&2%maxplayers%'\n - ' '\n - '&fWaiting ...'\n - ' '\nstatistics:\n enabled: true\n type: yaml\n show-on-game-end: false\n bed-destroyed-kills: false\n scores:\n kill: 10\n final-kill: 0\n die: 0\n win: 50\n bed-destroy: 25\n lose: 0\n record: 100\ndatabase:\n host: localhost\n port: 3306\n db: database\n user: root\n password: secret\n table-prefix: bw_\n type: mysql\n driver: default\n params:\n useSSL: false\n serverTimezone: Europe/Prague\n autoReconnect: true\n cachePrepStmts: true\n prepStmtCacheSize: 250\n prepStmtCacheSqlLimit: 2048\nbossbar:\n use-xp-bar: false\n lobby:\n enable: true\n color: YELLOW\n style: SEGMENTED_20\n game:\n enable: true\n color: GREEN\n style: SEGMENTED_20\n # The backend-entity field is present only if the server is running on 1.8.8. Allowed values: wither, dragon\n backend-entity: dragon\nholograms:\n enabled: true\n headline: Your &eBEDWARS&f stats\n leaderboard:\n headline: '&6Bedwars Leaderboard'\n format: '&l%order%. &7%name% - &a%score%'\n size: 10\nchat:\n override: true\n format: '<%teamcolor%%name%&r> '\n separate-chat:\n lobby: false\n game: false\n send-death-messages-just-in-game: true\n send-custom-death-messages: true\n default-team-chat-while-running: true\n all-chat-prefix: '@a'\n team-chat-prefix: '@t'\n all-chat: '[ALL] '\n team-chat: '[TEAM] '\n death-chat: '[DEATH] '\n disable-all-chat-for-spectators: false\nrewards:\n enabled: false\n player-win:\n - /example {player} 200\n player-win-run-immediately:\n - /example {player} 200\n player-end-game:\n - /example {player} {score}\n player-destroy-bed:\n - /example {player} {score}\n player-kill:\n - /example {player} 10\n player-final-kill:\n - /example {player} 10\n player-game-start:\n - /example {player} 10\n player-early-leave:\n - /example {player} {death} 10\n team-win:\n - /example {team} 10\n player-team-win:\n - /example {team} {death} 10\n game-start:\n - /example Hello World!\nlore:\n generate-automatically: true\n text:\n - '&7Price:'\n - '&7%price% %resource%'\n - '&7Amount:'\n - '&7%amount%'\nsign:\n lines:\n - '&c&l[BedWars]'\n - '%arena%'\n - '%status%'\n - '%players%'\n block-behind:\n enabled: false\n waiting: ORANGE_STAINED_GLASS\n rebuilding: BROWN_STAINED_GLASS\n in-game: GREEN_STAINED_GLASS\n game-disabled: RED_STAINED_GLASS\nhotbar:\n selector: 0\n color: 1\n start: 2\n leave: 8\nbreakable:\n enabled: false\n asblacklist: false\n explosions: false\n blocks: []\nleaveshortcuts:\n enabled: false\n list:\n - leave\nmainlobby:\n enabled: false\n location: ''\n world: ''\nturnOnExperimentalGroovyShop: false\npreventSpectatorFlyingAway: false\nremovePurchaseMessages: false\nremovePurchaseFailedMessages: false\nremoveUpgradeMessages: false\ndisableCakeEating: true\ndisableDragonEggTeleport: true\npreventArenaFromGriefing: true\nupdate-checker:\n zero:\n console: true\n admins: true\n one:\n console: true\n admins: true\ntarget-block:\n allow-destroying-with-explosions: false\n respawn-anchor:\n fill-on-start: true\n enable-decrease: true\n sound:\n charge: BLOCK_RESPAWN_ANCHOR_CHARGE\n used: BLOCK_GLASS_BREAK\n deplete: BLOCK_RESPAWN_ANCHOR_DEPLETE\n cake:\n destroy-by-eating: true\nevent-hacks:\n damage: false\n destroy: false\n place: false\ntab:\n enable: false\n header:\n enabled: true\n contents:\n - '&aMy awesome BedWars server'\n - '&bMap: %map%'\n - '&cPlayers: %respawnable%/%max%'\n footer:\n enabled: true\n contents:\n - '&eexample.com'\n - '&fWow!!'\n - '&a%spectators% are watching this match'\n hide-spectators: true\n hide-foreign-players: false\ndefault-permissions:\n join: true\n leave: true\n stats: true\n list: true\n rejoin: true\n autojoin: true\n leaderboard: true\n party: true\n# The following sections requires Parties plugin to be installed\nparty:\n enabled: false\n autojoin-members: false\n notify-when-warped: true\n
"},{"location":"config/#custom-resources","title":"Custom resources","text":"Tip
If you want to switch to emerald
, diamond
, iron
and gold
specifically, you may want to have another Hypixel features on your server, like upgrades. In that case, we would recommend you checking out SBA.
Open the config (plugins/BedWars/config.yml
) and scroll down, until you find a section called resources
. Using Ctrl+F
helps you to search for it.
Here is an example on how to add emerald
, diamond
, iron
and gold
.
resources:\n emerald: # resource name\n material: EMERALD # resource material (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html)\n color: GREEN # resource color (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ChatColor.html)\n name: Emerald # resource in-game name\n interval: 60 # resource spawn time in seconds\n translate: resource_emerald # resource translation key\n spread: 1.0 # resource spread radius\n diamond:\n material: DIAMOND\n color: BLUE\n name: Diamond\n interval: 30\n translate: resource_diamond\n spread: 1.0\n iron:\n material: IRON_INGOT\n color: WHITE\n name: Iron\n interval: 2\n translate: resource_iron\n spread: 1.0\n gold:\n material: GOLD_INGOT\n color: GOLD\n name: Gold\n interval: 8\n translate: resource_gold\n spread: 1.0\n
"},{"location":"config/#database-connection","title":"Database connection","text":"In config.yml you can find a section called database
. Under this section, you can configure the database connection. Currently only MySQL and MariaDB are officially supported, yet the configuration allows you to provide a custom driver for a newer version of the database system or a driver for a different SQL-like database system like PostgreSQL. Pull requests fixing support with different database systems are welcome :)
To enable the database connection, you have to set something to be saved in database. Currently only statistics can be saved to the database. To enable that, locate the statistics
section and switch type
from yaml
to database
.
There are following fields in the database section:
host
is the hostname or IP address of the database server, defaults to localhost
.port
is the port of the database server, defaults to 3306
which is the default port for MySQL/MariaDB.db
is the name of the database, defaults to database
user
is the user of the database system with access to database specified db
. The user needs to be able to change the structure of the database. Defaults to root
, though applications should not have root access.password
is the password of the database user. Defaults to secret
, though you should choose better password (possibly generated).table-prefix
is a string which is prepended to table names, defaults to bw_
.type
is type of the database system, defaults to mysql
(valid for both MySQL and MariaDB when the MySQL driver is used).driver
is the driver, which is going to be used. There are two possible options:default
. The driver will be chosen based on the type. Both Spigot and Paper servers provide driver for type mysql
. Other plugins may provide other drivers to the classpath.mysql-connector-j-8.0.0.jar
. The path is always relative to the plugins/BedWars
folder, so we recommend putting the jar to this folder. The driver needs to be JDBC 4-compatible. The driver is not available to other plugins, and does not affect them in any way.params
is a map containing specific options for the driver. You should check documentation of the chosen database system before modifying it. By default, following parameters are set: params:\n useSSL: false # change this to true if your database server requires SSL or runs on a different machine and has SSL enabled\n serverTimezone: Europe/Prague # default value is based on your system\n autoReconnect: true\n cachePrepStmts: true\n prepStmtCacheSize: 250\n prepStmtCacheSqlLimit: 2048\n
Driver version
If you use an ancient Minecraft version like 1.8.8, but you have new version of MySQL/MariaDB, the driver bundled in Spigot 1.8.8 may be incompatible. Get a new version of MySQL Connector J here: select Platform Independent, download the archive and extract the mysql-connector-j-8.x.x.jar file from it (other files from the archive are not relevant). Put the JAR file in plugins/BedWars
folder, and change driver
from default
to the name of the file, eg. mysql-connector-j-8.4.0.jar
.
stats_players table structure
In specific cases, the automatic creation of the database table may fail. In that case you may need to create it manually, using the following code or its variation.
CREATE TABLE IF NOT EXISTS `bw_stats_players` (\n `kills` int(11) NOT NULL DEFAULT '0',\n `wins` int(11) NOT NULL DEFAULT '0',\n `score` int(11) NOT NULL DEFAULT '0',\n `loses` int(11) NOT NULL DEFAULT '0',\n `name` varchar(255) NOT NULL,\n `destroyedBeds` int(11) NOT NULL DEFAULT '0',\n `uuid` varchar(255) NOT NULL,\n `deaths` int(11) NOT NULL DEFAULT '0',\n PRIMARY KEY (`uuid`)\n);\n
"},{"location":"config/#game-effects","title":"Game effects","text":"In config.yml you can find a section called game-effects
. Here you can set some visual effects that will enhance your game experiences.
end
- This effect is called when game ends.start
- This effect is called when game starts.kill
- This effect is called when someone kills someone.teamkill
- This effect is called when someone kills someone and bed or other target block is destroyed.lobbyjoin
- This effect is called when someone enters the lobby.lobbyleave
- This effect is called when someone leaves the lobby.respawn
- This effect is called when someone is respawned.beddestroy
- This effect is called when someone destroys bed or other target block.warppowdertick
- This effect is caled when someone is teleported by Warp Powder.Particle
- Particle effect (click here for list)Effect
- Effect (click here for list)Firework
- Launches a fireworkList
- Multiple effects on one eventgame-effects:\n start:\n type: Particle\n value: LAVA # uppercase key from the list\n # options below are optional\n count: 2 # how many particles will be spawned (default - 1)\n offsetX: 1 # offset from the event location (default - 0 for each coordinate)\n offsetY: 1\n offsetZ: 1\n extra: 1 # extra data, depends on each particle (default - 1)\n
"},{"location":"config/#effect","title":"Effect","text":"game-effects:\n start:\n type: Effect\n value: DOOR_CLOSE # uppercase key from the list\n
"},{"location":"config/#firework","title":"Firework","text":"Firework effect types are listed here
game-effects:\n end:\n type: Firework\n power: 1 # power of the firework\n effects: # list of firework effects\n - ==: Firework\n flicker: false\n trail: false\n colors: # list of colors\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL # effect type\n
"},{"location":"config/#list","title":"List","text":"game-effects:\n end:\n type: List\n list: # list of effects\n - type: Particle\n value: LAVA\n count: 2\n extra: 1\n - type: Effect\n value: DOOR_CLOSE # uppercase key from the list\n - type: Firework\n power: 1 # power of the firework\n effects: # list of firework effects\n - ==: Firework\n flicker: false\n trail: false\n colors: # list of colors\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n fade-colors:\n - ==: Color\n RED: 255\n BLUE: 255\n GREEN: 255\n type: BALL # effect type\n
"},{"location":"config/#custom-language","title":"Custom language","text":"And that's it, you have your own language!
"},{"location":"placeholderapi/","title":"PlaceholderAPI","text":"This plugin registers placeholders to PlaceholderAPI.
These placeholders are intended for use in other plugins and may not function if used in the BedWars configuration. However, they can be utilized in shop.yml
and other shop-related files if PlaceholderAPI is installed. Use the slightly modified syntax: %papi.<placeholder_name>%
(e.g., %papi.bedwars_all_games_players%
).
%bedwars_all_games_players%
- Returns the total number of players across all games.%bedwars_all_games_maxplayers%
- Returns the total maximum number of players across all games.%bedwars_all_games_anyrunning%
- Returns true
if any game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_all_games_anywaiting%
- Returns true
if any game is currently in waiting
state; otherwise false
.The placeholders in this section are specific to a player, based on the context in which they are used, most commonly the viewer of a message, hologram, etc.
"},{"location":"placeholderapi/#information-about-the-current-game","title":"Information about the current game","text":"Some of these placeholders contain a parameter <team_name>
. Replace it with the name of the team. For example, if the team name is red
, you would use %bedwars_current_game_team_red_bed%
.
%bedwars_current_game%
- Returns the name of the current game.%bedwars_current_game_players%
- Returns the number of players in the game.%bedwars_current_game_minplayers%
- Returns the minimum number of players required for the game to start.%bedwars_current_game_maxplayers%
- Returns the maximum number of players that can join the game.%bedwars_current_game_world%
- Returns the name of the world where the arena is located.%bedwars_current_game_state%
- Returns the current state of the game. Possible values are: waiting
, running
, game_end_celebrating
, rebuilding
, and disabled
.%bedwars_current_game_time%
- Returns the remaining time in seconds.%bedwars_current_game_timeformat%
- Returns the remaining time formatted as MM:SS
.%bedwars_current_game_elapsedtime%
- Returns the elapsed time in seconds.%bedwars_current_game_elapsedtimeformat%
- Returns the elapsed time formatted as MM:SS
.%bedwars_current_game_team_<team_name>_colored%
- Returns the team name in color.%bedwars_current_game_team_<team_name>_color%
- Returns the team color code as &<legacy color code>
.%bedwars_current_game_team_<team_name>_ingame%
- Returns whether the team is currently playing, as a string: yes
or no
.%bedwars_current_game_team_<team_name>_players%
- Returns the number of players in the team.%bedwars_current_game_team_<team_name>_maxplayers%
- Returns the maximum number of players in the team.%bedwars_current_game_team_<team_name>_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_current_game_team_<team_name>_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.%bedwars_current_game_team_<team_name>_teamchests%
- Returns the number of team chests.%bedwars_current_game_running%
- Returns true
if the game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_current_game_waiting%
- Returns true
if the game is currently in waiting
state; otherwise false
.%bedwars_current_available_teams%
- Returns the number of existing teams.%bedwars_current_connected_teams%
- Returns the number of teams currently playing.%bedwars_current_teamchests%
- Returns the number of team chests across all teams.%bedwars_current_team%
- Returns the name of the player's team.%bedwars_current_team_color%
- Returns the color of the player's team as &<legacy color code>
.%bedwars_current_team_colored%
- Returns the team name in color.%bedwars_current_team_players%
- Returns the number of players in the team.%bedwars_current_team_maxplayers%
- Returns the maximum number of players in the team.%bedwars_current_team_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_current_team_teamchests%
- Returns the number of team chests.%bedwars_current_team_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.When using these placeholders, replace <game>
with the specific game identifier and <team_name>
with the name of the team. For example, if the game identifier is game1
and the team name is red
, you would use %bedwars_game_game1_team_red_colored%
.
%bedwars_game_<game>_name%
- Returns the name of the game.%bedwars_game_<game>_players%
- Returns the number of players in the game.%bedwars_game_<game>_minplayers%
- Returns the minimum number of players required for the game to start.%bedwars_game_<game>_maxplayers%
- Returns the maximum number of players that can join the game.%bedwars_game_<game>_world%
- Returns the name of the world where the arena is located.%bedwars_game_<game>_state%
- Returns the current state of the game. Possible values are: waiting
, running
, game_end_celebrating
, rebuilding
, and disabled
.%bedwars_game_<game>_available_teams%
- Returns the number of existing teams.%bedwars_game_<game>_connected_teams%
- Returns the number of teams currently playing.%bedwars_game_<game>_teamchests%
- Returns the number of team chests in the game.%bedwars_game_<game>_time%
- Returns the remaining time in seconds.%bedwars_game_<game>_timeformat%
- Returns the remaining time formatted as MM:SS
.%bedwars_game_<game>_elapsedtime%
- Returns the elapsed time in seconds.%bedwars_game_<game>_elapsedtimeformat%
- Returns the elapsed time formatted as MM:SS
.%bedwars_game_<game>_team_<team_name>_colored%
- Returns the team name in color.%bedwars_game_<game>_team_<team_name>_color%
- Returns the team color code as &<legacy color code>
.%bedwars_game_<game>_team_<team_name>_ingame%
- Returns whether the team is currently playing, as a string: yes
or no
.%bedwars_game_<game>_team_<team_name>_players%
- Returns the number of players in the team.%bedwars_game_<game>_team_<team_name>_maxplayers%
- Returns the maximum number of players in the team.%bedwars_game_<game>_team_<team_name>_bed%
- Returns whether the team currently has a valid target block, as a string: yes
or no
.%bedwars_game_<game>_team_<team_name>_bedsymbol%
- Returns the colored target block symbol used in SBW's in-game scoreboard.%bedwars_game_<game>_team_<team_name>_teamchests%
- Returns the number of team chests.%bedwars_game_<game>_running%
- Returns true
if the game is currently in running
or game_end_celebrating
state; otherwise false
.%bedwars_game_<game>_waiting%
- Returns true
if the game is currently in waiting
state; otherwise false
.Custom leaderboards
You can create custom leaderboards using placeholders to display player statistics in various ways. To achieve this, consider using the ajLeaderboards plugin with the placeholders listed below. This allows for greater flexibility beyond what the BedWars plugin offers.
The placeholders in this section are specific to a player, based on the context in which they are used, most commonly the viewer of a message, hologram, etc.
%bedwars_stats_deaths%
- Returns the number of deaths.%bedwars_stats_destroyed_beds%
- Returns the number of destroyed beds.%bedwars_stats_kills%
- Returns the number of kills.%bedwars_stats_loses%
- Returns the number of losses.%bedwars_stats_score%
- Returns the total score.%bedwars_stats_wins%
- Returns the number of wins.%bedwars_stats_games%
- Returns the total number of games played.%bedwars_stats_kd%
- Returns the kill/death ratio.When using these placeholders, replace <player>
with the specific player's name. For example, if the player's name is Misat11
, you would use %bedwars_otherstats_Misat11_deaths%
.
%bedwars_otherstats_<player>_deaths%
- Returns the number of deaths.%bedwars_otherstats_<player>_destroyed_beds%
- Returns the number of destroyed beds.%bedwars_otherstats_<player>_kills%
- Returns the number of kills.%bedwars_otherstats_<player>_loses%
- Returns the number of losses.%bedwars_otherstats_<player>_score%
- Returns the total score.%bedwars_otherstats_<player>_wins%
- Returns the number of wins.%bedwars_otherstats_<player>_games%
- Returns the total number of games played.%bedwars_otherstats_<player>_kd%
- Returns the kill/death ratio.Screaming BedWars plugin uses our own lib called SimpleInventories to create and render inventory-based guis, and therefore shops. This article will show you some basics of this format. Check this wiki for more advanced variables.
"},{"location":"shop/#creating-a-new-item","title":"Creating a new item","text":"To create a new item, first you need to know internal item's name. You can use Minecraft Wiki to get the specific resource name. The name usually starts with minecraft:
, this part can be omitted from the final name.
You can also use modern names in legacy environments (1.8.8-1.12.2). If the modern name does not work, check this page for old names. Old names are deprecated and they may not be supported in future releases of BedWars.
There are two supported formats of items. We call them short stack
and long stack
.
This format can describe only material name, amount, display name and lore. Except for material name, every part is optional. Each part is divided using semicolon.
items:\n- stone\n- dirt;2\n- diamond_pickaxe;;Super Sword\n- tnt;3;Trinitrotoluene;Does explode\n
To specify price and make the item buyable, suffix this format with for <amount> <resource>
:
items:\n- stone for 1 bronze\n- dirt;2 for 3 iron\n- diamond_pickaxe;;Super Sword for 5 gold\n- tnt;3;Trinitrotoluene;Does explode for 9 iron\n
In order to be able to specify other attributes (for example properties
), we have to convert this from string to map. This is done by splitting the string into variables stack
and price
:
items:\n- stack: stone\n price: 1 bronze\n- stack: dirt;2\n price: 3 iron\n- stack: diamond_pickaxe;;Super Pickaxe\n price: 5 gold\n- stack: tnt;3;Trinitrotoluene;Does explode\n price: 9 iron\n
"},{"location":"shop/#using-long-stack","title":"Using long stack","text":"Long stack allows you to create items with enchantments and other attributes. Let's see the previous example rewritten in this format:
items:\n- stack: \n type: stone\n price: 1 bronze\n- stack: \n type: dirt\n amount: 2\n price: 3 iron\n- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxe\n price: 5 gold\n- stack: \n type: tnt\n amount: 3\n display-name: Trinitrotoluene\n lore:\n - Does explode\n price: 9 iron\n
As we can see, the stack
attribute is now a map, which allows more attributes to be present. For example, we can enchant our Super Pickaxe with Fortune III.
- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxe\n enchants:\n fortune: 3\n price: 5 gold\n
The enchantment names can be found here.
For list of all available options visit this page.
"},{"location":"shop/#using-item-as-a-category","title":"Using item as a category","text":"You can use any item as a category (even if the item is in another category). Players can then click on that item to open the category. The format is very similar, the only thing you have to specify is a list called items
, where you put items of that specific category. Format of items in items
is same as format in the base data
list.
- stack: \n type: diamond_pickaxe\n display-name: Super Pickaxes\n lore:\n - You will never mine with anything else!\n items:\n - wooden_pickaxe for 10 gold\n - golden_pickaxe for 20 gold\n
"},{"location":"specials/","title":"Specials","text":"Special items can be sold in the shop and have unique behaviors when used. For example, they can spawn entities, reduce knockback, gives potion effects, etc.
Addons can also introduce new special items.
Every special item in the shop is configured using properties
.
The Arrow Blocker is an item that allows you to block arrows for a certain period of time when used.
There are two configurable options for an Arrow Blocker:
protection-time
- The duration (in seconds) during which a player cannot be damaged by projectiles.delay
- The cooldown period (in seconds) after usage during which the player cannot use another Arrow Blocker.Here is an example of the Arrow Blocker configured in the shop:
- price: 5 of gold\n properties:\n - name: \"ArrowBlocker\"\n protection-time: 10\n delay: 5\n stack:\n type: ender_eye\n display-name: \"Arrow Blocker\"\n lore:\n - \"Block arrows that are coming\"\n - \"for you with black magic.\"\n - \"I mean, with this item.\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n arrow-blocker:\n protection-time: 10\n delay: 5\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 5 of gold\n properties: \"ArrowBlocker\"\n stack:\n type: ender_eye\n display-name: \"Arrow Blocker\"\n lore:\n - \"Block arrows that are coming\"\n - \"for you with black magic.\"\n - \"I mean, with this item.\"\n
"},{"location":"specials/#auto-ignitable-tnt","title":"Auto Ignitable TNT","text":"The Auto Ignitable TNT is a special item that spawns ignited TNT when placed.
There are three configurable options for the Auto Ignitable TNT:
explosion-time
- The time (in seconds) after which the spawned TNT explodes.damage-placer
- Whether or not the player who placed the TNT should also take damage.damage
- The damage dealt by the TNT.TNT jumping
Addons like SBA provide additional customization to this item related to jumping. Please refer to their documentation for more details.
Here is an example of the Auto Ignitable TNT configured in the shop:
- price: 3 of iron\n properties:\n - name: \"AutoIgniteableTnt\"\n explosion-time: 5\n damage-placer: false\n damage: 4.0\n stack:\n type: tnt\n display-name: \"Autoigniteable TNT\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n auto-igniteable-tnt:\n explosion-time: 5\n damage-placer: false\n damage: 4.0\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 3 of iron\n properties: \"AutoIgniteableTnt\"\n stack:\n type: tnt\n display-name: \"Autoigniteable TNT\"\n
"},{"location":"specials/#golem","title":"Golem","text":"The Golem is a special item that spawns a golem to attack enemy teams.
There are multiple configurable options for this special item:
speed
- The golem's speed.follow-range
- The range within which the golem will follow enemies.health
- The golem's health.show-name
- Whether the golem's name should be displayed above its head.delay
- The cooldown period before another golem can be spawned.collidable
- Whether players collide with the golem.name-format
- The format of the name shown above the golem's head. There are two placeholders: %teamcolor%
for the team's color and %team%
for the team's name.Here is an example of the Golem configured in the shop:
- price: 24 of iron\n properties:\n - name: \"Golem\"\n speed: 0.25\n follow-range: 16.0\n health: 20\n show-name: true\n delay: 0\n collidable: true\n name-format: \"%teamcolor%%team% Golem\"\n stack:\n type: ghast_spawn_egg\n display-name: \"Golem\"\n lore:\n - \"An iron golem that will protect\"\n - \"your team from the enemies.\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n golem:\n speed: 0.25\n follow-range: 16.0\n health: 20\n show-name: true\n delay: 0\n collidable: true\n name-format: \"%teamcolor%%team% Golem\"\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 24 of iron\n properties: \"Golem\"\n stack:\n type: ghast_spawn_egg\n display-name: \"Golem\"\n lore:\n - \"An iron golem that will protect\"\n - \"your team from the enemies.\"\n
"},{"location":"specials/#lucky-block","title":"Lucky Block","text":"The Lucky Block is a special item inspired by the LuckyBlock Addon for BedWarsRel. This block can be placed anywhere, and when broken, a random configured event will occur. Lucky Blocks are not available in the shop by default; therefore, you must add them to the shop manually.
Like other special items, Lucky Blocks use properties
for their configuration. The property for these blocks is called LuckyBlock
and includes a data
section. This section is a list of events that may occur.
There are 5 event types:
nothing
- As the name implies, it does nothing.teleport
- This event teleports the player along the Y-axis. The variable height
is used to configure this relative teleportation. For example, if a player is at height 60 and the configured height is 50, they will be teleported to Y 110.tnt
- A primed TNT entity is spawned when this event occurs, which explodes immediately.potion
- This event gives the player a potion effect. The effect is configured using the variable effect
.item
- This event gives the player an item. This item is configured using the variable stack
.Below is an example of a fully configured Lucky Block with all these events included. Additionally, each event can have a variable message
. This message will be sent to the player who broke the block.
- price: 7 of iron\n properties:\n - name: \"LuckyBlock\"\n data:\n - type: tnt\n - type: nothing\n - type: teleport\n height: 50\n - type: item\n stack: dirt\n message: \"This sends you message. You can add it to any event type.\"\n - type: potion\n effect:\n effect: blindness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n stack:\n type: sponge\n amount: 1\n display-name: \"Lucky Block\"\n
Unlike other special items, there is no global configuration for Lucky Blocks.
"},{"location":"specials/#magnet-shoes","title":"Magnet Shoes","text":"Wearing this special item randomly absorbs all received knockback, giving you an advantage in PvP.
There is a single configurable option for this special item:
probability
- A number (0-100) representing the percentage chance that the shoes will absorb the knockback.Here is an example of Magnet Shoes configured in the shop:
- price: 6 of iron\n properties:\n - name: \"MagnetShoes\"\n probability: 75\n stack:\n type: iron_boots\n display-name: \"Magnet-Shoes\"\n lore:\n - \"Wear those shoes and have a 75%\"\n - \"chance of getting no knockback!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n magnet-shoes:\n probability: 75\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 6 of iron\n properties: \"MagnetShoes\"\n stack:\n type: iron_boots\n display-name: \"Magnet-Shoes\"\n lore:\n - \"Wear those shoes and have a 75%\"\n - \"chance of getting no knockback!\"\n
"},{"location":"specials/#protection-wall","title":"Protection Wall","text":"The Protection Wall is a special item that builds a wall when used.
There are several configurable options for this item:
is-breakable
- Whether it is possible to break the blocks of the wall.delay
- The cooldown period before another protection wall can be built.break-time
- The time (in seconds) after which the wall disappears. Can be set to 0
to disable the automatic breaking of the wall.width
- The width (in blocks) of the wall. This must be an odd number; the plugin will print a warning and add an extra block if the number is even.height
- The height (in blocks) of the wall.distance
- The distance (in blocks) from the player activating the item to where the wall appears, in the direction the player is facing.material
- The material used to build the wall. If the material is colorable, it will automatically be converted to the team's color.Here is an example of a Protection Wall configured in the shop:
- price: 64 of bronze\n properties:\n - name: \"protectionwall\"\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: cut_sandstone\n stack:\n type: bricks\n display-name: \"Protection Wall\"\n lore:\n - \"Instantly builds a wall that\"\n - \"can save your life!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n protection-wall:\n is-breakable: false\n delay: 20\n break-time: 0\n width: 5\n height: 3\n distance: 2\n material: cut_sandstone\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 64 of bronze\n properties: \"protectionwall\"\n stack:\n type: bricks\n display-name: \"Protection Wall\"\n lore:\n - \"Instantly builds a wall that\"\n - \"can save your life!\"\n
"},{"location":"specials/#rescue-platform","title":"Rescue Platform","text":"The Rescue Platform is similar to the Protection Wall, but instead of wall it builds a platform that the player can use when falling to prevent fall damage or falling off the map.
There are several configurable options for this item:
is-breakable
- Determines whether it is possible to break blocks of the platform.delay
- The cooldown period before another rescue platform can be built.break-time
- The time (in seconds) after which the platform disappears. Can be set to 0
to disable the automatic breaking of the platform.distance
- The distance (in blocks) below the player activating the item where the platform appears.material
- The name of the material used to build the platform. If the material is colorable, it will automatically be converted to the team's color.Here is an example of a Rescue Platform configured in the shop:
- price: 64 of bronze\n properties:\n - name: \"rescueplatform\"\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: glass\n stack:\n type: blaze_rod\n display-name: \"Rescue Platform\"\n lore:\n - \"Protect yourself from falling into\"\n - \"the void with a Rescue Platform.\"\n - \"This is your last hope!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n rescue-platform:\n is-breakable: false\n delay: 0\n break-time: 10\n distance: 1\n material: glass\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 64 of bronze\n properties: \"rescueplatform\"\n stack:\n type: blaze_rod\n display-name: \"Rescue Platform\"\n lore:\n - \"Protect yourself from falling into\"\n - \"void with a Rescue Platform.\"\n - \"This is your last hope!\"\n
"},{"location":"specials/#team-chest","title":"Team Chest","text":"Placing this item creates a chest accessible only by the placing team. All of these chests share the same inventory, similarly to an ender chest.
For legacy reasons, any ender chest in the shop is turned into a team chest regardless of the given properties. To disable this behavior, you have to set specials.teamchest.turn-all-enderchests-to-teamchests
to false
in config.yml
.
Explicitly created team chests in the shop look like this:
- price: 1 of gold\n properties: \"teamchest\"\n stack: ender_chest\n
Warning
The type needs to be ender_chest
for the item to work!
The Throwable Fireball represents a fireball that can be thrown from the hand of a player.
There are several configurable options for this item:
damage
- The amount of damage dealt by the fireball.incendiary
- Determines whether the explosion causes fire.damage-thrower
- Determines whether the fireball should damage its thrower if it explodes near them.Fireball jumping
Addons like SBA provide additional customization to this item related to jumping. Please refer to their documentation for more details.
Here is an example of a Throwable Fireball configured in the shop:
- price: 40 of iron\n properties:\n - name: \"ThrowableFireball\"\n damage: 3.0\n incendiary: true\n damage-thrower: true\n stack:\n type: fire_charge\n display-name: \"Fireball\"\n lore:\n - \"Is it a bird? Is it a plane?\"\n - \"By the time you know\"\n - \"you are dead!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n throwable-fireball:\n damage: 3.0\n incendiary: true\n damage-thrower: true\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 40 of iron\n properties: \"ThrowableFireball\"\n stack:\n type: fire_charge\n display-name: \"Fireball\"\n lore:\n - \"Is it a bird? Is it a plane?\"\n - \"By the time you know\"\n - \"you are dead!\"\n
"},{"location":"specials/#tnt-sheep","title":"TNT Sheep","text":"The TNT Sheep is a special item that summons an explosive sheep, following enemy players. Upon summoning, it targets the closest enemy.
There are several configurable options for this special item:
speed
- The sheep's speed.follow-range
- The range within which the sheep will follow enemies.max-target-distance
- The maximum distance (in blocks) from which the initial target can be. The sheep does not spawn if there is no target within this distance.explosion-time
- The time (in seconds) after which the TNT explodes and the sheep disappears.Here is an example of the TNT Sheep configured in the shop:
- price: 10 of gold\n properties:\n - name: \"TNTSheep\"\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n stack:\n type: sheep_spawn_egg\n display-name: \"TNT Sheep\"\n lore:\n - \"Use the TNT-Sheep! It will\"\n - \"walk towards your closest enemy\"\n - \"and explode within 8 seconds!\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n tnt-sheep:\n speed: 0.25\n follow-range: 10.0\n max-target-distance: 32\n explosion-time: 8\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 10 of gold\n properties: \"TNTSheep\"\n stack:\n type: sheep_spawn_egg\n display-name: \"TNT Sheep\"\n lore:\n - \"Use the TNT-Sheep! It will\"\n - \"walk towards your closest enemy\"\n - \"and explode within 8 seconds!\"\n
"},{"location":"specials/#tracker","title":"Tracker","text":"The Tracker is a simple special item that displays the distance and direction of the nearest enemy. It is recommended for the Tracker to be a compass since the item sets the compass target of its user. Unlike other special items, this item is permanent, and you can use it repeatedly.
Here is an example of the Tracker configured in the shop:
- price: 5 of iron\n properties: \"Tracker\"\n stack:\n type: compass\n display-name: \"Tracker\"\n lore:\n - \"Wanna know where your closest target is?\"\n - \"Let's try this out!\"\n
"},{"location":"specials/#trap","title":"Trap","text":"A Trap is a placeable special item. When an enemy steps on a trap, all configured events will occur. Additionally, the team will be notified that someone has triggered their trap.
Unlike other special items, there is no global configuration for traps. The only option here is data
, which is a list containing all the events.
There are 3 event types:
sound
- Plays a specified sound.effect
- Applies a potion effect to the victim. The effect is configured using the variable effect
.damage
- Deals a specified amount of damage to the player.Here is an example of a fully configured trap:
- price: 3 of iron\n properties:\n - name: \"Trap\"\n data:\n - damage: 2.0\n - sound: ENTITY_SHEEP_AMBIENT\n - effect:\n effect: blindness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n - effect:\n effect: weakness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n - effect:\n effect: slowness\n amplifier: 2\n duration: 100\n ambient: true\n particles: true\n icon: true\n stack:\n type: string\n display-name: \"Trap\"\n lore:\n - \"Get informed if an enemy steps on your trap\"\n - \"and your enemy won't be able to move properly.\"\n
"},{"location":"specials/#warp-powder","title":"Warp Powder","text":"The Warp Powder is a special item that teleports you to the team spawn when used. However, you must wait a few seconds without moving, otherwise, the teleportation will be canceled.
There are two configurable options for Warp Powder:
teleport-time
- The cooldown (in seconds) before the player gets teleported.delay
- The cooldown period (in seconds) after usage during which the player cannot use another Warp Powder.Here is an example of Warp Powder configured in the shop:
- price: 7 of iron\n properties:\n - name: \"WarpPowder\"\n teleport-time: 6\n delay: 0\n stack:\n type: gunpowder\n display-name: \"Warp Powder\"\n lore:\n - \"When using this powder you'll get\"\n - \"teleported to you spawn point within 6 seconds\"\n - \"Warning: Any movement will stop the process\"\n
A global configuration in config.yml
can also be used instead of a local configuration. The global configuration in config.yml
looks like this:
specials:\n # ...\n warp-powder:\n teleport-time: 6\n delay: 0\n # ...\n
To use the global configuration, simply omit the options you do not wish to override in the shop configuration. If there is a single property with only a name and no overrides, you can use the following syntax:
- price: 7 of iron\n properties: \"WarpPowder\"\n stack:\n type: gunpowder\n display-name: \"Warp Powder\"\n lore:\n - \"When using this powder you'll get\"\n - \"teleported to you spawn point within 6 seconds\"\n - \"Warning: Any movement will stop the process\"\n
"},{"location":"troubleshooting/","title":"Troubleshooting and FAQ","text":""},{"location":"troubleshooting/#non-op-players-cannot-use-signs","title":"Non-OP players cannot use signs","text":"Move the sign out of vanilla spawn protection (for example, if you have the spawn protection in server.properties set to 16, move 34 blocks away from spawn location) or change spawn protection to zero. Non-OP players can't do some things in spawn protection.
"},{"location":"troubleshooting/#position-1-and-position-2","title":"Position 1 and Position 2","text":"These two positions serve to designate an area to be considered an arena. (such as axe in WorldEdit)
See the Arena
"},{"location":"troubleshooting/#bed-cannot-be-destroyed","title":"Bed cannot be destroyed","text":"BedWars allows you to use any block as the target block, so you won't see any error when you set it to, for example, floor. So check it, and make you sure you're looking at the bed head when setting the team target block.
"},{"location":"troubleshooting/#adding-a-sign","title":"Adding a sign","text":"Place a sign and write [BedWars]
or [BWGame]
(case-sensitive) as the first line, and the name of your arena as the second line. Make sure that your sign is not in range of vanilla's spawn protection.
Use the applycolorbyteam
property, for example:
- price: 1\n price-type: bronze\n properties:\n - name: \"applycolorbyteam\"\n stack:\n type: white_wool\n amount: 2\n
"},{"location":"troubleshooting/#upgrades","title":"Upgrades","text":"See the Upgrades article.
"},{"location":"troubleshooting/#language-file","title":"Language file","text":"See the Configuration article.
"},{"location":"troubleshooting/#placeholderapi-placeholders","title":"PlaceholderAPI placeholders","text":"See the Placeholder API article.
"},{"location":"troubleshooting/#changing-the-message-prefix","title":"Changing the message prefix","text":"Prefix is changeable globally in the language file or per arena with this command: /bw admin <arena> customprefix &6My Awesome Prefix
.
See the Configuration article.
"},{"location":"troubleshooting/#broken-shop","title":"Broken shop","text":"Make sure your shop is YAML valid with yamlchecker, has proper materials and format.
"},{"location":"troubleshooting/#compass-teleports-the-player","title":"Compass teleports the player","text":"Well, you probably have WorldEdit or FastAsyncWorldEdit. The compass is used to teleport through walls. However it works only for people with permission or with OP. You can disable this tool or bound it to another item in WorldEdit configuration. You can also change the team selection item to another one in BedWars configuration.
"},{"location":"troubleshooting/#permissions","title":"Permissions","text":"See the Commands and Permissions page.
"},{"location":"troubleshooting/#adding-start-and-respawn-items","title":"Adding start and respawn items","text":"You can by doing the following
"},{"location":"troubleshooting/#start-game","title":"Start game","text":"game-start-items: true\ngived-game-start-items:\n- leather_helmet\n- leather_boots\n- leather_leggings\n- leather_chestplate\n- wooden_sword\n
"},{"location":"troubleshooting/#respawn","title":"Respawn","text":"player-respawn-items: true\ngived-player-respawn-items: \n- leather_helmet\n- leather_boots\n- leather_leggings\n- leather_chestplate\n- wooden_sword\n
"},{"location":"troubleshooting/#villagers-do-not-spawn","title":"Villagers do not spawn","text":"Here is some info on how to troubleshoot this error:
Yes, there are. Check out this page
"},{"location":"troubleshooting/#changing-damage-or-explosion-power-of-fireball","title":"Changing damage or explosion power of Fireball","text":"Go in your config.yml and there are settings for the Fireball. It is located under specials, it is not that hard to find \ud83d\ude1b
Same goes for basically any other special item. \ud83d\ude42
"},{"location":"troubleshooting/#setting-up-the-plugin-with-bungeecord","title":"Setting up the plugin with Bungeecord","text":"The plugin has a single-arena bungeecord mode. Check out this page.
"},{"location":"troubleshooting/#pvp-does-not-work","title":"PvP does not work","text":"Make sure:
/mvm set pvp true <world name>
./rg flag <region name> pvp allow
);spawn-protection
disabled (set it to 0 in server.properties).Keep in mind that BedWars does not moderate PvP. If PvP does not work for you, it is caused by a misconfiguration or another plugin. If tips above did not help you, please contact us on our Discord server.
If you have WorldGuard installed, you can also use a command to check which plugin blocks PvP. The command is /wg debug testdamage -t <player_name>
and you need a second player to test this out. Click here to read more about this command.
That is not a BedWars issue, increase your server's game difficulty (from easy to normal for example).
"},{"location":"troubleshooting/#changing-arena-name","title":"Changing arena name","text":"First, we will provide no support if you mess this up somehow, arena files are not supposed to be edited by people.
plugins/BedWars/arenas
test arena
and always needs to be one string, that means test-arena
. The name also must be unique, that means you cannot have two arenas with the same name.SomeClass has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class SomeClass)
This means you are using Java 8 (52.0), but the plugin requires at least Java 11 (55.0), if you want to know how to update, visit this page (It tells you about updating to Java 17 which can run software for Java 11; similar methods can be used for Java 11)
Currently BedWars 0.2.36 does not require Java 11, however the most famous addon SBA requires at least Java 11. New version of BedWars (0.3.0+) will require at least Java 11.
"},{"location":"troubleshooting/#using-no-norwegian-language","title":"Using no (Norwegian) language","text":"Well, Yaml specification says that literal no
means false
. To use no
as no
, you need to cast it to string locale: \"no\"
A plugin is overriding player spawns on your server, those might include (but not limited to) EssentialsSpawn, WorldGuard, etc. Remove those plugins or disable them in bedwars worlds.
"},{"location":"upgrades/","title":"Upgrades","text":""},{"location":"upgrades/#spawner-resource-quantity-upgrade","title":"Spawner resource quantity upgrade","text":"This is how it should look in you shop.yml file:
- price: 1\n price-type: bronze\n upgrade:\n entities:\n - type: spawner\n spawner-type: bronze\n add-levels: 0.2\n max-level: 2\n shop-name: \"Bronze upgrade of the team %team%\"\n notify-team: true\n stack:\n type: diamond_block\n amount: 1\n display-name: \"Bronze upgrade of the team %team%\"\n
Let's get into it.
upgrade
, entities
and type: spawner
. If any of these will be missing, upgrades won't work.spawner-name
, spawner-type
and team-upgrade
add-levels
parameter defines how much levels we are going to add. (Default start level for the spawner is 1)max-level
defines the maximum level you can upgrade to. (default is no limit)shop-name
is displayed after you buy the upgrade. That's all.notify-team
if this is true, information will be send to all the players of the team.spawner-name
: You need to have your spawner name defined in arena.yml file or while creating arena (/bw admin arenaName spawner add <spawnerType> <holoEnabled> <startLevel (default: 1)> <customName> <team>
). spawner-type
& team-upgrade
: You need to have team defined with the spawner.