ActivityPromotion
ActivityPromotion - Promote players based on their activitytime.
IMPORTANT: As I am not playing minecraft anymore, i stopped developing this plugin.
This will now be unactive. If you want to continue or start over fell free to take a look at the Code.
Version: v0.5.5
Notes on the last changes
v0.5.4 - v0.5.5
I fixed the spelling mistake, please change it in the config: "necessaryGroup" instead of "neccesaryGroup".
I implemented two new variables in the config: "promotionCheck" and "resetCheck".
They are used to determine in which periods the tasks should run. 10 means every 10 seconds.
Change that according to your needs.
I also implemented MYSQL, but i haven't fully tested it yet. Please report any bugs in the forum.
Attention
This plugin needs Vault as permission and economic interface!
You have to download Vault er ein order to get this plugin to work.
http://dev.bukkit.org/server-mods/vault/
I am the owner of a german minecraftserver and on our server is a need for automatic promotion.
There is nothing out there, that provides the same functionality, so i created this plugin.
This plugins allows you to put player in multiple groups, based on the time they have spend playing on the Server.
This is my first plugin for bukkit, so please be patient with updates and bad code ;)
Features:
- Multiworld support
- Supports Flatfile and MYSQL
- Vault integrated: supports Permissions 3, bPermissions, PEX, GroupManager, PermissionsBukkit, zPermission
- limit the promotion to groups
- add Users that should be ignored
- define your own period of time the user should be promoted
- multiple timeperiods possible
- add Permissions to the user
- define own ActivityPeriods like 7 days, 1 month, whatever
- See also the last logout, the total playing time and inactive players
Description:
The plugin will count the onlinetime of each player.
when a player reaches a specific timelevel, he will be promoted to the group.
After a resetdate the player will keep the groups for one more timeperiode
if he is inactive in this period, he will be degraded in the next period.
The date will be stored in the list.yml
That is all.
See the video for more details.
Commands:
- /ap
- shows all commands
- /ap reload
- reload the plugin and save actual status
- /ap info <player>
- shows information about the player
- ap info
- shows information about yourself
Permissionnodes:
- activitypromotion.reload
- able to reload ActivityPromotion
- activitypromotion.info
- Allows you to see Information about yourself.
- activitypromotion.info.other
- Allows you to see Informations about other players.
- activitypromotion.loginmessage:
- With this node you will see inactive Player when you log in
All nodes can be used by OP by default.
config.yml:
db: port: 3306 enable: false adress: 'localhost' user: root database: minecraft pass: '' promotionCheck: 10 resetCheck: 10 periods: oneMonth: resetActivity: true periodTime: 1 nextReset: '2011-10-25 00:00:00' activeGroups: - Trial - Member lifeTime: resetActivity: false periodTime: 1 activeGroups: - VIP nextReset: '2012-03-22 10:36:00' groups: Trial: startTime: 1 endTime: 40 setForFirstUse: false permissions: - example.permission necessaryGroup: promotionGroup: - Trial ignoreUser: - Notch world: - world Member: startTime: 30 endTime: false setForFirstUse: false necessaryGroup: - Trial permissions: - another.example.permission promotionGroup: - Member ignoreUser: - Notch world: - world VIP: startTime: 100 endTime: false setForFirstUse: false necessaryGroup: - Member - ^Trial permissions: - vip.permission promotionGroup: - VIP ignoreUser: - Notch world: - world
Explanation for the periods
Except for periodTime (which values are in minutes) all values have to be in seconds!
- oneMonth:
- the name for the group doesn't really matter, put in what you like
- resetActivity
- true
- If you want to reset the timecount every now and then, set this to true.
- If you set this to false it wil count as a lifetime period.
- periodTime
- 1
- Put here the time in MINUTES after a period should be resetted.
- activeGroups:
- - Trial
- - Member
- Define the active groups here. They have to be listed in the groups section.
- nextReset
- '2012-03-22 20:16:00'
- You have to put a date in the past here for the first time you use the plugin.
- After that the plugin will update this entry on its own.
Explanation for the groups
- startTime
- 100
- The time in seconds after a player will be promoted
- endTime
- false
- The time in seconds after a player will get this group removed, if set to false it means this group has no endtime
- setForFirstUse
- false
- If you want to give this group every player on the server on the first start, set this to true. it will reset after one period is over.
- neccesaryGroup:
- The groups the player has to be in to get promoted. Please be aware that he has to be in ALL Groups to get promoted.
- '^' Means, that he must not be in this group to get promoted.
- permissions:
- If you want to grant permission nodes instead of groups put your nodes here.
- promotionGroup:
- This are the groups the player will be promoted to
- ignoreUser:
- Add Users that shoud be ignored
- world:
- Put the worlds here. Please be aware, that the nessecaryGroup will apply on all worlds.
- So the player has to be in Member and not in Trial in ALL worlds to get promoted.
Attention:
The "^" command will only work for nessecaryGroup.
list.yml
players: Chumper_tm: lastLogout: 1332443720 totalTime: 130 passivePeriod: oneMonth: 6 lifeTime: 0 timePlayed: oneMonth: 4 lifeTime: 62
SQL
Since version 0.5.5 AP supports MYSQL again.
Please note that this plugin will NOT create the table, instead you have to create it.
The code looks like this:
CREATE TABLE `ap_player` ( `period` VARCHAR(255) NOT NULL , `name` VARCHAR(255) NOT NULL , `lastLogout` INT NULL , `totalTime` INT NULL , `passivePeriod` INT NULL , `timePlayed` INT NULL , PRIMARY KEY (`name`, `period`) ) ENGINE = InnoDB;
Known Bugs
Lag?
Download & Source
All Files on GitHub
Source on GitHub
Changelog:
- v0.5.5
- implemented MYSQL
- fixed spelling mistake
- v0.5.4
- implemented Vault to support more permissionplugins and to easier integrate economics in further steps
- fixed exception when a player was not found after asking information about it
- v0.5.3
- fixed handling with console
- v0.5.2
- Compiled against CB1.2.4-R1.0
- v0.5.1
- Added GroupManager support
- Added Ingame commands
- v0.5DEV
- Complete rewrite, thanks to the new code base provided by bukkit.
- v0.4.1
- updated version number
- fixed a small bug
- implemented some more features that doesn't work actually
- v0.4
- Compiled against CB 1317
- Includes newest version of bPermission and PermissionsEx
- v0.3.3
- fixed an error that created nullpointerexceptions when using the flatfile
- v0.3.2
- removed Permission reload after each promotion and put it in the /ap reload command
- added secure close for mysql
- v0.3.1
- removed debug output when a player joins
- v0.3
- Added MySQL support
- improved performance
- playerupdate now every two (2) seconds instead of every tick
- v0.2
- More Permissions to support
- Added ignoreUser, endTime, default and permissions
- Bugfixing
- v0.1
- First release
Warning
Even so i tested out this plugin there sure will be Bugs and Errors.
Please post them here so i can improve the Plugin and add more Features.
If you want to help me, improve the plugin or request features please do that also here.
Todo
- timed Groups, e.g VIPs after you typed in "/ap promote <player> <group> <time>
- MYSQL support
- Regulary updates ;)
Roadmap:
- written periods like "1 month" or "6 weeks"
- timed/VIP groups
- IConomy support
- Add MySQL support
This plugin is exactly what I need. However, I have encountered an issue.
People are upgraded after the set amount of time. However, I set it to remove them from a group. When they are upgraded it displays they are upgraded once, however it displays they are downgraded, as long as they're logged on and moving.
"You have been removed from: N00b" it displays this over and over again. Even after a server reload.
I should probably mention that it does successfully remove them from the group. It just keeps trying after it has been removed.
Here is my config.
ah ok :) that would be why :) all permissions i have a global to all worlds.
@dxwarlock
Yes, that is correct, you have to list all the worlds you want the player to be promoted in.
Also the pex entry is correct, it just says, that the player dxwarlock has the group Player in world "world".
i haven't added an option to promote players globally but i will try to implement it in the next version.
to test it I set the startTime: 10
made myself a Trial and login..I run around for over a minute, and never get promoted no error, just nothing.
IF
I add the worlds like the config above:
it promotes me..but makes a really weird entry into my pex user like:
@dxwarlock
Looks good, so what exactly is not working?
Seems I'm missing how this works.. What I'm trying to do is..new players are guest on the server, they get promoted to 'Trial" with a command.
then I'm trying to set this up so after 1 Hour they are are Promoted to 'Player'..with no demotions. trying to use it as a simple "play for one hour as Trial to get Player status"
but its not working, here is what I have as my config:
@NateN34
He Nate,
that is not possible, when you reset the activity time after one hour how should anybody level up after 4 hours then?
You can deactivate the reset with resetActivity: false
then there wont be any reset at all and you can do the things you want:
Am I doing this right?
I want the period to be 1 hour and I want the Builder group to rank up to AdvancedBuilder after 4 hours.
@Chumpertm
I did not follow that sorry, I do not have this installed yet I just to only promote not ever demote anyone. esp not demote first time it runs.
@fread2281
I will think about that.
To be honest: This plugin was made for only one purpose, but i added more functions over time so the written code and the thoughts behind the plugin are not the best.
I will do a code rewrite with the next major release and clear the things up.
Hopefully it will be more simple then :)
@Chumpertm
I also want to do this, but your instructions make no sense, can you explain yourself more?
EDIT: also, could we have functionality like this:
another one:
@ledhead900
If you want the players not to demote the first time you run this plugin,
you have to set the default option to true. so everybody will get the group after a reset.
After the reset the plugin will set default to false.
Thats the theroy but i just found a bug that will break this behaviour.
If you can wait for one more day i will update the plugin to fix the bug and make it work correctly.
If you dont want the activity to be resetted, set resetActivity to false
@Chumpertm Before I use this, how would I go about setting this up so that there was no demote time?, Would I simply set demote time config options to 0 or comment it out ?. It is ok if this is not possible I will just make it something like a 6 months to a year.
Regards
@silencshadow
Looks like you enabled MySQL in the config file.
Set db.enabled to false to use the flatfile
Hey Guy, flatfile not work? This plugin not work on me .... i only get following error:
2011-10-20 18:42:13 [INFO] [ActivityPromotion 0.3] PermissionsBukkit detected 2011-10-20 18:42:13 [WARNING] [ActivityPromotion 0.3] PermissionsBukkit is not fully supporting external calls... 2011-10-20 18:42:13 [WARNING] [ActivityPromotion 0.3] will work with ingamecommands... 2011-10-20 18:42:13 [INFO] [ActivityPromotion 0.3] A resetDate has been passed. Reseting all stats 2011-10-20 18:42:13 [INFO] [ActivityPromotion 0.3] new resetDate set to 2011-10-20 18:44:00 2011-10-20 18:42:13 [INFO] [ActivityPromotion 0.3] 2 groups found. parsing... 2011-10-20 18:42:13 [INFO] [ActivityPromotion 0.3] MySQL selected. Will try do connect 2011-10-20 18:42:13 [WARNING] [ActivityPromotion 0.3] Table 'ni12736_1_DB.ap_player' doesn't exist 2011-10-20 18:42:13 [SEVERE] Error occurred while enabling ActivityPromotion v0.3 (Is it up to date?): null java.lang.NullPointerException at de.Chumper.ActivityPromotion.MySQLHandler.load(MySQLHandler.java:88) at de.Chumper.ActivityPromotion.ActivityPromotion.onEnable(ActivityPromotion.java:65) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:957) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:280) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154) at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348) at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
... how to fix that?
@Vejnemejnen
Currently I am working on MySQL support, but i will also note that down. Priority at the moment is
But thanks for the suggestion. I will add rented groups later, probably in version 0.4
It would be great if you implement timed groups which could be rented for a period of time for a payment of ingame money via iConomy for example. If the time runs out the rented group is removed , in case it was only group player was in it reverts to predefined "default" group.
@TTlabambaTT
Yes it is my first plugin, so thanks ;) I already figured out a few bugs so an update should come shortly
If this is your first plugin you are going to go a long way good job!
@MonsterTKE
Good suggestion. I will note that for the next version.
I will also add an option how often the user should be checked against a promotiongroup.