package me.yaruma.fightsystem.utils; import com.boydti.fawe.FaweAPI; import com.boydti.fawe.util.EditSessionBuilder; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.sk89q.worldedit.math.transform.AffineTransform; import com.sk89q.worldedit.world.World; import de.warking.hunjy.MySQL.Schematic; import de.warking.hunjy.MySQL.SchematicType; import de.warking.hunjy.MySQL.WarkingUser; import me.yaruma.fightsystem.FightSystem; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Location; import org.bukkit.entity.Player; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class WorldEdit { public static void replace(Player player, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) { World weWorld = new BukkitWorld(player.getWorld()); EditSession editSession = new EditSessionBuilder(weWorld).fastmode(true).build(); CuboidSelection cuboidSelection = new CuboidSelection(player.getWorld(), new Location(player.getWorld(), minX, minY, minZ), new Location(player.getWorld(), maxX, maxY, maxZ)); Set targetObsidian = new HashSet<>(); targetObsidian.add(new BaseBlock(49)); Set targetBedrock = new HashSet<>(); targetBedrock.add(new BaseBlock(7)); try { int tnt = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(46)); int slime = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetBedrock, new BaseBlock(165)); editSession.flushQueue(); } catch (Exception ex){ ex.printStackTrace(); } } public static void pasteSchematic(File file, World world, Vector vector, boolean allowUndo, boolean pasteAir, AffineTransform affineTransform) { try { FaweAPI.load(file).paste(world, vector, allowUndo, pasteAir, affineTransform).flushQueue(); } catch (IOException e) { e.printStackTrace(); } } public static int countBlocks(Player player, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, BaseBlock baseBlock) { World weWorld = new BukkitWorld(player.getWorld()); EditSession editSession = new EditSessionBuilder(weWorld).fastmode(true).build(); CuboidSelection cuboidSelection = new CuboidSelection(player.getWorld(), new Location(player.getWorld(), minX, minY, minZ), new Location(player.getWorld(), maxX, maxY, maxZ)); Set target = new HashSet<>(); target.add(baseBlock); try { return editSession.countBlocks(cuboidSelection.getRegionSelector().getRegion(), target); } catch (IncompleteRegionException e) { e.printStackTrace(); } return 0; } public static void sendPlayerScheamticList(File folder, int currentPage, int filesPerPage, Player player) { File[] listOfFiles = folder.listFiles(); int pages = listOfFiles.length / filesPerPage; int currPage = currentPage; if(currPage > pages) { currPage = 0; } for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) { TextComponent schematics = new TextComponent(listOfFiles[i].toString()); schematics.setColor(ChatColor.AQUA); schematics.setBold(true); schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic benutzen...").create())); schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "")); //COMMAND MISSING player.spigot().sendMessage(schematics); TextComponent nextPage = new TextComponent("Naechste Seite"); nextPage.setColor(ChatColor.RED); nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Naechste Seite...").create())); nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "")); //COMMAND MISSING player.spigot().sendMessage(nextPage); } } public static void sendPlayerSchematicList(int currentPage, int filesPerPage, Player player, SchematicType schematicType) { List preSchematicList = Schematic.getSchemsAccessibleByUser(player.getUniqueId()); List schematicList = new ArrayList<>(); for(Schematic s : preSchematicList) { if(s.getSchemType() == schematicType) schematicList.add(s); } if(schematicList.isEmpty()) { player.sendMessage(FightSystem.PREFIX + "§cDu hast noch keine Schematic(s)!"); return; } int pages; double doublePages = (Double.valueOf(schematicList.size()) / Double.valueOf(filesPerPage)); int intPages = schematicList.size() / filesPerPage; if(schematicList.size() <= filesPerPage) { pages = 1; } else if(doublePages > intPages) { pages = (intPages + 1); } else pages = intPages; int currPage = currentPage; if(currPage >= pages) return; player.sendMessage("§5======§8[§dSeite " + (currentPage + 1) + " §7/ §d" + pages + " §7| §d" + schematicList.size() + " Schematic(s)§8]§5======"); for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) { if(schematicList.size() <= i) break; Schematic schematic = schematicList.get(i); TextComponent schematics = new TextComponent("§b" + schematic.getSchemName()); schematics.setBold(true); schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic benutzen...").create())); schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem info " + schematic.getSchemName())); player.spigot().sendMessage(schematics); } if(pages <= 1) return; if(currPage == 0) { TextComponent nextPage = new TextComponent("Nächste Seite >>"); nextPage.setColor(ChatColor.RED); nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list 1")); player.spigot().sendMessage(nextPage); } else if((currPage + 1) == pages) { TextComponent beforePage = new TextComponent("<< Vorherige Seite"); beforePage.setColor(ChatColor.RED); beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); player.spigot().sendMessage(beforePage); } else { TextComponent beforePage = new TextComponent("<< Seite "); beforePage.setColor(ChatColor.RED); beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); TextComponent nextPage = new TextComponent(">>"); nextPage.setColor(ChatColor.RED); nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage + 1))); beforePage.addExtra(nextPage); player.spigot().sendMessage(beforePage); } } }