/** * Gets the configuration for a specified player. * * @param player the player * @return the configuration */ public static BlockPlaceConfig getConfig(final Player player) { if (!worldsMap.containsKey(player.getWorld().getName())) worldsMap.put( player.getWorld().getName(), new BlockPlaceConfig(ConfigManager.getConfigFile(player.getWorld().getName()))); return worldsMap.get(player.getWorld().getName()); }
/** Fetch settings from the current default config. */ private void adjustSettings() { final ConfigFile config = ConfigManager.getConfigFile(); doExpireData = config.getBoolean(ConfPaths.DATA_EXPIRATION_ACTIVE); durExpireData = config.getLong(ConfPaths.DATA_EXPIRATION_DURATION, 1, 1000000, 60) * 60000L; // in minutes deleteData = config.getBoolean(ConfPaths.DATA_EXPIRATION_DATA, true); // hidden. deleteHistory = config.getBoolean(ConfPaths.DATA_EXPIRATION_HISTORY); }
public ReflectBlock(ReflectBase base, ReflectBlockPosition blockPosition) throws ClassNotFoundException { final Class<?> clazz = Class.forName(base.nmsPackageName + ".Block"); // byID (static) nmsGetById = ReflectionUtil.getMethod(clazz, "getById", int.class); // getMaterial nmsGetMaterial = ReflectionUtil.getMethodNoArgs(clazz, "getMaterial"); // updateShape Method method = null; Class<?> clazzIBlockAccess = Class.forName(base.nmsPackageName + ".IBlockAccess"); if (blockPosition != null) { method = ReflectionUtil.getMethod(clazz, "updateShape", clazzIBlockAccess, blockPosition.nmsClass); } if (method == null) { method = ReflectionUtil.getMethod( clazz, "updateShape", clazzIBlockAccess, int.class, int.class, int.class); useBlockPosition = false; } else { useBlockPosition = true; } nmsUpdateShape = method; // Block bounds fetching. The array uses the order the methods (used to) appear in the nms // class. String[] names = new String[] { "getMinX", "getMaxX", "getMinY", "getMaxY", "getMinZ", "getMaxZ" }; // FUTURE GUESS. Method[] methods = tryBoundsMethods(clazz, names); if (methods == null) { names = guessBoundsMethodNames(clazz); if (names != null) { methods = tryBoundsMethods(clazz, names); } if (methods == null) { methods = new Method[] {null, null, null, null, null, null}; } } // TODO: Test which is which [ALLOW to configure and also save used ones to config, by mc // version]. // TODO: Dynamically test these ? [needs an extra world/space to place blocks inside of...] if (ConfigManager.getConfigFile().getBoolean(ConfPaths.LOGGING_EXTENDED_STATUS)) { NCPAPIProvider.getNoCheatPlusAPI() .getLogManager() .debug( Streams.INIT, "[NoCheatPlus] ReflectBlock: Use methods for shape: " + StringUtil.join(Arrays.asList(names), ", ")); } this.nmsGetMinX = methods[0]; this.nmsGetMaxX = methods[1]; this.nmsGetMinY = methods[2]; this.nmsGetMaxY = methods[3]; this.nmsGetMinZ = methods[4]; this.nmsGetMaxZ = methods[5]; }
/** * Get a per-world config. * * @param worldName Exact case world name. * @return */ public static MovingConfig getConfig(final String worldName) { final MovingConfig cc = worldsMap.get(worldName); if (cc != null) { return cc; } final MovingConfig ccNew = new MovingConfig(ConfigManager.getConfigFile(worldName)); worldsMap.put(worldName, ccNew); return ccNew; }
/* (non-Javadoc) * @see org.bukkit.command.CommandExecutor#onCommand(org.bukkit.command.CommandSender, org.bukkit.command.Command, * java.lang.String, java.lang.String[]) */ @Override public boolean onCommand( final CommandSender sender, final Command command, final String commandLabel, final String[] args) { /* * ____ _ * / ___|___ _ __ ___ _ __ ___ __ _ _ __ __| | * | | / _ \| '_ ` _ \| '_ ` _ \ / _` | '_ \ / _` | * | |__| (_) | | | | | | | | | | | (_| | | | | (_| | * \____\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|\__,_| */ // Not our command, how did it get here? if (!command.getName().equalsIgnoreCase("nocheatplus")) return false; final boolean protectPlugins = ConfigManager.getConfigFile().getBoolean(ConfPaths.MISCELLANEOUS_PROTECTPLUGINS); if (args.length == 2 && args[0].equalsIgnoreCase("info") && sender.hasPermission(Permissions.ADMINISTRATION_INFO)) // Info command was used. handleInfoCommand(sender, args[1]); else if (args.length == 1 && args[0].equalsIgnoreCase("reload") && sender.hasPermission(Permissions.ADMINISTRATION_RELOAD)) // Reload command was used. handleReloadCommand(sender); else if (protectPlugins && !sender.hasPermission(Permissions.ADMINISTRATION_INFO) && !sender.hasPermission(Permissions.ADMINISTRATION_RELOAD)) sender.sendMessage("Unknown command. Type \"help\" for help."); else return false; return true; }
/** * This will be called from within the plugin in onEnable, after registration of all core * listeners and components. After each components addition processQueuedSubComponentHolders() * will be called to allow registries for further optional components. * * @param plugin * @return */ public Collection<Object> getAvailableComponentsOnEnable(NoCheatPlus plugin) { final List<Object> available = new LinkedList<Object>(); // Add components (try-catch). // TODO: catch ClassNotFound, incompatibleXY rather !? // Check: inventory.fastconsume. try { // TODO: Static test methods !? FastConsume.testAvailability(); available.add(new FastConsume()); NCPAPIProvider.getNoCheatPlusAPI() .addFeatureTags("checks", Arrays.asList(FastConsume.class.getSimpleName())); } catch (Throwable t) { StaticLog.logInfo("Inventory checks: FastConsume is not available."); } // Check: inventory.gutenberg. try { Gutenberg.testAvailability(); available.add(new Gutenberg()); NCPAPIProvider.getNoCheatPlusAPI() .addFeatureTags("checks", Arrays.asList(Gutenberg.class.getSimpleName())); } catch (Throwable t) { StaticLog.logInfo("Inventory checks: Gutenberg is not available."); } // Hot fix: falling block end portal. try { HotFixFallingBlockPortalEnter.testAvailability(); available.add(new HotFixFallingBlockPortalEnter()); NCPAPIProvider.getNoCheatPlusAPI() .addFeatureTags( "checks", Arrays.asList(HotFixFallingBlockPortalEnter.class.getSimpleName())); } catch (RuntimeException e) { } // ProtocolLib dependencies. if (protocolLibPresent.isAvailable()) { // Check conditions. boolean protocolLibAvailable = false; for (final IActivation condition : protocolLibActivation) { if (condition.isAvailable()) { protocolLibAvailable = true; break; } } // Attempt to react. if (protocolLibAvailable) { try { available.add(new ProtocolLibComponent(plugin)); } catch (Throwable t) { StaticLog.logWarning("Failed to set up packet level access with ProtocolLib."); if (ConfigManager.getConfigFile().getBoolean(ConfPaths.LOGGING_EXTENDED_STATUS)) { NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.INIT, t); } } } else { List<String> parts = new LinkedList<String>(); parts.add("Packet level access via ProtocolLib not available, supported configurations: "); for (IDescriptiveActivation cond : protocolLibActivation) { parts.add(cond.getNeutralDescription()); } StaticLog.logWarning(StringUtil.join(parts, " | ")); } } else { StaticLog.logInfo("Packet level access: ProtocolLib is not available."); } return available; }