Resource icon

Bow Spleef 1.0.7

No permission to download
Tested Minecraft Versions:
  • 1.8
  • 1.9
  • 1.10
  • 1.11
  • 1.12



  • Multi-Arena or Bungee support.
  • Basic API with game events.
  • Shop with hats, particles and game perks.
  • Achievements.
  • Grace Period.
  • Spectator mode.
  • Minecraft 1.8 Titles.
  • Vault or custom economy support.
  • MySQL, yaml and SQLite support.
  • Custom messages.
  • Custom signs.
  • Automatically rollback system (After game/server shutdown).
  • UUID support.
  • Save and restore player inventory, levels and more!
  • Made for Java 8 and MC 1.8, 1.9, 1.10, 1.11 and 1.12.
  • A pre made arena!
  • Leaderboard FOR MYSQL or SQLITE only!
  • Advanced world restore or map resetting system.
  • Reward system.


Bugs
Please go to discussion to report bugs before leaving a bad review some things are still being worked from premium version. If you issues were fixed and you still don't like how we work, feel free to do your review.

Dependencies
You need to install WorldEdit to set arena bounds, you also can install vault and enable the vault support.

The Advanced RestoreSystem
You can enable it on config, if enabled ALL OF THE WORLD will reset, the map storage system will have some changes.
  • After using the create command you will be teleported to a new world (or to a existing one if the world is loaded).
  • Paste/build/edit your map on this world.
  • After setting up the arena and saving you will be teleported to global spawn (server spawn if global spawn is not valid).
  • BowSpleef will create a backup of your world and reload the map after a match.

Arena Restore system
  • Sometimes the System just place more blocks than the allowed value in blocks per second due an Delay and to prevent Exceptions, this can reduce the value in 5-8 seconds.
  • You can change the Iterator-Delay and Blocks-Per-Iterator values in config to have something faster.
  • The restore system replace ALL blocks to prevent fails.
  • If your restore system is low:
First example (Big arena - 14k):
  1. I have 14k of blocks in an arena, with 5 Iterator delay and 50 blocks per iterator.
  2. 4 Iterators = 20 ticks (5 Iterator dealy * 4 Iterators = 20 ticks = 1 second)
  3. If 4 iterators = 1 second, I'm getting 200 blocks placed per second (4 iterators * 50 blocks)
  4. If I'm getting 200 blocks placed per second and my arena has 14.000 blocks, the calculated delay to reset the arena is 70 seconds. (14.000/200)
Second example (Normal arena -3K)
  1. I have 3k of blocks in an arena, with 5 Iterator delay and 50 blocks per iterator.
  2. 4 Iterators = 20 ticks (5 Iterator dealy * 4 Iterators = 20 ticks = 1 second)
  3. If 4 iterators = 1 second, I'm getting 200 blocks placed per second (4 iterators * 50 blocks)
  4. If I'm getting 200 blocks placed per second and my arena has 3.0000 blocks, the calculated delay to reset the arena is 15 seconds. (3.000/200)
Restore system debug mode: on

Optional restore system ("Plan B")
This will be used if the server stop/crash/reload or even if anything goes wrong during the restoring process.
All blocks will be placed at the same time and this can cause lag issues during the process.

You cannot force BowSpleef to use this system, isn't safe for your server.

ParticleEffects (for trails and effects)

Spoiler: ParticleEffects
Code (Text):
To avoid issues we're working only with:


EXPLODE
LARGEEXPLODE
HUGEEXPLOSION
FIREWORKSSPARK
CRIT
MAGICCRIT
SMOKE
LARGESMOKE
SPELL
INSTANTSPELL
MOBSPELL
WITCHMAGIC
DRIPWATER
DRIPLAVA
HAPPYVILLAGER
ANGRYVILLAGER
NOTE
PORTAL
ENCHANTMENTTABLE
FLAME
FOOTSTEP
CLOUD
REDSTONE
SNOWBALL
SNOW_SHOVELD
SLIME
HEART
LAVA





