MobHunting

MobHunting

114k Downloads

Grinding Exploit in the End

Waterman1001 opened this issue ยท 57 comments

commented

Hello!
I have a very big problem..
Currently players on my server have found a way to make a lot of money by the use of farms.
What is happening is the following:

Players go to an Enderman farm they made in the End.
After killing about 10 endermans, they get the 'Grinding Detected' message.
They don't want this to happen of course, so what they do is the following:
They teleport back to the Overworld, They kill a different mob and then they go back again to their Enderman farm and this makes the 'Grinding Detected' being removed, such that they can start over again with farming.
Currently I had to set the money of Endermans to 0, to make sure no one would abuse this exploit. (But of course I don't like Endermans having a money drop of 0)
I am sure this has something to do with the 'Area grinding detection' instead of with a 'Farm grinding detection'.
Since Area grinding detection get's removed as soon as you kill a mob outside your grinding area.
(I also don't want blacklist_player_grinding_spots_as_server_worldwide_spots set to true)

This is the farm they made:

EndermanFarm

I am using Mobhunting version 6.8.5 and Spigot 1.14.4

Of course I understand that this 'bug' or 'issue' is really specific and maybe very hard to resolve. I am just hoping that you could think a bit with me and help me with this, since I would really like a fix for it such that I can keep on using this amazing plugin in the way I wanted to.
Really, I love this plugin and also you as a developer are working so hard on it so keep up the good work. It just works like a charm.

Thank you so much in advance for your support and also for your reply!
Kind regards,
Waterman1001

commented

Any advised settings for now other then the default that worked out for you? @Waterman1001

commented

Have you enabled Ender man farm detection in Config.yml?

commented

Yes, I have :)
Thanks for the quick response!

commented

You can temporarily disable rewards for the enderman until I find a solution.

The farm detection is new and still not well detected. I properly have some questions. Please stand by :-)

commented

Ohh you already did this :-) Perfect.

commented

Haha yes, cool.
I will help you as much as you would like to help and improve the farm detection.
Really, I will help you :)
Thanks for listening to me and helping and supporting me so well haha

commented

i have thought about keeping track killed endermens per time and set a limit, to solve the problem that the player kills an enderman far away/in another world.

Still this will allow the players to kill the enderman "slowly".

commented

Hmm yes, but I think this would maybe already help a bit.
I think it is kind of a good idea.
I don't know about the 'far away' part, since I don't exactly see how this is the case in my problem.
For me it currently is the case that the farm is not detected as a 'farm' but as an 'area' I think.
And area's reset after you kill a mob outside the area (which is normal behaviour)
But this does not work if it is a farm.
I think I maybe can blacklist the farm manually, but then someone could remake the farm a few blocks further and I would have to blacklist that one as well again.
So yeah, somehow this kind of farm should be found (at least this is what I am thinking.)

commented

it would help me alot if you could give me a copy of the farm some how?

commented

I found a video on youtube and learned how to spawn the endermite into the minecart. I go to bed now and continue tomorrow.

commented

This is easier :-) /summon minecraft:endermite

Thank you

commented

Okay!
Thank you. :)

commented

I will give you a copy of the farm somehow. Sure!
First I want to show you a video of my exact problem. Because it is a big file I uploaded it to WeTransfer and you can download it from the following link:
https://we.tl/t-pdsFb0lwQ4

In this video you can see my problem:
This is explanation once more in clear steps to reproduce my problem:

  1. Players can get rewards from enderman.
  2. Players keep killing enderman until 'Grinding Detected' message.
  3. Players teleport back to Overworld
  4. Player kills one mob in Overworld
  5. Player teleports back to Enderman farm.
  6. Player can again kill Enderman without grinding detected.

Ps. Don't mind my Server lag. It was lagging a little bit but if it is not lagging this still works.

commented

This is a copy of the Enderman Farm.
It is a worldedit Schematic.
I hope you can use it!
EndermanFarm Schematic.zip

commented

Thank you! Im not able to start testing tonight.

commented

I have loaded the schematic, but the minecart with the entermite was not copied, so the Endermen did not go into the trap. Im not sure how to place the minecart and the entermite

commented

It is okay, Start testing whenever you can!
You don't have to hurry, I am already very very happy that you are trying to solve this problem for me
Really, very good developer!!

