2019-02-14 18:37:38 +01:00
|
|
|
package me.yaruma.fightsystem.utils;
|
|
|
|
|
|
|
|
import com.boydti.fawe.FaweAPI;
|
|
|
|
import com.boydti.fawe.util.EditSessionBuilder;
|
|
|
|
import com.sk89q.worldedit.EditSession;
|
2019-02-17 22:39:57 +01:00
|
|
|
import com.sk89q.worldedit.IncompleteRegionException;
|
2019-02-14 18:37:38 +01:00
|
|
|
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;
|
2019-02-18 20:05:21 +01:00
|
|
|
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;
|
2019-02-14 18:37:38 +01:00
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.HashSet;
|
|
|
|
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<BaseBlock> targetObsidian = new HashSet<>();
|
|
|
|
targetObsidian.add(new BaseBlock(49));
|
|
|
|
|
|
|
|
Set<BaseBlock> 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(), targetObsidian, new BaseBlock(7));
|
|
|
|
|
|
|
|
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();
|
2019-02-18 20:05:21 +01:00
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2019-02-14 18:37:38 +01:00
|
|
|
}
|
|
|
|
|
2019-02-17 22:39:57 +01:00
|
|
|
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<BaseBlock> target = new HashSet<>();
|
|
|
|
target.add(baseBlock);
|
|
|
|
try {
|
|
|
|
return editSession.countBlocks(cuboidSelection.getRegionSelector().getRegion(), target);
|
2019-02-18 20:05:21 +01:00
|
|
|
} catch (IncompleteRegionException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2019-02-17 22:39:57 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2019-02-18 20:05:21 +01:00
|
|
|
public static void sendPlayerScheamticList(File folder, int currentPage, int filesPerPage, Player player) {
|
|
|
|
File[] listOfFiles = folder.listFiles();
|
|
|
|
|
|
|
|
int pages = listOfFiles.length / filesPerPage;
|
|
|
|
|
|
|
|
for(int i = listOfFiles.length; i <= (currentPage * 10) + 10; i++) {
|
|
|
|
player.sendMessage(listOfFiles[i].toString());
|
|
|
|
|
|
|
|
TextComponent message = new TextComponent(listOfFiles[i].toString());
|
|
|
|
message.setColor(ChatColor.AQUA);
|
|
|
|
message.setBold(true);
|
|
|
|
|
|
|
|
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic benutzen...").create()));
|
|
|
|
message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "")); //COMMAND MISSING
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-14 18:37:38 +01:00
|
|
|
|
|
|
|
}
|