Furgl / AutoPickup

A Minecraft mod by Furgl
https://minecraft.curseforge.com/projects/auto-pickup
MIT License
3 stars 0 forks source link

AutoPickup captures drops from "fake" players #5

Closed CplPibald closed 7 years ago

CplPibald commented 7 years ago

Some mods add blocks that use "fake" players in order to get player-only drops. Examples include the Diamond Spike block from Extra Utils, and the Fastest Spiked Conveyor from Simply Conveyors, or Killer Joe from EnderIO. When one of these blocks kills a mob, the mod simulates a player killing it, causing the mob to drop special drops like armor or wither skull. This simulated player usually is not a full player (no inventory, invalid location, and no UI). Blocks like this are very popular with players because it allows mob grinders to farm player-only drops.

With AutoPickup loaded, any drops generated by one of these blocks are being immediately teleported to the fake player's invalid location, making the mob grinder useless. Worse, all of those items and xp orbs sit around as entities, lagging the server until an op issues a /kill @e[...] command.

Possible solutions: 1) AutoPickup can detect whether a player is "fake" and ignore that player in all AutoPickup events. I don't know how difficult this is to detect. 2) AutoPickup could have a list of players to ignore in the config. Would also need to have a way to get the player name/UUID/etc, as most mods don't publish the ID of their fake players. 3) Automatically kill any drop that isn't picked up within N ticks of being created, to reduce lag. This might be a problem for players with full inventory, though.

CplPibald commented 7 years ago

I tried to build the mod to see if I could code a solution, but it won't build. The class furgl.autoPickup.common.config.Config appears to be missing from the repository.

Furgl commented 7 years ago

Thank you for bringing this to my attention. It should be an easy fix to detect fake players and ignore them. I'll have an update out fixing this later this week, when I have time.

Furgl commented 7 years ago

Fixed in v2.4.2

mcdodge34 commented 6 years ago

Can I please ask for a corrected version for 1.7.10 if you have time to do it ??? I know this issue is solved, but I wanted to use this mod on my Infinity Evolved Skyblock world, and we have a crap ton of setups involving fake players.

Furgl commented 6 years ago

I'm sorry, but this mod is not supported for 1.7.10. The existing version for 1.7.10 is very outdated and there is a huge difference between 1.7.10 and 1.8 that would make porting to 1.7.10 very difficult. I suggest you update to a more recent version of Minecraft, as 1.7.10 is very outdated.

mcdodge34 commented 6 years ago

Can't update, the pack I play is FTB Infinity Evolved Skyblock, its an expert modpack that can't be reproduced on newer versions, it will surely happen one day with the FTB Team, but for now this pack is stuck in 1.7.10. I also have an adventure in 1.12.1 in a new modpack I created but its something else. I understand your decision there, just know this mod isn't known by many people it would deserve more attention from everyone, this is my dream come true, enough of not picking up stuff I want and getting random junk in my inventory that I don't need, time to figure out how to blacklist chicken eggs so I can heva a nice chicken coop without the eggs getting into my inventory every single time.

Nagapito commented 5 years ago

I recently noticed this issue happening again. It started happening recently in the pack Dungeons, Drangons and Space Shuttles, v4.3 or 4.4. Mobs killed by EvilCraft skipes and pedestals would get the majority of the Xp teleported to spawn. Maybe something changed in EvilCraft that is conflicting with your fix since not all the XP orbs, are teleported, its more like 95% and the loot stays where the mob dies!

I also noticed once this happening between two mobs fighting each other. I agroed a Skellie and he managed to miss be and shot a Zombie that then killed the skellie. As it dies, I see the XP orb appearing at spawn!