Player commands

  • /bs join <arena> - bs.player
  • /bs leave. - bs.player
  • /bs stats - no permission needed.
Manager commands

  • /bs setgspawn - bs.admin
  • /bs start <arena> - bs.moderator/bs.admin
  • /bs stop <arena> - bs.moderator/bs.admin
  • /bs delete <arena> - bs.admin
Others:

  • /bs coins set/add/remve <player> <amount> - bs.command.coins
  • /bs updateData <player>
  • /bs leaderboard [update/values] <type> - Types: Wins, Shots.
  • /bs config <update/set> [path] [value]
Creating an arena below.



Arena setup
Required permission: bs.admin
First of all set global spawn using /bs setgspawn
  1. Create your arena - /bs create <name> (If you are using the advanced restore system, bowspleef will create a empty world and teleport you to paste the map, after paste it you can start the setup).
  2. Set arena lobby - /bs setlobby <name>
  3. Set arena bounds - /bs setbounds <name> <low/high>
  4. Add spawn - /bs setspawn <name>
  5. Set min players - /bs setMinPlayers <name> <amount>
  6. Set max players - /bs setMaxPlayers <name> <amount>
  7. Finish the arena with - /bs finish <name>



Extra permissions

  • bs.joinfull - Allows you to join in full games.
  • bs.advanced - Allows you to read the restore log.
Join Sign
  1. [bowspleef]
  2. join
  3. ArenaName
Leaderboard Sign
  1. [bowspleef]
  2. leaderboard
  3. <type> - types: Shots & Wins
  4. <position>
Shop
The shop system may be reworked soon, for now it's the same system from before.

Shop system (Permission-based):
  • buyPermission: The player needs to have this permission to buy an item (permission).
  • permission: The item (permission) that the player with the buyPermission will purchase.
So it's easy, if you want to add something to VIP Only you can add the buyPermission for the VIP group and players without this permission can't buy the permission to use item.

Examples:
I am a VIP member ->
The permission to buy the diamond shovel is bs.buy.shovel.diamond. I'll buy because I have the buyPermission and I'll get the permission to use when I want.


I am normal member ->
I don't have the bs.buy.shovel.diamond permission so I can't buy the item.

Trails & Effects config

  • The number is the ID and will be saved in Database.
  • name: The display name in menu.
  • buyPermission: The player needs to have this permission to buy an trail/effect.
  • permission: The trail/effect that the player with the buyPermission will purchase.
  • particles: The particle type, the list is on Main page. CLICK HERE TO GO
  • menuItem: The display item in menu.
  • lore: The item lore in menu.
  • buyCommands: Commands to execute when player buy the trail/effect.
  • price: The price
  • slot: Slot in menu
  • rotateParticles: For Effects Only, special/rotative particles around the player or normal particles.
  • helmet: (Full armor set will be added soon) If player will get some hat with the effect.


Spoiler: Files
Code (Text):


