mirror of
https://github.com/Minestom/Minestom.git
synced 2025-01-08 09:27:58 +01:00
Changed the way to create FakePlayer
This commit is contained in:
parent
da48ba8fb0
commit
e74c8ac9fd
@ -10,13 +10,15 @@ import net.minestom.server.chat.ChatColor;
|
|||||||
import net.minestom.server.chat.ColoredText;
|
import net.minestom.server.chat.ColoredText;
|
||||||
import net.minestom.server.entity.*;
|
import net.minestom.server.entity.*;
|
||||||
import net.minestom.server.entity.damage.DamageType;
|
import net.minestom.server.entity.damage.DamageType;
|
||||||
|
import net.minestom.server.entity.fakeplayer.FakePlayer;
|
||||||
|
import net.minestom.server.entity.fakeplayer.FakePlayerController;
|
||||||
import net.minestom.server.entity.type.EntityZombie;
|
import net.minestom.server.entity.type.EntityZombie;
|
||||||
import net.minestom.server.event.entity.EntityAttackEvent;
|
import net.minestom.server.event.entity.EntityAttackEvent;
|
||||||
|
import net.minestom.server.event.entity.EntityDeathEvent;
|
||||||
import net.minestom.server.event.item.ItemDropEvent;
|
import net.minestom.server.event.item.ItemDropEvent;
|
||||||
import net.minestom.server.event.item.ItemUpdateStateEvent;
|
import net.minestom.server.event.item.ItemUpdateStateEvent;
|
||||||
import net.minestom.server.event.item.PickupItemEvent;
|
import net.minestom.server.event.item.PickupItemEvent;
|
||||||
import net.minestom.server.event.player.*;
|
import net.minestom.server.event.player.*;
|
||||||
import net.minestom.server.gamedata.tags.TagManager;
|
|
||||||
import net.minestom.server.instance.Chunk;
|
import net.minestom.server.instance.Chunk;
|
||||||
import net.minestom.server.instance.Instance;
|
import net.minestom.server.instance.Instance;
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
@ -29,18 +31,15 @@ import net.minestom.server.item.ItemFlag;
|
|||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import net.minestom.server.network.ConnectionManager;
|
import net.minestom.server.network.ConnectionManager;
|
||||||
import net.minestom.server.network.packet.server.play.TagsPacket;
|
|
||||||
import net.minestom.server.ping.ResponseDataConsumer;
|
import net.minestom.server.ping.ResponseDataConsumer;
|
||||||
import net.minestom.server.timer.TaskRunnable;
|
import net.minestom.server.timer.TaskRunnable;
|
||||||
import net.minestom.server.utils.MathUtils;
|
import net.minestom.server.utils.MathUtils;
|
||||||
import net.minestom.server.utils.NamespaceID;
|
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
import net.minestom.server.utils.Vector;
|
import net.minestom.server.utils.Vector;
|
||||||
import net.minestom.server.utils.time.TimeUnit;
|
import net.minestom.server.utils.time.TimeUnit;
|
||||||
import net.minestom.server.utils.time.UpdateOption;
|
import net.minestom.server.utils.time.UpdateOption;
|
||||||
import net.minestom.server.world.Dimension;
|
import net.minestom.server.world.Dimension;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -65,11 +64,11 @@ public class PlayerInit {
|
|||||||
|
|
||||||
// Load some chunks beforehand
|
// Load some chunks beforehand
|
||||||
int loopStart = -2;
|
int loopStart = -2;
|
||||||
int loopEnd = 2;
|
int loopEnd = 10;
|
||||||
for (int x = loopStart; x < loopEnd; x++)
|
for (int x = loopStart; x < loopEnd; x++)
|
||||||
for (int z = loopStart; z < loopEnd; z++) {
|
for (int z = loopStart; z < loopEnd; z++) {
|
||||||
instanceContainer.loadChunk(x, z);
|
instanceContainer.loadChunk(x, z);
|
||||||
netherTest.loadChunk(x, z);
|
//netherTest.loadChunk(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -163,14 +162,18 @@ public class PlayerInit {
|
|||||||
zombie.setAttribute(Attribute.MOVEMENT_SPEED, 0.25f);
|
zombie.setAttribute(Attribute.MOVEMENT_SPEED, 0.25f);
|
||||||
zombie.setInstance(player.getInstance());
|
zombie.setInstance(player.getInstance());
|
||||||
|
|
||||||
/*FakePlayer fakePlayer = new FakePlayer(UUID.randomUUID(), "test");
|
FakePlayer.initPlayer(UUID.randomUUID(), "test", false, fakePlayer -> {
|
||||||
fakePlayer.addEventCallback(EntityDeathEvent.class, e -> {
|
//fakePlayer.setInstance(player.getInstance());
|
||||||
fakePlayer.getController().respawn();
|
fakePlayer.teleport(player.getPosition());
|
||||||
});
|
|
||||||
fakePlayer.setArrowCount(25);
|
|
||||||
FakePlayerController controller = fakePlayer.getController();
|
|
||||||
controller.sendChatMessage("I am a bot!");*/
|
|
||||||
|
|
||||||
|
fakePlayer.addEventCallback(EntityDeathEvent.class, e -> {
|
||||||
|
fakePlayer.getController().respawn();
|
||||||
|
});
|
||||||
|
|
||||||
|
fakePlayer.setArrowCount(25);
|
||||||
|
FakePlayerController controller = fakePlayer.getController();
|
||||||
|
controller.sendChatMessage("I am a bot!");
|
||||||
|
});
|
||||||
//Hologram hologram = new Hologram(player.getInstance(), player.getPosition(), "Hey guy");
|
//Hologram hologram = new Hologram(player.getInstance(), player.getPosition(), "Hey guy");
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -243,9 +246,13 @@ public class PlayerInit {
|
|||||||
item.setEnchantment(Enchantment.SHARPNESS, (short) 50);
|
item.setEnchantment(Enchantment.SHARPNESS, (short) 50);
|
||||||
player.getInventory().addItemStack(item);
|
player.getInventory().addItemStack(item);
|
||||||
|
|
||||||
player.getInventory().addItemStack(new ItemStack(Material.STONE, (byte) 127));
|
for (int i = 0; i < 9; i++) {
|
||||||
|
player.getInventory().setItemStack(i, new ItemStack(Material.STONE, (byte) 127));
|
||||||
|
}
|
||||||
|
|
||||||
//player.setHelmet(new ItemStack(Material.DIAMOND_HELMET, (byte) 1));
|
player.setHelmet(new ItemStack(Material.DIAMOND_HELMET, (byte) 1));
|
||||||
|
|
||||||
|
player.getInventory().setItemStack(41, ItemStack.getAirItem());
|
||||||
|
|
||||||
inventory.addItemStack(item.clone());
|
inventory.addItemStack(item.clone());
|
||||||
//player.openInventory(inventory);
|
//player.openInventory(inventory);
|
||||||
@ -278,7 +285,12 @@ public class PlayerInit {
|
|||||||
belowNameScoreboard.updateScore(this, 50);*/
|
belowNameScoreboard.updateScore(this, 50);*/
|
||||||
|
|
||||||
player.sendLegacyMessage("&aIm &bHere", '&');
|
player.sendLegacyMessage("&aIm &bHere", '&');
|
||||||
player.sendMessage(ColoredText.of("{#ff55ff}test"));
|
player.sendMessage(ColoredText.of("{#ff55ff}" + ChatColor.RESET + "test"));
|
||||||
|
|
||||||
|
/*RichMessage richMessage = RichMessage.of(ColoredText.of("Hey the item"))
|
||||||
|
.setHoverEvent(ChatHoverEvent.showItem(new ItemStack(Material.IRON_HELMET, (byte) 1)));
|
||||||
|
System.out.println(richMessage.toString());
|
||||||
|
player.sendMessage(richMessage);*/
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2,24 +2,22 @@ package net.minestom.server.entity.fakeplayer;
|
|||||||
|
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
|
import net.minestom.server.event.player.PlayerLoginEvent;
|
||||||
import net.minestom.server.network.ConnectionManager;
|
import net.minestom.server.network.ConnectionManager;
|
||||||
import net.minestom.server.network.player.FakePlayerConnection;
|
import net.minestom.server.network.player.FakePlayerConnection;
|
||||||
|
import net.minestom.server.timer.TaskRunnable;
|
||||||
|
import net.minestom.server.utils.time.TimeUnit;
|
||||||
|
import net.minestom.server.utils.time.UpdateOption;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class FakePlayer extends Player {
|
public class FakePlayer extends Player {
|
||||||
|
|
||||||
private FakePlayerController fakePlayerController;
|
private FakePlayerController fakePlayerController;
|
||||||
private boolean registered;
|
private boolean registered;
|
||||||
|
|
||||||
/**
|
private FakePlayer(UUID uuid, String username, boolean addInCache) {
|
||||||
* @param uuid the player uuid
|
|
||||||
* @param username the player username
|
|
||||||
* @param addInCache should the player be registered internally
|
|
||||||
* (gettable with {@link ConnectionManager#getOnlinePlayers()}
|
|
||||||
* and {@link ConnectionManager#getPlayer(String)})
|
|
||||||
*/
|
|
||||||
public FakePlayer(UUID uuid, String username, boolean addInCache) {
|
|
||||||
super(uuid, username, new FakePlayerConnection());
|
super(uuid, username, new FakePlayerConnection());
|
||||||
|
|
||||||
this.fakePlayerController = new FakePlayerController(this);
|
this.fakePlayerController = new FakePlayerController(this);
|
||||||
@ -32,13 +30,41 @@ public class FakePlayer extends Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a FakePlayer not registered in {@link ConnectionManager}
|
* Init a new FakePlayer
|
||||||
*
|
*
|
||||||
* @param uuid the player uuid
|
* @param uuid the FakePlayer uuid
|
||||||
* @param username the player username
|
* @param username the FakePlayer username
|
||||||
|
* @param addInCache should the player be registered internally
|
||||||
|
* (gettable with {@link ConnectionManager#getOnlinePlayers()})
|
||||||
|
* @param scheduledCallback the callback called when the FakePlayer is finished logging
|
||||||
|
* (1 tick after the {@link PlayerLoginEvent})
|
||||||
|
* WARNING: it will be called in the
|
||||||
|
* {@link net.minestom.server.timer.SchedulerManager} thread pool
|
||||||
*/
|
*/
|
||||||
public FakePlayer(UUID uuid, String username) {
|
public static void initPlayer(UUID uuid, String username, boolean addInCache, Consumer<FakePlayer> scheduledCallback) {
|
||||||
this(uuid, username, false);
|
final FakePlayer fakePlayer = new FakePlayer(uuid, username, addInCache);
|
||||||
|
|
||||||
|
fakePlayer.addEventCallback(PlayerLoginEvent.class, event -> {
|
||||||
|
MinecraftServer.getSchedulerManager().addDelayedTask(new TaskRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
scheduledCallback.accept(fakePlayer);
|
||||||
|
}
|
||||||
|
}, new UpdateOption(1, TimeUnit.TICK));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init a new FakePlayer without adding him in cache
|
||||||
|
*
|
||||||
|
* @param uuid the FakePlayer uuid
|
||||||
|
* @param username the FakePlayer username
|
||||||
|
* @param scheduledCallback the callback called when the FakePlayer is finished logging
|
||||||
|
* WARNING: it will be called in the
|
||||||
|
* {@link net.minestom.server.timer.SchedulerManager} thread pool
|
||||||
|
*/
|
||||||
|
public static void initPlayer(UUID uuid, String username, Consumer<FakePlayer> scheduledCallback) {
|
||||||
|
initPlayer(uuid, username, false, scheduledCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FakePlayerController getController() {
|
public FakePlayerController getController() {
|
||||||
|
@ -186,7 +186,7 @@ public final class ConnectionManager {
|
|||||||
* Add a new player in the players list
|
* Add a new player in the players list
|
||||||
* Is currently used at
|
* Is currently used at
|
||||||
* {@link net.minestom.server.network.packet.client.login.LoginStartPacket#process(PlayerConnection, ConnectionManager)}
|
* {@link net.minestom.server.network.packet.client.login.LoginStartPacket#process(PlayerConnection, ConnectionManager)}
|
||||||
* and in {@link net.minestom.server.entity.fakeplayer.FakePlayer#FakePlayer(UUID, String, boolean)}
|
* and in {@link net.minestom.server.entity.fakeplayer.FakePlayer#initPlayer(UUID, String, boolean, Consumer)}
|
||||||
*
|
*
|
||||||
* @param player the player to add
|
* @param player the player to add
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user