Class FakePlayer
java.lang.Object
net.minestom.server.entity.Entity
net.minestom.server.entity.LivingEntity
net.minestom.server.entity.Player
net.minestom.server.entity.fakeplayer.FakePlayer
- All Implemented Interfaces:
net.kyori.adventure.audience.Audience,net.kyori.adventure.identity.Identified,net.kyori.adventure.pointer.Pointered,net.kyori.adventure.sound.Sound.Emitter,net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowEntity>,Localizable,Shape,CommandSender,NavigableEntity,EventHandler<EntityEvent>,EquipmentHandler,PermissionHandler,Snapshotable,Taggable,TagReadable,TagWritable,Tickable,Schedulable,NamedAndIdentified,Viewable
A fake player will behave exactly the same way as would do a
Player backed by a socket connection
(events, velocity, gravity, player list, etc...) with the exception that you need to control it server-side
using a FakePlayerController (see getController()).
You can create one using initPlayer(UUID, String, Consumer). Be aware that this really behave exactly like a player
and this is a feature not a bug, you will need to check at some place if the player is a fake one or not (instanceof) if you want to change it.
-
Nested Class Summary
Nested classes/interfaces inherited from class net.minestom.server.entity.Player
Player.FacePoint, Player.Hand, Player.MainHand, Player.PlayerSettingsNested classes/interfaces inherited from class net.minestom.server.entity.Entity
Entity.Pose -
Field Summary
Fields inherited from class net.minestom.server.entity.Player
experiencePickupCooldown, EXPERIMENT_PERFORM_POSE_UPDATES, inventory, playerConnectionFields inherited from class net.minestom.server.entity.LivingEntity
canPickupItem, expandedBoundingBox, invulnerable, isDead, itemPickupCooldown, lastDamageFields inherited from class net.minestom.server.entity.Entity
boundingBox, currentChunk, entityMeta, entityType, gravityAcceleration, gravityDragPerTick, gravityTickCount, hasCollision, hasPhysics, instance, lastSyncedPosition, lastVelocityWasZero, metadata, onGround, position, previousPosition, removed, trackingUpdate, uuid, vehicle, velocity, viewEngine, viewers -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFakePlayer(@NotNull UUID uuid, @NotNull String username, @NotNull FakePlayerOption option, @Nullable Consumer<FakePlayer> spawnCallback) -
Method Summary
Modifier and TypeMethodDescription@NotNull FakePlayerControllerRetrieves the controller for the fake player.@NotNull Navigator@NotNull FakePlayerOptionGets the fake player option container.static voidinitPlayer(@NotNull UUID uuid, @NotNull String username, @Nullable Consumer<FakePlayer> spawnCallback) Initializes a newFakePlayerwithout adding it in cache.static voidinitPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull FakePlayerOption option, @Nullable Consumer<FakePlayer> spawnCallback) Initializes a newFakePlayer.setInstance(@NotNull Instance instance, @NotNull Pos spawnPosition) Changes the player instance and load surrounding chunks if needed.protected voidshowPlayer(@NotNull PlayerConnection connection) Sends all the related packet to have the player sent to another with related data (create player, spawn position, velocity, metadata, equipments, passengers, team).voidupdate(long time) Called each tick.voidupdateNewViewer(@NotNull Player player) Called when a new viewer must be shown.Methods inherited from class net.minestom.server.entity.Player
addPacketToQueue, asHoverEvent, callItemUpdateStateEvent, callItemUpdateStateEvent, clearResourcePacks, clearTitle, closeInventory, closeInventory, didAnswerKeepAlive, didCloseInventory, dropItem, facePosition, facePosition, getAdditionalHearts, getAddPlayerToList, getBoots, getChestplate, getDeathLocation, getDefaultEatingTime, getDimensionType, getDisplayName, getEatingHand, getExp, getEyeHeight, getFieldViewModifier, getFlyingSpeed, getFood, getFoodSaturation, getGameMode, getHeldSlot, getHelmet, getInventory, getItemInMainHand, getItemInOffHand, getLastKeepAlive, getLastReceivedTeleportId, getLastSentTeleportId, getLatency, getLeggings, getLevel, getLocale, getName, getNextTeleportId, getOpenInventory, getPermissionLevel, getPlayerConnection, getPortalCooldown, getRemovePlayerToList, getResourcePackFuture, getRespawnPoint, getSettings, getSkin, getStatisticValueMap, getUnsafeEntityMeta, getUsername, getVehicleInformation, hasReducedDebugScreenInformation, hideBossBar, identity, interpretPacketQueue, isAllowFlying, isCreative, isEating, isEnableRespawnScreen, isFlying, isImmune, isInstantBreak, isInvulnerable, isOnGround, isOnline, kick, kick, kill, onChunkBatchReceived, onResourcePackStatus, openBook, openInventory, playEffect, playerConnectionInit, playSound, playSound, playSound, playSound, pointers, refreshAbilities, refreshAfterTeleport, refreshAnswerKeepAlive, refreshCommands, refreshEating, refreshEating, refreshFlying, refreshHealth, refreshHeldSlot, refreshKeepAlive, refreshLatency, refreshOnGround, refreshReceivedTeleportId, refreshVehicleSteer, remove, removeResourcePacks, resetTitle, respawn, sendActionBar, sendChunk, sendChunkUpdates, sendDimension, sendMessage, sendPacket, sendPackets, sendPackets, sendPacketToViewersAndSelf, sendPlayerListHeaderAndFooter, sendPluginMessage, sendPluginMessage, sendResourcePacks, sendTitlePart, setAdditionalHearts, setAllowFlying, setBelowNameTag, setBoots, setChestplate, setDeathLocation, setDefaultEatingTime, setDisplayName, setEnableRespawnScreen, setExp, setFieldViewModifier, setFlying, setFlyingSpeed, setFood, setFoodSaturation, setGameMode, setHealth, setHeldItemSlot, setHelmet, setInstance, setInstantBreak, setInvulnerable, setItemInMainHand, setItemInOffHand, setLeggings, setLevel, setLocale, setPendingOptions, setPermissionLevel, setPortalCooldown, setReducedDebugScreenInformation, setRespawnPoint, setSkin, setSneaking, setUsernameField, setUuid, showBossBar, spectate, startConfigurationPhase, stopSound, stopSpectating, synchronizePosition, teleport, UNSAFE_changeDidCloseInventory, UNSAFE_init, updateOldViewer, updatePose, updateSnapshotMethods inherited from class net.minestom.server.entity.LivingEntity
canPickupItem, damage, damage, getArrowCount, getAttribute, getAttributeValue, getFireDamagePeriod, getHealth, getLastDamageSource, getLivingEntityMeta, getMaxHealth, getPropertiesPacket, getTargetBlockPosition, getTeam, heal, isDead, isFlyingWithElytra, onAttributeChanged, refreshActiveHand, refreshIsDead, setArrowCount, setBoundingBox, setCanPickupItem, setFireDamagePeriod, setFireDamagePeriod, setFireForDuration, setFireForDuration, setFireForDuration, setFlyingWithElytra, setTeam, swingMainHand, swingOffHand, takeKnockbackMethods inherited from class net.minestom.server.entity.Entity
addEffect, addPassenger, addViewer, askSynchronization, autoViewEntities, clearEffects, despawn, editEntityMeta, eventNode, generateId, getAcquirable, getActiveEffects, getAliveTicks, getAllPermissions, getBoundingBox, getChunk, getCustomName, getDistance, getDistance, getDistanceSquared, getDistanceSquared, getEffect, getEffectLevel, getEntity, getEntity, getEntityId, getEntityMeta, getEntityType, getGravityAcceleration, getGravityDragPerTick, getGravityTickCount, getInstance, getLineOfSight, getLineOfSightEntity, getMetadataPacket, getPassengers, getPassengersPacket, getPose, getPosition, getUuid, getVehicle, getVelocity, getVelocityForPacket, getVelocityPacket, getViewers, hasCollision, hasEffect, hasLineOfSight, hasLineOfSight, hasNoGravity, hasPassenger, hasPredictableViewers, hasVelocity, intersectBox, intersectBoxSwept, isActive, isAutoViewable, isCustomNameVisible, isGlowing, isInvisible, isOccluded, isOnFire, isRemoved, isSilent, isSneaking, isSprinting, lookAt, lookAt, refreshCurrentChunk, refreshPosition, refreshPosition, relativeEnd, relativeStart, remove, removeEffect, removePassenger, removeViewer, scheduleNextTick, scheduler, scheduleRemove, scheduleRemove, setAutoViewable, setAutoViewEntities, setBoundingBox, setCustomName, setCustomNameVisible, setCustomSynchronizationCooldown, setGlowing, setGravity, setInstance, setInvisible, setNoGravity, setOnFire, setPose, setSilent, setSprinting, setVelocity, setView, spawn, switchEntityType, tagHandler, teleport, tick, triggerStatus, updateVelocity, updateViewableRule, updateViewableRule, updateViewerRule, updateViewerRuleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.kyori.adventure.audience.Audience
deleteMessage, deleteMessage, filterAudience, forEachAudience, openBook, removeResourcePacks, removeResourcePacks, removeResourcePacks, sendActionBar, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendPlayerListFooter, sendPlayerListFooter, sendPlayerListHeader, sendPlayerListHeader, sendPlayerListHeaderAndFooter, sendResourcePacks, sendResourcePacks, showTitle, stopSoundMethods inherited from interface net.minestom.server.command.CommandSender
sendMessage, sendMessageMethods inherited from interface net.minestom.server.inventory.EquipmentHandler
getEquipment, getEquipmentsPacket, getItemInHand, hasEquipment, setEquipment, setItemInHand, syncEquipmentMethods inherited from interface net.kyori.adventure.text.event.HoverEventSource
asHoverEventMethods inherited from interface net.minestom.server.utils.identity.NamedAndIdentified
getUuidMethods inherited from interface net.minestom.server.permission.PermissionHandler
addPermission, getAllPermissions, getPermission, hasPermission, hasPermission, hasPermission, removePermission, removePermissionMethods inherited from interface net.kyori.adventure.pointer.Pointered
get, getOrDefault, getOrDefaultFromMethods inherited from interface net.minestom.server.collision.Shape
isFaceFullMethods inherited from interface net.minestom.server.tag.Taggable
getTag, hasTag, removeTag, setTag, tagHandlerMethods inherited from interface net.minestom.server.Viewable
getViewersAsAudience, getViewersAsAudiences, isViewer, sendPacketsToViewers, sendPacketsToViewers, sendPacketToViewers
-
Constructor Details
-
FakePlayer
protected FakePlayer(@NotNull @NotNull UUID uuid, @NotNull @NotNull String username, @NotNull @NotNull FakePlayerOption option, @Nullable @Nullable Consumer<FakePlayer> spawnCallback) - Parameters:
uuid- The unique identifier for the fake player.username- The username for the fake player.option- Any option for the fake player.
-
-
Method Details
-
initPlayer
public static void initPlayer(@NotNull @NotNull UUID uuid, @NotNull @NotNull String username, @NotNull @NotNull FakePlayerOption option, @Nullable @Nullable Consumer<FakePlayer> spawnCallback) Initializes a newFakePlayer.- Parameters:
uuid- the FakePlayer uuidusername- the FakePlayer usernamespawnCallback- the optional callback called when the fake player first spawn
-
initPlayer
public static void initPlayer(@NotNull @NotNull UUID uuid, @NotNull @NotNull String username, @Nullable @Nullable Consumer<FakePlayer> spawnCallback) Initializes a newFakePlayerwithout adding it in cache.If you want the fake player to be obtainable with the
ConnectionManageryou need to specify it in aFakePlayerOptionand useinitPlayer(UUID, String, FakePlayerOption, Consumer).- Parameters:
uuid- the FakePlayer uuidusername- the FakePlayer usernamespawnCallback- the optional callback called when the fake player first spawn
-
getOption
Gets the fake player option container.- Returns:
- the fake player option
-
getController
Retrieves the controller for the fake player.- Returns:
- The fake player's controller.
-
update
public void update(long time) Description copied from class:EntityCalled each tick. -
setInstance
public CompletableFuture<Void> setInstance(@NotNull @NotNull Instance instance, @NotNull @NotNull Pos spawnPosition) Description copied from class:PlayerChanges the player instance and load surrounding chunks if needed.Be aware that because chunk operations are expensive, it is possible for this method to be non-blocking when retrieving chunks is required.
- Overrides:
setInstancein classPlayer- Parameters:
instance- the new player instancespawnPosition- the new position of the player- Returns:
- a future called once the player instance changed
-
updateNewViewer
Description copied from class:EntityCalled when a new viewer must be shown. Method can be subject to deadlocking if the target's viewers are also accessed.- Overrides:
updateNewViewerin classLivingEntity- Parameters:
player- the player to send the packets to
-
showPlayer
Sends all the related packet to have the player sent to another with related data (create player, spawn position, velocity, metadata, equipments, passengers, team).WARNING: this alone does not sync the player, please use
Entity.addViewer(Player).- Overrides:
showPlayerin classPlayer- Parameters:
connection- the connection to show the player to
-