@Command( aliases = { "version", "ver" }, usage = "", desc = "Get WorldEdit version", min = 0, max = 0 ) public void version(Actor actor) throws WorldEditException { actor.print("WorldEdit version " + WorldEdit.getVersion()); actor.print("https://github.com/sk89q/worldedit/"); PlatformManager pm = we.getPlatformManager(); actor.printDebug("----------- Platforms -----------"); for (Platform platform : pm.getPlatforms()) { actor.printDebug(String.format("* %s (%s)", platform.getPlatformName(), platform.getPlatformVersion())); } actor.printDebug("----------- Capabilities -----------"); for (Capability capability : Capability.values()) { Platform platform = pm.queryCapability(capability); actor.printDebug(String.format("%s: %s", capability.name(), platform != null ? platform.getPlatformName() : "NONE")); } }
void register(Platform platform) { log.log(Level.FINE, "Registering commands with " + platform.getClass().getCanonicalName()); LocalConfiguration config = platform.getConfiguration(); boolean logging = config.logCommands; String path = config.logFile; // Register log if (!logging || path.isEmpty()) { dynamicHandler.setHandler(null); commandLog.setLevel(Level.OFF); } else { File file = new File(config.getWorkingDirectory(), path); commandLog.setLevel(Level.ALL); log.log(Level.INFO, "Logging WorldEdit commands to " + file.getAbsolutePath()); try { dynamicHandler.setHandler(new FileHandler(file.getAbsolutePath(), true)); } catch (IOException e) { log.log(Level.WARNING, "Could not use command log file " + path + ": " + e.getMessage()); } dynamicHandler.setFormatter(new LogFormat(config.logFormat)); } platform.registerCommands(dispatcher); }
/** * Find the most preferred platform for a given capability from the list of * platforms. This does not use the map of preferred platforms. * * @param capability the capability * @return the most preferred platform, or null if no platform was found */ private synchronized @Nullable Platform findMostPreferred(Capability capability) { Platform preferred = null; Preference highest = null; for (Platform platform : platforms) { Preference preference = platform.getCapabilities().get(capability); if (preference != null && (highest == null || preference.isPreferredOver(highest))) { preferred = platform; highest = preference; } } return preferred; }
@Command( aliases = { "reload" }, usage = "", desc = "Reload configuration", min = 0, max = 0 ) @CommandPermissions("worldedit.reload") public void reload(Actor actor) throws WorldEditException { we.getPlatformManager().queryCapability(Capability.CONFIGURATION).reload(); we.getEventBus().post(new ConfigurationLoadEvent(we.getPlatformManager().queryCapability(Capability.CONFIGURATION).getConfiguration())); actor.print("Configuration reloaded!"); }
} else { Platform platform = we.getPlatformManager().queryCapability(Capability.WORLD_EDITING); for (World world : platform.getWorlds()) { List<? extends Entity> entities = world.getEntities(); visitors.add(new EntityVisitor(entities.iterator(), remover.createFunction()));
private void loadAdapter() { WorldEdit worldEdit = WorldEdit.getInstance(); // Attempt to load a Sponge adapter SpongeImplLoader adapterLoader = new SpongeImplLoader(); try { adapterLoader.addFromPath(getClass().getClassLoader()); } catch (IOException e) { logger.warn("Failed to search path for Sponge adapters"); } try { adapterLoader.addFromJar(container.getSource().get().toFile()); } catch (IOException e) { logger.warn("Failed to search " + container.getSource().get().toFile() + " for Sponge adapters", e); } try { spongeAdapter = adapterLoader.loadAdapter(); logger.info("Using " + spongeAdapter.getClass().getCanonicalName() + " as the Sponge adapter"); } catch (AdapterLoadException e) { Platform platform = worldEdit.getPlatformManager().queryCapability(Capability.WORLD_EDITING); if (platform instanceof SpongePlatform) { logger.warn(e.getMessage()); } else { logger.info("WorldEdit could not find a Sponge adapter for this MC version, " + "but it seems that you have another implementation of WorldEdit installed (" + platform.getPlatformName() + ") " + "that handles the world editing."); } } }
/** * Get the current configuration. * * <p>If no platform has been registered yet, then a default configuration * will be returned.</p> * * @return the configuration */ public LocalConfiguration getConfiguration() { return queryCapability(Capability.CONFIGURATION).getConfiguration(); }
@Override public Mask parseFromInput(String input, ParserContext context) throws InputParseException { if (!input.startsWith("$")) { return null; } Set<BaseBiome> biomes = new HashSet<>(); BiomeRegistry biomeRegistry = worldEdit.getPlatformManager().queryCapability(Capability.GAME_HOOKS).getRegistries().getBiomeRegistry(); List<BaseBiome> knownBiomes = biomeRegistry.getBiomes(); for (String biomeName : Splitter.on(",").split(input.substring(1))) { BaseBiome biome = Biomes.findBiomeByName(knownBiomes, biomeName, biomeRegistry); if (biome == null) { throw new InputParseException("Unknown biome '" + biomeName + '\''); } biomes.add(biome); } return Masks.asMask(new BiomeMask2D(context.requireExtent(), biomes)); } }
/** * Register a platform with WorldEdit. * * @param platform the platform */ public synchronized void register(Platform platform) { checkNotNull(platform); logger.log(Level.FINE, "Got request to register " + platform.getClass() + " with WorldEdit [" + super.toString() + "]"); // Just add the platform to the list of platforms: we'll pick favorites // once all the platforms have been loaded platforms.add(platform); // Make sure that versions are in sync if (firstSeenVersion != null) { if (!firstSeenVersion.equals(platform.getVersion())) { logger.log(Level.WARNING, "Multiple ports of WorldEdit are installed but they report different versions ({0} and {1}). " + "If these two versions are truly different, then you may run into unexpected crashes and errors.", new Object[]{ firstSeenVersion, platform.getVersion() }); } } else { firstSeenVersion = platform.getVersion(); } }
/** * Given an actor, return a new one that may use a different platform * for permissions and world editing. * * @param base the base actor to match * @return a new delegate actor */ @SuppressWarnings("unchecked") public <T extends Actor> T createProxyActor(T base) { checkNotNull(base); if (base instanceof Player) { Player player = (Player) base; Player permActor = queryCapability(Capability.PERMISSIONS).matchPlayer(player); if (permActor == null) { permActor = player; } Player cuiActor = queryCapability(Capability.WORLDEDIT_CUI).matchPlayer(player); if (cuiActor == null) { cuiActor = player; } return (T) new PlayerProxy(player, permActor, cuiActor, getWorldForEditing(player.getWorld())); } else { return base; } }
if (!worldEdit.getPlatformManager().queryCapability(Capability.USER_COMMANDS).isValidMobType(mobName)) { throw new NoMatchException("Unknown mob type '" + mobName + "'");
} else { Platform platform = we.getPlatformManager().queryCapability(Capability.WORLD_EDITING); for (World world : platform.getWorlds()) { List<? extends Entity> entities = world.getEntities(); visitors.add(new EntityVisitor(entities.iterator(), flags.createFunction()));
private void loadAdapter() { WorldEdit worldEdit = WorldEdit.getInstance(); // Attempt to load a Bukkit adapter BukkitImplLoader adapterLoader = new BukkitImplLoader(); try { adapterLoader.addFromPath(getClass().getClassLoader()); } catch (IOException e) { log.log(Level.WARNING, "Failed to search path for Bukkit adapters"); } try { adapterLoader.addFromJar(getFile()); } catch (IOException e) { log.log(Level.WARNING, "Failed to search " + getFile() + " for Bukkit adapters", e); } try { bukkitAdapter = adapterLoader.loadAdapter(); log.log(Level.INFO, "Using " + bukkitAdapter.getClass().getCanonicalName() + " as the Bukkit adapter"); } catch (AdapterLoadException e) { Platform platform = worldEdit.getPlatformManager().queryCapability(Capability.WORLD_EDITING); if (platform instanceof BukkitServerInterface) { log.log(Level.WARNING, e.getMessage()); } else { log.log(Level.INFO, "WorldEdit could not find a Bukkit adapter for this MC version, " + "but it seems that you have another implementation of WorldEdit installed (" + platform.getPlatformName() + ") " + "that handles the world editing."); } } }
/** * Choose preferred platforms and perform necessary initialization. */ private synchronized void choosePreferred() { for (Capability capability : Capability.values()) { Platform preferred = findMostPreferred(capability); if (preferred != null) { preferences.put(capability, preferred); capability.initialize(this, preferred); } } // Fire configuration event if (preferences.containsKey(Capability.CONFIGURATION) && configured.compareAndSet(false, true)) { worldEdit.getEventBus().post(new ConfigurationLoadEvent(queryCapability(Capability.CONFIGURATION).getConfiguration())); } }
/** * Gets the properties of this BlockType in a {@code key->property} mapping. * * @return The properties map */ public Map<String, ? extends Property<?>> getPropertyMap() { return updateField(properties, () -> ImmutableMap.copyOf(WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getProperties(this))); }
/** * Try loading the region managers for all currently loaded worlds. */ protected void loadWorlds() { synchronized (lock) { for (World world : WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS).getWorlds()) { load(world); } } }
@Before public void setup() { Platform mockPlat = Mockito.mock(Platform.class); Mockito.when(mockPlat.getConfiguration()).thenReturn(new LocalConfiguration() { @Override public void load() { } }); WorldEdit.getInstance().getPlatformManager().register(mockPlat); }
@Override protected Set<BlockType> load() { return WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries() .getBlockCategoryRegistry().getAll(this); }
@Override public void postLoad() { // Load configurations for each world for (World world : WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS).getWorlds()) { get(world); } }
@Override protected Set<ItemType> load() { return WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries() .getItemCategoryRegistry().getAll(this); }