If you want to manually spawn an endermite in the minecart you can do
/summon minecraft:endermite
It will then spawn at your location, so do it when at the position of the minecart :)

commented

I have not had time to work on my plugins for some days (because of work and my little family)

Also this is a hard problem to solve so it will take time.

commented

Any updates on this issue? :)
How is the testing going?

commented

Ah okay, I completely understand.
I am sorry for asking, I was just curious whether you did not forget about it.
Really, Sorry for bothering you.
Wish you good luck on work and also I wish your little family all the best!

commented

NP. I never forget issues on Github and i follow up on Github at least two time a week. Also I get a mail each you or somebody create/coment on issues. This is the reason why I always ask users in the forum to create tickets at github, instead of just write in the forum, where things "disappear" :-)

Although I have not been coding I have been thinking about a solution, and I have some ideas to try.

commented

Aah okay!
Great to hear :)

commented

If I use the summon command, the endermen does NOT attack the endermite. SO I still have to use enderpearl

commented

So I got the endermite and the minecart spawned and the endermen ran to the "trap" what I dont understand is how the player kills the endermen? or do they die by them selves? (this does not hapen for me)

commented

They kill them just by standing on the solar panels and attacking them with their swords.
Remember I have included a video at this link, that shows the exact way of how the exploit works:
https://we.tl/t-pdsFb0lwQ4

commented

ahhh ... yes, now I remember, and the jump between worlds to reset the counter. I got it :-)

commented

I need a "nice" name for this??? SpeedGrindingDetection ??? Any suggestions? :-)

I close to let you test something. The rule is like this at the moment

I look at a give time_frame (60 sec at the moment), and then I count the number of killed mobs (same type) no matter which world. And then I calculate the avg time. How many mobs should we allow to be killed within the time frame?

If avg is less that the number, SpeedGrinding is detected.

commented

I think SpeedGrindingDetection is a good name haha.
Very great to hear that you are close to a testing phase :)
Pfoooo good question about the amount of mobs.
What would you suggest?

commented

well the timeframe and no of mobs can be configured in config.yml so I will ask you to help and see what works on your server, to stop the players from grinding. :-)

commented

I think that if the timeframe is about 60 seconds, It is rather difficult to see when a player kills 'more mobs that usual' in this timeframe.
I think the smaller you make the timeframe, the easier it will become to give a specific value.
(If I would be able to kill 100 mobs within 10 seconds, I'm sure I'll be grinding for example :p)

commented

I'll test it on my server anyway.
Thank you so much for your help :)

commented

Okay, Someone on my server used the Enderman Farm and he was able to kill about 40 mobs within a timeframe of 5 seconds.

commented

Good to know, but actually I think we need to look at a longer time frame. If it only is 30 sec. the player can kill alot of mobs, wait 30 sec and then do it again. over and over. If i raise it to 120 sec and set max number of mobs to be 20 mobs, it should fit a normal game play ?

commented

Hmm, In that case you are right.
But to be honest, I was hoping that once some place has been marked as a grinding spot, because a player for example kills 40 mobs in 5 seconds, it would stay a grinding spot.
Otherwise they just login the next day and do it again. And again. And then the whole point of this detection is not really made. Hopefully you get what I mean.
Because then even a Grinding Detection Time Frame of 2 hours would not be enough..
The problem at the moment is that people have a way of reusing their farm, while it would be better if it would stay a farm as soon as one is detected :)

I think you can kill maybe 30 mobs in 120 seconds. I'm not entirely sure, I will ask my players for it :)

commented

Well the grindspot can be saved, no problem. But then you allow the player to kill 30 mobs in 20 sec, wait 30 sec and then kill another 30 mobs.... again and again.

commented

Hmm okay, So you mean the grinding spot will be removed after 30 seconds?
Maybe this is after all not the best solution then I think.
The main problem that I have is that players can keep using their Enderman farm.
For other farms, the farm detection works very greatly. As soon as something is detected as a grinding spot, it will stay a grinding spot forever, because it is detected as a farm.
For the endermanfarm, it is not detected as a farm, but only as an area grinding spot which will be removed after killing a mob in a different area.
I am a little bit scared that if players are able to wait 30 seconds before killing again, that I will have to set this time limit to like 3 hours. But it still would kind of prevent grinding, that's for sure. :)
I am sorry for maybe my bad explanation.
I hope you get what I mean? :)
Also, I do get what you mean and I really want to thank you for all your help <3
You're the best developer there is maybe :D

