package de._82grfl1bif.KPI_Visualizer.commands; import de._82grfl1bif.KPI_Visualizer.data.DataHolder; import de._82grfl1bif.KPI_Visualizer.data.JsonParser; import de._82grfl1bif.KPI_Visualizer.structures.*; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.jetbrains.annotations.NotNull; import java.util.logging.Level; public class generateLayout implements CommandExecutor { Builder builder = new Builder(); @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (args.length < 2){ sender.sendMessage("please type or select the needed Arguments with tab."); return false; } sender.sendMessage("generating Layout"); Server server = sender.getServer(); Player player = server.getPlayer(sender.getName()); JsonParser jsonParser = new JsonParser(); if (!jsonParser.evalJson(args[0])){ sender.sendMessage("failed to parse Json"); return false; } if(player != null) { Location location = player.getLocation(); BukkitRunnable t = new BukkitRunnable() { @Override public void run() { //DataHolder.ComplexData(); DataHolder.foundation.setLocation(location); DataHolder.foundation.organizeFoundation(); DataHolder.foundation.correctAllLocations(location); builder.setFoundation(server, DataHolder.foundation.getLocation().clone().add(0, DataHolder.foundation.getDepth(), 0), DataHolder.foundation.getWidth().x, DataHolder.foundation.getWidth().x, DataHolder.foundation.getMaterial()); setAllChildren(server, DataHolder.foundation); } }; t.run(); return true; }else{ Bukkit.getLogger().log(Level.SEVERE, "Kein Spieler gefunden."); return false; } } private void setAllChildren(Server server, Foundation foundation) { for (Structure s : foundation.getChildren()) { if (s.getClass() == Foundation.class) {//TODO must be revisited to draw rectangular Foundations builder.setFoundation(server, s.getLocation().clone().add(0, s.getDepth(), 0), s.getWidth().x, s.getWidth().x, s.getMaterial()); setAllChildren(server, (Foundation) s); } else {//TODO must be revisited to draw rectangular Buildings builder.buildBuilding(server, s.getLocation().clone().add(1, s.getDepth(), 1), s.getWidth().x - 2, ((Building) s).getHeight(), s.getMaterial()); } } } }