CurveCraft is like Curve Fever (or CurveFever2). Players can play CurveCraft with joining a lobby, starting a game and playing with friends. The players spawning on horses that automatically move. Every player spawns planes while riding the horse. The last player which has not crashed the wall/border or a plane, has won the round. After reaching the needed point amount, the game is over and a new one can start in the arena.
At the arena can play 2 - 16 players. Each player has an other plane color, but be careful with the ground that every color is visible. Voting for an earlier start is possible.
Please note:
- Place the teleport point one higher than it should. That could fix teleport problems.
Features
- Game mechanics of CurveFever
- Lobby system
- Players can vote to start the game erlier. (Game starts if everyone has voted)
- Plugin API (event handling -> See github.com)
- Signs to handle joining and leaving of the lobby, voting for start.
- Command whitelist (per arena or global for all arenas)
- A lot of fun
- More features comming soon
Dependencies
- iConomy 5 or iConomy6 or Vault or Register (later, not yet | not used)
- PermissionsEX or bPermissions or GroupManager or BukkitPermissions
How to create an arena
First you need the permission CurveCraft.create, to execute the command "/cc create". Now execute the command and set the name of the arena with "/cc setname NAME". Now you have to define your arena. Choose two corners, so the plugin can calculate the area. If a player joins a lobby, the player spawns in a lobby room. Please define this location with "/cc setlobby". If a player crashs, he can spectate the the other players. Please define a teleport location with "/cc setend". If the game is over, all players will be teleportet to an other location. Please define it with "/cc setexit". Finish the arena with "/cc finish".
Please note:
- Every arena has to be named different.
- More settings can be found in the .yml file (plugins/CurveCraft/arena-saves/WORLD/ )
player: minplayer: 2 #if two players are in the lobby, they can start the game. maxplayer: 16 #at 16 players the game starts automatically playersCanVoteForStart: true #if false, minplayer is not used. arena: name: test #name of the arena speed: 0.5 #speed of the horses -> higher, more difficult gap_length: 3 #size of the gaps, between planes gap_distance: 20 #how many space is between gaps timebeforegame: 10 #time in seconds before the game starts timebeforeround: 5 #time in seconds before a new round starts timeinvincible: 60 #time in server ticks -> player can not crash at the beginning of a round. corner1: -1198/8/636 corner2: -1113/8/551 lobbyloc: -1159/10/643 endloc: -1159/10/643 exitloc: -1159/14/643 statussign: false #if a join sign is created the coordinates of it will occure here. lightning: true #weather a lightning bolt should flash on player crash commandwhitelist: true #weather a command whitelist should be used disabled: false #status of arena
How to create CurveCraft signs
To create a status / join sign:
[..] Can be anything
- [..]CurveCraft[..]
- [..]Join[..]
- ARENANAME
To create a lobbyview sign:
[..] Can be anything
- [..]CurveCraft[..]
- [..]LobbyView[..]
- ARENANAME
To create a "vote for start" sign:
[..] Can be anything
- [..]CurveCraft[..]
- [..]Start[..]
- ARENANAME
To create a leave sign:
[..] Can be anything
- [..]CurveCraft[..]
- [..]Leave[..]
- ARENANAME
Permission nodes
Note: You can edit them in the language.yml
| Action | Permission node |
|---|---|
| Playe CC | CurveCraft.play |
| Use help command | CurveCraft.help |
| Create new arenas | CurveCraft.create |
| needed for privacy command | CurveCraft.user |
| plugin info | CurveCraft.version |
| Change arena status | CurveCraft.changestatus |
Configuration
language: en #language -> language_en.yml must exist autodownload: true #the plugin downloads the new plugin file to the plugin folder installondownload: false #not implemented yet updateCheck: true #plugin checks for a new version senderrorreport: true #plugin sends error reports about fatal errors to the developer senddebugfile: false #only the stacktrace is send. If this is true, the error log will be send too. debug: false #more console output debugfile: false users_can_choose_privacy: false #according to the german law, I am only allowed to store personal data (like chat messages) in a file if I ask the person. This can be toggled here. If not activated, all data will be anonymized. UsePrefix: true #toggle prefix use Prefix: CurveCraft #the prefix PrefixColor: b #color of the [CurveCraft] prefix TextColor: 6 #color of chat messages updateIntervall: 30 #update check intervall use_MySQL: false #not used dbPath: localhost:3306/Paypassage #not used dbUser: root #not used dbPassword: root #not used everyArenaOwnJoinPermission: false #admin can choose if the playe needs permission CurveCraft.join or CurveCraft.join.ARENANAME globalcommandwhitelist: false #if true the global command whitelist is active for all arenas where whitelist is enabled.
How to use the API
First, add this plugin as library to your project.
Now you create your own EventHandler:
import com.ibhh.CurveCraft.arena.APIHandler; import com.ibhh.CurveCraft.arena.CCArena; import com.ibhh.CurveCraft.arena.CCEventHandler; import com.ibhh.CurveCraft.arena.CrashReason; import com.ibhh.CurveCraft.arena.InvalidEventHandler; import java.util.ArrayList; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.entity.Player; /** * * @author ibhh */ public class ExampleEventHandler extends CCEventHandler { public ExampleEventHandler() { try { APIHandler.addHandler(this); } catch (InvalidEventHandler ex) { Logger.getLogger(ExampleEventHandler.class.getName()).log(Level.SEVERE, null, ex); } } @Override public void PlayerCrashedEvent(CCArena a, Player p, CrashReason r) { } @Override public void PlayerRoundWinEvent(CCArena a, Player p) { } @Override public void PlayerGameWinEvent(CCArena a, Player p, HashMap<Player, Integer> score, ArrayList<Player> lobby) { } @Override public void GameStartEvent(CCArena a) { } @Override public void RoundStartEvent(CCArena a) { } @Override public void PlayerJoinEvent(CCArena a, Player p) { } @Override public void PlayerLeaveEvent(CCArena a, Player p) { } }
See Github.com for the documentation.
Sending of statistical data
This plugin uses mcstats.org to gather statistical data. The data is collected anonymously and ALL data is visible to everyone. Follow the link at the statistics banner and you'll see the collected data.
If you don't want any data to be sent, disable statistic sending in the Metrics folder/configuration.
- Metrics:
This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
- How many players played the game
- How many games finished
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.
Debug files and error reports
This plugin creates debug files to make the finding of errors easier for me. If a error occurs the plugin may report it to me. All error reports are visible on my tracker. Klick here.
You can modify /disable this behavior in the configuration file. Set senddebugfile to false if you don't want to send debugfiles to me.
Set senderrorreport to false if you don't want to send any debug/errors to me. We are using our own bugtracker. It collects data that servers sent to us.
- Data:
- Version of the bukkit server
- Version of the plugin
- Stacktrace
- Debuglog
