Slayer
Slayer adds new task-based gameplay to Minecraft with inspiration from RuneScape's "Slayer" skill.
Notice
Due to my involvement with another very large project (Demigods 3, a continuation and complete remake from the ground up of Demigods 2), I will not be updating Slayer for a while. I will hopefully get to it within a month or two and start adding more features. I greatly apologize for any inconvenience this may cause. Stay tuned for eventual updates though. Thank you.
Installation
To install Slayer, simply drop the Slayer.jar file into your plugins directory and reload! A configuration file will be generated automatically along with two other task and string configuration files and you can use those to fine-tune your Slayer installation.
Slayer v1.2 Changelog
Updating
As of Slayer v1.1, the plugin includes a built in automatic update system so you never have to bother downloading from BukkitDev and messing with FTP again. You can set the plugin to automatically update on reload when a new update is available, or you can set it to a command (/slayer update) reserved for users with the slayer.update
permission node. By default, Slayer will automatically notify those same users when a new update is available, but you can disable that too.
It's highly recommended that you keep auto update enabled as it allows for faster bug fixes and feature releases, but it's of course completely up to you if you want to leave it set to auto or not.
Features
- Generates a
tasks.yml
file which allows you to completely customize your server's tasks.- Currently supports timed tasks, item obtaining tasks, mob killing tasks, and more to come!
- Includes 17 creatively designed default tasks (all editable of course) which allow you to start playing immediately!
- Extremely easy-to-use item processing screen to update your tasks.
- Specify item rewards for task completions (with enchantments too!).
- Rewards are saved in the players very own rewards "backpack" for easy viewing and obtaining.
- Set limits on how many tasks players can have at any given time.
- Tasks are extremely easy to choose via the Task Inventory which holds automatically generated "Task Scrolls" (/tasks).
- Sends active progress messages to players upon completing elements of their assigned tasks and lets them know when they can fully complete a task.
- Customizable messages for Slayer-related events via the generated
strings.yml
file. - If enabled, will automatically prevent players from camping at spawners for kills.
Planned Features
In-depth StatisticsMostly finished!Leveling system to allow for greater expandability.Finished!New UI-based task displaying (moving as much out of the chat as possible).Finished!Rework the reward handling to be simpler and easy to use.Finished!- Leaderboard
- Give players economy-related rewards (will work with most major economy plugins)
- More task types and features!
- Allow random rewards for tasks.
- Possible NPC support. (?)
- Allow admins to set time periods that tasks that can be used (a task can be reused after X hours).
Any planned feature listed above is subject to change or removal, though it's unlikely.
Known Issues
- Already completed tasks are available again after the server is restarted.
These issues are at the top of my priorities to fix. If you run into any more, please leave me a comment below.
Commands
Basic Commands | Description |
---|---|
/slayer | Returns some information about the Slayer plugin. |
/sl | Returns a list of available commands. |
/sl tasks | If enabled, this will give the player a list of all available tasks. |
/process | Opens the player's item processing team to allow them to submit items to their active tasks. |
/accept | Used when accepting a task selected from the Task Inventory. |
/sl my info | Gives the player some Slayer info about themselves. |
/sl my tasks | Shows the player a list of their current tasks. |
/rewards | Returns a list of the player's current available rewards. |
/sl forfeit <#> | Allows the player to forfeit an assignment and if enabled, will punish them. |
/sl leaderboard | Displays the Slayer task leaderboard. |
/sl scoreboard | Displays the Slayer task leaderboard. |
Administrative Commands | |
/slayer update | Only available to OPs and players with the slayer.update permission node. Allows for in-game automatic updating of the entire plugin. |
/sladmin | Returns a list of available administrative commands. |
/sladmin save | Forces Slayer to save its current state just as it would periodically. |
/sladmin clear entities | Clears all entities from the tracking system (used to prevent camping). |
/sladmin remove task <player> <#> | Removes the task with the specified id from the player. |
/sladmin reset player <player> | Resets the entire save for the player given back to default. |
/sladmin set points <player> <amount> | Sets the points for the player to the amount specified. |
/sladmin set level <player> <level> | Sets the level for the player to the what's specified. |
Configuration
Setting | Default | Description |
---|---|---|
Miscellaneous | ||
join_message | true | Sends quick message about Slayer when joining. |
private_scoreboard | true | (Only applies to those running a compatible CraftBukkit build.) Allows players to have a Slayer scoreboard to show them personalized stats while they play. |
level_up_firework | true | Shoots a firework above the player upon leveling up. |
Updating | ||
auto | true | Automatically updates the plugin if there is a new stable version available. |
notify | true | Notifies applicable players that there is an update available. |
Tasks | ||
limit | 5 | The maximum number of tasks a player can have at a time. |
full_list | true | Allows players to see a full list of available tasks. |
join_reminders | true | Sends the player a task reminder when joining. |
completion_firework | true | Shoots off a pretty firework at the player's location when completing a task. |
point_multiplier | 1.0 | A global multiplier for all task values. (Multiples whatever is set as the value for the task in the tasks.yml file by the specified amount. |
reusable | false | Hides completed tasks if set to false. Otherwise it will allow the player to do the same task multiple times. |
Forfeiting | ||
enable | true | Allows players for forfeit tasks after being assigned. |
punish | true | Punishes the player by removing points from their total. |
Expirations | ||
punish | true | Punishes the player by removing points from their total. |
Blocking | ||
spawner_kills | true | Blocks players from camping at spawners for kills by making those kills not count. |
Data | ||
save_freq | 300 | The frequency (in seconds) at which to save Slayer data. |
assignment_refresh_freq | 120 | The frequency (in seconds) to clear up old assignments. |
entity_tracking_period | 1200 | The time (in seconds) to keep entities spawned via spawners in memory to prevent camping. If you notice significant lag (very unlikely), try reducing this number. |
Permissions
Node | Description |
---|---|
slayer.basic | Allows for basic use of the Slayer plugin. |
slayer.admin OP Default | Gives administrative permissions to the player. |
slayer.update OP Default | Allows the user to update the entire plugin via the update command. |
Support and Suggestions
To report bugs, make suggestions, or receive support for Slayer, please leave a comment below and I will get back to you as soon as possible.
@underscoreAlex
No need to give the player access to commands through your rewards. Hard coding the command into the config is what I meant. That way you could make tasks which involve other plugins for their rewards. I'm thinking RPG Items and MythicDrops. And, if you'd like. You could give command permissions through bperm commands in the command method that I described. It works out in the end.
I don't know how command sending works but be sure to add flags which denote console, OP, or some kind of temporary permission grant.
Improving your task GUI can be done in an AMAZING fashion with another plugin called ScrollingMenuSign. It can make custom menus which run macros or simple commands. And it uses different 'views' for your menu. Sign, Book, Map, and Inventory! I made a map menu which controls all of the basic player commands. No typing required on my server. :]
I remember now, you're on my skype. I had requested a dev of DemiGods a while ago, when I had no clue what I was doing. Since then I've put in probably 200 hours of minecraft/bukkit/java learning. I've grabbed your source and the way each, what I would expect to be a class, object is in it's own .java file. I might have set it up wrong.
I'd love to be able to help implement features but I will mostly just learn from the code for a few days.
I can imagine what idea was sparked with the mention of color wool and paper. Total immersion (no commands) is an amazing thing I love to see in a plugin.
So, cheers. Great work being done here!
Hey ecianice, sorry I haven't gotten back to you earlier! I've been busy with school and another plugin I'm a part of (Demigods). Thanks a ton for the compliments and I really appreciate the suggestions.
Money/exp was something I was planning already, but commands I hadn't considered. That would be an awesome touch. To be clear though, are you suggesting that the specific command given in the config is ran upon task completion? That wouldn't be hard at all. Giving the player access to that command however - if that's what you're implying - would be a little trickier and something I wouldn't quite want to get into as it would involve "trumping", for lack of a better word, other plugins. I want to maintain as much compatibility as possible.
As for custom mobs, that's another awesome suggestion! If I add this I will likely wait until after another release updating the reward system as it would involve adding quite a bit of new code to support random generation (possibly area specific too) and other such things. I like to split up major updates like that so I don't risk breaking as much... :)
And finally, I'll consider some tweaking of the Task GUI. Your suggestion has sparked an idea for a simply improvement to virtually eliminate command involvement.
Thanks again for the comments and suggestions and sorry it too a few days to get back to you!
Or how about support for custom named mobs? My example is specific but in general I will also be renaming all the mob spawns with other plugins.
Would like to request the addition of exp/money for rewards. Also consider ability for command rewards in this fashion-
It would then use "Teleport to the temple!" as the string in the taskscroll 'reward' line.
Just tested this for the first time. I've seen you a while ago but I don't know why I never tried the plugin out. And wow! The tasks are simple and the GUI is a lovely touch. I would request that after choosing a task, the accept prompt confirmed the name of the task you chose. Just a nicer touch I think. Also, if you could consider making the accept/deny as part of the GUI using color wool or paper again.
@iTeush
The update has been uploaded, just waiting for approval now. Sorry I didn't get it added last night, I got a little busy with some other things!
And yeah that is definitely something I could add to a later release... I'll add it to the upcoming features. :)
Thanks it would be awesome :D Is it possible to make some quest reusable one time per day ? the idea of BinQ is great too if you have time for this :)
@iTeush
It isn't as of right now, but I can make a quick update to allow you to set it in the
strings.yml
file. I'll do that a little later tonight, expect a release early tomorrow (assuming the BukkitDev staff approve quickly). :)Is it possible to make a locale file to translate the scoreboard ? Thanks :)
@BinQ
That's a good idea... I'll consider it for the next release! I have a lot of work on my plate right now in real life and with other plugins that I'm a part of. That could cause some delays for the next Slayer release, though I don't have a release date planned at the moment.
Sup. Your plugin is very great and i'm going to use it in my server, but i think to make it even better you should add "EpicBoss" and "Citizens" support for this plugin. Bosses + NPC + Slayer , damn thats too good :D
@Arizrain
Okay, good deal! There was an issue with 1.1 that I didn't realize until @LordRoothless pointed it out to me below. I've fixed it with the latest version, but it won't be released for a couple more days at the most.
Ahh seems 99.9% its my errors on configs of something else. Lol all is good, working good now. :p
@Arizrain
MySQL can't be the problem as I don't have that supported in the plugin. Do you mind posting a log of the errors you're getting? That would help out a lot with debugging. Thanks ahead of time and sorry for the issues!
Hey Alex, i've reloaded it and restarted and still getting some [severe] messages. Does it
need to be configured with mysql?
@RevoMods
Thanks a ton! The next version has a lot of change (for the better) coming, so look out for that. My plan is to move away from commands for Slayer as much as possibly while still maintaining a very versatile and intuitive design. I think what I have coming does a pretty good job too. ;)
Very interesting and useful plugin.
Thanks!
@Arizrain
Hmm, has it occurred multiple times or just once? Sounds like the server may be a tad overloaded with scheduled tasks (things the server will do over and over again until stopped) from Slayer.
Try reloading to refresh the Bukkit scheduler and if you keep getting the error let me know so I can look more into it. It's likely just a fluke though.
Hey Alex, any idea about this as a server message? I know nothing about this stuff :p
11.04 20:29:13 [Server] SEVERE org.apache.commons.lang.UnhandledException Plugin Slayer v1.1 generated an exception while executing task 18
11.04 20:29:13 [Server] SEVERE Exception in thread "pool-1-thread-6"
@LordRoothless
Before releasing 1.1 I went through and reorganized the
config.yml
file into the new node-based setup that it has now and went through the plugin to change all of the old values to the new ones. I'm really not sure how I managed to miss that one when testing though... I went through the source and sure enough it's there incorrectly. :/I'll upload a fix as soon as I get home from work tonight. Thanks for pointing it out!