Skip to content

Commit

Permalink
Improve detection of default fake player implementations
Browse files Browse the repository at this point in the history
(fixes #3794)
  • Loading branch information
TheRealWormbo committed Mar 23, 2024
1 parent e119ab6 commit c95586f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.entity.FakePlayer;
import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents;
import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerEntityEvents;
Expand Down Expand Up @@ -84,6 +85,7 @@
import vazkii.botania.common.entity.BotaniaEntities;
import vazkii.botania.common.entity.GaiaGuardianEntity;
import vazkii.botania.common.handler.*;
import vazkii.botania.common.helper.PlayerHelper;
import vazkii.botania.common.impl.BotaniaAPIImpl;
import vazkii.botania.common.impl.DefaultHornHarvestable;
import vazkii.botania.common.impl.corporea.DefaultCorporeaMatchers;
Expand Down Expand Up @@ -128,6 +130,7 @@ public void onInitialize() {
PaintableData.init();
CompostingData.init(CompostingChanceRegistry.INSTANCE::add);
DefaultCorporeaMatchers.init();
PlayerHelper.setFakePlayerClass(FakePlayer.class);

PatchouliAPI.get().registerMultiblock(BuiltInRegistries.BLOCK.getKey(BotaniaBlocks.alfPortal), AlfheimPortalBlockEntity.MULTIBLOCK.get());
PatchouliAPI.get().registerMultiblock(BuiltInRegistries.BLOCK.getKey(BotaniaBlocks.terraPlate), TerrestrialAgglomerationPlateBlockEntity.MULTIBLOCK.get());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.ToolActions;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.event.*;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
Expand Down Expand Up @@ -96,6 +97,7 @@
import vazkii.botania.common.entity.BotaniaEntities;
import vazkii.botania.common.entity.GaiaGuardianEntity;
import vazkii.botania.common.handler.*;
import vazkii.botania.common.helper.PlayerHelper;
import vazkii.botania.common.impl.BotaniaAPIImpl;
import vazkii.botania.common.impl.DefaultHornHarvestable;
import vazkii.botania.common.impl.corporea.DefaultCorporeaMatchers;
Expand Down Expand Up @@ -150,6 +152,7 @@ public void commonSetup(FMLCommonSetupEvent evt) {
PaintableData.init();
CompostingData.init((itemLike, chance) -> ComposterBlock.COMPOSTABLES.putIfAbsent(itemLike.asItem(), (float) chance));
DefaultCorporeaMatchers.init();
PlayerHelper.setFakePlayerClass(FakePlayer.class);

PatchouliAPI.get().registerMultiblock(BuiltInRegistries.BLOCK.getKey(BotaniaBlocks.alfPortal), AlfheimPortalBlockEntity.MULTIBLOCK.get());
PatchouliAPI.get().registerMultiblock(BuiltInRegistries.BLOCK.getKey(BotaniaBlocks.terraPlate), TerrestrialAgglomerationPlateBlockEntity.MULTIBLOCK.get());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,19 @@
public final class PlayerHelper {

private static final Pattern FAKE_PLAYER_PATTERN = Pattern.compile("^(?:\\[.*]|ComputerCraft)$");
private static Class<? extends Player> fakePlayerClass;

public static void setFakePlayerClass(Class<? extends Player> fakePlayerClass) {
PlayerHelper.fakePlayerClass = fakePlayerClass;
}

public static boolean isTruePlayer(@Nullable Entity e) {
if (!(e instanceof Player player)) {
return false;
}

String name = player.getName().getString();
return !FAKE_PLAYER_PATTERN.matcher(name).matches();
return (fakePlayerClass == null || !fakePlayerClass.isInstance(player)) && !FAKE_PLAYER_PATTERN.matcher(name).matches();
}

public static List<Player> getRealPlayersIn(Level level, AABB aabb) {
Expand Down

0 comments on commit c95586f

Please sign in to comment.