@Override public List<com.sk89q.worldedit.world.World> getWorlds() { List<World> worlds = server.getWorlds(); List<com.sk89q.worldedit.world.World> ret = new ArrayList<>(worlds.size()); for (World world : worlds) { ret.add(BukkitAdapter.adapt(world)); } return ret; }
@Override public boolean setLocation(Location location) { org.bukkit.entity.Entity entity = entityRef.get(); if (entity != null) { return entity.teleport(BukkitAdapter.adapt(location)); } else { return false; } }
@Override public boolean setLocation(com.sk89q.worldedit.util.Location location) { return player.teleport(BukkitAdapter.adapt(location)); }
@Override public World getWorld() { return BukkitAdapter.adapt(player.getWorld()); }
@Override public List<com.sk89q.worldedit.entity.Entity> getEntities() { List<com.sk89q.worldedit.entity.Entity> list = new ArrayList<>(); for (Entity entity : getWorld().getEntities()) { list.add(BukkitAdapter.adapt(entity)); } return list; }
@Nullable @Override public BlockMaterial getMaterial(BlockType blockType) { Material mat = BukkitAdapter.adapt(blockType); if (mat == null) { return null; } return materialMap.computeIfAbsent(mat, material -> new BukkitBlockMaterial(BukkitBlockRegistry.super.getMaterial(blockType), material)); }
@Override public Extent getExtent() { org.bukkit.entity.Entity entity = entityRef.get(); if (entity != null) { return BukkitAdapter.adapt(entity.getWorld()); } else { return NullWorld.getInstance(); } }
@Override public boolean playEffect(Vector3 position, int type, int data) { World world = getWorld(); final Effect effect = effects.get(type); if (effect == null) { return false; } world.playEffect(BukkitAdapter.adapt(world, position), effect, data); return true; }
@Override public boolean setBlockData(int x, int y, int z, BlockData blockData) { try { editSession.setBlock(BlockVector3.at(x, y, z), BukkitAdapter.adapt(blockData)); } catch (MaxChangedBlocksException e) { return false; } return true; }
@Override public BlockData getBlockData(int x, int y, int z) { return BukkitAdapter.adapt(editSession.getBlock(BlockVector3.at(x, y, z))); }
@Override public void giveItem(BaseItemStack itemStack) { player.getInventory().addItem(BukkitAdapter.adapt(itemStack)); }
/** * Create a Bukkit ItemStack from a WorldEdit BaseItemStack * * @param item The WorldEdit BaseItemStack * @return The Bukkit ItemStack */ public static ItemStack adapt(BaseItemStack item) { checkNotNull(item); return new ItemStack(adapt(item.getType()), item.getAmount()); } }
@Override public Location getLocation() { org.bukkit.entity.Entity entity = entityRef.get(); if (entity != null) { return BukkitAdapter.adapt(entity.getLocation()); } else { return new Location(NullWorld.getInstance()); } }
@Override public List<com.sk89q.worldedit.entity.Entity> getEntities(Region region) { World world = getWorld(); List<Entity> ents = world.getEntities(); List<com.sk89q.worldedit.entity.Entity> entities = new ArrayList<>(); for (Entity ent : ents) { if (region.contains(BukkitAdapter.asBlockVector(ent.getLocation()))) { entities.add(BukkitAdapter.adapt(ent)); } } return entities; }
@Override public boolean notifyAndLightBlock(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState previousType) throws WorldEditException { BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); if (adapter != null) { adapter.notifyAndLightBlock(BukkitAdapter.adapt(getWorld(), position), previousType); return true; } return false; }
@Override public BaseItemStack getItemInHand(HandSide handSide) { ItemStack itemStack = handSide == HandSide.MAIN_HAND ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand(); return BukkitAdapter.adapt(itemStack); }
@Override public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 pt) { World world = getWorld(); TreeType bukkitType = toBukkitTreeType(type); return type != null && world.generateTree(BukkitAdapter.adapt(world, pt), bukkitType, new EditSessionBlockChangeDelegate(editSession)); }
@Override public BaseBlock getFullBlock(BlockVector3 position) { BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter(); if (adapter != null) { return adapter.getBlock(BukkitAdapter.adapt(getWorld(), position)); } else { return getBlock(position).toBaseBlock(); } }
@Override public com.sk89q.worldedit.world.block.BlockState getBlock(BlockVector3 position) { Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ()); return BukkitAdapter.adapt(bukkitBlock.getBlockData()); }