commented

No no, if I save the grindspot, it will be there until somebody use a command to remove it or whitelist the area

No what I mean was that if time frame is 30 sec and the player grinds mobs for a short period on 20 secs, then he only have to wait 30 sec until he can grind another 20 mobs, wait 30, grind in 20, wait 30....

commented

PS. I dont change the was the other farm detection rules works, I have added e new test "Speed Grinding". This rules does NOT look at the area at all. I magine that the player makes two endermand farms grind 20 mobs in one farm and then another 20 at the other farm.

commented

It is VERY hard to make the correct rule to detect grinding! :-)

And I am pretty sure that the player will find new workarounds, when this one is released :-(

commented

Oooh, now I understand what you mean
Thanks for your clarification.
And yes, I understand that players will probably find a workaround, but the more there is fixed the better for the plugin :D
Now I understand what you mean with, what if they only kill a few mobs.
Hmm, that's rather difficult...

commented

I think for this enderman farm it is hard to 'only kill a few mobs'. You will almost always hit about 10 at the same time (so 1 or 2 seconds), and this is not possible with a regular enderman in the overworld

commented

Hey!
So.. I did not test the development build yet, but what I did do is ask some of the players on my Server to test how many mobs they could kill within a timeframe of 120 seconds as an Ordinary player.
So without a mob farm!
I wanted to share their results with you. I will add screenshots here and also translate them for you, since they are in Dutch :)

image

Mobkill tests:
These are the results of 6 tests using a Sharpness V sword and a Power 3 bow.
Desert Biome:
An avarage of 30.2 mobs per 2 minutes.
(This player killed during a time span of 6 minutes and took the avarage, this is why you see higher values.)

Plains Biome:
An avarage of 26.7 mobs per 2 minutes.

Total Avarage:
28.5 mobkills per 120 seconds (2 minutes).

Another player reported the following:

image

Round 1 of my Mobkill adventure:
Within 2 minutes I was able to kill 26 mobs.
Sidenote: Sword has Sharpness 2 and this is a Diamond Sword.

I am hoping that this helps you with the plugin, to know some values from ORDINARY players, killing mobs! :D

commented

So in summary:

Ordinary Players are able to kill an avarage of about 26 - 28 mobs within a timeframe of 120 seconds, using Diamond and Enchanted Tools.

commented

Okay, so I tested the latest development build.
In first place I thought that the grinding in the End and switching worlds is kind of fixed, but then I found out the following:
Now what I can do is:

  1. Grind in the end, even with grinding detected
  2. Teleport to different world.
  3. Kill a different mob, Grinding is still detected.
  4. Leave the server
  5. Join the Server again.
  6. Kill a different mob, Grinding is not detected anymore. (I think Speed Grinding is lost)
  7. Go back to End farm, Grinding is again possible

EDIT:
NEVERMIND!
I THINK I DID SOMETHING WRONG WITH MY TEST
I TRIED IT FOR THE THIRD TIME AND IT DID NOT WORK ANYMORE
SO I THINK MAYBE I WAS WRONG SORRY <3

EDIT2:
Okay, The only thing I am still able to get Special Kill Progress in Mobhunting Rewards even when grinding at the farm..
So, this means that I can still get very high rewards.
image

EDIT3:
Okay, Relogging does sometimes affect something.
I think it resets the Speed Grinding Detection.
By the way, How do I know which grinding form is detected?
Is there a way to find out?
Sorry for all the messages and information, I am just trying to be very eleborated and help you as much as possible to fix the problems :)

commented

I got an idea which I think works.

When a player is grinding in the same area i count the number of killed mobs in the area when reaching 20 (default) the spot is marked as blacklisted and saved. I used to reset the counter, if the player kills a mob far away (or in another world), but I have added a test now. If the player kills a mobs and is speed grinding the counter will not reset (although he is far away/in another world). Speed grinding is now detected as 10 mobs with 120 min. (default)

