Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions about automatic plot cleaning #680

Closed
jaboy opened this issue Oct 19, 2015 · 13 comments
Closed

Questions about automatic plot cleaning #680

jaboy opened this issue Oct 19, 2015 · 13 comments

Comments

@jaboy
Copy link

jaboy commented Oct 19, 2015

Hello, First of all, i would like to thank you for this great plugin, it really makes it much easier to administrate building permissions on my server.

i would like to enable the automatic plot clearing on my server, but i do have some questions about it.

1: "Threshold", I'm not quite sure what this does, what i understood was, if i enter "100" into this, then all plots will be checked until there is less than 100 plots, then all auto cleaning stops, is this correct ?

2: "Days", what days is it counting ?, from when the plots was claimed, or the owner was last online, or something else ?

3: I would like to set the auto cleaning so in order for a plot to stay it needs to have
More than 1500 blocks changed and haved used at least 10 different blocks
From what i can understand i need to set it to
calibration:
changes_sd: 0
variety_sd: 0
faces_sd: 0
air: 0
faces: 0
changes: 1500
data_sd: 0
variety: 10
air_sd: 0
data: 0
Is this correct ?

Thank you for using your time on me :)

@boy0001
Copy link
Contributor

boy0001 commented Oct 21, 2015

@jaboy
Copy link
Author

jaboy commented Oct 21, 2015

Hello boy0001

Before making this issue/question, I did find the wiki page for plot analysis, and i think that makes it more confusing, here are some examples:

