war/war/src/main/java/com/tommytony/war/utility/Compat.java

73 lines
2.3 KiB
Java

package com.tommytony.war.utility;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import com.tommytony.war.War;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
/**
* Simple fixes to account for removed Bukkit functionality
*/
public class Compat {
public static ItemStack createDamagedIS(Material mat, int amount, int damage) {
ItemStack is = new ItemStack(mat, amount);
ItemMeta meta = is.getItemMeta();
((Damageable) meta).setDamage(damage); // hope this works
is.setItemMeta(meta);
return is;
}
public static class BlockPair {
final Block block1;
final Block block2;
BlockPair(Block block1, Block block2) {
this.block1 = block1;
this.block2 = block2;
}
public Block getBlock1() {
return block1;
}
public Block getBlock2() {
return block2;
}
}
public static BlockPair getWorldEditSelection(Player player) {
if (!War.war.getServer().getPluginManager().isPluginEnabled("WorldEdit")) {
return null;
}
BukkitPlayer wp = BukkitAdapter.adapt(player);
LocalSession session = WorldEdit.getInstance().getSessionManager().get(wp);
try {
Region selection = session.getSelection(wp.getWorld());
if (selection instanceof CuboidRegion) {
BlockVector3 min = selection.getMinimumPoint();
BlockVector3 max = selection.getMaximumPoint();
return new BlockPair(
player.getWorld().getBlockAt(min.getBlockX(), min.getBlockY(), min.getBlockZ()),
player.getWorld().getBlockAt(max.getBlockX(), max.getBlockY(), max.getBlockZ())
);
}
return null;
} catch (IncompleteRegionException e) {
return null;
}
}
}