# ##### Important things in configuration #####
# Storage.Type: Types -> MYSQL, YAML, SQLITE
# Storage.Update-Interval: Interval (in minutes) to send a updated version of all the player data to your DB.
#
# Advanced.Advanced-Restore: Not recommended for BowSpleef. If enabled, THE WORLD WILL BE DELETED and recreated from a backup at maps folder.
Locations:
spawn: '{"world":"world","x":153.57897622929423,"y":52.0,"z":643.4477882597615}'
Advanced:
Restore-Log: 'true'
Iterator-Delay: '5'
Blocks-Per-Iterator: '50'
Restore: 'false'
Storage:
Type: YAML
MySQL:
Host: localhost
Port: '3306'
User: user
Password: '123456'
Database: database
Update-Interval: '5'
Options:
Bungee:
Enabled: 'false'
Lobby-Server: lobby
Server-Name: bowspleef1
Velocity:
Double-Jump-Multiply-Forward: '1.5'
Double-Jump-Multiply-Y: '0.8'
Whitelisted-Commands:
- bs leave
- tell
- r
PreStart-Countdown: '35'
Game-Length: '600'
Time-After-Game: '8'
Grace-Period-Countdown: '15'
Use-Vault: 'false'
Stop-Particles-When-Look-Up: 'false'
Use-DeathEvent: 'true'
Action-Bar: 'true'
Use-WinFirework-Party: 'true'
Use-Titles: 'true'
Titles:
Fade-In: '8'
Stay: '28'
Fade-Out: '5'
Double-Jump: 'true'
Double-Jump-Per-Game: '2'
Double-Jump-Limit: '6'
Double-Jump-Price: '80'
Triple-Shot: 'true'
Triple-Shot-Per-Game: '3'
Triple-Shot-Limit: '4'
Triple-Slot-Price: '120'
Economy:
Coins-Per-Win: '250'
Coins-Per-Loss: '0'
Coins-Per-Player-Death: '5'
Coins-For-Participation: '50'
Messages:
ActionBar:
Lobby-Format: '&bMoney: &c&l%money% &e&l| &bJumps: &c&l%double_jumps% &e&l| &bTShoots:
&c&l%triple_shots%'
Game-Format: '&bJumps: &c&l%double_jumps% &e&l| &bTShoots: &c&l%triple_shots%'
Default-BowName: '&8Bow'
Permission: '&cNo permission!'
Item-Selected: '&aItem selected!'
Permission-To-Buy: '&cNo permission to unlock this item!'
Join: '&7%player% &ejoined the game. (&7%players%&e/&7%maxplayers%&e)'
Left: '&7%player% &eleft the game. (&7%players%&e/&7%maxplayers%&e)'
Already-Started: '&cThis game already started!'
Already-InGame: '&cAlready playing!'
Game-Is-Full: '&cThis game is full!'
CannotJoin: '&cThis game already started!'
Player-Eliminated: '&7%player% &ewas eliminated! %alive% players left.'
Eliminated: '&cEliminated! &7You''re now on spectator mode.'
Already-Purchased: '&cYou already purchased a shovel for this game!'
Starting: '&eThe game starts in &b%time% &eseconds.'
Grace-Period: '&eThe Grace-Period ends in &b%time% &eseconds!'
Game-Started: '&e&lGame started! Goodluck!'
Successfully-Purchased: '&aYou successfully purchased a item for &c%cost%&a. If
you quit the game this purchase will be cancelled.'
Win: '&7%player% &ewon the game!'
CommandFailed: '&cYou cannot use commands while playing BowSpleef!'
Prefix: '&7[&cBowSpleef&7]'
Wins-Stats: 'Wins: %wins%'
Shots-Stats: 'Shots: %shots%'
Position: '#%position%'
Achievement:
- '&7&m---------------&7[&6&lACHIEVEMENT&7]&m---------------'
- ' '
- '%name% - %description%'
- ' '
- '&7&m----------------------------------'
Player-Stats:
- '&7&m---------------&7[&c&lBOWSPLEEF STATS&7]&m---------------'
- ' '
- '&8Games Played: &b%games_played%'
- '&8Wins: &b%wins%'
- '&8Losses: &b%losses%'
- '&8Arrows Shot: &b%arrowsShot%'
- '&8Balance: &b%balance%'
- ' '
- '&7&m----------------------------------'
Enough-Money: '&cYou don''t have enough money to buy this!'
Titles:
Titles:
Join: '&eYou are playing on map:'
Left: '&eYou left the game'
Player-Eliminated: '&b%player%'
Grace-Time: ''
Subtitles:
Join: '&b%mapname%'
Left: ''
Player-Eliminated: '&7has eliminated!'
Grace-Time: '&c&l%time%'
Title-Starting: '&eGame starts in:'
Subtitle-Starting: '&e&l%countdown%'
DoubleJump-Limit: '&cYou cannot buy more than %limit% double jumps!'
TripleShot-Limit: '&cYou cannot buy more than %limit% triple shots!'
Shop:
Name: '&7BowSpleef Shop'
Effects-Name: '&7BowSpleef Effects Shop'
Trails-Name: '&7BowSpleef Trails Shop'
Lore: '&c%amount% %moneyname% will be removed from your balance.'
MoneyName: Coins
DoubleJump:
Name: '&bDouble Jumps (Click to buy)'
Lore:
- '&eBuy more double jumps for this game only!'
TripleArrowShot:
Name: '&bTriple Shot (Click to buy)'
Lore:
- '&eBuy more triple shots for this game only!'
Effects:
Name: '&bEffects (Click to open)'
Lore:
- '&eBuy in-game particles!'
Trails:
Name: '&bTrails (Click to open)'
Lore:
- '&eBuy in-game arrow particles!'
Sign:
Line:
'1': '&7[&cBowSpleef&7]'
'2': '%state%'
'3': '%mapname%'
'4': '%players%/%maxplayers%'
State:
Waiting: '&aWAITING'
Starting: '&6STARTING'
InGame: '&cIN GAME'
Ending: '&4ENDING'
Resetting: '&8RESETTING'
Motd:
State:
Waiting: '&aWAITING'
Starting: '&6STARTING'
InGame: '&cIN GAME'
Ending: '&4ENDING'
Restoring: '&8RESTORING'
Scoreboard:
Lobby-Title: '&6&lBOW SPLEEF'
Lobby-Format:
- ' '
- 'Map: &a%mapname%'
- 'Players: &b%players%/%maxplayers%'
- 'Needed: &b%minplayers%'
- ' '
- 'State: %capitalize_state%'
- ' '
- yourserver.com
Game-Title: '&6&lBOW SPLEEF - %timer%'
Game-Format:
- ' '
- 'Map: &a%mapname%'
- ' '
- 'Alive players:'
- '&a%alive%'
- ' '
- 'Eliminated players:'
- '&a%eliminated%'
- ' '
- yourserver.com
Rewards:
Win-Commands:
- eco give %player% 100
Itens:
Leave-Item:
Name: '&c&lLeave &7(Right Click)'
Type: BED
Shop-Item:
Name: '&a&lBow Spleef Shop &7(Right Click)'
Type: EMERALD
Shop:
Double-Jump-Slot: '1'
Triple-Shot-Slot: '3'
Effects-Slot: '5'
Trail-Slot: '7'
Effects-Rows: '6'
Trails-Rows: '6'
Sounds:
Double-Jump: BAT_LOOP:0.2
Grace-Time: CLICK:1


