Java tutorial
/* * Copyright (C) 2014 Monofraps * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package net.monofraps.gradlebukkit.extensions; import com.google.common.base.Strings; import groovy.lang.Closure; import java.util.ArrayList; import java.util.List; /** * @author monofraps */ public class Bukkit { /** * The channel to use when looking for CraftBukkit artifacts. Defaults to beta. Set to null or empty to use all * available channels. */ private String channel = "beta"; /** * The artifact slug to use when looking for CraftBukkit artifacts. * <ul> * <li>"latest" - either absolute latest artifact or latest of channel if channel is neither null nor empty</li> * <li>"git-[commit_ref]" - use the artifact with the given commit reference</li> * <li>"build-[build_number]" - use the artifact with the given build number</li> * </ul> * Defaults to latest. */ private String artifactSlug = ""; /** * Allows to pass additional arguments to Bukkit's JVM. */ private String additionalJvmArgs = ""; /** * Allows to automatically configure remote debugging. */ private RemoteDebugging debugSettings; /** * A list of files to copy to Bukkit's plugin directory. Also works with directories. */ private List<Object> pluginsToCopy = new ArrayList<>(); /** * Adds a plugin file to copy. * * @param fileObject the file to copy (gets passed to Project.file) * * @return this */ public Bukkit plugin(final Object fileObject) { pluginsToCopy.add(fileObject); return this; } public Bukkit remoteDebugging(final Closure closure) { debugSettings = new RemoteDebugging(); if (closure != null) { closure.setDelegate(debugSettings); closure.setResolveStrategy(Closure.DELEGATE_ONLY); closure.run(); } return this; } public String getChannel() { return Strings.nullToEmpty(channel); } public void setChannel(final String channel) { this.channel = channel; } public String getArtifactSlug() { String artSlug = Strings.nullToEmpty(artifactSlug); if (artSlug.isEmpty()) { artSlug = "latest"; } if (!getChannel().isEmpty()) { artSlug += "-" + getChannel(); } return artSlug; } public void setArtifactSlug(final String artifactSlug) { this.artifactSlug = artifactSlug; } public List<Object> getPluginsToCopy() { return pluginsToCopy; } public String getAdditionalJvmArgs() { return additionalJvmArgs; } public void setAdditionalJvmArgs(final String additionalJvmArgs) { this.additionalJvmArgs = additionalJvmArgs; } public RemoteDebugging getDebugSettings() { return debugSettings; } public void setDebugSettings(final RemoteDebugging debugSettings) { this.debugSettings = debugSettings; } }