SpoutJail
SpoutJail - The jail plugin with Spout and Spoutcraft Features!
Version: v0.5
With SpoutJail you can easily jail players and they will be sent to a preset and configurable Jail location. While in jail, playes can't use commands from a configurable list, and if they die, they respawn in the jail. The plugin also has some awesome SpoutCraft features for those who use it, for example, when a player is sent to jail, his texture pack is changed to a special one! (this texture pack can be changed)
Multiworld
SpoutJail supports multiworld. When you use /setjail, the jail is set for THAT world. When you use /prison <player>, it teleports the player to the jail location of the world it is at, or to the default 0,0 if no location has been set. When you use /prison <player> <world>, it teleports the player to the jail location of the specified world
Features:
- Jail players easily
- If the player is using spoutcraft, the texture pack will be changed when jailed
- Configurable jail location, texture pack url, and restricted command list
- Multiworld support, you can have different jails for each world
Commands:
- /prison {PLAYER} Jails the specified player
- /unprison {PLAYER} Unjails the specified player
- /setjail (only usable by players) sets the jail location to the current location
TO-DO
Remove Spout dependencies and add Spout support instead.
Add multiworld
- Add multiprison
Download link: Download from the right of the page. Note: The last file is updated for RB 1337 but BukkitDev still hasn't got that option
Images:
http:dev.bukkit.org/server-mods/spoutjail/images/\\
- Permissions
This plugin supports superperms. If not found, the commands default to op. This are the command nodes:
permissions.*: Gives the player all permissions spoutjail.prison: Gives the ability to jail a player spoutjail.unprison: Gives the ability to unjail a player spoutjail.setjail: Gives the ability to set the jail location
Changelog:
Version 0.5
- Added multiworld support
Version o.4
- Removed spout dependencie
Version 0.3
- Added permissions support!
Version 0.2
- Now only OPs can use the commands
- Now you can jail disconnected players, and when they connect, they will be automatically teleported
Version 0.1
- First release!
@cybermas
hasn't been updated since Oct 12, 2011 and the author hasn't been on this year, so doubt it will be fixed soon. sucks
startup error log. fix this now plz
15.05 16:17:06 [Server] INFO ... 27 more 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 15.05 16:17:06 [Server] INFO at java.security.AccessController.doPrivileged(Native Method) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 15.05 16:17:06 [Server] INFO Caused by: java.lang.ClassNotFoundException: org.bukkit.event.player.PlayerListener 15.05 16:17:06 [Server] INFO ... 8 more 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:144) 15.05 16:17:06 [Server] INFO at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 15.05 16:17:06 [Server] INFO at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 15.05 16:17:06 [Server] INFO at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 15.05 16:17:06 [Server] INFO at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 15.05 16:17:06 [Server] INFO at me.aitorman.SpoutJail.SpoutJail.<init>(SpoutJail.java:17) 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 15.05 16:17:06 [Server] INFO at java.security.AccessController.doPrivileged(Native Method) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 15.05 16:17:06 [Server] INFO at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 15.05 16:17:06 [Server] INFO at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 15.05 16:17:06 [Server] INFO at java.lang.ClassLoader.defineClass1(Native Method) 15.05 16:17:06 [Server] INFO Caused by: java.lang.NoClassDefFoundError: org/bukkit/event/player/PlayerListener 15.05 16:17:06 [Server] INFO at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) 15.05 16:17:06 [Server] INFO at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:422) 15.05 16:17:06 [Server] INFO at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156) 15.05 16:17:06 [Server] INFO at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53) 15.05 16:17:06 [Server] INFO at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183) 15.05 16:17:06 [Server] INFO at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305) 15.05 16:17:06 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:148) 15.05 16:17:06 [Server] INFO org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: org/bukkit/event/player/PlayerListener 15.05 16:17:06 [Server] SEVERE Could not load 'plugins/SpoutJail.jar' in folder 'plugins'
Are you still going to update this sometime? I have an error and I think it's because the plugin is outdated:
http://pastebin.com/2m5p8NMS
I'm running this with Spout on a 1.2.5-R1.3 Beta build server.
just got this plugin, i set my prison just fine...went to test out when ever i unprison someone it spawns them in the ground where they suffocate... any ideas? well for now i just found them on dynmap and opened up the area so its working... but sadly i had to put a whole in a town wall....any chance we could get a /setjailrelease command or something to set release spot?
could you add the feature that if somehow they glitch themselves out angry wolves will kill them?
You should look at the original Jail plugin and try and add them features into it because that plugin with spout added would be awesome
@Nodachi216
I'll try to do it, but i'm very busy now
If I might suggest, it'd be nice to be able to tell the player why they've been jailed. Set it up as:
/prison <player> <T:time> <R:reason>
By using the T: and R: prefixes you could still leave them as optional arguments allowing the user to skip one or the other or both, and maybe even change the order.
@Colraw
Ok, ill implement it
Thought of another feature;
Timed prison.
Player will be imprisoned for X time and when timer reached - unprisoned..
'/prison <player> <option>'
if <option> is a number then that will be #minutes player will be imprisoned (0 is obviously wrong and should yield errormessage), and if its a string it should be the world/prisonname where he should go, if option is "<int> <string>" meaning timed prison in whatever prison string says
@XaitormanX
Make an array :p
init; String[] default = new String[100]; String[] info = new String[100];
make new prison; default[1]="World1"; info[1]="all info about the prison indexed at 1 named prison1 in world 1";
additional prison; default[2]="prison2"; info[2]="all info about the prison indexed at 2 named prison2 in world 2";
additional prison (world2); default[3]="prison3"; info[3]="all info about the prison indexed at 3 named prison3 in world2 (yes 2)";
Now prison named prison2 would be default (lowest index) in world2 (an additional array for which index in which world if you dont want it in the string for efficiency.. but it's a rather small array so shouldnt be much of a problem) but if index 1 is removed you just resort it.. bump 2nd down to 1st spot etc..
default[1]=default[2]; default[2]=default[3]; default[3]=null;
A different approach is to use classes where you can organize it even easier but all I've programmed lately haven't really supported classes so well :)
@Colraw
Much better now :), that is the reason i didn't understand. So you mean to keep track of the first created jail of each world, and when no world is specified, teleport the player to that jail of its world, and if no jail is in that world, teleport the player to the first jail created of all worlds. I'll try to add the multiprison, but wouldn't it be better (and much easier to code) to mantain only one default jail (the first created) for all the worlds in case the world isn't specified instead of mantaining default jails for each world (the first created jails of each world)?
@XaitormanX
I'm terribly sorry about that :P formatting went away :(
Should've been like that. So there are 2 prisons in world1, 1 in world2, 2 in world3 and 0 in world4. So yes you understood it pretty much :)
@Colraw
For the moment i've added a simple multiworld support:
When you make setjail the location is stored for that world, and when a player is sent to prison the plugin looks for a jail location of that world, and if not found the player is sent to 0,0. If you use the third world parameter, the player is sent to the jail of that world, and if no jail is set the player is teleported to 0,0 in that world again. I haven't understood very well the (p's are prisons and # is their creation-index) World1: World2: World3: World4: p1 p5 p3 p2 p4, but I think you mean that when you set a jail, you specify a jail name, and when a player is sen't to jail you have to specify the jail name, and if not specified the jail defaults to the first created, and if this is removed to the second created, and so on. I am right? The next feature i'll add is the permissions group changing when a player enters the jail
@XaitormanX
I meant world yes. When a prisoned person dies they respawn at 0,0,x not 1137,-170,60 or whatever I had as setjail (as specified in config) which drives me to wonder if it's the multiverse requiring more then the normal arguments for teleportation..
Using bukkit+all bukkit-mods+multiverse (all latest) and somehow it will port them to 0,0.
About that idea I think it would add more flexibility with more then one prison per world and thus using names (and having them default by date of creation per world and if none in that world go to global default (first created, still active prison)).
(p's are prisons and # is their creation-index) World1: World2: World3: World4: p1 p5 p3 p2 p4
player is in World3 get sent to prison using command '/prison player' which will mean he gets sent to p2. With command '/prison player p1' he gets sent to p1. If player instead sits in World4 and gets sent to prison with command '/prison player' he will be ported to p1. If p1 gets removed p2 will now be the global default (index will prob fit better not seen by the user but can be looked up via config or command '/jaillist'). And if there are no active prisons the jail will default to 0,0 or even world-spawn. Would also be nice if when a person gets prisoned you change their group in permissions (I Think this is an easy thing to code).
Also... At the moment you have '/setjail' and '/prison', go with one of the two :)
And thanks for quick replies!
@Colraw
Ok, i'll implement first multiworld and then maybe multiprison. But i dont understand this:
At the moment when I prison people they get ported to prison as they should. But if they die they will respawn at 0,0 of the server where they currently are at. Issuing the command to prison them again will port them inside prison again obviously but that requires manual work.
With "They will respawn at 0,0 of the server they currently are at" Do you mean at 0,0 of the world they currently are at?
At the moment the plugin only stores one jail location, it doesn`t store world information. So if you set the jail location in a world at 30,500 for example, and jail a player that is in that world, it will be correctly teleported, and when it dies, it will respawn in the jail again. But if you jail a player that is in another world, it will be teleported to 30,500 of that world, and will respawn in that location of that world when he dies.
What i'm thinking to do is store the world also when you set a jail, and add a optional third parameter to the /prison that specifies the world you want to send the player. If this parameter is ignored the player is teleported to the set jail of that world or to the default 0,0 location. What do you think about this?
@XaitormanX
If I were to implement it I would set it so that you could optionally specify a single jail or multiple jails, if the case with single jail thats where everyone would go obviously (command would be '/prison <player>').
If multijail was set (in config) you could have optional parameter for jail.. '/prison <player> <prison>' with having prisons with names. the command should also work using '/prison <player>' and thus defaulting to the prison closest to the admin/prisoner or just have a default prison set (might be easier codewise.. not entierly sure what kind of api you have availible), default prison can be set default (yo dawg) to the first created prison etc etc.
But if the multiprison is too much work go for single prison but support for MultiWorld. At the moment when I prison people they get ported to prison as they should. But if they die they will respawn at 0,0 of the server where they currently are at. Issuing the command to prison them again will port them inside prison again obviously but that requires manual work.
Also if they fill the area where the prison is with any kind of material and you port people in they will be prevented from "moving" there and thus be ported outside the prison. A fix to this is to either use protected areas from 3rd party or implementation from you around the prison coordinates or simply have a boundary where if they cross it they will be ported back.
@Colraw Ok, i'll try to add it. How do you think would be a good implementation of multiworld? Adding a third parameter to the prison command so that it would be /prison <player> <world> ? And save the world you are in when using /setjail to mantain a list of different jails for each world?
@matan7890
Yes, i can do that, but i wasn't shure people would want that
Hi there,
Searched for a mod that does this and seems this one will work just as fine as any other without too much shit going on around the basic function :)
One thing that it lacks though is multiworld support... that would be really good if you could implent that
Thanks :)