Code (Text):
#Trails


'0':
name: '&cFlame Arrow'
permission: bs.trails.unlock.flames
buyPermission: bs.trails.flames
particles: flame
menuItem: BLAZE_POWDER
lore:
- '&eDisplays flames particles your on arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 20000
slot: 10
'1':
name: '&cFirework Arrow'
permission: bs.trails.unlock.firework
buyPermission: bs.trails.firework
particles: fireworksSpark
menuItem: FIREWORK
lore:
- '&eDisplays firework particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 18000
slot: 11
'2':
name: '&cLove Arrow'
permission: bs.trails.unlock.love
buyPermission: bs.trails.love
particles: heart
menuItem: RED_ROSE
lore:
- '&eDisplays heart particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 12000
slot: 12
'3':
name: '&cMusic Arrow'
permission: bs.trails.unlock.music
buyPermission: bs.trails.music
particles: note
menuItem: NOTE_BLOCK
lore:
- '&eDisplays note particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 15000
slot: 13
'4':
name: '&cExplosive Arrow'
permission: bs.trails.unlock.explosion
buyPermission: bs.trails.explosion
particles: explode
menuItem: TNT
lore:
- '&eDisplays explosion particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 50000
slot: 15
'5':
name: '&cWater Arrow'
permission: bs.trails.unlock.water
buyPermission: bs.trails.water
particles: dripWater
menuItem: WATER_BUCKET
lore:
- '&eDisplays drip water particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 15000
slot: 14
'6':
name: '&cBlizzard Arrow'
permission: bs.trails.unlock.blizzard
buyPermission: bs.trails.blizzard
particles: snowballpoof
menuItem: SNOW_BALL
lore:
- '&eDisplays snowball particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 12000
slot: 16
'7':
name: '&cLava Arrow'
permission: bs.trails.unlock.lava
buyPermission: bs.trails.lava
particles: dripLava
menuItem: LAVA_BUCKET
lore:
- '&eDisplays drip lava particles on your arrows!'
buyCommands:
- '&epex add %player% %permission%'
price: 10000
slot: 19



