OpenCTF
Summary
The goal of this plugin is to bring CTF to Minecraft without limiting the players imagination. I do not like reapeating, prebuilt maps and I do not like limiting the players abilities to create their own strategy from everything Minecraft offers. In most plugins an administrator builds a map, sets two bases and you have to fight in there. Open CTF allows you to choose a new game area everytime you play a new game! In addition you can freely choose the position of your base within this area to hide it from your enemies and place smart traps on the path to it.
Procedure
The first player who joins a game is supposed to choose a game area. They can fly around and have to place a block to mark the center of the area. They are not able to modify the world. As soon as the area is set everyone on the server can choose a team and class.
Both teams are supposed to build their bases now by placing the flag - a colored block of wool - wherever they find it suitable. A base is built around the flag and a countdown gets started to mark the end of the building phase. The bases are indestructible.
As soon as the building phase is over both team have to capture the enemy's flag by right clicking on it and carry it back to their own base. If you carry the flag you are not able place or break blocks anymore but you are able to defend yourself by using your weapons.
Currently, the game ends if a restart vote is succesful or a /reset is issued. Vicotry conditions are work in progress.
Classes
All players are marked with a colored leather helmet. Currently available classes are:
- Fighter
- Iron Sword
- Iron Armor
- Wooden Shovel
- Archer
- Bow with infinite Arrows
- Chain Armor
- Iron Axe
- Wooden Sword
- Pioneer
- Stone Sword
- Colored Leather Armor
- Iron Pickaxe
- Iron Shovel
- Spy
- Stone Sword
- Leather Armor
- Compass that points to enemy base
- Ability to get invisible while sneaking
This is how the team/class selection chest looks like:
Commands
<arg> - necessary argument
[arg] - optional argument
- /all <message> - Send a message to all teams
- /ctf join - Switch from current world to CTF world and participate
- /ctf leave - Restore last location and inventory and leave CTF
- Permission: openctf.ctf (set by default)
- /score - Show a scoreboard
- /team - Change team
- /vote restart - Start a vote for starting a new game
- /vote kick <name> [reason] - Start a vote for kicking a player
- /yes|/no - Vote yes or no
Permissions necessary:
- /config <setting> <value> - Change settings
- openctf.cfg
- /performance - Show computation time; for debugging purposes
- openctf.performance
- /reset - Start a new game
- openctf.reset
Install
- Download OpenCTF.jar
- Download PatPeter's SQLibrary
- Put them both into your plugins folder
- Start the server
Special Features
MySQL/SQLite Support
Thanks to PatPeter's SQLibrary v4.2, statistics of the game are saved locally into a SQLite database or optionally into a MySQL database. I am planning to create a simple web interface to show how one could present stats of the games, rankings and much more.
Customizable Structures
Open CTF uses schematic files in mcedit format to make various objects customizable. So if you do not like the bases included, just change them! Create your own bases and export them with WorldEdit as schematic files or do the same in MCEdit. Here is a description of how to customize structures.
Configuration
This plugin has many configurable values such as respawn time, dimension of the game area and other options. We are working on making everything configurable.
Translation
Currently there are only bad phrased english messages in the game. We are working on improving that. Despite that, you can freely change every message that is send through the plugin and translate it in your language for example. All messages use a simple color code you can use.
Beta Stage
At this point, I would like to point out that this plugin is quite complex and has not been tested by a larger amount of players yet. If you would like to test it, please feel free to join us at our server dev.wrenchbox.de:25575 or download the beta version and follow the installation instructions.
Metrics
In order to determine some statistics about popularity of versions and the plugin itself I am using the Metrics plugin. If you do not want your server to be tracked, please turn Metrics off on your server.
From Hidendra: "As a server owner, you are free to question the service, welcome it, or deny it. All plugins that support Metrics use the same opt-out and as such you may opt out of further data at any time. You may ask myself any question and I will do my best to answer it - I am as open as possible with Plugin Metrics / MCStats and hope this will help you understand what exactly it is.
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true. If this folder does not exist, you do not have any metrics-enabled plugins installed :)"
Contact Us
If you have any questions or concerns feel free to contact us on IRC or leave a comment below.
- Host: irc.esper.net
- Channel: #wrenchbox
- Webchat
"I do not like reapeating, prebuilt maps and I do not like limiting the players abilities to create their own strategy from everything Minecraft offers."
TRUE!
Really excellent Plugin, big ups for your work!!!
I like all the stuff, just one thing: Can you add the option to disable build mode till the team set it's base?
Because right now Players can just dig into the ground with a pickaxe, place their base there and put grass over the entrance, so it's nearly impossible to find it. Or does this option already exist, but it's just me don't finding it?
Because i have to admit that i'm not understanding every point in the config. A short config explaination in the topic post would be great too =)
For example there seam to be other border modes than "border-type: 7" right? It would be cool if you could list them. Maybe as comment in the config file too. And what is "change-team-range: 4", " force-ctf: false", " return-flag-exp: 17"? Well, just some suggestions.
...and keep the victory mode wip ;) Peace
@Enderman09871234
What was the problem? Anything I could have mentioned in the description?
NvM Got it worked.
I got this error when I launch it and when I do /ctf join ingame it say /ctf join/leave [15:47:46] [Server thread/INFO]: [Open CTF] Enabling Open CTF v0.4b [15:47:46] [Server thread/ERROR]: Error occurred while enabling Open CTF v0.4b (Is it up to date?) java.lang.ExceptionInInitializerError at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.7.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [?:1.7.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1.7.0_51] at java.lang.reflect.Method.invoke(Unknown Source) [?:1.7.0_51] at java.lang.Class.getEnumConstantsShared(Unknown Source) [?:1.7.0_51] at java.lang.System$2.getEnumConstantsShared(Unknown Source) [?:1.7.0_51] at java.util.EnumMap.getKeyUniverse(Unknown Source) [?:1.7.0_51] at java.util.EnumMap.<init>(Unknown Source) [?:1.7.0_51] at lib.PatPeter.SQLibrary.Factory.DatabaseConfig.<init>(DatabaseConfig.java:16) [?:?] at de.wrenchbox.CaptureTheFlag.Util.SQL.createDatabase(SQL.java:22) [?:?] at de.wrenchbox.CaptureTheFlag.CaptureTheFlag.onEnable(CaptureTheFlag.java:73) [?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:298) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:280) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:630) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.Bukkit.reload(Bukkit.java:279) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(CraftServer.java:529) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:286) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:251) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:541) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:453) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-38-g4b4e2cc-b2953jnks] Caused by: java.lang.NullPointerException at lib.PatPeter.SQLibrary.Factory.Parameter.updateCount(Parameter.java:44) [?:?] at lib.PatPeter.SQLibrary.Factory.Parameter.<init>(Parameter.java:30) [?:?] at lib.PatPeter.SQLibrary.Factory.Parameter.<clinit>(Parameter.java:11) [?:?] ... 27 more
@kjkrad101
As stated in the Procedure section: "The first player who joins a game is supposed to choose a game area. They can fly around and have to place a block to mark the center of the area."
@vampirictorch
I have no idea what Sourceforts is ;)
HELP I DON'T KNOW HOW TO MAKE THE ARENA
someone played Sourceforts back in the day when it was popular I loved that game haha this is almost identical to it, good idea mate!
@Flypikachu
Definitly a good idea, as soon as I have more time again I will make a list of planned features.
I have a question. In the future will the people who download the plugin be able to make their own kits? It would be an amazing feature to add in "Open CTF" to add a variety. Like, theres gonna be a basic command for ops to make kits, with options that the plugin creator adds in or something of that sort.
@Coookiii
Sorry, fixed the problem on our server. should work for now. Unfortunately, I am quite busy right now and cannot fully test wit 1.6.4.
Please do NOT post errors in comments. Create a ticket for this. I assigned a ticket to your problem with enabling Open CTF. Please answer my question inside the ticket.
http://dev.bukkit.org/bukkit-plugins/open-ctf/tickets/5-allright-and-i-have-a-problem-btw-when-startin/
Oh and whenever I type /ctf join or /ctf leave it gives me the message; Usage: /ctf <join;leave>
Allright, and I have a problem btw when starting up my server, I downloaded the latest version 1.6.4, I am running bukkit version 1.6.4 aswell.
This is the error log:
9:30:57 [severe] Error occurred while enabling Open CTF v0.3.2b (Is it up to date?) 9:30:57 [javastacktrace] java.lang.ExceptionInInitializerError 9:30:58 [javastacktrace] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 9:30:58 [javastacktrace] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 9:30:58 [javastacktrace] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 9:30:58 [javastacktrace] at java.lang.reflect.Method.invoke(Unknown Source) 9:30:58 [javastacktrace] at java.lang.Class.getEnumConstantsShared(Unknown Source) 9:30:58 [javastacktrace] at java.lang.System$2.getEnumConstantsShared(Unknown Source) 9:30:58 [javastacktrace] at java.util.EnumMap.getKeyUniverse(Unknown Source) 9:30:58 [javastacktrace] at java.util.EnumMap.<init>(Unknown Source) 9:30:58 [javastacktrace] at lib.PatPeter.SQLibrary.Factory.DatabaseConfig.<init>(DatabaseConfig.java:16) 9:30:58 [javastacktrace] at de.wrenchbox.CaptureTheFlag.Util.SQL.createDatabase(SQL.java:22) 9:30:58 [javastacktrace] at de.wrenchbox.CaptureTheFlag.CaptureTheFlag.onEnable(CaptureTheFlag.java:98) 9:30:58 [javastacktrace] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) 9:30:58 [javastacktrace] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) 9:30:58 [javastacktrace] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) 9:30:58 [javastacktrace] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:282) 9:30:58 [javastacktrace] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:264) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.MinecraftServer.l(MinecraftServer.java:315) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.MinecraftServer.f(MinecraftServer.java:292) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.MinecraftServer.a(MinecraftServer.java:252) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.DedicatedServer.init(DedicatedServer.java:152) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:393) 9:30:58 [javastacktrace] at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583) 9:30:58 [javastacktrace] Caused by: java.lang.NullPointerException 9:30:58 [javastacktrace] at lib.PatPeter.SQLibrary.Factory.Parameter.updateCount(Parameter.java:44) 9:30:58 [javastacktrace] at lib.PatPeter.SQLibrary.Factory.Parameter.<init>(Parameter.java:30) 9:30:58 [javastacktrace] at lib.PatPeter.SQLibrary.Factory.Parameter.<clinit>(Parameter.java:11)
@Coookiii
What would you like to know which is not in the text?
If you'd like to test it on our server please join 95.141.42.98:25575. The domain from the text is currently not working but will be fixed very soon.
This is freaking awesome, But could you explain a little bit more about it?
Uploaded v0.3.2 for Craftbukkit 1.6.4
@xCALVx
Hey,
a scoreboard is definitly planned. I am just a bit busy at the moment.
Custom maps should be incredibly easy: Build your custom map, set the name of the world in the config and reload/restart the server.
Then join (/ctf join). You should be teleported to your custom world setup in the config. Setup the game area on your custom map and be happy :)
Hi is there a way to have custom maps?, also maybe a scoreboard in future updates. I love this by the way :)
Sadly, I have to use NMS code which means, no. v0.3 b will not work with 1.6.2. But I already uploaded 0.3.1b yesterday. I hope it will be approved soon. If you do not care, you can download the unapproved version here:
<Staff edit: link to unapproved file.>
does it work on 1.6.2
For some reasons. You cannot hide the name tags and so it would be absolutely useless to change the color if you identified a player as a spy once. Another one is, that this would encourage friendly fire. "Oups, I thought you were a spy."
I think the invisibility potion is perfect. You don't use it like the regular potion. You can start and stop invisibility by toggling sneaking. Being invisible prevents you from doing anything like placing or breaking blocks, attacking and similar. The tiny grey ambient effects make it possible for a careful observer to spot the spy though.