- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
Take down your opponents throwing eggs with a shovel, be the last man standing and win the game!
- Multi-Arena or Bungee support.
- Basic API with game events and data.
- Shop with double jump and custom shovels.
- Achievements.
- Custom scoreboard.
- Spectator mode.
- Vault or custom economy support.
- MySQL, SQLite or flat file support.
- All game messages are configurable.
- Signs, game messages, scoreboard and more.
- Automatically rollback system (After game/server shutdown).
- UUID support.
- A exclusive map! (More exclusive maps soon).
- 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.
- Leaderboard FOR MYSQL or SQLITE only!
- Unbreakable-Blocks option.
- Advanced world restore or map resetting system.
- Reward system.
Test server.
There is no test server atm.
Bugs
Do not use the rating area to report bugs or request features. Please go to discussion.
Dependencies
You need to install WorldEdit to set arena bounds, you also can install vault and enable the vault support.
The advanced restore system
You can enable it on config, if enabled ALL OF THE WORLD will reset, the map storage system will have some changes.
Arena Restore system
- Sometimes the System just place more blocks than the allowed value in blocks per second due the Iterator Delay and to prevent ConcurrentModificationException, 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.
- Yes, the restore system replace ALL blocks to prevent fails.
- If your restore system is low, use some Math to check if everything is ok
- I have 14k of blocks in an arena, with 5 Iterator delay and 50 blocks per iterator.
- 4 Iterators = 20 ticks (5 Iterator dealy * 4 Iterators = 20 ticks = 1 second)
- If 4 iterators = 1 second, I'm getting 200 blocks placed per second (4 iterators * 50 blocks)
- 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)
- I have 3k of blocks in an arena, with 5 Iterator delay and 50 blocks per iterator.
- 4 Iterators = 20 ticks (5 Iterator dealy * 4 Iterators = 20 ticks = 1 second)
- If 4 iterators = 1 second, I'm getting 200 blocks placed per second (4 iterators * 50 blocks)
- 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)
Player commands
- /splegg join <arena> - splegg.player
- /splegg leave - no permission.
- /splegg stats - splegg.player
- /splegg setgspawn - splegg.admin
- /splegg start <arena> - splegg.moderator/splegg.admin
- /splegg stop <arena> - splegg.moderator/splegg.admin
- /splegg delete <arena> - splegg.admin
- /splegg coins set/add/remve <player> <amount> - splegg.command.coins
- /splegg leaderboard [update/values] <type> - Types: Wins, Shots. - splegg.admin
- /splegg config set [path] [value] - splegg.admin
- /splegg reload - splegg.admin
If you are using the advanced restore system, splegg will create a empty world and teleport you to paste the map, after paste it you can start the setup).
Arena setup
Required permission: splegg.admin
Setup video coming soon.
First of all set global spawn using /splegg setgspawn
- Create your arena - /splegg create <name>
- If you are using the advanced-restore system, Splegg will create a empty world and teleport you the map.
- If you already have a world with the name of the arena on the server root, Splegg will load the world and teleport you to setup the arena. (Note: Don't load the world with any world plugin or splegg will not able to delete them)
- Set arena lobby - /splegg setlobby <name>
- Set the location where players will be teleported after joining.
- Set arena bounds - /splegg setbounds <name>
- Select the highest and lowest point of the arena with WorldEdit to set arena bounds.
- Add spawn - /splegg setspawn <name>
- Set the location where players will be teleported after game starts.
- Set min players - /splegg setMinPlayers <name> <amount>
- Set max players - /splegg setMaxPlayers <name> <amount>
- Add powerup spawn location(s) - /splegg powerups <name>
- Set/add a game time to spawn a random powerup - /splegg addPowerupTimer <name> <gameTime>
- Example: /splegg addpoweruptimer SPLEGG1 580 - By default the game has 600 seconds, so the powerup will spawn after 20 seconds.
- Finish the arena with - /splegg finish <name>
- Loads/reloads the arena, you need to use this command after editing or creating a map.
Common problems
Code (Text):
Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Sound.....
How to fix:
If you are using 1.8, you have to change all sound values in settings.yml to 1.8.
Code (Text):
Sounds:
Double-Jump: BAT_LOOP:0.2 #For 1.8
Extra placeholders
- %displayname% - For chat format setting, will return the player display name.
- [ADMIN] Floodeer.
- %playername% - For chat format setting, will return the player name.
- Floodeer
- %message% - For chat format setting, will return the player message.
- %winner% - For winner messages, will return the winner's playername.
- %coins% - For winner broadcast, will return the amount of coins that the player get from the game.
Extra permissions
- splegg.joinfull - Allows you to join in full games.
- splegg.advanced - Allows you to read the restore log.
HolographicDisplays:
- You can install HolographicDisplays to have holograms above the powerup.
- [splegg]
- join
- ArenaName
- [splegg]
- leaderboard
- <type> - types: Shots & Wins
- <position>
- [Splegg]
- AutoJoin
Shop system:
- 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.
Examples:
I am a VIP member ->
The permission to buy the diamond shovel is splegg.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 splegg.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.
Code (Text):
package com.floodeer.splegg;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.Material;
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.splegg.api.PlayerDoubleJumpEvent;
import com.floodeer.splegg.api.PlayerEggShootEvent;
import com.floodeer.splegg.api.PowerupSpawnEvent;
import com.floodeer.splegg.game.Game;
import com.floodeer.splegg.game.GamePlayer;
import com.floodeer.splegg.powerup.Powerup;
public class APIExample implements Listener {
/**
* On splegg events
*
* Event list:
* - PlayerDoubleJumpEvent
* - PlayerEggShootEvent
* - PlayerJumpPadEvent
* - PlayerPowerupActiveEvent
* - PowerupSpawnEvent
* - GameStartEvent
* - GameEndEvent
*/
@EventHandler
public void onDoubleJump(PlayerDoubleJumpEvent e) {
Game game = e.getGame();
GamePlayer gp = e.getGamePlayer();
if(gp.getP().isSprinting()) {
e.setCancelled(true);
return;
}
game.sendGameMessage("&ePlayer &b" + gp.getName() + " &eused a double jump and now has &b"
+ e.getDoubleJumps() + " &eDouble Jumps left.");
}
@EventHandler
public void onShoot(PlayerEggShootEvent e) {
if(e.getPowerup() != Powerup.BIG_SHOOT) {
e.setCancelled(true);
e.getPlayer().sendMessage("You can't shoot normal eggs here! Get a Explosive Powerup to shoot!");
}
}
@SuppressWarnings("deprecation")
@EventHandler
public void onPowerup(PowerupSpawnEvent e) {
if(e.getType() == Powerup.BIG_SHOOT) {
e.getLocation().getWorld().playEffect(e.getLocation(), Effect.STEP_SOUND, Material.ENDER_CHEST.getId());
}
}
/**
* 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);
* forwardData(Player player, String server, String dataKey);
*
*/
@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
Splegg.getAPI().saveData(e.getPlayer());
}
@EventHandler
public void checkForTop(PlayerJoinEvent e) {
Map<Integer, String> topWins = Splegg.getAPI().getTopWins(3);
if(topWins.values().contains(e.getPlayer().getName())) {
e.setJoinMessage("The one of the three bests Splegg 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(Splegg.getAPI().getPlayerData(e.getPlayer()).isInGame()) {
e.setCancelled(true);
e.getPlayer().sendMessage("You can't sneak here!");
}
}
}
By buying Splegg you agree to
- You are not allowed to distribute this plugin.
- Use only for your network/server.
- No refounds.