Code (Text):
#achievements


wins:
'1':
enabled: true
display-name: '&8&lIt''s my first win!'
description: '&7First bowspleef win.'
commands:
- bs coins add %player% 100
'5':
enabled: true
display-name: '&8&lMy arrows are already on fire!'
description: '&7Win 5 BowSpleef games.'
commands:
- bs coins add %player% 150
games:
'5':
enabled: true
display-name: '&b&lStarting my journey!'
description: '&7Play 5 BowSpleef games.'
commands:
- bs coins add %player% 100
'15':
enabled: true
display-name: '&b&lTrying my best!'
description: '&7Play 15 BowSpleef games.'
commands:
- bs coins add %player% 100
shots:
'50':
enabled: true
display-name: '&b&lArrows everywhere!'
description: '&7Shoot 50 arrows with your bow!'
commands:
- bs coins add %player% 100
'250':
enabled: true
display-name: '&b&lArrow party!'
description: '&7Shoot 250 arrows with your bow!'
commands:
- bs coins add %player% 100





Spoiler: Screenshots














Code (Text):

package com.floodeer.bowspleef;

import java.util.Map;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;


import com.floodeer.bowspleef.api.ArrowHitEvent;

public class APIExample implements Listener {

/**
* On BowSpleef events
*
* Event list:
* - TNTPrimedDespawnEvent
* - ArrowHitEvent
* - GameStartEvent
* - GameEndEvent
*/


@EventHandler
public void onHit(ArrowHitEvent e) {
Location l = e.getEntity().getLocation();
if(!e.getGame().getGameArena().getArenaCuboid().containsLoc(l)) {
e.getEntity().remove();
}
}



/**
* On bukkit events
*
* API Methods:
* - Getting player data
* getPlayerData(Player bukkitPlayer);
* getPlayerData(UUID uuid);
* getPlayerData(String name);
*
* - Getting a game
* getGame(String name);
* getGame(GamePlayer fromPlayer);
*
* - Leaderboard
* getTopWins(int limit);
* getTopShots(int limit);
*
* - Extra
* saveData(Player... players);
*
*/


@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
BowSpleef.getAPI().saveData(e.getPlayer());
}


@EventHandler
public void checkForTop(PlayerJoinEvent e) {
Map<Integer, String> topWins = BowSpleef.getAPI().getTopWins(3);
if(topWins.values().contains(e.getPlayer())) {
e.setJoinMessage("The one of the three bests BowSpleef's player joined the server!");
for(Integer i : topWins.keySet()) {
if(topWins.get(i).equalsIgnoreCase(e.getPlayer().getName())) {
Bukkit.broadcastMessage(e.getPlayer().getName() + " with the position " + i);
}
}
}
}


@EventHandler
public void onSneak(PlayerToggleSneakEvent e) {
if(BowSpleef.getAPI().getPlayerData(e.getPlayer()).isInGame()) {
e.setCancelled(true);
e.getPlayer().sendMessage("You can't sneak here!");
}
}
}
Author
Direct-Leaks.com
Downloads
7
Views
209
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from Direct-Leaks.com

Top