- Баллы
- 31
- Имя в Minecraft
- Mattgyve1990
Код:
ClipboardHolder holder = new ClipboardHolder(new BukkitWorld(player.getWorld()));
EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(worldEditWorld, -1);
Код:
'ClipboardHolder(com.sk89q.worldedit.extent.clipboard.Clipboard)' in 'com.sk89q.worldedit.session.ClipboardHolder' cannot be applied to '(com.sk89q.worldedit.bukkit.BukkitWorld)'
Код:
package me.matt.marenas;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.session.ClipboardHolder;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
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.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Marenas extends JavaPlugin implements CommandExecutor {
private final Map<String, Location> pos1Map = new HashMap<>();
private final Map<String, Location> pos2Map = new HashMap<>();
@Override
public void onEnable() {
getLogger().info("Marenas has been enabled!");
getCommand("ma").setExecutor(this);
}
@Override
public void onDisable() {
getLogger().info("Marenas has been disabled!");
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command!");
return true;
}
Player player = (Player) sender;
if (command.getName().equalsIgnoreCase("ma")) {
if (args.length == 0) {
player.sendMessage("§cUsage: /ma pos1 <arenaName> or /ma pos2 <arenaName> or /ma save <arenaName>");
return true;
}
if (args[0].equalsIgnoreCase("pos1")) {
if (args.length != 2) {
player.sendMessage("§cUsage: /ma pos1 <arenaName>");
return true;
}
Location pos1 = player.getLocation();
pos1Map.put(args[1], pos1);
player.sendMessage("§aPosition 1 set for arena " + args[1]);
return true;
}
if (args[0].equalsIgnoreCase("pos2")) {
if (args.length != 2) {
player.sendMessage("§cUsage: /ma pos2 <arenaName>");
return true;
}
Location pos2 = player.getLocation();
pos2Map.put(args[1], pos2);
player.sendMessage("§aPosition 2 set for arena " + args[1]);
return true;
}
if (args[0].equalsIgnoreCase("save")) {
if (args.length != 2) {
player.sendMessage("§cUsage: /ma save <arenaName>");
return true;
}
Location pos1 = pos1Map.get(args[1]);
Location pos2 = pos2Map.get(args[1]);
if (pos1 == null || pos2 == null) {
player.sendMessage("§cPlease set both positions for arena " + args[1]);
return true;
}
World world = BukkitAdapter.adapt(player.getWorld());
LocalSession localSession = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(player));
World worldEditWorld = localSession.getSelectionWorld();
Region region = new CuboidRegion(
BlockVector3.at(pos1.getBlockX(), pos1.getBlockY(), pos1.getBlockZ()),
BlockVector3.at(pos2.getBlockX(), pos2.getBlockY(), pos2.getBlockZ()));
ClipboardHolder holder = new ClipboardHolder(new BukkitWorld(player.getWorld()));
EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(worldEditWorld, -1);
File schematicFile = new File(getDataFolder(), args[1] + ".schematic");
try (ClipboardWriter writer = ClipboardFormats.findByFile(schematicFile).getWriter(new FileOutputStream(schematicFile))) {
writer.write(holder.getClipboard());
} catch (IOException e) {
e.printStackTrace();
player.sendMessage("§cError while saving arena " + args[1]);
return true;
}
player.sendMessage("§aArena " + args[1] + " saved!");
return true;
}
}
return false;
}
}