1: Threshold:
"If the threshold is set to -1, all plots will be cleared",
"Otherwise, any expired plot less than this threshold will be cleared"
It does not describe what "threshold" is, just that it will clear all plots if i to set it to -1.
That is something i do not want :(, i only want it to clear when the requirements in question "3" are met.

2: Days:
"Any plot older than this will be checked and possibly cleared"
How does a plot get old ?
i would assume it means days from when the plot was claimed, but that would seem weird, as there is possibility that the plot would get cleaned up while you were online and working on it, because it didn't fit the requirements when it was checked.

3: calibration: the variables are not described, and its really hard to guess what the variables does, because of some of the variables ending with "_sd".
Then i tried to look at the "formula" on the page
"The changes metrics is 100 * average per column."
and i was even more confused, because what kind of average it is, is not described eg
It could be
Average of the different blocks,
the average of block to air ratio
but im still not sure how that would help :P

Then i looked at the example on the page
"If you want for instance to clear any plot that had less than 7 blocks changed per column, you would do the following"
I have no way of determining how many block changes there would be in one column (not even as an average), as the plot is 200x200, and only about 70% of it is usually used (and only 50% if you count the "unused" columns between/in the buildings.
so therefor i need to check the whole plot, and not just columns.

@Leopere
Copy link

Leopere commented Oct 21, 2015

Warning this feature IS experimental
This is definitely not for the feint of heart but the concept is to attempt to not reset plots with a calibrated minimum quality.

/plot rate (is the method it uses to calibrate these settings.) Encourage your staff to cycle through plots rating them the more that gets rated the more it learns. For the most part this stuff is probably going to be over most peoples heads and that's okay but it is presented to you in the config so that you can learn whats happened as a result.

This is the advanced automatic plot clearing mechanism
Its designed to learn how to automatically clear plots that have been abandoned and are so unfinished that you don't want them lingering around on your server taking up disk space. Its supposed to learn the complexity of the plot using analytics assisted by human input like plot rating. You do not require this to clear plots and I don't know many people who have had time to test the feature.

You can however provide us feedback like this so that we can try to improve documentation and also the stability of the feature.

@jaboy
Copy link
Author

jaboy commented Oct 21, 2015

Hello Chamunks

Sadly, i feel there is a problem with relying on the rating system.
I run a creative server with 200x200 plots, if i were to tell my users they should rate plots, they would rate it based on how good the builds is, and not on how much the plot is filled.

This will result in a big build that uses many different blocks, and fills 90% of the plot, could get a 2 rating, effectively raising the "calibration" as to when it should clean.

and a concept house that barely fills 10% of a plot, will get a 10 rating, effectively lowering the "calibration" as to when it should clean, but then this build could then be auto cleaned due to the low rated big builds,have raised the calibration so high,
and when the good little plot is removed, the plugin would slowly set the calibration higher and higher as small plots are removed, effectively starting a removing rampage.

This means we can not have any small test builds, or test plots, as they would just get cleaned up.
It would also mean they players who just makes houses as application builds, would also have them unwantedly cleaned.

i feel the way to prevent this, is by having the calibration set manually instead of by the plugin, because when i see that test builds or application builds are being cleaned up, i can just lower the calibration, and thereby protecting the builds.
If it is set by the plugin, i would have to go around and high rate all small build in order to get the "calibration" within reasonable limits.

And whats worse is that "hacker groups" if they have started not liking you, they could come in and give good rating to bad builds, and bad ratings to good builds,(or there own plots for that matter) effectively setting the calibration without the owners consent, and have the totally wrong plots cleaned up by it.
(A wise man ones told me, if one man can think of it, others can too)

or i might just be paranoid, and the plugin is not even remotely close to be able to do that.

@Leopere
Copy link

Leopere commented Oct 21, 2015

Sadly, i feel there is a problem with relying on the rating system. I run a creative server with 200x200 plots, if i were to tell my users they should rate plots, they would rate it based on how good the builds is, and not on how much the plot is filled.
Your method is exactly what is supposed to happen.

Also it wasn't built for servers that don't require plot completeness. The server it was created for requires that if you claim it you must use it. Basically providing plots of varying sizes to allow for different size builds to be placed into an appropriate section of map. You don't really have to use it if you believe this mentality is incorrect there are ways to set plot expiry based on simple blocks changed and minimum offline time.

You're welcomed to set the calibration manually the /plot rating is intended to produce metrics that you can use as a baseline to calibrate if you wish to do so manually.

And whats worse is that "hacker groups" The concept is that there is strength in the many meaning the more metrics you give the harder it will be to sway the analysis.

Also if you don't trust your ability to make it extremely difficult for nefarious groups from having powers to rate your plots then you shouldn't allow the ranks that they can be to be able to rate plots. My suggestion was to allow your mods/review staff to be able to submit their ratings. Offer some guidelines based on what you think is a good enough build to keep. Let the plugin do the rest. Basically this is designed to be smarter than you can be. You also should not use this in a deployed server first.

What I suggest that you should do is:

  • Leave plot clearing disabled.
  • Generate metrics using /plot rate and a standard of rating.
  • After a few weeks of gathering data make a duplicate of your creative plots server.
  • The more duplicate ratings per plot the better (meaning the more people re-rating the same plots is a good thing but try to cover many of your plots)
  • Take this config and your copy of your server and enable plot clearing on the duplicate server. Let it run its course and then check the damage.
  • Then please report back your findings.

@jaboy
Copy link
Author

jaboy commented Oct 22, 2015

Okey, i can try it, and report back anything i happen to find.

there are ways to set plot expiry based on simple blocks changed and minimum offline time.

I assume you mean the "old" way of automatic plot cleaning, this was removed from my configuration when i updated plotsquared.
(i dont know what version it was removed in).
i would like to use this to clean up all empty plots, or plots where a few blocks were placed before telling my trusted users to go around and rate many plots.
This is to save everyone time from having to rate potential empty plots.

I also did a little testing with the rate system, and it would be nice to have a "/plot rate skip" command, if you don't feel you are capable of judging that plot.
This command would remove the plot from your "/plot rate next" queue

@Leopere
Copy link

Leopere commented Oct 22, 2015

I can probably request to @boy0001 that we add a manual plot clearing function added where it takes you the plot that is being suggested to be deleted. Then it would offer you the option to delete or keep the plot with a y/n response. PlotSquared could learn from this as well.

@jaboy
Copy link
Author

jaboy commented Nov 8, 2015

hello

When my users are trying to use the /plot rate next command
they report that after 10-15 times of using it, it will stop working.
i checked the console and its showing this error

[15:39:53] [Server thread/INFO]: ItsAirWaffle issued server command: /plot rate next
[15:39:53] [Server thread/WARN]: java.lang.IllegalArgumentException: Comparison method violates its general contract!
[15:39:53] [Server thread/WARN]:    at java.util.TimSort.mergeHi(TimSort.java:899)
[15:39:53] [Server thread/WARN]:    at java.util.TimSort.mergeAt(TimSort.java:516)
[15:39:53] [Server thread/WARN]:    at java.util.TimSort.mergeForceCollapse(TimSort.java:457)
[15:39:53] [Server thread/WARN]:    at java.util.TimSort.sort(TimSort.java:254)
[15:39:53] [Server thread/WARN]:    at java.util.Arrays.sort(Arrays.java:1512)
[15:39:53] [Server thread/WARN]:    at java.util.ArrayList.sort(ArrayList.java:1454)
[15:39:53] [Server thread/WARN]:    at java.util.Collections.sort(Collections.java:175)
[15:39:53] [Server thread/WARN]:    at com.intellectualcrafters.plot.commands.Rate.onCommand(Rate.java:65)
[15:39:53] [Server thread/WARN]:    at com.intellectualcrafters.plot.commands.Rate.onCommand(Rate.java:1)
[15:39:53] [Server thread/WARN]:    at com.intellectualcrafters.plot.commands.MainCommand.handle(MainCommand.java:400)
[15:39:53] [Server thread/WARN]:    at com.intellectualcrafters.plot.commands.MainCommand.onCommand(MainCommand.java:277)
[15:39:53] [Server thread/WARN]:    at com.plotsquared.bukkit.util.BukkitCommand.onCommand(BukkitCommand.java:37)
[15:39:53] [Server thread/WARN]:    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[15:39:53] [Server thread/WARN]:    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[15:39:53] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
[15:39:53] [Server thread/WARN]:    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[15:39:53] [Server thread/WARN]:    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
[15:39:53] [Server thread/WARN]:    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[15:39:53] [Server thread/WARN]:    at java.lang.Thread.run(Thread.java:745)

@jaboy
Copy link
Author

jaboy commented Nov 8, 2015

apprently if they move to another plot, and rate it
Then the /plot rate next will work again, for some time, then it will break
(and repeat)

@jaboy
Copy link
Author

jaboy commented Nov 24, 2015

Okey so i have tried it now, and there are a few problems

(here is the debug paste for reference http://hastebin.com/tonamuwego )

as you see in the logfile, i used " /plot debugexec calibrate-analysis 1", and it had to scan 510 plots, this took 2 hours, 52 minutes and 13 seconds, and it lagged badly while doing so.
Since i did this, on a test server, i don't mind that much, buuuut you should still look into the speed / lag, because some servers has millions of plots, and they would never be done calibrating :P

As a test i tried to set days to 1
Even though i only calibrated it to 1%, it still deleted ALL plots, including the spawn plot (the plot with the highest rating), i guess this is because if the huge threshold the calibration set, but i have no way of knowing or further testing, as i have no idea what the values does.

If you want a reference point for the ratings i told my users to use it was:
0: "Delete it ... DELETE IT NOW (Should also be used on empty plots)"
1-2: "meeh, this build is really bad, please remove it"
3-4: "Build is bad, but i guess it can stay"
5: "I donno... lol"
6-7: "Build is okey"
8-9: "This build is really good"
10: "Omg, this should be the new app(lication) builds" ,"(10 should also be used on the spawn plot)"

So how do i prevent it from deleting all my plots ? :(

@MattBDev
Copy link
Contributor

Should I assume these questions have all been answered and this ticket can be closed?

@MattBDev MattBDev reopened this Mar 14, 2016
@jaboy
Copy link
Author

jaboy commented Mar 15, 2016

Well, none of the questions was ever answered.
The answer i got was basically "we cant give support on this because it is an experimental feature".
And it's totally okey if this is the case, but then there should really not be a text on the plot analysis wiki saying "Please create a ticket regarding any questions you would like covered in this page" if you didnt plan on answering them :P

@jaboy jaboy closed this as completed Mar 15, 2016
@C1audi0
Copy link

C1audi0 commented Jul 25, 2016

Same thing is happening to me, just with the /plot list done command

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants