Fix FakePlayers having null connection and add FakePlayer test mod (#7733)

This commit is contained in:
William Bradford Larcombe authored and GitHub committed 2021-07-19 12:54:42 -07:00
1 parent ca9df21258
commit 1a17fa6129
3 files changed
+146 -2

No files matched your search

@@ -20,13 +20,21 @@
package net.minecraftforge.common.util;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.mojang.authlib.GameProfile;
import net.minecraft.entity.Entity;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.network.play.client.CClientSettingsPacket;
import net.minecraft.network.IPacket;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.PacketDirection;
import net.minecraft.network.play.ServerPlayNetHandler;
import net.minecraft.network.play.client.*;
import net.minecraft.network.play.server.SPlayerPositionLookPacket;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.management.PlayerInteractionManager;
import net.minecraft.stats.Stat;
@@ -37,6 +45,7 @@ import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.fml.server.ServerLifecycleHooks;
import java.util.Set;
import java.util.UUID;
//Preliminary, simple Fake Player class
@@ -45,6 +54,7 @@ public class FakePlayer extends ServerPlayerEntity
public FakePlayer(ServerWorld world, GameProfile name)
{
super(world.getServer(), world, name, new PlayerInteractionManager(world));
this.connection = new FakePlayerNetHandler(world.getServer(), this);
}
@Override public Vector3d position(){ return new Vector3d(0, 0, 0); }
@@ -59,4 +69,67 @@ public class FakePlayer extends ServerPlayerEntity
@Override public void tick(){ return; }
@Override public void updateOptions(CClientSettingsPacket pkt){ return; }
@Override @Nullable public MinecraftServer getServer() { return ServerLifecycleHooks.getCurrentServer(); }
@ParametersAreNonnullByDefault
private static class FakePlayerNetHandler extends ServerPlayNetHandler {
private static final NetworkManager DUMMY_NETWORK_MANAGER = new NetworkManager(PacketDirection.CLIENTBOUND);
public FakePlayerNetHandler(MinecraftServer server, ServerPlayerEntity player) {
super(server, DUMMY_NETWORK_MANAGER, player);
}
@Override public void tick() { }
@Override public void resetPosition() { }
@Override public void disconnect(ITextComponent message) { }
@Override public void handlePlayerInput(CInputPacket packet) { }
@Override public void handleMoveVehicle(CMoveVehiclePacket packet) { }
@Override public void handleAcceptTeleportPacket(CConfirmTeleportPacket packet) { }
@Override public void handleRecipeBookSeenRecipePacket(CMarkRecipeSeenPacket packet) { }
@Override public void handleRecipeBookChangeSettingsPacket(CUpdateRecipeBookStatusPacket packet) { }
@Override public void handleSeenAdvancements(CSeenAdvancementsPacket packet) { }
@Override public void handleCustomCommandSuggestions(CTabCompletePacket packet) { }
@Override public void handleSetCommandBlock(CUpdateCommandBlockPacket packet) { }
@Override public void handleSetCommandMinecart(CUpdateMinecartCommandBlockPacket packet) { }
@Override public void handlePickItem(CPickItemPacket packet) { }
@Override public void handleRenameItem(CRenameItemPacket packet) { }
@Override public void handleSetBeaconPacket(CUpdateBeaconPacket packet) { }
@Override public void handleSetStructureBlock(CUpdateStructureBlockPacket packet) { }
@Override public void handleSetJigsawBlock(CUpdateJigsawBlockPacket packet) { }
@Override public void handleJigsawGenerate(CJigsawBlockGeneratePacket packet) { }
@Override public void handleSelectTrade(CSelectTradePacket packet) { }
@Override public void handleEditBook(CEditBookPacket packet) { }
@Override public void handleEntityTagQuery(CQueryEntityNBTPacket packet) { }
@Override public void handleBlockEntityTagQuery(CQueryTileEntityNBTPacket packet) { }
@Override public void handleMovePlayer(CPlayerPacket packet) { }
@Override public void teleport(double x, double y, double z, float yaw, float pitch) { }
@Override public void teleport(double x, double y, double z, float yaw, float pitch, Set<SPlayerPositionLookPacket.Flags> flags) { }
@Override public void handlePlayerAction(CPlayerDiggingPacket packet) { }
@Override public void handleUseItemOn(CPlayerTryUseItemOnBlockPacket packet) { }
@Override public void handleUseItem(CPlayerTryUseItemPacket packet) { }
@Override public void handleTeleportToEntityPacket(CSpectatePacket packet) { }
@Override public void handleResourcePackResponse(CResourcePackStatusPacket packet) { }
@Override public void handlePaddleBoat(CSteerBoatPacket packet) { }
@Override public void onDisconnect(ITextComponent message) { }
@Override public void send(IPacket<?> packet) { }
@Override public void send(IPacket<?> packet, @Nullable GenericFutureListener<? extends Future<? super Void>> p_211148_2_) { }
@Override public void handleSetCarriedItem(CHeldItemChangePacket packet) { }
@Override public void handleChat(CChatMessagePacket packet) { }
@Override public void handleAnimate(CAnimateHandPacket packet) { }
@Override public void handlePlayerCommand(CEntityActionPacket packet) { }
@Override public void handleInteract(CUseEntityPacket packet) { }
@Override public void handleClientCommand(CClientStatusPacket packet) { }
@Override public void handleContainerClose(CCloseWindowPacket packet) { }
@Override public void handleContainerClick(CClickWindowPacket packet) { }
@Override public void handlePlaceRecipe(CPlaceRecipePacket packet) { }
@Override public void handleContainerButtonClick(CEnchantItemPacket packet) { }
@Override public void handleSetCreativeModeSlot(CCreativeInventoryActionPacket packet) { }
@Override public void handleContainerAck(CConfirmTransactionPacket packet) { }
@Override public void handleSignUpdate(CUpdateSignPacket packet) { }
@Override public void handleKeepAlive(CKeepAlivePacket packet) { }
@Override public void handlePlayerAbilities(CPlayerAbilitiesPacket packet) { }
@Override public void handleClientInformation(CClientSettingsPacket packet) { }
@Override public void handleCustomPayload(CCustomPayloadPacket packet) { }
@Override public void handleChangeDifficulty(CSetDifficultyPacket packet) { }
@Override public void handleLockDifficulty(CLockDifficultyPacket packet) { }
}
}