I have made a new build and need your help with the testing.
https://fractal.lindegaard.one:8181/job/MobHunting/921/

  # Enabling this prevents a player from earning too much money from using a mob grinder.
  # Set 'enable_grinding_detection: false' to disable the grinding detection.
  # OBS: You can whitelist an area to allow grinding using '/mobhunt whitelistarea <add|remove>'
  # if the area is detected as a grinding area. See also '/mobhunt checkgrinding'
  # For each kill MobHunting check the number of kills within the range
  # If number of kills exceeds 10, the reward will decrese with 10% until the 'number of deaths'
  # is reached, whereafter the reward will be zero.
  area:
    detect_grinding_areas: true
    grinding_detection_range: 15
    grinding_detection_number_of_death: 20
    disable_natural_item_drops_on_player_grinding: false
    disable_natural_xp_drops_on_player_grinding: false
    blacklist_player_grinding_spots_as_server_worldwide_spots: false

  # Speed grinding detection.
  # Limit the number of mobs (same type) which can be killed with in a given timeframe
  speed_grinding:
    detect_speed_grinding: true
    time_frame: 120.0
    no_of_mobs: 10

Im pretty sure that the time_frame must be at least 120 sec. If it is smaller the player will use the time on jumping between worlds and killing another mob, and then the counter will reset. So I think it must be 120 maybe even 240 or 300. If you raise to f.ex. 300 you will have to raise no_of_mobs too, but Im still not sure this is a good idea. Also I think the "no_of_mobs" must about half of "grinding_detection_number_of_death" but we need to play with these numbers.

Currently I have no idea about how many mobs a ordinary player kills per time, so we are still in a testing phase.

commented

WAIT WITH THE TESTING. I have forgotten one think. I will get back soon.

commented

Wow!
Thank you so so much Rocologo!!
I will start the testing as soon as I can. Oh and also as soon as you add what you forget haha.
Anyway, I will check for you how many kills an ordinary player will make in a given timeframe of 120 seconds. Personally, I think 10 mobs is a bit too low, because I think that within 2 minutes I can kill more mobs as an ORDINARY player. But I am NOT sure so yes I need to test this!

After you get back with what you forget I will start the testing whenever I can.

Thank you so so much for all your efforts!!

commented

I forgot to check that the the player must be the same for the counted kills. I am all alone on my test server : -)

In this build I check that the player is the same:
https://fractal.lindegaard.one:8181/job/MobHunting/922/

commented

My problem is that I spend most of my spare time on development and not playing Minecraft, so Im not sure how many mobs a ordinary player kills. Remember that most of the kills should be in the same area. before grinding detection kicks in. So try with the default values and let me hear the result.

commented

๐Ÿ‘ Great, I understand.
Yes I will use the default values and let you know as soon as I have the time for it : - )

This will probably be after the weekend, since I am celebrating my birthday haha.

commented

I have asked @Sikatsu to help us with the testing, he has asked for this feature as well.

commented

Hey there, I am able to test from tomorrow evening. Currently i'm out. ^^

commented

I back - I have been busy the last days.

What are your current settings here? (which numbers seems to work best?)

  # Speed grinding detection.
  # Limit the number of mobs (same type) which can be killed with in a given timeframe
  speed_grinding:
    detect_speed_grinding: true
    time_frame: 120.0
    no_of_mobs: 10

I will start to look at EDIT 2+3 now

commented

I think I have disabled achevements if the player is speedgrinding in this build
https://fractal.lindegaard.one:8181/job/MobHunting/931/

commented

Thank you very much
I did not yet change the speed grinding settings.
currently I am using the default once, so yes:
speed_grinding:
detect_speed_grinding: true
time_frame: 120.0
no_of_mobs: 10
is my current configuration.

I will test some more with different values as well soon :)

commented

Are there still more tests needed? How is this going?

commented

Good question. I did not have time yet to really test properly, I'm sorry about that. I currently am busy with my studies.
Some problems are solved according to my players, but some other problems still exist. I still want to try and change the values of the new grinding detection to see what works.
Someone reported to me that if a mob dies because of falling damager after the mob got damage from a player, the grinding detection will be reset right now.
But yeh, I still have to test some stuff with the new grinding detection.
I'm sorry.

EDIT:
So, what I said about the falling damage resetting the grinding penalty happens to not be entirely true.
It works differently, according to my players again.
Your grinding penalty will be reset if you kill a mob in a different way than the first time you killed it when your penalty started. Example:
I hit a mob and it falls to it's death. I will get a grinding penalty now. Now, if I just kill a mob with my fist or a weapon, the penalty is not applied anymore..