diff --git a/.idea/modules/PixelBlocks.main.iml b/.idea/modules/PixelBlocks.main.iml
index 746f1fd..bbeeb3e 100644
--- a/.idea/modules/PixelBlocks.main.iml
+++ b/.idea/modules/PixelBlocks.main.iml
@@ -11,8 +11,4 @@
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java
index 949d965..92ec72c 100644
--- a/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/PixelBlocks.java
@@ -1,7 +1,8 @@
package eu.mhsl.minecraft.pixelblocks;
-import commands.ChessCommand;
-import listeners.PlayerJumpListener;
+import eu.mhsl.minecraft.pixelblocks.commands.ChessCommand;
+import eu.mhsl.minecraft.pixelblocks.commands.CreatePixelBlockCommand;
+import eu.mhsl.minecraft.pixelblocks.listeners.PlayerJumpListener;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
@@ -15,6 +16,7 @@ public final class PixelBlocks extends JavaPlugin {
this.getLogger().info("Hello World");
getServer().getPluginManager().registerEvents(new PlayerJumpListener(), this);
Objects.requireNonNull(getCommand("chess")).setExecutor(new ChessCommand());
+ Objects.requireNonNull(getCommand("createpixelblock")).setExecutor(new CreatePixelBlockCommand());
}
@Override
diff --git a/src/main/java/commands/ChessCommand.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/commands/ChessCommand.java
similarity index 97%
rename from src/main/java/commands/ChessCommand.java
rename to src/main/java/eu/mhsl/minecraft/pixelblocks/commands/ChessCommand.java
index 1c36cfe..9c7c580 100644
--- a/src/main/java/commands/ChessCommand.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/commands/ChessCommand.java
@@ -1,4 +1,4 @@
-package commands;
+package eu.mhsl.minecraft.pixelblocks.commands;
import org.bukkit.Location;
import org.bukkit.Material;
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/commands/CreatePixelBlockCommand.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/commands/CreatePixelBlockCommand.java
new file mode 100644
index 0000000..6282384
--- /dev/null
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/commands/CreatePixelBlockCommand.java
@@ -0,0 +1,24 @@
+package eu.mhsl.minecraft.pixelblocks.commands;
+
+import eu.mhsl.minecraft.pixelblocks.pixelblock.PixelBlock;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+
+public class CreatePixelBlockCommand implements CommandExecutor {
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
+ if(sender instanceof Player p) {
+ Location playerLocation = p.getLocation();
+ PixelBlock pixelBlock = new PixelBlock(playerLocation, 2);
+ pixelBlock.place(playerLocation);
+// Pixel pixel = new Pixel(new Location(p.getWorld(), 0, 0, 0), Material.COMMAND_BLOCK.createBlockData(), 0.5);
+// pixel.spawn(playerLocation);
+ }
+
+ return true;
+ }
+}
diff --git a/src/main/java/listeners/PlayerJoinListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJoinListener.java
similarity index 83%
rename from src/main/java/listeners/PlayerJoinListener.java
rename to src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJoinListener.java
index 46d35a6..d1e55b2 100644
--- a/src/main/java/listeners/PlayerJoinListener.java
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJoinListener.java
@@ -1,4 +1,4 @@
-package listeners;
+package eu.mhsl.minecraft.pixelblocks.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJumpListener.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJumpListener.java
new file mode 100644
index 0000000..d854ecd
--- /dev/null
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/listeners/PlayerJumpListener.java
@@ -0,0 +1,15 @@
+package eu.mhsl.minecraft.pixelblocks.listeners;
+
+import com.destroystokyo.paper.event.player.PlayerJumpEvent;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+
+public class PlayerJumpListener implements Listener {
+ @EventHandler
+ static void onPlayerJump(PlayerJumpEvent event) {
+// event.getPlayer().getWorld().spawn(event.getPlayer().getLocation(), BlockDisplay.class, blockDisplay -> {
+// blockDisplay.setBlock(Material.OAK_LOG.createBlockData());
+// });
+
+ }
+}
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/Pixel.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/Pixel.java
new file mode 100644
index 0000000..7eb258f
--- /dev/null
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/Pixel.java
@@ -0,0 +1,39 @@
+package eu.mhsl.minecraft.pixelblocks.pixelblock;
+
+import org.bukkit.Location;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.entity.BlockDisplay;
+import org.bukkit.entity.EntityType;
+import org.bukkit.util.Transformation;
+
+public class Pixel {
+ Location relativeLocation;
+ BlockData blockData;
+ double scale;
+
+ public Pixel(Location relativeLocation, BlockData blockData, double scale) {
+ this.relativeLocation = relativeLocation;
+ this.blockData = blockData;
+ this.scale = scale;
+ }
+
+ public void spawn(Location spawnLocation) {
+ spawnLocation.add(relativeLocation.x()*scale, relativeLocation.y()*scale, relativeLocation.z()*scale);
+
+ BlockDisplay bd;
+ bd = (BlockDisplay) spawnLocation.getWorld().spawnEntity(
+ spawnLocation,
+ EntityType.BLOCK_DISPLAY
+ );
+
+ bd.setBlock(blockData);
+
+ Transformation transform = bd.getTransformation();
+ transform.getScale().set(scale);
+ bd.setTransformation(transform);
+
+ System.out.println(spawnLocation.x());
+ System.out.println(spawnLocation.y());
+ System.out.println(spawnLocation.z());
+ }
+}
diff --git a/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java
new file mode 100644
index 0000000..56c3578
--- /dev/null
+++ b/src/main/java/eu/mhsl/minecraft/pixelblocks/pixelblock/PixelBlock.java
@@ -0,0 +1,38 @@
+package eu.mhsl.minecraft.pixelblocks.pixelblock;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+
+import java.util.ArrayList;
+
+public class PixelBlock {
+ double pixelsPerBlock;
+ ArrayList pixels = new ArrayList<>();
+
+ public PixelBlock(Location originLocation, double pixelsPerBlock) {
+ this.pixelsPerBlock = pixelsPerBlock;
+
+ 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(originLocation.getWorld(), x, y, z);
+ Location blockLocation = originLocation.toBlockLocation().clone().add(relativeLocation);
+ Material block = blockLocation.getBlock().getType();
+
+ if(block != Material.AIR) {
+ Pixel newPixel = new Pixel(relativeLocation, block.createBlockData(), (1/pixelsPerBlock));
+ pixels.add(newPixel);
+ }
+ }
+ }
+ }
+
+ }
+
+ public void place(Location placeLocation) {
+ placeLocation = placeLocation.toBlockLocation();
+ for(Pixel pixel : pixels) {
+ pixel.spawn(placeLocation);
+ }
+ }
+}
diff --git a/src/main/java/listeners/PlayerJumpListener.java b/src/main/java/listeners/PlayerJumpListener.java
deleted file mode 100644
index 315c8cb..0000000
--- a/src/main/java/listeners/PlayerJumpListener.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package listeners;
-
-import com.destroystokyo.paper.event.player.PlayerJumpEvent;
-import org.bukkit.Material;
-import org.bukkit.entity.BlockDisplay;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-
-public class PlayerJumpListener implements Listener {
- @EventHandler
- static void onPlayerJump(PlayerJumpEvent event) {
- event.getPlayer().getWorld().spawn(event.getPlayer().getLocation(), BlockDisplay.class, blockDisplay -> {
- blockDisplay.setBlock(Material.OAK_LOG.createBlockData());
- });
-
- }
-}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 96f8af1..97acfd5 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -4,3 +4,4 @@ main: eu.mhsl.minecraft.pixelblocks.PixelBlocks
api-version: '1.21'
commands:
chess:
+ createpixelblock: