From 71fa9fd31776e6760961f48391c20fe3f812ac9c Mon Sep 17 00:00:00 2001 From: mworzala Date: Mon, 5 Sep 2022 08:30:44 -0400 Subject: [PATCH] minor tweaks and debugging --- .../java/unnamed/mmo/server/dev/Main.java | 309 ++++++++++-------- .../java/unnamed/mmo/server/dev/MainDemo.java | 39 +++ .../mmo/entity/HeadRotationZombie.java | 1 + 3 files changed, 215 insertions(+), 134 deletions(-) create mode 100644 modules/development/src/main/java/unnamed/mmo/server/dev/MainDemo.java diff --git a/modules/development/src/main/java/unnamed/mmo/server/dev/Main.java b/modules/development/src/main/java/unnamed/mmo/server/dev/Main.java index d8cd91ab..575f7bf2 100644 --- a/modules/development/src/main/java/unnamed/mmo/server/dev/Main.java +++ b/modules/development/src/main/java/unnamed/mmo/server/dev/Main.java @@ -1,103 +1,147 @@ package unnamed.mmo.server.dev; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import com.mattworzala.debug.DebugMessage; -import com.mattworzala.debug.Layer; -import com.mattworzala.debug.shape.Line; -import com.mattworzala.debug.shape.Text; -import com.mojang.serialization.JsonOps; -import net.kyori.adventure.audience.Audience; import net.minestom.server.MinecraftServer; -import net.minestom.server.adventure.MinestomAdventure; -import net.minestom.server.command.builder.Command; import net.minestom.server.coordinate.Pos; -import net.minestom.server.coordinate.Vec; -import net.minestom.server.entity.Entity; -import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; import net.minestom.server.event.GlobalEventHandler; import net.minestom.server.event.player.PlayerLoginEvent; import net.minestom.server.event.player.PlayerPacketOutEvent; -import net.minestom.server.event.player.PlayerSpawnEvent; -import net.minestom.server.extras.MojangAuth; import net.minestom.server.instance.Instance; import net.minestom.server.instance.InstanceManager; import net.minestom.server.instance.block.Block; -import net.minestom.server.network.packet.server.*; +import net.minestom.server.network.packet.server.CachedPacket; +import net.minestom.server.network.packet.server.FramedPacket; +import net.minestom.server.network.packet.server.LazyPacket; +import net.minestom.server.network.packet.server.SendablePacket; import net.minestom.server.network.packet.server.play.EntityHeadLookPacket; import net.minestom.server.network.packet.server.play.EntityPositionAndRotationPacket; -import net.minestom.server.potion.Potion; -import net.minestom.server.potion.PotionEffect; -import net.minestom.server.utils.NamespaceID; -import net.minestom.server.world.DimensionType; -import unnamed.mmo.blocks.BlockInteracter; -import unnamed.mmo.blocks.ore.Ore; -import unnamed.mmo.chat.ChatManager; -import unnamed.mmo.chat.storage.ChatStorage; -import unnamed.mmo.command.BaseCommandRegister; -import unnamed.mmo.damage.DamageProcessor; -import unnamed.mmo.data.number.NumberProvider; +import net.minestom.server.network.packet.server.play.EntityRotationPacket; import unnamed.mmo.entity.HeadRotationZombie; -import unnamed.mmo.entity.UnnamedEntity; -import unnamed.mmo.entity.brain.task.*; -import unnamed.mmo.item.Item; -import unnamed.mmo.damage.DamageProcessor; -import unnamed.mmo.item.Item; -import unnamed.mmo.item.ItemManager; -import unnamed.mmo.mql.MqlScript; -import unnamed.mmo.item.entity.OwnedItemEntity; -import unnamed.mmo.player.PlayerImpl; -import unnamed.mmo.quest.QuestFacet; -import unnamed.mmo.server.dev.tool.DebugToolManager; -import unnamed.mmo.server.instance.TickTrackingInstance; - -import java.util.List; -import java.util.UUID; -import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ThreadLocalRandom; -import java.util.concurrent.TimeUnit; +import unnamed.mmo.logging.LoggerFactory; public class Main { public static void main(String[] args) { - System.setProperty("minestom.terminal.disabled", "true"); System.setProperty("minestom.viewable-packet", "false"); + // MinecraftServer server = MinecraftServer.init(); - MojangAuth.init(); - MinecraftServer.getConnectionManager().setPlayerProvider(PlayerImpl::new); - InstanceManager instanceManager = MinecraftServer.getInstanceManager(); - - Instance instance = new TickTrackingInstance(UUID.randomUUID(), DimensionType.OVERWORLD); - instanceManager.registerInstance(instance); + // + Instance instance = instanceManager.createInstanceContainer(); + // instance.setGenerator(unit -> unit.modifier().fillHeight(0, 40, Block.STONE)); + // GlobalEventHandler eventHandler = MinecraftServer.getGlobalEventHandler(); eventHandler.addListener(PlayerLoginEvent.class, event -> { final Player player = event.getPlayer(); + player.setPermissionLevel(2); event.setSpawningInstance(instance); - player.setRespawnPoint(new Pos(0, 42, 0)); + player.setRespawnPoint(new Pos(0, 40, 0)); + + new HeadRotationZombie(){ + @Override + public void tick(long time) { +// System.out.println(position.sameView(lastSyncedPosition)); + super.tick(time); + var rot = new EntityPositionAndRotationPacket(getEntityId(), (short) 0, (short) 0, (short) 0, position.yaw(), position.pitch(), isOnGround()); + sendPacketToViewersAndSelf(rot); +// var headLook = new EntityHeadLookPacket(getEntityId(), position.yaw()); +// sendPacketToViewersAndSelf(headLook); +// System.out.println(onGround); + } + }.setInstance(instance, new Pos(5, 40, 0)); }); - eventHandler.addListener(PlayerSpawnEvent.class, event -> { - final Player player = event.getPlayer(); - player.setGameMode(GameMode.SURVIVAL); - player.setPermissionLevel(4); - player.setAllowFlying(true); - // Testing - event.getSpawnInstance().setBlock(5, 43, 5, Ore.fromNamespaceId("unnamed:gold_ore").asBlock()); - event.getSpawnInstance().setBlock(4, 43, 5, Ore.fromNamespaceId("unnamed:diamond_ore").asBlock()); - player.getInventory().addItemStack(Item.fromNamespaceId("unnamed:diamond_pickaxe").asItemStack()); + eventHandler.addListener(PlayerPacketOutEvent.class, event -> { + SendablePacket packet = event.getPacket(); + if (packet instanceof CachedPacket cached) + packet = cached.packet(); + if (packet instanceof FramedPacket framed) + packet = framed.packet(); + if (packet instanceof LazyPacket lazy) + packet = lazy.packet(); + String name = packet.getClass().getSimpleName(); + if (packet.getClass().getSimpleName().contains("Entity")) { + if (name.equals("EntityVelocityPacket")) return; + if (name.equals("EntityPositionPacket")) return; + System.out.println(packet.getClass().getSimpleName()); + + if (packet instanceof EntityHeadLookPacket headLook) { +// System.out.println("POS/ROT : " + headLook); +// Vec dir = new Pos(0, 0, 0, headLook.yaw(), 0).direction(); +// Pos entityPos = Entity.getEntity(headLook.entityId()).getPosition(); +// DebugMessage.builder() +// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Line.Builder() +// .point(entityPos.asVec()) +// .point(dir.mul(2).add(entityPos.asVec())) +// .layer(Layer.TOP) +// .color(0xFFFFFF00) +// .build()) +//// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Text.Builder() +//// .content(System.currentTimeMillis() + "") +//// .position(dir.mul(2).add(entityPos.asVec())) +//// .layer(Layer.TOP) +//// .color(0xFFFFFF00) +//// .build()) +// .build() +// .sendTo(Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers())); + } + if (packet instanceof EntityPositionAndRotationPacket posAndRot) { + System.out.println("POS/ROT : " + posAndRot.onGround()); +// Vec dir = new Pos(0, 0, 0, posAndRot.yaw(), posAndRot.pitch()).direction(); +// Pos entityPos = Entity.getEntity(posAndRot.entityId()).getPosition(); +// DebugMessage.builder() +// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Line.Builder() +// .point(entityPos.asVec()) +// .point(dir.mul(2).add(entityPos.asVec())) +// .layer(Layer.TOP) +// .color(0xFFFF00FF) +// .build()) +//// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Text.Builder() +//// .content(System.currentTimeMillis() + "") +//// .position(dir.mul(2).add(entityPos.asVec().withY(y -> y + 0.5))) +//// .layer(Layer.TOP) +//// .color(0xFFFF00FF) +//// .build()) +// .build() +// .sendTo(Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers())); + } + } + }); + + // + server.start("0.0.0.0", 25565); + +// System.setProperty("minestom.terminal.disabled", "true"); +// System.setProperty("minestom.viewable-packet", "false"); - //todo this needs to be done elsewhere - player.addEffect(new Potion(PotionEffect.MINING_FATIGUE, (byte) -1, Short.MAX_VALUE, (byte) 0x0)); - //todo a command for this - player.getInventory().addItemStack(DebugToolManager.createTool("unnamed:hello")); +// MojangAuth.init(); +// MinecraftServer.getConnectionManager().setPlayerProvider(PlayerImpl::new); + + +// Instance instance = new TickTrackingInstance(UUID.randomUUID(), DimensionType.OVERWORLD); +// instanceManager.registerInstance(instance); + +// eventHandler.addListener(PlayerSpawnEvent.class, event -> { +// final Player player = event.getPlayer(); +// player.setGameMode(GameMode.SURVIVAL); +// player.setPermissionLevel(4); +// player.setAllowFlying(true); + + // Testing +// event.getSpawnInstance().setBlock(5, 43, 5, Ore.fromNamespaceId("unnamed:gold_ore").asBlock()); +// event.getSpawnInstance().setBlock(4, 43, 5, Ore.fromNamespaceId("unnamed:diamond_ore").asBlock()); +// player.getInventory().addItemStack(Item.fromNamespaceId("unnamed:diamond_pickaxe").asItemStack()); +// +// //todo this needs to be done elsewhere +// player.addEffect(new Potion(PotionEffect.MINING_FATIGUE, (byte) -1, Short.MAX_VALUE, (byte) 0x0)); +// +// //todo a command for this +// player.getInventory().addItemStack(DebugToolManager.createTool("unnamed:hello")); //todo test entity @@ -151,71 +195,69 @@ public static void main(String[] args) { // lookAt(player); // } // }; - Entity entity = new HeadRotationZombie(); - entity.setInstance(instance, new Pos(0, 40, 0)); - }); - eventHandler.addListener(PlayerPacketOutEvent.class, event -> { - SendablePacket packet = event.getPacket(); - if (packet instanceof CachedPacket cached) - packet = cached.packet(); - if (packet instanceof FramedPacket framed) - packet = framed.packet(); - if (packet instanceof LazyPacket lazy) - packet = lazy.packet(); - String name = packet.getClass().getSimpleName(); - if (packet.getClass().getSimpleName().contains("Entity")) { - if (name.equals("EntityVelocityPacket")) return; - if (name.equals("EntityPositionPacket")) return; - System.out.println(packet.getClass().getSimpleName()); - - if (packet instanceof EntityHeadLookPacket headLook) { -// Vec dir = new Pos(0, 0, 0, headLook.yaw(), 0).direction(); -// Pos entityPos = Entity.getEntity(headLook.entityId()).getPosition(); +// }); +// eventHandler.addListener(PlayerPacketOutEvent.class, event -> { +// SendablePacket packet = event.getPacket(); +// if (packet instanceof CachedPacket cached) +// packet = cached.packet(); +// if (packet instanceof FramedPacket framed) +// packet = framed.packet(); +// if (packet instanceof LazyPacket lazy) +// packet = lazy.packet(); +// String name = packet.getClass().getSimpleName(); +// if (packet.getClass().getSimpleName().contains("Entity")) { +// if (name.equals("EntityVelocityPacket")) return; +// if (name.equals("EntityPositionPacket")) return; +// System.out.println(packet.getClass().getSimpleName()); +// +// if (packet instanceof EntityHeadLookPacket headLook) { +//// Vec dir = new Pos(0, 0, 0, headLook.yaw(), 0).direction(); +//// Pos entityPos = Entity.getEntity(headLook.entityId()).getPosition(); +//// DebugMessage.builder() +//// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Line.Builder() +//// .point(entityPos.asVec()) +//// .point(dir.mul(2).add(entityPos.asVec())) +//// .layer(Layer.TOP) +//// .color(0xFFFFFF00) +//// .build()) +////// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Text.Builder() +////// .content(System.currentTimeMillis() + "") +////// .position(dir.mul(2).add(entityPos.asVec())) +////// .layer(Layer.TOP) +////// .color(0xFFFFFF00) +////// .build()) +//// .build() +//// .sendTo(Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers())); +// } +// if (packet instanceof EntityPositionAndRotationPacket posAndRot) { +// Vec dir = new Pos(0, 0, 0, posAndRot.yaw(), posAndRot.pitch()).direction(); +// Pos entityPos = Entity.getEntity(posAndRot.entityId()).getPosition(); // DebugMessage.builder() // .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Line.Builder() // .point(entityPos.asVec()) // .point(dir.mul(2).add(entityPos.asVec())) // .layer(Layer.TOP) -// .color(0xFFFFFF00) +// .color(0xFFFF00FF) // .build()) //// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Text.Builder() //// .content(System.currentTimeMillis() + "") -//// .position(dir.mul(2).add(entityPos.asVec())) +//// .position(dir.mul(2).add(entityPos.asVec().withY(y -> y + 0.5))) //// .layer(Layer.TOP) -//// .color(0xFFFFFF00) +//// .color(0xFFFF00FF) //// .build()) // .build() // .sendTo(Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers())); - } - if (packet instanceof EntityPositionAndRotationPacket posAndRot) { - Vec dir = new Pos(0, 0, 0, posAndRot.yaw(), posAndRot.pitch()).direction(); - Pos entityPos = Entity.getEntity(posAndRot.entityId()).getPosition(); - DebugMessage.builder() - .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Line.Builder() - .point(entityPos.asVec()) - .point(dir.mul(2).add(entityPos.asVec())) - .layer(Layer.TOP) - .color(0xFFFF00FF) - .build()) -// .set(NamespaceID.from(ThreadLocalRandom.current().nextInt() + ""), new Text.Builder() -// .content(System.currentTimeMillis() + "") -// .position(dir.mul(2).add(entityPos.asVec().withY(y -> y + 0.5))) -// .layer(Layer.TOP) -// .color(0xFFFF00FF) -// .build()) - .build() - .sendTo(Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers())); - } - } - }); +// } +// } +// }); - BaseCommandRegister.registerCommands(); +// BaseCommandRegister.registerCommands(); - Command c = new Command("clear"); - c.setDefaultExecutor((sender, context) -> { - DebugMessage.builder().clear().build().sendTo(sender); - }); - MinecraftServer.getCommandManager().register(c); +// Command c = new Command("clear"); +// c.setDefaultExecutor((sender, context) -> { +// DebugMessage.builder().clear().build().sendTo(sender); +// }); +// MinecraftServer.getCommandManager().register(c); // For now, manually register chat (with conn to mongo :/ need a config system) // MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() @@ -223,30 +265,29 @@ public static void main(String[] args) { // .uuidRepresentation(UuidRepresentation.STANDARD) // .build()); // ChatStorage chatStorage = ChatStorage.mongo(mongoClient); - ChatStorage chatStorage = ChatStorage.noop(); - ChatManager chatManager = new ChatManager(chatStorage); - chatManager.hook(MinecraftServer.process()); +// ChatStorage chatStorage = ChatStorage.noop(); +// ChatManager chatManager = new ChatManager(chatStorage); +// chatManager.hook(MinecraftServer.process()); //todo properly implement a config system & use facets better - ItemManager itemManager = new ItemManager(); - itemManager.hook(MinecraftServer.process()); - OwnedItemEntity.Handler itemEntityHandler = new OwnedItemEntity.Handler(); - itemEntityHandler.hook(MinecraftServer.process()); +// ItemManager itemManager = new ItemManager(); +// itemManager.hook(MinecraftServer.process()); +// OwnedItemEntity.Handler itemEntityHandler = new OwnedItemEntity.Handler(); +// itemEntityHandler.hook(MinecraftServer.process()); //todo stupid facet implementation - DebugToolManager debugToolManager = new DebugToolManager(); - debugToolManager.hook(MinecraftServer.process()); +// DebugToolManager debugToolManager = new DebugToolManager(); +// debugToolManager.hook(MinecraftServer.process()); - QuestFacet questFacet = new QuestFacet(); - questFacet.hook(MinecraftServer.process()); +// QuestFacet questFacet = new QuestFacet(); +// questFacet.hook(MinecraftServer.process()); - MinecraftServer.getSchedulerManager().buildShutdownTask(() -> - ForkJoinPool.commonPool().awaitQuiescence(10, TimeUnit.SECONDS)); +// MinecraftServer.getSchedulerManager().buildShutdownTask(() -> +// ForkJoinPool.commonPool().awaitQuiescence(10, TimeUnit.SECONDS)); - BlockInteracter.registerEvents(); - DamageProcessor.init(); +// BlockInteracter.registerEvents(); +// DamageProcessor.init(); - server.start("0.0.0.0", 25565); } } diff --git a/modules/development/src/main/java/unnamed/mmo/server/dev/MainDemo.java b/modules/development/src/main/java/unnamed/mmo/server/dev/MainDemo.java new file mode 100644 index 00000000..85b40009 --- /dev/null +++ b/modules/development/src/main/java/unnamed/mmo/server/dev/MainDemo.java @@ -0,0 +1,39 @@ +package unnamed.mmo.server.dev; + +import net.minestom.server.MinecraftServer; +import net.minestom.server.coordinate.Pos; +import net.minestom.server.entity.Player; +import net.minestom.server.event.GlobalEventHandler; +import net.minestom.server.event.player.PlayerLoginEvent; +import net.minestom.server.instance.InstanceContainer; +import net.minestom.server.instance.InstanceManager; +import net.minestom.server.instance.block.Block; +import unnamed.mmo.entity.HeadRotationZombie; + +public class MainDemo { + + public static void main(String[] args) { + // Initialization + MinecraftServer minecraftServer = MinecraftServer.init(); + + InstanceManager instanceManager = MinecraftServer.getInstanceManager(); + // Create the instance + InstanceContainer instanceContainer = instanceManager.createInstanceContainer(); + // Set the ChunkGenerator + instanceContainer.setGenerator(unit -> unit.modifier().fillHeight(0, 40, Block.STONE)); + + // Add an event callback to specify the spawning instance (and the spawn position) + GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler(); + globalEventHandler.addListener(PlayerLoginEvent.class, event -> { + final Player player = event.getPlayer(); + player.setPermissionLevel(2); + event.setSpawningInstance(instanceContainer); + player.setRespawnPoint(new Pos(0, 42, 0)); + + new HeadRotationZombie().setInstance(instanceContainer, new Pos(5, 42, 0)); + }); + + // Start the server on port 25565 + minecraftServer.start("0.0.0.0", 25565); + } +} diff --git a/modules/entity/src/main/java/unnamed/mmo/entity/HeadRotationZombie.java b/modules/entity/src/main/java/unnamed/mmo/entity/HeadRotationZombie.java index f6704950..7c88ee61 100644 --- a/modules/entity/src/main/java/unnamed/mmo/entity/HeadRotationZombie.java +++ b/modules/entity/src/main/java/unnamed/mmo/entity/HeadRotationZombie.java @@ -16,6 +16,7 @@ public class HeadRotationZombie extends LivingEntity { public HeadRotationZombie() { super(EntityType.ZOMBIE); + onGround = false; } @Override