From 156b7e6b61d8bc1e08481967c74e8721c21cb568 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Elias=20M=C3=BCller?= <elias@elias-mueller.com>
Date: Sat, 5 Oct 2024 19:24:36 +0200
Subject: [PATCH] added logging

---
 .../pixelblocks/pixelblock/PixelBlock.java    | 103 ++++++++++--------
 1 file changed, 56 insertions(+), 47 deletions(-)

diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java
index f9dd2f5..eb30af8 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java
@@ -92,6 +92,8 @@ public class PixelBlock {
             player.sendMessage(Component.text("Dieser Pixelblock gehört nicht dir!", NamedTextColor.RED));
             return;
         }
+
+        Main.plugin.getLogger().info(String.format("'%s' entered PixelBlock '%s' at %s", player.getName(), this.blockUUID, this.pixelBlockLocation.toString()));
         getBlockTaskChain()
             .async(() -> {
                 this.lastEntryLocation = player.getLocation();
@@ -103,6 +105,7 @@ public class PixelBlock {
     }
 
     public void exitBlock(@NotNull Player player) {
+        Main.plugin.getLogger().info(String.format("%s exited PixelBlock", player.getName()));
         player.teleport(this.lastEntryLocation);
     }
 
@@ -168,52 +171,54 @@ public class PixelBlock {
 
     public void updateEntities() {
         this.getBlockTaskChain()
-                .sync(this::clearEntities)
-                .async(() -> {
-                    for (int x = 0; x < pixelsPerBlock; x++) {
-                        for (int y = 0; y < pixelsPerBlock; y++) {
-                            for (int z = 0; z < pixelsPerBlock; z++) {
-                                Location relativeLocation = new Location(pixelBlockLocation.getWorld(), x, y, z);
-                                Location blockLocation = this.pixelWorld.getBuildOrigin();
-                                switch (this.facingDirection) {
-                                    case south -> blockLocation.add(relativeLocation.x(), relativeLocation.y(), relativeLocation.z());
-                                    case north -> blockLocation.add((pixelsPerBlock-1)-relativeLocation.x(), relativeLocation.y(), (pixelsPerBlock-1)-relativeLocation.z());
-                                    case east -> blockLocation.add((pixelsPerBlock-1)-relativeLocation.z(), relativeLocation.y(), relativeLocation.x());
-                                    case west -> blockLocation.add(relativeLocation.z(), relativeLocation.y(), (pixelsPerBlock-1)-relativeLocation.x());
-                                }
-                                BlockData block = blockLocation.getBlock().getBlockData();
+            .sync(this::clearEntities)
+            .async(() -> {
+                for (int x = 0; x < pixelsPerBlock; x++) {
+                    for (int y = 0; y < pixelsPerBlock; y++) {
+                        for (int z = 0; z < pixelsPerBlock; z++) {
+                            Location relativeLocation = new Location(pixelBlockLocation.getWorld(), x, y, z);
+                            Location blockLocation = this.pixelWorld.getBuildOrigin();
+                            switch (this.facingDirection) {
+                                case south -> blockLocation.add(relativeLocation.x(), relativeLocation.y(), relativeLocation.z());
+                                case north -> blockLocation.add((pixelsPerBlock-1)-relativeLocation.x(), relativeLocation.y(), (pixelsPerBlock-1)-relativeLocation.z());
+                                case east -> blockLocation.add((pixelsPerBlock-1)-relativeLocation.z(), relativeLocation.y(), relativeLocation.x());
+                                case west -> blockLocation.add(relativeLocation.z(), relativeLocation.y(), (pixelsPerBlock-1)-relativeLocation.x());
+                            }
+                            BlockData block = blockLocation.getBlock().getBlockData();
 
-                                if(block.getMaterial() != Material.AIR) {
-                                    pixels.add(new Pixel(relativeLocation, block, ((double) 1/pixelsPerBlock)));
-                                }
+                            if(block.getMaterial() != Material.AIR) {
+                                pixels.add(new Pixel(relativeLocation, block, ((double) 1/pixelsPerBlock)));
                             }
                         }
                     }
-                })
-                .sync(() -> this.pixels.stream()
-                    .limit(maxPixelsPerBlock)
-                    .forEach(pixel -> pixel.place(this.pixelBlockLocation)))
-                .sync(() -> {
-                    if(this.pixels.size() < 5) {
-                        Location relativeLocation = new Location(pixelBlockLocation.getWorld(), 0, 0, 0);
-                        BlockData block = Material.GRAY_STAINED_GLASS.createBlockData();
-                        Pixel newPixel = new Pixel(relativeLocation, block, 1);
-                        pixels.add(newPixel);
-                        newPixel.place(this.pixelBlockLocation);
+                }
+            })
+            .sync(() -> this.pixels.stream()
+                .limit(maxPixelsPerBlock)
+                .forEach(pixel -> pixel.place(this.pixelBlockLocation)))
+            .sync(() -> {
+                if(this.pixels.size() < 5) {
+                    Location relativeLocation = new Location(pixelBlockLocation.getWorld(), 0, 0, 0);
+                    BlockData block = Material.GRAY_STAINED_GLASS.createBlockData();
+                    Pixel newPixel = new Pixel(relativeLocation, block, 1);
+                    pixels.add(newPixel);
+                    newPixel.place(this.pixelBlockLocation);
 
-                        Location itemDisplayLocation = this.pixelBlockLocation.clone().add(0.5, 0.5, 0.5);
-                        this.barrier = (ItemDisplay) this.pixelBlockLocation.getWorld().spawnEntity(
-                            itemDisplayLocation,
-                            EntityType.ITEM_DISPLAY
-                        );
-                        this.barrier.setItemStack(ItemStack.of(Material.BARRIER));
+                    Location itemDisplayLocation = this.pixelBlockLocation.clone().add(0.5, 0.5, 0.5);
+                    this.barrier = (ItemDisplay) this.pixelBlockLocation.getWorld().spawnEntity(
+                        itemDisplayLocation,
+                        EntityType.ITEM_DISPLAY
+                    );
+                    this.barrier.setItemStack(ItemStack.of(Material.BARRIER));
 
-                        spawnInteraction(true);
-                    } else {
-                        spawnInteraction(false);
-                    }
-                })
-                .execute();
+                    spawnInteraction(true);
+                } else {
+                    spawnInteraction(false);
+                }
+
+                Main.plugin.getLogger().info(String.format("Placed %d entities for PixelBlock '%s'", this.pixels.size(), this.blockUUID));
+            })
+            .execute();
     }
 
     public void place(Location placeLocation, Direction direction) {
@@ -224,6 +229,7 @@ public class PixelBlock {
         @Nullable PixelBlock blockAtLocation = PixelBlock.getPixelBlockFromPlacedLocation(newLocation);
         if(blockAtLocation != null && blockAtLocation != this) throw new IllegalArgumentException("Es können nicht mehrere Pixelblöcke ineinander platziert werden.");
 
+        Main.plugin.getLogger().info(String.format("Placing PixelBlock '%s' at %s", this.blockUUID, placeLocation));
         this.pixelBlockLocation = newLocation;
         this.facingDirection = direction;
         updateEntities();
@@ -241,6 +247,8 @@ public class PixelBlock {
             p.teleport(this.lastEntryLocation);
         });
 
+        Main.plugin.getLogger().info(String.format("Destroying PixelBlock '%s' at %s", this.blockUUID, pixelBlockLocation));
+
         this.pixelWorld.getEntitiesInWorld().stream()
             .filter(entity -> entity instanceof Item)
             .forEach(entity -> entity.teleport(this.lastEntryLocation));
@@ -259,6 +267,7 @@ public class PixelBlock {
             chunk.getEntities();
         }
 
+        Main.plugin.getLogger().info(String.format("Removing %d entities for PixelBlock '%s'", this.pixels.size(), this.blockUUID));
         this.pixels.forEach(Pixel::destroy);
         this.pixels.clear();
 
@@ -273,15 +282,15 @@ public class PixelBlock {
         }
 
         this.pixelBlockLocation.getWorld().getEntities().stream()
-                .filter(this::isRelevantEntity)
-                .filter(entity -> entity.getLocation()
-                        .add(0, hitboxOffset, 0)
-                        .toBlockLocation()
-                        .equals(this.pixelBlockLocation))
-                .forEach(Entity::remove);
+            .filter(this::isPixelBlockComponent)
+            .filter(entity -> entity.getLocation()
+                .add(0, hitboxOffset, 0)
+                .toBlockLocation()
+                .equals(this.pixelBlockLocation))
+            .forEach(Entity::remove);
     }
 
-    private boolean isRelevantEntity(Entity entity) {
+    private boolean isPixelBlockComponent(Entity entity) {
         return entity.getType().equals(EntityType.BLOCK_DISPLAY)
                 || entity.getType().equals(EntityType.INTERACTION)
                 || entity.getType().equals(EntityType.ITEM_DISPLAY);