From 0ad09063f739532c2561b28d4237d9c16265b4a1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 22 Nov 2018 16:22:40 +0000 Subject: [PATCH 01/13] Add logging to the current processed access transformer Hidden by the `--info` flag by default, is helpful for determining where ATs are (or aren't) coming from --- .../gradle/tasks/AccessTransformJar.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java b/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java index 25c2ef3d5..e543a333c 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java @@ -37,16 +37,22 @@ public void doTask() throws IOException { AccessTransformationSet transformations = new AccessTransformationSet(); for (File file : getAts()) { if (file.getName().endsWith(".jar")) { - JarFile jar = new JarFile(file); - ZipEntry entry = jar.getEntry("access_transformations.at"); - if (entry != null) { - try (Scanner scanner = new Scanner(jar.getInputStream(entry))) { - while (scanner.hasNextLine()) { - transformations.addMinimumAccessLevel(scanner.nextLine()); + try (JarFile jar = new JarFile(file)) { + ZipEntry entry = jar.getEntry("access_transformations.at"); + + if (entry != null) { + getLogger().info("Found transformer in " + file); + + try (Scanner scanner = new Scanner(jar.getInputStream(entry))) { + while (scanner.hasNextLine()) { + transformations.addMinimumAccessLevel(scanner.nextLine()); + } } } - } + } } else { + getLogger().info("Found transformer in " + file); + try (Scanner scanner = new Scanner(file)) { while (scanner.hasNextLine()) { transformations.addMinimumAccessLevel(scanner.nextLine()); From 27bae6cb045fd13be90b7cece25a4fe9a38e469a Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 22 Nov 2018 16:24:11 +0000 Subject: [PATCH 02/13] Improve access transformer feedback Will now crash whenever lines are missed to give a clear feedback of what it happening No more guessing why an AT doesn't apply --- .../gradle/tasks/AccessTransformJar.java | 3 + .../dimdev/accesstransform/AccessLevel.java | 5 ++ .../AccessTransformationSet.java | 79 +++++++++++++++---- .../accesstransform/AccessTransformer.java | 38 +++++---- .../accesstransform/ElementReference.java | 5 ++ 5 files changed, 101 insertions(+), 29 deletions(-) diff --git a/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java b/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java index e543a333c..c316845f9 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/AccessTransformJar.java @@ -88,6 +88,9 @@ public void doTask() throws IOException { out.closeEntry(); } } + + //Make sure there aren't any more transformations that failed to find their classes + transformations.ensureClear(); } private static byte[] readStream(InputStream inputStream) throws IOException { diff --git a/src/main/java/org/dimdev/accesstransform/AccessLevel.java b/src/main/java/org/dimdev/accesstransform/AccessLevel.java index a5b7a8a81..e480af654 100644 --- a/src/main/java/org/dimdev/accesstransform/AccessLevel.java +++ b/src/main/java/org/dimdev/accesstransform/AccessLevel.java @@ -41,4 +41,9 @@ public static AccessLevel fromString(String string) { return new AccessLevel(Visibility.valueOf(string), isFinal); } + + @Override + public String toString() { + return "Access<" + visibility + (isFinal ? '+' : '-') + "F>"; + } } diff --git a/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java b/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java index 7c6cd46c3..d5242f353 100644 --- a/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java +++ b/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java @@ -1,17 +1,70 @@ package org.dimdev.accesstransform; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; -import java.util.Set; + +import org.dimdev.accesstransform.ElementReference.Kind; public class AccessTransformationSet { - private final Map transformations = new HashMap<>(); - private final Set affectedClasses = new HashSet<>(); + public static class Transformation { + final Map methods = new HashMap<>(); + final Map fields = new HashMap<>(); + private final String name; + AccessLevel access; + + public Transformation(String name) { + this.name = name; + } + + public boolean wantsAccessChange() { + return access != null; + } + + public AccessLevel getAccessChange() { + return access; + } + + public boolean wantsMethodChange() { + return !methods.isEmpty(); + } + + public AccessLevel popMethod(String name, String description) { + return methods.remove(new ElementReference(Kind.METHOD, this.name, name, description)); + } + + public boolean wantsFieldChange() { + return !fields.isEmpty(); + } + + public AccessLevel popField(String name, String description) { + return fields.remove(new ElementReference(Kind.FIELD, this.name, name, description)); + } + + public void ensureClear() { + if (!methods.isEmpty() || !fields.isEmpty()) { + throw new IllegalStateException("Additional transformations to " + name + " missed: methods: " + methods + ", fields: " + fields); + } + } + } + private final Map transformations = new HashMap<>(); public void addMimimumAccessLevel(ElementReference elementReference, AccessLevel accessLevel) { - transformations.put(elementReference, AccessLevel.union(transformations.get(elementReference), accessLevel)); - affectedClasses.add(elementReference.kind == ElementReference.Kind.CLASS ? elementReference.name : elementReference.owner); + switch (elementReference.kind) { + case CLASS: { + Transformation transform = transformations.computeIfAbsent(elementReference.name, Transformation::new); + transform.access = AccessLevel.union(transform.access, accessLevel); + } + + case METHOD: { + Transformation transform = transformations.computeIfAbsent(elementReference.owner, Transformation::new); + transform.methods.put(elementReference, AccessLevel.union(transform.methods.get(elementReference), accessLevel)); + } + + case FIELD: { + Transformation transform = transformations.computeIfAbsent(elementReference.owner, Transformation::new); + transform.fields.put(elementReference, AccessLevel.union(transform.fields.get(elementReference), accessLevel)); + } + } } public void addMinimumAccessLevel(String string) { @@ -24,15 +77,13 @@ public void addMinimumAccessLevel(String string) { addMimimumAccessLevel(ElementReference.fromString(elementReference), AccessLevel.fromString(accessLevel)); } - public AccessLevel getMinimumAccessLevel(ElementReference elementReference) { - return transformations.get(elementReference); - } - - public boolean isClassAffected(String name) { - return affectedClasses.contains(name); + public Transformation popTransformations(String name) { + return transformations.remove(name); } - public boolean isEmpty() { - return transformations.size() == 0; + public void ensureClear() { + if (!transformations.isEmpty()) { + throw new IllegalStateException("Additional class transformations missed for " + transformations.keySet()); + } } } diff --git a/src/main/java/org/dimdev/accesstransform/AccessTransformer.java b/src/main/java/org/dimdev/accesstransform/AccessTransformer.java index 2ceb84549..2e6c381c1 100644 --- a/src/main/java/org/dimdev/accesstransform/AccessTransformer.java +++ b/src/main/java/org/dimdev/accesstransform/AccessTransformer.java @@ -1,6 +1,5 @@ package org.dimdev.accesstransform; - import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.Opcodes; @@ -8,6 +7,8 @@ import org.objectweb.asm.tree.FieldNode; import org.objectweb.asm.tree.MethodNode; +import org.dimdev.accesstransform.AccessTransformationSet.Transformation; + public class AccessTransformer { private final AccessTransformationSet transformations; @@ -16,36 +17,43 @@ public AccessTransformer(AccessTransformationSet transformations) { } public byte[] transformClass(String name, byte[] bytes) { - if (bytes == null || !transformations.isClassAffected(name)) { - return bytes; + Transformation transform = transformations.popTransformations(name); + if (bytes == null || transform == null) { + return bytes; //Nothing to do } ClassNode clazz = new ClassNode(); ClassReader reader = new ClassReader(bytes); reader.accept(clazz, 0); - // Transform class access level - clazz.access = getNewAccessLevel(new ElementReference(ElementReference.Kind.CLASS, null, name, null), clazz.access); + if (transform.wantsAccessChange()) { + // Transform class access level + clazz.access = getNewAccessLevel(clazz.access, transform.access); + } - for (FieldNode field : clazz.fields) { - field.access = getNewAccessLevel(new ElementReference(ElementReference.Kind.FIELD, name, field.name, field.desc), field.access); + if (transform.wantsFieldChange()) { + for (FieldNode field : clazz.fields) { + AccessLevel access = transform.popField(field.name, field.desc); + if (access != null) field.access = getNewAccessLevel(field.access, access); + } } - for (MethodNode method : clazz.methods) { - method.access = getNewAccessLevel(new ElementReference(ElementReference.Kind.METHOD, name, method.name, method.desc), method.access); + if (transform.wantsMethodChange()) { + for (MethodNode method : clazz.methods) { + AccessLevel access = transform.popMethod(method.name, method.desc); + if (access != null) method.access = getNewAccessLevel(method.access, access); + } } + //Make sure there aren't any other transformations requested for this class + transform.ensureClear(); + ClassWriter writer = new ClassWriter(0); clazz.accept(writer); return writer.toByteArray(); } - private int getNewAccessLevel(ElementReference elementReference, int access) { - AccessLevel minimumAccessLevel = transformations.getMinimumAccessLevel(elementReference); - if (minimumAccessLevel == null) { - return access; - } - + private int getNewAccessLevel(int access, AccessLevel minimumAccessLevel) { AccessLevel.Visibility visibility; if ((access & Opcodes.ACC_PUBLIC) != 0) { visibility = AccessLevel.Visibility.PUBLIC; diff --git a/src/main/java/org/dimdev/accesstransform/ElementReference.java b/src/main/java/org/dimdev/accesstransform/ElementReference.java index ba38e3f72..6a33e7a11 100644 --- a/src/main/java/org/dimdev/accesstransform/ElementReference.java +++ b/src/main/java/org/dimdev/accesstransform/ElementReference.java @@ -57,4 +57,9 @@ public boolean equals(Object obj) { public int hashCode() { return Objects.hash(kind, owner, name, desc); } + + @Override + public String toString() { + return "Reference<" + (kind == Kind.CLASS ? name : owner + '#' + name + desc) + '>'; + } } From d47be698c31d58341fa5fcf1f724a70e2b68fcad Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 22 Nov 2018 16:26:11 +0000 Subject: [PATCH 03/13] Enable HTTPs for Forge Files server --- build.gradle | 4 ++-- src/main/java/edu/sc/seis/launch4j/Launch4jPlugin.java | 2 +- .../java/net/minecraftforge/gradle/common/BasePlugin.java | 2 +- src/main/java/net/minecraftforge/gradle/common/Constants.java | 4 ++-- .../net/minecraftforge/gradle/patcher/PatcherConstants.java | 2 +- .../gradle/user/patcherUser/forge/ForgeExtension.java | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 750f24fdd..f6e4ff3d1 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ repositories { mavenLocal() maven { name = "forge" - url = "http://files.minecraftforge.net/maven" + url = "https://files.minecraftforge.net/maven" } maven { // because Srg2Source needs an eclipse dependency. @@ -218,7 +218,7 @@ uploadArchives { if (project.hasProperty('forgeMavenPass')) { - repository(url: "http://files.minecraftforge.net/maven/manage/upload") { + repository(url: "https://files.minecraftforge.net/maven/manage/upload") { authentication(userName: "forge", password: project.getProperty('forgeMavenPass')) } } diff --git a/src/main/java/edu/sc/seis/launch4j/Launch4jPlugin.java b/src/main/java/edu/sc/seis/launch4j/Launch4jPlugin.java index 217f94ccc..d8a748a93 100644 --- a/src/main/java/edu/sc/seis/launch4j/Launch4jPlugin.java +++ b/src/main/java/edu/sc/seis/launch4j/Launch4jPlugin.java @@ -37,7 +37,7 @@ public class Launch4jPlugin implements Plugin static final String TASK_RUN_NAME = "createExe"; static final String TASK_LAUNCH4J_NAME = "launch4j"; - static final String URL_LAUNCH4J = "http://files.minecraftforge.net/launch4j/launch4j-3.8.0-" + Constants.OPERATING_SYSTEM + ".zip"; + static final String URL_LAUNCH4J = "https://files.minecraftforge.net/launch4j/launch4j-3.8.0-" + Constants.OPERATING_SYSTEM + ".zip"; static final String ZIP_LAUNCH4J = "build/launch4j.zip"; static final String DIR_LAUNCH4J = "build/launch4j"; diff --git a/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java b/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java index 785e9ca3a..eb7eed238 100644 --- a/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java @@ -223,7 +223,7 @@ protected void afterEvaluate() // ApplyFernFlowerTask ffTask = ((ApplyFernFlowerTask) project.getTasks().getByName("decompileJar")); // ffTask.setClasspath(javaConv.getSourceSets().getByName("main").getCompileClasspath()); - // http://files.minecraftforge.net/maven/de/oceanlabs/mcp/mcp_config/1.13.1/mcp_config-1.13.1.zip + // https://files.minecraftforge.net/maven/de/oceanlabs/mcp/mcp_config/1.13.1/mcp_config-1.13.1.zip project.getDependencies().add(CONFIG_MAPPINGS, ImmutableMap.of( "group", "de.oceanlabs.mcp", "name", delayedString("mcp_" + REPLACE_MCP_CHANNEL).call(), diff --git a/src/main/java/net/minecraftforge/gradle/common/Constants.java b/src/main/java/net/minecraftforge/gradle/common/Constants.java index 2d989792c..cf88e70d7 100644 --- a/src/main/java/net/minecraftforge/gradle/common/Constants.java +++ b/src/main/java/net/minecraftforge/gradle/common/Constants.java @@ -116,11 +116,11 @@ public Boolean call(Object o) // urls public static final String URL_MC_MANIFEST = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; - public static final String URL_FF = "http://files.minecraftforge.net/fernflower-fix-1.0.zip"; + public static final String URL_FF = "https://files.minecraftforge.net/fernflower-fix-1.0.zip"; public static final String URL_ASSETS = "http://resources.download.minecraft.net"; public static final String URL_LIBRARY = "https://libraries.minecraft.net/"; // Mojang's Cloudflare front end //public static final String URL_LIBRARY = "https://minecraft-libraries.s3.amazonaws.com/"; // Mojang's AWS server, as Cloudflare is having issues, TODO: Switch back to above when their servers are fixed. - public static final String URL_FORGE_MAVEN = "http://files.minecraftforge.net/maven"; + public static final String URL_FORGE_MAVEN = "https://files.minecraftforge.net/maven"; public static final List URLS_MCP_JSON = Arrays.asList( URL_FORGE_MAVEN + "/de/oceanlabs/mcp/versions.json", "http://export.mcpbot.bspk.rs/versions.json" diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java index b86395111..5860837eb 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java @@ -29,7 +29,7 @@ private PatcherConstants() {} // installer stuff static final String REPLACE_INSTALLER = "{INSTALLER}"; - static final String INSTALLER_URL = "http://files.minecraftforge.net/maven/net/minecraftforge/installer/" + REPLACE_INSTALLER + "/installer-" + REPLACE_INSTALLER + "-shrunk.jar"; + static final String INSTALLER_URL = "https://files.minecraftforge.net/maven/net/minecraftforge/installer/" + REPLACE_INSTALLER + "/installer-" + REPLACE_INSTALLER + "-shrunk.jar"; // new project defaults static final String DEFAULT_PATCHES_DIR = "patches"; diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java index 62bc0d374..2fdea729c 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java @@ -75,7 +75,7 @@ public void setForgeVersion(String forgeVersion) * * @param inVersion The version * - * @see http://files.minecraftforge.net + * @see https://files.minecraftforge.net */ @Override public void setVersion(String inVersion) From 147a732cc673491537df7783fbabc62e221d1d92 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 24 Nov 2018 02:12:37 +0000 Subject: [PATCH 04/13] Add back MCP Mapping fuzzing Allows using 1.13.1 mappings with 1.13.2 --- .../gradle/common/BaseExtension.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java index 8afce6f61..af00a366b 100644 --- a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java +++ b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java @@ -30,6 +30,7 @@ import java.net.URL; import java.util.Arrays; import java.util.Map; +import java.util.Map.Entry; public abstract class BaseExtension { @@ -249,6 +250,55 @@ public void setMappings(String mappings) protected void checkMappings() { replacer.putReplacement(Constants.REPLACE_MCP_MCVERSION, version); + + // gotta do this after setting the MC version + if (mappingsCustom != null) + return; + + // check if it exists + Map versionMap = mcpJson.get(version); + String channel = getMappingsChannelNoSubtype(); + if (versionMap != null) + { + int[] channelList = versionMap.get(channel); + if (channelList == null) + throw new GradleConfigurationException("There is no such MCP mapping channel named " + channel); + + // all is well with the world + if (searchArray(channelList, mappingsVersion)) + return; + } + + // if it gets here.. it wasnt found. Now we try to actually find it.. + for (Entry> mcEntry : mcpJson.entrySet()) + { + for (Entry channelEntry : mcEntry.getValue().entrySet()) + { + // found it! + if (searchArray(channelEntry.getValue(), mappingsVersion)) + { + boolean rightMc = mcEntry.getKey().equals(version); + boolean rightChannel = channelEntry.getKey().equals(channel); + + // right channel, but wrong mc + if (rightChannel && !rightMc) + { + project.getLogger().warn("Fuzzing selected mapping '" + getMappings() + "' to designed MC version " + mcEntry.getKey()); + replacer.putReplacement(Constants.REPLACE_MCP_MCVERSION, mcEntry.getKey()); // set MC version + return; + } + + // right MC , but wrong channel + else if (rightMc && !rightChannel) + { + throw new GradleConfigurationException("Selected mapping '" + getMappings() + "' doesnt exist! Perhaps you meant '" + channelEntry.getKey() + "_" + mappingsVersion + "'?"); + } + } + } + } + + // wasnt found + throw new GradleConfigurationException("The specified mapping '" + getMappings() + "' does not exist!"); } @SuppressWarnings("unused") From af34ddd02ae329c0abac096f6c7123bbd06e1f6e Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 24 Nov 2018 16:15:29 +0000 Subject: [PATCH 05/13] Add missing breaks Remember to test after refactoring --- .../org/dimdev/accesstransform/AccessTransformationSet.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java b/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java index d5242f353..634024beb 100644 --- a/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java +++ b/src/main/java/org/dimdev/accesstransform/AccessTransformationSet.java @@ -53,16 +53,19 @@ public void addMimimumAccessLevel(ElementReference elementReference, AccessLevel case CLASS: { Transformation transform = transformations.computeIfAbsent(elementReference.name, Transformation::new); transform.access = AccessLevel.union(transform.access, accessLevel); + break; } case METHOD: { Transformation transform = transformations.computeIfAbsent(elementReference.owner, Transformation::new); transform.methods.put(elementReference, AccessLevel.union(transform.methods.get(elementReference), accessLevel)); + break; } case FIELD: { Transformation transform = transformations.computeIfAbsent(elementReference.owner, Transformation::new); transform.fields.put(elementReference, AccessLevel.union(transform.fields.get(elementReference), accessLevel)); + break; } } } From b232573ac7715e7578a25079dd6c02c415fe4b75 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 24 Nov 2018 20:43:00 +0000 Subject: [PATCH 06/13] Add missing null check Missed the top of the method out whilst copying over --- .../java/net/minecraftforge/gradle/common/BaseExtension.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java index af00a366b..644aa4317 100644 --- a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java +++ b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java @@ -249,6 +249,11 @@ public void setMappings(String mappings) } protected void checkMappings() { + // mappings or mc version are null + if (mappingsChannel == null || Strings.isNullOrEmpty(version)) + return; + + // set now. replacer.putReplacement(Constants.REPLACE_MCP_MCVERSION, version); // gotta do this after setting the MC version From e67f7d21f8d88522aefad36e13445f2006570535 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 28 Nov 2018 10:36:12 +0000 Subject: [PATCH 07/13] Explicitly bump the version No more getting confused between identical maven groups --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index f6e4ff3d1..ef55798b0 100644 --- a/build.gradle +++ b/build.gradle @@ -17,9 +17,9 @@ apply plugin: 'maven' apply plugin: "com.gradle.plugin-publish" //apply plugin: 'license' -group = 'net.minecraftforge.gradle' -version = '2.3-SNAPSHOT' -//version = '2.2.1' +group = 'org.dimdev' +version = '2.4-SNAPSHOT' + archivesBaseName = 'ForgeGradle' targetCompatibility = '1.8' sourceCompatibility = '1.8' From 677ee68f535470d552f0413206d4c83e7f66915d Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 15 Feb 2019 00:59:04 -0800 Subject: [PATCH 08/13] Strip out usage of raw 'json' file from Forge's server. This should of been removed years ago, but nobody ever did it. Forge version must be specified in full string format. --- .../patcherUser/forge/ForgeExtension.java | 237 +++++------------- .../user/patcherUser/forge/ForgePlugin.java | 43 +--- .../gradle/util/json/JsonFactory.java | 3 - .../util/json/forgeversion/ForgeArtifact.java | 25 -- .../forgeversion/ForgeArtifactAdapter.java | 58 ----- .../util/json/forgeversion/ForgeBuild.java | 30 --- .../util/json/forgeversion/ForgeVersion.java | 31 --- .../gradle/GradleForgeHacks.java | 4 +- .../versions/ExtensionForgeVersionTest.java | 162 ------------ 9 files changed, 67 insertions(+), 526 deletions(-) delete mode 100644 src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifact.java delete mode 100644 src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifactAdapter.java delete mode 100644 src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeBuild.java delete mode 100644 src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeVersion.java delete mode 100644 src/test/java/net/minecraftforge/gradle/versions/ExtensionForgeVersionTest.java diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java index 2fdea729c..bb37b1525 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java @@ -31,12 +31,9 @@ import net.minecraftforge.gradle.user.UserBaseExtension; import net.minecraftforge.gradle.user.UserBasePlugin; import net.minecraftforge.gradle.util.GradleConfigurationException; -import net.minecraftforge.gradle.util.json.forgeversion.ForgeBuild; -import net.minecraftforge.gradle.util.json.forgeversion.ForgeVersion; public class ForgeExtension extends UserBaseExtension { - protected ForgeVersion forgeJson; private String forgeVersion; private String coreMod = null; @@ -92,7 +89,7 @@ public void setVersion(String inVersion) // ---------------------------------------- // Code to check the forge version and stuff - // ---------------------------------------- + // ---------------------------------------- private static final String JUST_MC = "(\\d+\\.\\d+(?:\\.\\d+)?[_pre\\d]*)"; private static final String JUST_API = "((?:\\d+\\.){3}(\\d+))((?:-[\\w\\.]+)?)"; @@ -103,183 +100,63 @@ public void setVersion(String inVersion) private void checkAndSetVersion(String str) { str = str.trim(); - - // build number - if (isAllNums(str)) - { - boolean worked = getFromBuildNumber(str); - if (worked) - return; - } - - // promotions - if (this.forgeJson != null && this.forgeJson.promos != null && this.forgeJson.promos.containsKey(str)) - { - boolean worked = getFromBuildNumber(this.forgeJson.promos.get(str)); - LOGGER.lifecycle("Selected version " + this.forgeVersion); - if (worked) - return; - } - - // matches just an API version - Matcher matcher = API.matcher(str); - if (matcher.matches()) - { - String branch = Strings.emptyToNull(matcher.group(3)); - String forgeVersion = matcher.group(1); - - try - { - ForgeBuild build = this.forgeJson.number.get(Integer.valueOf(matcher.group(2))); - - if (build == null) - { - throw new GradleConfigurationException("No such version exists!"); - } - - boolean branchMatches = false; - if (branch == null) - branchMatches = Strings.isNullOrEmpty(build.branch); - else - branchMatches = branch.substring(1).equals(build.branch); - - String outBranch = build.branch; - if (outBranch == null) - outBranch = ""; - else - outBranch = "-" + build.branch; - - if (!build.version.equals(forgeVersion) || !branchMatches) - { - throw new GradleConfigurationException(str + " is an invalid version! did you mean '" + build.version + outBranch + "' ?"); - } - - version = build.mcversion.replace("_", "-"); - this.forgeVersion = build.version; - if (!Strings.isNullOrEmpty(build.branch) && !"null".equals(build.branch)) - this.forgeVersion += outBranch; - - } - catch (GradleConfigurationException e) - { - throw e; - } - catch (Exception e)// everythng but the gradle exception - { - System.out.println("Error occurred parsing version!"); - - version = "1.8";// just gonna guess.. since we dont know.. - this.forgeVersion = forgeVersion; - if (!Strings.isNullOrEmpty(branch) && !"null".equals(branch)) - this.forgeVersion += branch; - } - - return; - } - - // matches standard form. - matcher = STANDARD.matcher(str); - if (matcher.matches()) - { - String branch = matcher.group(4); - String mcversion = matcher.group(1); - - String forgeVersion = matcher.group(2); - String buildNumber = matcher.group(3); - - try - { - if ("0".equals(buildNumber)) - { - LOGGER.lifecycle("Assuming custom forge version!"); - version = mcversion; - this.forgeVersion = forgeVersion + branch; - return; - } - - ForgeBuild build = this.forgeJson.number.get(Integer.parseInt(buildNumber)); - - if (build == null) - { - throw new GradleConfigurationException("No such version exists!"); - } - - boolean branchMatches = false; - if (Strings.isNullOrEmpty(branch)) - branchMatches = Strings.isNullOrEmpty(build.branch); - else - branchMatches = branch.substring(1).equals(build.branch); - - boolean mcMatches = build.mcversion.equals(mcversion); - - String outBranch = build.branch; - if (outBranch == null) - outBranch = ""; - else - outBranch = "-" + build.branch; - - if (!build.version.equals(forgeVersion) || !branchMatches || !mcMatches) - { - throw new GradleConfigurationException(str + " is an invalid version! did you mean '" + build.mcversion + "-" + build.version + outBranch + "' ?"); - } - - version = build.mcversion.replace("_", "-"); - this.forgeVersion = build.version; - if (!Strings.isNullOrEmpty(build.branch) && !"null".equals(build.branch)) - this.forgeVersion += outBranch; - } - catch (GradleConfigurationException e) - { - throw e; - } - catch (Exception e)// everythng but the gradle exception - { - System.out.println("Error occurred parsing version!"); - - version = mcversion; - this.forgeVersion = forgeVersion; - if (!Strings.isNullOrEmpty(branch) && !"null".equals(branch)) - this.forgeVersion += branch; - } - - return; - } - - throw new GradleConfigurationException("Invalid version notation, or version doesnt exist! The following are valid notations. Buildnumber, version, version-branch, mcversion-version-branch, and pomotion"); + int idx = str.indexOf('-'); + if (idx == -1) + throw new IllegalArgumentException("You must specify the full forge version, including MC version in your build.gradle. Example: 1.12.2-14.23.5.2811"); + this.version = str.substring(0, idx); //MC Version + this.forgeVersion = str.substring(idx + 1); + + /* + * Old FG used to use a horribly outdated MASSIVE json file for trying to be 'smart' when processing the version information. + * It tried to allow for many 'shortcuts' when specifying the Forge version. + * All of this are horribly and stupid, and should of never existed in the first place. + * So I'm gutting them. + * + * But will document them here to the best of my understanding, so that if people need them we can re-implement them in less horribly hacky ways. + * + * JUST the build number: + * Prior to 1.13, Forge used a unique build number to identify all versions. So in theory you could pick an exact build with just the build number. + * Example: + * Input: 2815 + * Output: 1.12.2-14.23.5.2815 + * Solution: + * Download maven-metadata.xml, loop through all versions doing: + * key = ver.split('-')[0].rsplit('.', 1)[1] + * if (!map.containsKey(key)) //This is important because metadata is ordered oldest to newest, and new versions could duplicate the build number + * map.put(key, ver) + * + * + * Promotion Name: + * We publish 'promoted' builds of Forge. Typically 'latest' and 'recommended'. Simple enough way to make a auto updating version. + * Example: + * Input: 1.8-recommended + * Output: 1.8-11.14.4.1563 + * Solution: + * Again, Abrar downloaded a 2MB MASSIVE json file, when a slim json would do. + * https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json + * + * + * API-Wildcards: + * Abrar tried to emulate dynamic versions which would be introduced into gradle far afterwords. + * Example: + * Input: 14.23.5.1 + * Output: 1.12.2-14.23.5.2811 + * Solution: + * Again, can be solved using maven-metadata.xml, use Apache's ArtifactVersion library to parse out a easy comparable version for everything in the metadata, and the version the user input. + * Set MinVersion = ArtifactVersion(input) + * prefix = input.substring(0, input.lastIndexOf('.')) + * MaxVersion = ArtifactVersion(prefix.rsplit('.', 1)[0] + '.' + (int(prefix.rsplit('.', 1)[1]) + 1)) + * + * Then find the max version that fits: MinVersion <= Version < MaxVersion + * + * Full Version: + * Example: + * Input: 1.12.2-14.23.5.2811 + * Output: 1.12.2-14.23.5.2811 + * + * This was just used to verify the version existed. This can be done via maven-metadata.xml + */ } - - private boolean isAllNums(String in) - { - for (char c : in.toCharArray()) - { - if (!Character.isDigit(c)) - return false; - } - - return true; - } - - private boolean getFromBuildNumber(String str) - { - return getFromBuildNumber(Integer.valueOf(str)); - } - - private boolean getFromBuildNumber(Integer num) - { - ForgeBuild build = this.forgeJson.number.get(num); - if (build != null) - { - version = build.mcversion.replace("_", "-"); - this.forgeVersion = build.version; - if (!Strings.isNullOrEmpty(build.branch) && !"null".equals(build.branch)) - this.forgeVersion += "-" + build.branch; - - return true; - } - else - return false; - } - /** * Get the coremod class for the mod * diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java index 4fcdfbc0d..808c75084 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java @@ -31,8 +31,6 @@ import org.gradle.api.tasks.bundling.Jar; import com.google.common.base.Strings; -import com.google.gson.JsonSyntaxException; - import net.minecraftforge.gradle.common.Constants; import net.minecraftforge.gradle.tasks.CreateStartTask; import net.minecraftforge.gradle.user.ReobfMappingType; @@ -41,10 +39,8 @@ import net.minecraftforge.gradle.user.UserConstants; import net.minecraftforge.gradle.user.patcherUser.PatcherUserBasePlugin; import net.minecraftforge.gradle.util.GradleConfigurationException; -import net.minecraftforge.gradle.util.json.JsonFactory; import net.minecraftforge.gradle.util.json.fgversion.FGVersion; import net.minecraftforge.gradle.util.json.fgversion.FGVersionWrapper; -import net.minecraftforge.gradle.util.json.forgeversion.ForgeVersion; public class ForgePlugin extends PatcherUserBasePlugin { @@ -52,9 +48,6 @@ public class ForgePlugin extends PatcherUserBasePlugin @Override protected void applyUserPlugin() { - // set the version info into the extension object - setForgeVersionJson(); - super.applyUserPlugin(); // setup reobf @@ -62,7 +55,7 @@ protected void applyUserPlugin() TaskSingleReobf reobf = (TaskSingleReobf) project.getTasks().getByName(TASK_REOBF); reobf.addPreTransformer(new McVersionTransformer(delayedString(REPLACE_MC_VERSION))); } - + // add coremod loading hack to gradle start { CreateStartTask makeStart = ((CreateStartTask)project.getTasks().getByName(UserConstants.TASK_MAKE_START)); @@ -72,7 +65,7 @@ protected void applyUserPlugin() } makeStart.addExtraLine("net.minecraftforge.gradle.GradleForgeHacks.searchCoremods(this);"); } - + // configure eclipse task to do extra stuff. project.getTasks().getByName("eclipse").doLast(new Action() { @@ -140,7 +133,7 @@ protected void afterEvaluate() // add manifest things { Jar jarTask = (Jar) project.getTasks().getByName("jar"); - + if (!Strings.isNullOrEmpty(ext.getCoreMod())) { jarTask.getManifest().getAttributes().put("FMLCorePlugin", ext.getCoreMod()); @@ -148,43 +141,23 @@ protected void afterEvaluate() } } - private void setForgeVersionJson() - { - File jsonCache = cacheFile("ForgeVersion.json"); - File etagFile = new File(jsonCache.getAbsolutePath() + ".etag"); - String url = Constants.URL_FORGE_MAVEN + "/net/minecraftforge/forge/json"; - - try - { - getExtension().forgeJson = JsonFactory.GSON.fromJson(getWithEtag(url, jsonCache, etagFile), ForgeVersion.class); - } - catch(NullPointerException e) - { - getExtension().forgeJson = null; - } - catch(JsonSyntaxException e) - { - getExtension().forgeJson = null; - } - } - @Override protected void onVersionCheck(FGVersion version, FGVersionWrapper wrapper) { String forgeVersion = getExtension().getForgeVersion(); - + // isolate build number int index = forgeVersion.indexOf('-'); if (index >= 0) forgeVersion = forgeVersion.substring(0, index); index = forgeVersion.lastIndexOf('.'); forgeVersion.substring(index + 1); - + int buildNum = Integer.parseInt(forgeVersion); - + int minBuild = version.ext.get("forgeMinBuild").getAsInt(); int maxBuild = version.ext.get("forgeMaxBuild").getAsInt(); - + if (buildNum < minBuild) throw new GradleConfigurationException("This version of ForgeGradle ("+getExtension().forgeGradleVersion+") does not support forge builds less than #"+minBuild); else if (buildNum > maxBuild) @@ -256,7 +229,7 @@ protected List getServerRunArgs(ForgeExtension ext) { return ext.getResolvedServerRunArgs(); } - + @Override protected List getClientJvmArgs(ForgeExtension ext) { diff --git a/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java b/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java index b200d0788..80a704101 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java @@ -39,8 +39,6 @@ import net.minecraftforge.gradle.util.json.LiteLoaderJson.VersionObject; import net.minecraftforge.gradle.util.json.fgversion.FGVersionDeserializer; import net.minecraftforge.gradle.util.json.fgversion.FGVersionWrapper; -import net.minecraftforge.gradle.util.json.forgeversion.ForgeArtifact; -import net.minecraftforge.gradle.util.json.forgeversion.ForgeArtifactAdapter; import net.minecraftforge.gradle.util.json.version.AssetIndex; import net.minecraftforge.gradle.util.json.version.ManifestVersion; import net.minecraftforge.gradle.util.json.version.Version; @@ -57,7 +55,6 @@ public class JsonFactory builder.registerTypeAdapter(Date.class, new DateAdapter()); builder.registerTypeAdapter(File.class, new FileAdapter()); builder.registerTypeAdapter(VersionObject.class, new LiteLoaderJson.VersionAdapter()); - builder.registerTypeAdapter(ForgeArtifact.class, new ForgeArtifactAdapter()); builder.registerTypeAdapter(FGVersionWrapper.class, new FGVersionDeserializer()); builder.registerTypeAdapter(FGVersionWrapper.class, new FGVersionDeserializer()); builder.registerTypeAdapter(new TypeToken>() {}.getType(), new MojangManifestAdapter()); diff --git a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifact.java b/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifact.java deleted file mode 100644 index 5a1974806..000000000 --- a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifact.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -package net.minecraftforge.gradle.util.json.forgeversion; - -public class ForgeArtifact -{ - public String ext, classifier, hash; -} diff --git a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifactAdapter.java b/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifactAdapter.java deleted file mode 100644 index cb4c8465d..000000000 --- a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeArtifactAdapter.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -package net.minecraftforge.gradle.util.json.forgeversion; - -import java.io.IOException; - -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; - -public class ForgeArtifactAdapter extends TypeAdapter -{ - - @Override - public void write(JsonWriter out, ForgeArtifact value) throws IOException - { - // dont really need to do this.. but wtvr... - out.beginArray(); - out.value(value.ext); - out.value(value.classifier); - out.value(value.hash); - out.endArray(); - } - - @Override - public ForgeArtifact read(JsonReader in) throws IOException - { - ForgeArtifact out = new ForgeArtifact(); - - in.beginArray(); - - out.ext = in.nextString(); - out.classifier = in.nextString(); - out.hash = in.nextString(); - - in.endArray(); - - return out; - } - -} diff --git a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeBuild.java b/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeBuild.java deleted file mode 100644 index 07fd30b32..000000000 --- a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeBuild.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -package net.minecraftforge.gradle.util.json.forgeversion; - -import java.util.List; - -public class ForgeBuild -{ - public String branch, mcversion, jobver, version; - public short build; - public double modified; - public List Files; -} diff --git a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeVersion.java b/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeVersion.java deleted file mode 100644 index 97d7328fc..000000000 --- a/src/main/java/net/minecraftforge/gradle/util/json/forgeversion/ForgeVersion.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -package net.minecraftforge.gradle.util.json.forgeversion; - -import java.util.List; -import java.util.Map; - -public class ForgeVersion -{ - public String adfly, artifact, homepage, name, webpath; - public Map> branches, mcversion; - public Map number; - public Map promos; -} diff --git a/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java b/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java index 33a882397..5c106baa5 100644 --- a/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java +++ b/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java @@ -72,10 +72,10 @@ public static void searchCoremods(GradleStartCommon common) { // no core searching GradleStartCommon.LOGGER.info("GradleStart coremod searching disabled!"); - + // remove it so it cant potentially screw up the bonced start class common.extras.remove(NO_CORE_SEARCH); - + return; } diff --git a/src/test/java/net/minecraftforge/gradle/versions/ExtensionForgeVersionTest.java b/src/test/java/net/minecraftforge/gradle/versions/ExtensionForgeVersionTest.java deleted file mode 100644 index 6f15be578..000000000 --- a/src/test/java/net/minecraftforge/gradle/versions/ExtensionForgeVersionTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - */ -package net.minecraftforge.gradle.versions; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import net.minecraftforge.gradle.user.patcherUser.forge.ForgeExtension; -import net.minecraftforge.gradle.user.patcherUser.forge.ForgePlugin; -import net.minecraftforge.gradle.util.GradleConfigurationException; - -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Before; -import org.junit.Test; - -import com.google.common.collect.ImmutableMap; - -public class ExtensionForgeVersionTest -{ - private Project testProject; - private ForgeExtension ext; - - @Before - public void setupProject() - { - this.testProject = ProjectBuilder.builder().build(); - assertNotNull(this.testProject); - this.testProject.apply(ImmutableMap.of("plugin", ForgePlugin.class)); - - this.ext = this.testProject.getExtensions().findByType(ForgeExtension.class); // unlike getByType(), does not throw exception - assertNotNull(this.ext); - this.ext.setSuppressVersionTest(true); - } - - // Invalid version notation! The following are valid notations. BuildNumber, version, version-branch, mcversion-version-branch, and pomotion (sic) - - @Test - public void testValidBuildNumber() - { - // buildnumber - this.ext.setVersion("965"); - assertEquals(this.ext.getVersion(), "1.6.4"); - assertEquals(this.ext.getForgeVersion(), "9.11.1.965"); - } - - @Test - public void testValidPromotion() - { - // promotion - this.ext.setVersion("1.6.4-recommended"); - assertEquals(this.ext.getVersion(), "1.6.4"); - assertEquals(this.ext.getForgeVersion(), "9.11.1.1345"); - } - - @Test - public void testValidBuildNumberNoBranch() - { - // buildnumber (no branch) - this.ext.setVersion("1256"); - assertEquals(this.ext.getVersion(), "1.7.10"); - assertEquals(this.ext.getForgeVersion(), "10.13.2.1256"); - } - - @Test - public void testValidBuildNumberWithBranch() - { - // buildnumber (with branch) - this.ext.setVersion("1257"); - assertEquals(this.ext.getVersion(), "1.8"); - assertEquals(this.ext.getForgeVersion(), "11.14.0.1257-1.8"); - } - - @Test - public void testValidVersion() - { - // version - this.ext.setVersion("10.13.2.1256"); - assertEquals(this.ext.getVersion(), "1.7.10"); - assertEquals(this.ext.getForgeVersion(), "10.13.2.1256"); - } - - @Test - public void testValidMcVersionWithVersion() - { - // mcversion-version - this.ext.setVersion("1.7.10-10.13.2.1256"); - assertEquals(this.ext.getVersion(), "1.7.10"); - assertEquals(this.ext.getForgeVersion(), "10.13.2.1256"); - } - - @Test - public void testValidVersionWithBranch() - { - // version-branch - this.ext.setVersion("11.14.0.1257-1.8"); - assertEquals(this.ext.getVersion(), "1.8"); - assertEquals(this.ext.getForgeVersion(), "11.14.0.1257-1.8"); - } - - @Test - public void testValidMcVersionWithVersionAndBranch() - { - // mcversion-version-branch - this.ext.setVersion("1.8-11.14.0.1257-1.8"); - assertEquals(this.ext.getVersion(), "1.8"); - assertEquals(this.ext.getForgeVersion(), "11.14.0.1257-1.8"); - } - - // Invalid formats - - @Test(expected = GradleConfigurationException.class) - public void testInvalidBuild() - { - // 1.8 build skipped due to 1.7.10 - this.ext.setVersion("11.14.0.1256-1.8"); - } - - @Test(expected = GradleConfigurationException.class) - public void testInvalidBuildWithMcVersion() - { - // 1.8 build skipped due to 1.7.10 (with MC version) - this.ext.setVersion("1.8-11.14.0.1256-1.8"); - } - - @Test(expected = GradleConfigurationException.class) - public void testInvalidMcVersion() - { - // invalid MC version - this.ext.setVersion("1.7.10-9.11.1.965"); - } - - @Test(expected = GradleConfigurationException.class) - public void testInvalidMcVersionWithBranch() - { - // invalid MC version (with branch) - this.ext.setVersion("1.7.10-11.14.0.1257-1.8"); - } - - @Test(expected = GradleConfigurationException.class) - public void testInvalidBranch() - { - // invalid branch - this.ext.setVersion("1.7.10-11.14.0.1256-1.8"); - } -} From e3e5ae406dde47ce40e8e402bc12f147ed3a8ed0 Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 15 Feb 2019 01:08:37 -0800 Subject: [PATCH 09/13] Update license header --- .../java/net/minecraftforge/gradle/common/BaseExtension.java | 2 +- src/main/java/net/minecraftforge/gradle/common/BasePlugin.java | 2 +- src/main/java/net/minecraftforge/gradle/common/Constants.java | 2 +- .../net/minecraftforge/gradle/patcher/PatcherConstants.java | 2 +- .../net/minecraftforge/gradle/patcher/PatcherExtension.java | 2 +- .../java/net/minecraftforge/gradle/patcher/PatcherPlugin.java | 2 +- .../java/net/minecraftforge/gradle/patcher/PatcherProject.java | 2 +- .../minecraftforge/gradle/patcher/PatcherProjectFactory.java | 2 +- .../net/minecraftforge/gradle/patcher/TaskCompressLZMA.java | 2 +- .../minecraftforge/gradle/patcher/TaskExtractExcModifiers.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskExtractNew.java | 2 +- .../net/minecraftforge/gradle/patcher/TaskGenBinPatches.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskGenIdeaRun.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskGenPatches.java | 2 +- .../net/minecraftforge/gradle/patcher/TaskGenSubprojects.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskMergeFiles.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskProcessJson.java | 2 +- .../java/net/minecraftforge/gradle/patcher/TaskReobfuscate.java | 2 +- .../net/minecraftforge/gradle/patcher/TaskSubprojectCall.java | 2 +- .../net/minecraftforge/gradle/tasks/AbstractEditJarTask.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/ApplyS2STask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/CreateStartTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/CrowdinDownload.java | 2 +- .../java/net/minecraftforge/gradle/tasks/DeobfuscateJar.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/Download.java | 2 +- .../net/minecraftforge/gradle/tasks/DownloadAssetsTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/EtagDownloadTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/ExtractConfigTask.java | 2 +- .../net/minecraftforge/gradle/tasks/ExtractS2SRangeTask.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/ExtractTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/GenEclipseRunTask.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/GenSrgs.java | 2 +- .../java/net/minecraftforge/gradle/tasks/JenkinsChangelog.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/MergeJars.java | 2 +- .../net/minecraftforge/gradle/tasks/ObtainFernFlowerTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/PatchSourcesTask.java | 2 +- .../java/net/minecraftforge/gradle/tasks/PostDecompileTask.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/RemapSources.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/SignJar.java | 2 +- src/main/java/net/minecraftforge/gradle/tasks/SplitJarTask.java | 2 +- .../minecraftforge/gradle/tasks/TaskExtractAnnotationsText.java | 2 +- .../gradle/tasks/fernflower/AdvancedJadRenamer.java | 2 +- .../gradle/tasks/fernflower/AdvancedJadRenamerFactory.java | 2 +- .../gradle/tasks/fernflower/ApplyFernFlowerTask.java | 2 +- .../minecraftforge/gradle/tasks/fernflower/ArtifactSaver.java | 2 +- .../gradle/tasks/fernflower/ByteCodeProvider.java | 2 +- .../gradle/tasks/fernflower/FernFlowerInvoker.java | 2 +- .../gradle/tasks/fernflower/FernFlowerSettings.java | 2 +- src/main/java/net/minecraftforge/gradle/user/IReobfuscator.java | 2 +- .../java/net/minecraftforge/gradle/user/ReobfMappingType.java | 2 +- .../java/net/minecraftforge/gradle/user/ReobfTaskFactory.java | 2 +- .../java/net/minecraftforge/gradle/user/ReobfTransformer.java | 2 +- src/main/java/net/minecraftforge/gradle/user/TaskDepDummy.java | 2 +- .../net/minecraftforge/gradle/user/TaskExtractAnnotations.java | 2 +- .../java/net/minecraftforge/gradle/user/TaskExtractDepAts.java | 2 +- .../java/net/minecraftforge/gradle/user/TaskRecompileMc.java | 2 +- .../java/net/minecraftforge/gradle/user/TaskSingleDeobfBin.java | 2 +- .../java/net/minecraftforge/gradle/user/TaskSingleReobf.java | 2 +- .../java/net/minecraftforge/gradle/user/TaskSourceCopy.java | 2 +- .../java/net/minecraftforge/gradle/user/UserBaseExtension.java | 2 +- .../java/net/minecraftforge/gradle/user/UserBasePlugin.java | 2 +- src/main/java/net/minecraftforge/gradle/user/UserConstants.java | 2 +- .../net/minecraftforge/gradle/user/UserVanillaBasePlugin.java | 2 +- .../net/minecraftforge/gradle/user/liteloader/LiteModJson.java | 2 +- .../net/minecraftforge/gradle/user/liteloader/LiteModTask.java | 2 +- .../gradle/user/liteloader/LiteloaderExtension.java | 2 +- .../minecraftforge/gradle/user/liteloader/LiteloaderPlugin.java | 2 +- .../gradle/user/patcherUser/PatcherUserBasePlugin.java | 2 +- .../gradle/user/patcherUser/PatcherUserConstants.java | 2 +- .../gradle/user/patcherUser/TaskApplyBinPatches.java | 2 +- .../gradle/user/patcherUser/forge/ForgeExtension.java | 2 +- .../gradle/user/patcherUser/forge/ForgePlugin.java | 2 +- .../gradle/user/patcherUser/forge/McVersionTransformer.java | 2 +- .../user/patcherUser/generic/GenericPatcherUserExtension.java | 2 +- .../user/patcherUser/generic/GenericPatcherUserPlugin.java | 2 +- .../net/minecraftforge/gradle/user/tweakers/ClientTweaker.java | 2 +- .../net/minecraftforge/gradle/user/tweakers/ServerTweaker.java | 2 +- .../minecraftforge/gradle/user/tweakers/TweakerExtension.java | 2 +- .../net/minecraftforge/gradle/user/tweakers/TweakerPlugin.java | 2 +- .../java/net/minecraftforge/gradle/util/AnnotationUtils.java | 2 +- src/main/java/net/minecraftforge/gradle/util/CopyInto.java | 2 +- .../java/net/minecraftforge/gradle/util/ExtractionVisitor.java | 2 +- .../java/net/minecraftforge/gradle/util/FileLogListenner.java | 2 +- .../gradle/util/GradleConfigurationException.java | 2 +- .../java/net/minecraftforge/gradle/util/MultiDirSupplier.java | 2 +- .../net/minecraftforge/gradle/util/PredefInputSupplier.java | 2 +- .../net/minecraftforge/gradle/util/SequencedInputSupplier.java | 2 +- .../net/minecraftforge/gradle/util/SourceDirSetSupplier.java | 2 +- src/main/java/net/minecraftforge/gradle/util/ThrowableUtil.java | 2 +- .../java/net/minecraftforge/gradle/util/caching/Annotated.java | 2 +- .../net/minecraftforge/gradle/util/caching/CacheCheckSpec.java | 2 +- .../net/minecraftforge/gradle/util/caching/CacheContainer.java | 2 +- .../java/net/minecraftforge/gradle/util/caching/CacheUtil.java | 2 +- .../java/net/minecraftforge/gradle/util/caching/Cached.java | 2 +- .../java/net/minecraftforge/gradle/util/caching/CachedTask.java | 2 +- .../net/minecraftforge/gradle/util/caching/ICachableTask.java | 2 +- .../minecraftforge/gradle/util/caching/WriteCacheAction.java | 2 +- .../net/minecraftforge/gradle/util/delayed/DelayedBase.java | 2 +- .../net/minecraftforge/gradle/util/delayed/DelayedFile.java | 2 +- .../net/minecraftforge/gradle/util/delayed/DelayedFileTree.java | 2 +- .../net/minecraftforge/gradle/util/delayed/DelayedString.java | 2 +- .../minecraftforge/gradle/util/delayed/ReplacementProvider.java | 2 +- .../net/minecraftforge/gradle/util/delayed/TokenReplacer.java | 2 +- .../java/net/minecraftforge/gradle/util/json/DateAdapter.java | 2 +- .../net/minecraftforge/gradle/util/json/EnumAdaptorFactory.java | 2 +- .../java/net/minecraftforge/gradle/util/json/FileAdapter.java | 2 +- .../net/minecraftforge/gradle/util/json/GLConstantGroup.java | 2 +- .../java/net/minecraftforge/gradle/util/json/JsonFactory.java | 2 +- .../net/minecraftforge/gradle/util/json/LiteLoaderJson.java | 2 +- .../net/minecraftforge/gradle/util/json/MCInjectorStruct.java | 2 +- .../minecraftforge/gradle/util/json/MojangManifestAdapter.java | 2 +- .../net/minecraftforge/gradle/util/json/curse/CurseDep.java | 2 +- .../net/minecraftforge/gradle/util/json/curse/CurseError.java | 2 +- .../minecraftforge/gradle/util/json/curse/CurseMetadata.java | 2 +- .../gradle/util/json/curse/CurseMetadataChild.java | 2 +- .../minecraftforge/gradle/util/json/curse/CurseProjectDep.java | 2 +- .../minecraftforge/gradle/util/json/curse/CurseRelations.java | 2 +- .../net/minecraftforge/gradle/util/json/curse/CurseReply.java | 2 +- .../net/minecraftforge/gradle/util/json/curse/CurseVersion.java | 2 +- .../gradle/util/json/fgversion/FGBuildStatus.java | 2 +- .../minecraftforge/gradle/util/json/fgversion/FGVersion.java | 2 +- .../gradle/util/json/fgversion/FGVersionDeserializer.java | 2 +- .../gradle/util/json/fgversion/FGVersionWrapper.java | 2 +- src/main/java/net/minecraftforge/gradle/util/mcp/FFPatcher.java | 2 +- .../java/net/minecraftforge/gradle/util/mcp/FmlCleanup.java | 2 +- .../net/minecraftforge/gradle/util/mcp/GLConstantFixer.java | 2 +- .../java/net/minecraftforge/gradle/util/mcp/JavadocAdder.java | 2 +- .../java/net/minecraftforge/gradle/util/mcp/McpCleanup.java | 2 +- .../java/net/minecraftforge/gradle/util/mcp/ReobfExceptor.java | 2 +- .../net/minecraftforge/gradle/util/patching/BinPatches.java | 2 +- .../resources/net/minecraftforge/gradle/GradleForgeHacks.java | 2 +- .../resources/net/minecraftforge/gradle/GradleStartCommon.java | 2 +- .../gradle/tweakers/AccessTransformerTweaker.java | 2 +- .../net/minecraftforge/gradle/tweakers/CoremodTweaker.java | 2 +- .../java/net/minecraftforge/gradle/common/TestConstants.java | 2 +- .../gradle/patcher/TestTaskExtractExcModifiers.java | 2 +- .../net/minecraftforge/gradle/patcher/TestTaskExtractNew.java | 2 +- .../minecraftforge/gradle/tasks/TestAbstractEditJarTask.java | 2 +- .../net/minecraftforge/gradle/tasks/TestDeobfuscateJar.java | 2 +- src/test/java/net/minecraftforge/gradle/tasks/TestGenSrgs.java | 2 +- .../java/net/minecraftforge/gradle/tasks/TestMergeJars.java | 2 +- .../gradle/tasks/fernflower/TestArtifactSaver.java | 2 +- .../net/minecraftforge/gradle/testsupport/JarComparison.java | 2 +- .../java/net/minecraftforge/gradle/testsupport/TaskTest.java | 2 +- .../net/minecraftforge/gradle/testsupport/TestResource.java | 2 +- .../minecraftforge/gradle/testsupport/UsesTemporaryFiles.java | 2 +- .../java/net/minecraftforge/gradle/user/TestTaskDepDummy.java | 2 +- .../net/minecraftforge/gradle/user/TestTaskExtractDepAts.java | 2 +- .../net/minecraftforge/gradle/user/TestTaskRecompileMc.java | 2 +- .../net/minecraftforge/gradle/user/TestTaskSingleDeobfBin.java | 2 +- .../net/minecraftforge/gradle/user/TestTaskSingleReobf.java | 2 +- .../gradle/user/patcherUser/TaskApplyBinPatchesTest.java | 2 +- .../net/minecraftforge/gradle/util/MultiDirSupplierTest.java | 2 +- .../java/net/minecraftforge/gradle/util/mcp/FmlCleanupTest.java | 2 +- .../net/minecraftforge/gradle/util/mcp/JavadocInserterTest.java | 2 +- .../net/minecraftforge/gradle/util/mcp/StripCommentsTest.java | 2 +- .../gradle/versions/ExtensionLiteLoaderVersionTest.java | 2 +- .../minecraftforge/gradle/versions/ExtensionMcpMappingTest.java | 2 +- 158 files changed, 158 insertions(+), 158 deletions(-) diff --git a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java index 644aa4317..4ca45892b 100644 --- a/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java +++ b/src/main/java/net/minecraftforge/gradle/common/BaseExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java b/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java index eb7eed238..e9835bfc4 100644 --- a/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/common/BasePlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/common/Constants.java b/src/main/java/net/minecraftforge/gradle/common/Constants.java index cf88e70d7..cd3f6ed1a 100644 --- a/src/main/java/net/minecraftforge/gradle/common/Constants.java +++ b/src/main/java/net/minecraftforge/gradle/common/Constants.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java index 5860837eb..1ac08445f 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherConstants.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherExtension.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherExtension.java index 64818ad10..b0ea3ab30 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherExtension.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java index a87107d75..0bbfed3ed 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherProject.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherProject.java index dd8dbc4fe..5ccde3280 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherProject.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherProject.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/PatcherProjectFactory.java b/src/main/java/net/minecraftforge/gradle/patcher/PatcherProjectFactory.java index d93baf9d6..f30f74b63 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/PatcherProjectFactory.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/PatcherProjectFactory.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskCompressLZMA.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskCompressLZMA.java index 5dd450c19..5e6177566 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskCompressLZMA.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskCompressLZMA.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractExcModifiers.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractExcModifiers.java index eeb441360..211f1c26e 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractExcModifiers.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractExcModifiers.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractNew.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractNew.java index a9bc5f2ad..0542cb611 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractNew.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskExtractNew.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenBinPatches.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenBinPatches.java index 0c9f28df2..6093d7e23 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenBinPatches.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenBinPatches.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenIdeaRun.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenIdeaRun.java index f4a6d4683..d53b48833 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenIdeaRun.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenIdeaRun.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenPatches.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenPatches.java index e77e1838e..46aba1e33 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenPatches.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenPatches.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenSubprojects.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenSubprojects.java index cf16e473a..89c076d27 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskGenSubprojects.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskGenSubprojects.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskMergeFiles.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskMergeFiles.java index 814601fda..69a42cb16 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskMergeFiles.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskMergeFiles.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskProcessJson.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskProcessJson.java index 0ddc2eef1..b5950158d 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskProcessJson.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskProcessJson.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskReobfuscate.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskReobfuscate.java index c379565ba..49df1c38b 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskReobfuscate.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskReobfuscate.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/patcher/TaskSubprojectCall.java b/src/main/java/net/minecraftforge/gradle/patcher/TaskSubprojectCall.java index a35b39614..1accb4a46 100644 --- a/src/main/java/net/minecraftforge/gradle/patcher/TaskSubprojectCall.java +++ b/src/main/java/net/minecraftforge/gradle/patcher/TaskSubprojectCall.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/AbstractEditJarTask.java b/src/main/java/net/minecraftforge/gradle/tasks/AbstractEditJarTask.java index 6cb6d0ff3..2af6d6cf8 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/AbstractEditJarTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/AbstractEditJarTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/ApplyS2STask.java b/src/main/java/net/minecraftforge/gradle/tasks/ApplyS2STask.java index faa0a1f33..1164a0d77 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/ApplyS2STask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/ApplyS2STask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/CreateStartTask.java b/src/main/java/net/minecraftforge/gradle/tasks/CreateStartTask.java index b54854a9e..d5845084f 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/CreateStartTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/CreateStartTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/CrowdinDownload.java b/src/main/java/net/minecraftforge/gradle/tasks/CrowdinDownload.java index 439cd5e35..4116d9442 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/CrowdinDownload.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/CrowdinDownload.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/DeobfuscateJar.java b/src/main/java/net/minecraftforge/gradle/tasks/DeobfuscateJar.java index 2f6bdde1c..1f87c8bf4 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/DeobfuscateJar.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/DeobfuscateJar.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/Download.java b/src/main/java/net/minecraftforge/gradle/tasks/Download.java index 03ee4b4bf..8080c1504 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/Download.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/Download.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/DownloadAssetsTask.java b/src/main/java/net/minecraftforge/gradle/tasks/DownloadAssetsTask.java index d99ae7c25..1bdc35cef 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/DownloadAssetsTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/DownloadAssetsTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/EtagDownloadTask.java b/src/main/java/net/minecraftforge/gradle/tasks/EtagDownloadTask.java index bcb4825ec..0317bb84a 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/EtagDownloadTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/EtagDownloadTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/ExtractConfigTask.java b/src/main/java/net/minecraftforge/gradle/tasks/ExtractConfigTask.java index 71badd526..fa21d776d 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/ExtractConfigTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/ExtractConfigTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/ExtractS2SRangeTask.java b/src/main/java/net/minecraftforge/gradle/tasks/ExtractS2SRangeTask.java index c6db43134..6025908aa 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/ExtractS2SRangeTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/ExtractS2SRangeTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/ExtractTask.java b/src/main/java/net/minecraftforge/gradle/tasks/ExtractTask.java index 5ce02c7e7..ea000ad46 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/ExtractTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/ExtractTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/GenEclipseRunTask.java b/src/main/java/net/minecraftforge/gradle/tasks/GenEclipseRunTask.java index 8f966efd2..01f2bd321 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/GenEclipseRunTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/GenEclipseRunTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/GenSrgs.java b/src/main/java/net/minecraftforge/gradle/tasks/GenSrgs.java index 8fac112de..ecc9b4c7b 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/GenSrgs.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/GenSrgs.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/JenkinsChangelog.java b/src/main/java/net/minecraftforge/gradle/tasks/JenkinsChangelog.java index b876863d2..db8440698 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/JenkinsChangelog.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/JenkinsChangelog.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/MergeJars.java b/src/main/java/net/minecraftforge/gradle/tasks/MergeJars.java index 7dba23b45..daf0fb9a7 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/MergeJars.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/MergeJars.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/ObtainFernFlowerTask.java b/src/main/java/net/minecraftforge/gradle/tasks/ObtainFernFlowerTask.java index 49e215c46..cafa4ea2a 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/ObtainFernFlowerTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/ObtainFernFlowerTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/PatchSourcesTask.java b/src/main/java/net/minecraftforge/gradle/tasks/PatchSourcesTask.java index d7e4cae20..9509d852e 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/PatchSourcesTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/PatchSourcesTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/PostDecompileTask.java b/src/main/java/net/minecraftforge/gradle/tasks/PostDecompileTask.java index 876773f79..5dabc13dc 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/PostDecompileTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/PostDecompileTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/RemapSources.java b/src/main/java/net/minecraftforge/gradle/tasks/RemapSources.java index 740834c92..884bd761e 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/RemapSources.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/RemapSources.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/SignJar.java b/src/main/java/net/minecraftforge/gradle/tasks/SignJar.java index 258ad584f..82a51e330 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/SignJar.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/SignJar.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/SplitJarTask.java b/src/main/java/net/minecraftforge/gradle/tasks/SplitJarTask.java index 37999a6e4..cc08e8015 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/SplitJarTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/SplitJarTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/TaskExtractAnnotationsText.java b/src/main/java/net/minecraftforge/gradle/tasks/TaskExtractAnnotationsText.java index 357b1a1f9..ee4d5e31b 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/TaskExtractAnnotationsText.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/TaskExtractAnnotationsText.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamer.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamer.java index 5f33ce09f..c518d2552 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamer.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamerFactory.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamerFactory.java index 04d3e500a..b2b85e091 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamerFactory.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/AdvancedJadRenamerFactory.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ApplyFernFlowerTask.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ApplyFernFlowerTask.java index bbb8365d1..ff0f5e7c2 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ApplyFernFlowerTask.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ApplyFernFlowerTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ArtifactSaver.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ArtifactSaver.java index df3538b6e..c5a02d076 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ArtifactSaver.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ArtifactSaver.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ByteCodeProvider.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ByteCodeProvider.java index 7e61e0b4c..9720bb488 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ByteCodeProvider.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/ByteCodeProvider.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerInvoker.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerInvoker.java index 626bad8c2..ae9e1f946 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerInvoker.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerInvoker.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerSettings.java b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerSettings.java index 9dd039356..ee5b38900 100644 --- a/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerSettings.java +++ b/src/main/java/net/minecraftforge/gradle/tasks/fernflower/FernFlowerSettings.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/IReobfuscator.java b/src/main/java/net/minecraftforge/gradle/user/IReobfuscator.java index 49b16388a..a0adf3495 100644 --- a/src/main/java/net/minecraftforge/gradle/user/IReobfuscator.java +++ b/src/main/java/net/minecraftforge/gradle/user/IReobfuscator.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/ReobfMappingType.java b/src/main/java/net/minecraftforge/gradle/user/ReobfMappingType.java index 1dd330404..15e492744 100644 --- a/src/main/java/net/minecraftforge/gradle/user/ReobfMappingType.java +++ b/src/main/java/net/minecraftforge/gradle/user/ReobfMappingType.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/ReobfTaskFactory.java b/src/main/java/net/minecraftforge/gradle/user/ReobfTaskFactory.java index f63990687..c238ff472 100644 --- a/src/main/java/net/minecraftforge/gradle/user/ReobfTaskFactory.java +++ b/src/main/java/net/minecraftforge/gradle/user/ReobfTaskFactory.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/ReobfTransformer.java b/src/main/java/net/minecraftforge/gradle/user/ReobfTransformer.java index 9ab31e4f4..b234a0e17 100644 --- a/src/main/java/net/minecraftforge/gradle/user/ReobfTransformer.java +++ b/src/main/java/net/minecraftforge/gradle/user/ReobfTransformer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskDepDummy.java b/src/main/java/net/minecraftforge/gradle/user/TaskDepDummy.java index 177121dfa..69f8b4d1b 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskDepDummy.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskDepDummy.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskExtractAnnotations.java b/src/main/java/net/minecraftforge/gradle/user/TaskExtractAnnotations.java index bee670776..4c8bb5373 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskExtractAnnotations.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskExtractAnnotations.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskExtractDepAts.java b/src/main/java/net/minecraftforge/gradle/user/TaskExtractDepAts.java index 63aa4652d..9855ef94f 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskExtractDepAts.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskExtractDepAts.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskRecompileMc.java b/src/main/java/net/minecraftforge/gradle/user/TaskRecompileMc.java index 1397b80e5..dd53534f7 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskRecompileMc.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskRecompileMc.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskSingleDeobfBin.java b/src/main/java/net/minecraftforge/gradle/user/TaskSingleDeobfBin.java index ade943278..e0952afca 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskSingleDeobfBin.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskSingleDeobfBin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskSingleReobf.java b/src/main/java/net/minecraftforge/gradle/user/TaskSingleReobf.java index ca5182b84..ee24ba491 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskSingleReobf.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskSingleReobf.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/TaskSourceCopy.java b/src/main/java/net/minecraftforge/gradle/user/TaskSourceCopy.java index 6a317aa28..59456f997 100644 --- a/src/main/java/net/minecraftforge/gradle/user/TaskSourceCopy.java +++ b/src/main/java/net/minecraftforge/gradle/user/TaskSourceCopy.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/UserBaseExtension.java b/src/main/java/net/minecraftforge/gradle/user/UserBaseExtension.java index aaa0a73fd..16ad15864 100644 --- a/src/main/java/net/minecraftforge/gradle/user/UserBaseExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/UserBaseExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java b/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java index 0820fad9b..40a3af18d 100644 --- a/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/UserConstants.java b/src/main/java/net/minecraftforge/gradle/user/UserConstants.java index abb3d5477..c848c5268 100644 --- a/src/main/java/net/minecraftforge/gradle/user/UserConstants.java +++ b/src/main/java/net/minecraftforge/gradle/user/UserConstants.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/UserVanillaBasePlugin.java b/src/main/java/net/minecraftforge/gradle/user/UserVanillaBasePlugin.java index e8fcb189c..d033e9354 100644 --- a/src/main/java/net/minecraftforge/gradle/user/UserVanillaBasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/UserVanillaBasePlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModJson.java b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModJson.java index bc68e53d4..d103999c0 100644 --- a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModJson.java +++ b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModJson.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModTask.java b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModTask.java index e1b410a8f..088d555de 100644 --- a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModTask.java +++ b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteModTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderExtension.java b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderExtension.java index c7fdbc0e3..1317735d8 100644 --- a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderPlugin.java b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderPlugin.java index 872028234..afcb44670 100644 --- a/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderPlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/liteloader/LiteloaderPlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserBasePlugin.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserBasePlugin.java index 083935123..34a9cc1ec 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserBasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserBasePlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserConstants.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserConstants.java index c0ab4ca00..4c8b58dad 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserConstants.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/PatcherUserConstants.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatches.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatches.java index f429ba833..219a7c517 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatches.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatches.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java index bb37b1525..6d64e6223 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgeExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java index 808c75084..a5af29d5c 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/ForgePlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/McVersionTransformer.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/McVersionTransformer.java index b66c6712e..8d83aaf7d 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/McVersionTransformer.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/forge/McVersionTransformer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserExtension.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserExtension.java index 156a0f72e..7ef8f263b 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserPlugin.java b/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserPlugin.java index 384de097f..9e05d6a12 100644 --- a/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserPlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/patcherUser/generic/GenericPatcherUserPlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/tweakers/ClientTweaker.java b/src/main/java/net/minecraftforge/gradle/user/tweakers/ClientTweaker.java index 7fbe4af61..4c43271a4 100644 --- a/src/main/java/net/minecraftforge/gradle/user/tweakers/ClientTweaker.java +++ b/src/main/java/net/minecraftforge/gradle/user/tweakers/ClientTweaker.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/tweakers/ServerTweaker.java b/src/main/java/net/minecraftforge/gradle/user/tweakers/ServerTweaker.java index 589087321..43e6a6ed7 100644 --- a/src/main/java/net/minecraftforge/gradle/user/tweakers/ServerTweaker.java +++ b/src/main/java/net/minecraftforge/gradle/user/tweakers/ServerTweaker.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerExtension.java b/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerExtension.java index e2c759687..4ba02478e 100644 --- a/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerExtension.java +++ b/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerExtension.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerPlugin.java b/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerPlugin.java index ed66928cd..bf9d6b3e9 100644 --- a/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerPlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/tweakers/TweakerPlugin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/AnnotationUtils.java b/src/main/java/net/minecraftforge/gradle/util/AnnotationUtils.java index e7a4c2bfd..a183ec877 100644 --- a/src/main/java/net/minecraftforge/gradle/util/AnnotationUtils.java +++ b/src/main/java/net/minecraftforge/gradle/util/AnnotationUtils.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/CopyInto.java b/src/main/java/net/minecraftforge/gradle/util/CopyInto.java index 28456e874..df22a915b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/CopyInto.java +++ b/src/main/java/net/minecraftforge/gradle/util/CopyInto.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/ExtractionVisitor.java b/src/main/java/net/minecraftforge/gradle/util/ExtractionVisitor.java index a2a8b26f9..4d2c57bc6 100644 --- a/src/main/java/net/minecraftforge/gradle/util/ExtractionVisitor.java +++ b/src/main/java/net/minecraftforge/gradle/util/ExtractionVisitor.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/FileLogListenner.java b/src/main/java/net/minecraftforge/gradle/util/FileLogListenner.java index 6bdf55a6c..5155683da 100644 --- a/src/main/java/net/minecraftforge/gradle/util/FileLogListenner.java +++ b/src/main/java/net/minecraftforge/gradle/util/FileLogListenner.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/GradleConfigurationException.java b/src/main/java/net/minecraftforge/gradle/util/GradleConfigurationException.java index 88fae32cf..f4c2a72a1 100644 --- a/src/main/java/net/minecraftforge/gradle/util/GradleConfigurationException.java +++ b/src/main/java/net/minecraftforge/gradle/util/GradleConfigurationException.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/MultiDirSupplier.java b/src/main/java/net/minecraftforge/gradle/util/MultiDirSupplier.java index 81d3f0b3d..981bf52eb 100644 --- a/src/main/java/net/minecraftforge/gradle/util/MultiDirSupplier.java +++ b/src/main/java/net/minecraftforge/gradle/util/MultiDirSupplier.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/PredefInputSupplier.java b/src/main/java/net/minecraftforge/gradle/util/PredefInputSupplier.java index e4553f9c0..5fed82b75 100644 --- a/src/main/java/net/minecraftforge/gradle/util/PredefInputSupplier.java +++ b/src/main/java/net/minecraftforge/gradle/util/PredefInputSupplier.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/SequencedInputSupplier.java b/src/main/java/net/minecraftforge/gradle/util/SequencedInputSupplier.java index 35eaca136..fe5838529 100644 --- a/src/main/java/net/minecraftforge/gradle/util/SequencedInputSupplier.java +++ b/src/main/java/net/minecraftforge/gradle/util/SequencedInputSupplier.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/SourceDirSetSupplier.java b/src/main/java/net/minecraftforge/gradle/util/SourceDirSetSupplier.java index fffdd25b6..c9725fb30 100644 --- a/src/main/java/net/minecraftforge/gradle/util/SourceDirSetSupplier.java +++ b/src/main/java/net/minecraftforge/gradle/util/SourceDirSetSupplier.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/ThrowableUtil.java b/src/main/java/net/minecraftforge/gradle/util/ThrowableUtil.java index 772b3f55c..59e44113a 100644 --- a/src/main/java/net/minecraftforge/gradle/util/ThrowableUtil.java +++ b/src/main/java/net/minecraftforge/gradle/util/ThrowableUtil.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/Annotated.java b/src/main/java/net/minecraftforge/gradle/util/caching/Annotated.java index 7969c960c..041d79b42 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/Annotated.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/Annotated.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/CacheCheckSpec.java b/src/main/java/net/minecraftforge/gradle/util/caching/CacheCheckSpec.java index bbec8b520..ed9321e3f 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/CacheCheckSpec.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/CacheCheckSpec.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/CacheContainer.java b/src/main/java/net/minecraftforge/gradle/util/caching/CacheContainer.java index e7c0435bd..399fe8ac2 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/CacheContainer.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/CacheContainer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/CacheUtil.java b/src/main/java/net/minecraftforge/gradle/util/caching/CacheUtil.java index 13ce36ff6..13e056f04 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/CacheUtil.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/CacheUtil.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/Cached.java b/src/main/java/net/minecraftforge/gradle/util/caching/Cached.java index a977ce0d4..085511009 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/Cached.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/Cached.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/CachedTask.java b/src/main/java/net/minecraftforge/gradle/util/caching/CachedTask.java index 7ee271576..7789d1704 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/CachedTask.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/CachedTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/ICachableTask.java b/src/main/java/net/minecraftforge/gradle/util/caching/ICachableTask.java index ec98b0b8b..6e696d2b4 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/ICachableTask.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/ICachableTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/caching/WriteCacheAction.java b/src/main/java/net/minecraftforge/gradle/util/caching/WriteCacheAction.java index f839284a6..16848a09b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/caching/WriteCacheAction.java +++ b/src/main/java/net/minecraftforge/gradle/util/caching/WriteCacheAction.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedBase.java b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedBase.java index db7270ebd..c00ced3e5 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedBase.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedBase.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFile.java b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFile.java index 7d3247f56..23732d2c9 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFile.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFile.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFileTree.java b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFileTree.java index b7b6cf085..438b752c4 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFileTree.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedFileTree.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedString.java b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedString.java index 6905aae9d..a0eea7d45 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedString.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/DelayedString.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/ReplacementProvider.java b/src/main/java/net/minecraftforge/gradle/util/delayed/ReplacementProvider.java index b6f8c3265..553d79b2b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/ReplacementProvider.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/ReplacementProvider.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/delayed/TokenReplacer.java b/src/main/java/net/minecraftforge/gradle/util/delayed/TokenReplacer.java index 75977cb6f..7ecb6b14d 100644 --- a/src/main/java/net/minecraftforge/gradle/util/delayed/TokenReplacer.java +++ b/src/main/java/net/minecraftforge/gradle/util/delayed/TokenReplacer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/DateAdapter.java b/src/main/java/net/minecraftforge/gradle/util/json/DateAdapter.java index 15501649a..dd4d8a3c9 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/DateAdapter.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/DateAdapter.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/EnumAdaptorFactory.java b/src/main/java/net/minecraftforge/gradle/util/json/EnumAdaptorFactory.java index 04682fda7..b0fa96f6b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/EnumAdaptorFactory.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/EnumAdaptorFactory.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/FileAdapter.java b/src/main/java/net/minecraftforge/gradle/util/json/FileAdapter.java index 89f76da6e..908b7380b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/FileAdapter.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/FileAdapter.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/GLConstantGroup.java b/src/main/java/net/minecraftforge/gradle/util/json/GLConstantGroup.java index 00242d0c6..1920ef37e 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/GLConstantGroup.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/GLConstantGroup.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java b/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java index 80a704101..71125d251 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/JsonFactory.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/LiteLoaderJson.java b/src/main/java/net/minecraftforge/gradle/util/json/LiteLoaderJson.java index 249d295d3..6bdf4c78d 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/LiteLoaderJson.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/LiteLoaderJson.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/MCInjectorStruct.java b/src/main/java/net/minecraftforge/gradle/util/json/MCInjectorStruct.java index 8bef8283b..d0e660680 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/MCInjectorStruct.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/MCInjectorStruct.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/MojangManifestAdapter.java b/src/main/java/net/minecraftforge/gradle/util/json/MojangManifestAdapter.java index bc90aa621..f28938cc7 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/MojangManifestAdapter.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/MojangManifestAdapter.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseDep.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseDep.java index 6801419d4..4b5150326 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseDep.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseDep.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseError.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseError.java index 223501b73..8535b7025 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseError.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseError.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadata.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadata.java index 42763f4fe..5ee2f0d23 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadata.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadata.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadataChild.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadataChild.java index 0f38e5515..1026dc063 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadataChild.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseMetadataChild.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseProjectDep.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseProjectDep.java index 8c94b164c..f5ee9ab9e 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseProjectDep.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseProjectDep.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseRelations.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseRelations.java index f436b7c58..e6d55bea0 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseRelations.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseRelations.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseReply.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseReply.java index 5530a18bc..581281caf 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseReply.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseReply.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseVersion.java b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseVersion.java index 5c2b03350..93cfb2490 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseVersion.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/curse/CurseVersion.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGBuildStatus.java b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGBuildStatus.java index 7485c1be0..b9b3709de 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGBuildStatus.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGBuildStatus.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersion.java b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersion.java index 9886b080c..92a856c8b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersion.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersion.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionDeserializer.java b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionDeserializer.java index 20e157cf0..c03b81dc6 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionDeserializer.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionDeserializer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionWrapper.java b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionWrapper.java index b83cff820..b3a60cfbb 100644 --- a/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionWrapper.java +++ b/src/main/java/net/minecraftforge/gradle/util/json/fgversion/FGVersionWrapper.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/FFPatcher.java b/src/main/java/net/minecraftforge/gradle/util/mcp/FFPatcher.java index a05de5af7..bce2f2f41 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/FFPatcher.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/FFPatcher.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/FmlCleanup.java b/src/main/java/net/minecraftforge/gradle/util/mcp/FmlCleanup.java index 87bfec19d..ad985e5d1 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/FmlCleanup.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/FmlCleanup.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/GLConstantFixer.java b/src/main/java/net/minecraftforge/gradle/util/mcp/GLConstantFixer.java index b7d393d98..3f06afe6f 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/GLConstantFixer.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/GLConstantFixer.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/JavadocAdder.java b/src/main/java/net/minecraftforge/gradle/util/mcp/JavadocAdder.java index 63e757e1a..15ca2001c 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/JavadocAdder.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/JavadocAdder.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/McpCleanup.java b/src/main/java/net/minecraftforge/gradle/util/mcp/McpCleanup.java index 75534b756..f0af6e3b2 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/McpCleanup.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/McpCleanup.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/mcp/ReobfExceptor.java b/src/main/java/net/minecraftforge/gradle/util/mcp/ReobfExceptor.java index de57b2165..de5cf5b67 100644 --- a/src/main/java/net/minecraftforge/gradle/util/mcp/ReobfExceptor.java +++ b/src/main/java/net/minecraftforge/gradle/util/mcp/ReobfExceptor.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/java/net/minecraftforge/gradle/util/patching/BinPatches.java b/src/main/java/net/minecraftforge/gradle/util/patching/BinPatches.java index 16b8fcd80..d7e61f18b 100644 --- a/src/main/java/net/minecraftforge/gradle/util/patching/BinPatches.java +++ b/src/main/java/net/minecraftforge/gradle/util/patching/BinPatches.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java b/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java index 5c106baa5..77b29fda7 100644 --- a/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java +++ b/src/main/resources/net/minecraftforge/gradle/GradleForgeHacks.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/resources/net/minecraftforge/gradle/GradleStartCommon.java b/src/main/resources/net/minecraftforge/gradle/GradleStartCommon.java index 46231e99c..034996f57 100644 --- a/src/main/resources/net/minecraftforge/gradle/GradleStartCommon.java +++ b/src/main/resources/net/minecraftforge/gradle/GradleStartCommon.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/resources/net/minecraftforge/gradle/tweakers/AccessTransformerTweaker.java b/src/main/resources/net/minecraftforge/gradle/tweakers/AccessTransformerTweaker.java index ab03c372c..f20fc8c27 100644 --- a/src/main/resources/net/minecraftforge/gradle/tweakers/AccessTransformerTweaker.java +++ b/src/main/resources/net/minecraftforge/gradle/tweakers/AccessTransformerTweaker.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/main/resources/net/minecraftforge/gradle/tweakers/CoremodTweaker.java b/src/main/resources/net/minecraftforge/gradle/tweakers/CoremodTweaker.java index 4c567a737..23e4b424b 100644 --- a/src/main/resources/net/minecraftforge/gradle/tweakers/CoremodTweaker.java +++ b/src/main/resources/net/minecraftforge/gradle/tweakers/CoremodTweaker.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/common/TestConstants.java b/src/test/java/net/minecraftforge/gradle/common/TestConstants.java index 3547f249a..9c1e75461 100644 --- a/src/test/java/net/minecraftforge/gradle/common/TestConstants.java +++ b/src/test/java/net/minecraftforge/gradle/common/TestConstants.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractExcModifiers.java b/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractExcModifiers.java index 4e2e6791b..78720ad16 100644 --- a/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractExcModifiers.java +++ b/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractExcModifiers.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractNew.java b/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractNew.java index 51453bce2..7d1b9bc23 100644 --- a/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractNew.java +++ b/src/test/java/net/minecraftforge/gradle/patcher/TestTaskExtractNew.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/tasks/TestAbstractEditJarTask.java b/src/test/java/net/minecraftforge/gradle/tasks/TestAbstractEditJarTask.java index be26b8842..47fe4b1ba 100644 --- a/src/test/java/net/minecraftforge/gradle/tasks/TestAbstractEditJarTask.java +++ b/src/test/java/net/minecraftforge/gradle/tasks/TestAbstractEditJarTask.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/tasks/TestDeobfuscateJar.java b/src/test/java/net/minecraftforge/gradle/tasks/TestDeobfuscateJar.java index cd63abb73..08b848310 100644 --- a/src/test/java/net/minecraftforge/gradle/tasks/TestDeobfuscateJar.java +++ b/src/test/java/net/minecraftforge/gradle/tasks/TestDeobfuscateJar.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/tasks/TestGenSrgs.java b/src/test/java/net/minecraftforge/gradle/tasks/TestGenSrgs.java index 681d64636..2e1f9edd2 100644 --- a/src/test/java/net/minecraftforge/gradle/tasks/TestGenSrgs.java +++ b/src/test/java/net/minecraftforge/gradle/tasks/TestGenSrgs.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/tasks/TestMergeJars.java b/src/test/java/net/minecraftforge/gradle/tasks/TestMergeJars.java index b9d6ad81c..4e39eb29b 100644 --- a/src/test/java/net/minecraftforge/gradle/tasks/TestMergeJars.java +++ b/src/test/java/net/minecraftforge/gradle/tasks/TestMergeJars.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/tasks/fernflower/TestArtifactSaver.java b/src/test/java/net/minecraftforge/gradle/tasks/fernflower/TestArtifactSaver.java index 56c0d6e3f..93f4b49d3 100644 --- a/src/test/java/net/minecraftforge/gradle/tasks/fernflower/TestArtifactSaver.java +++ b/src/test/java/net/minecraftforge/gradle/tasks/fernflower/TestArtifactSaver.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/testsupport/JarComparison.java b/src/test/java/net/minecraftforge/gradle/testsupport/JarComparison.java index 4c261124e..ce272b279 100644 --- a/src/test/java/net/minecraftforge/gradle/testsupport/JarComparison.java +++ b/src/test/java/net/minecraftforge/gradle/testsupport/JarComparison.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/testsupport/TaskTest.java b/src/test/java/net/minecraftforge/gradle/testsupport/TaskTest.java index 5267c4d4e..b9f3996d2 100644 --- a/src/test/java/net/minecraftforge/gradle/testsupport/TaskTest.java +++ b/src/test/java/net/minecraftforge/gradle/testsupport/TaskTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/testsupport/TestResource.java b/src/test/java/net/minecraftforge/gradle/testsupport/TestResource.java index 5717eb03b..3d5f9ad5b 100644 --- a/src/test/java/net/minecraftforge/gradle/testsupport/TestResource.java +++ b/src/test/java/net/minecraftforge/gradle/testsupport/TestResource.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/testsupport/UsesTemporaryFiles.java b/src/test/java/net/minecraftforge/gradle/testsupport/UsesTemporaryFiles.java index 81682273a..c8795ddba 100644 --- a/src/test/java/net/minecraftforge/gradle/testsupport/UsesTemporaryFiles.java +++ b/src/test/java/net/minecraftforge/gradle/testsupport/UsesTemporaryFiles.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/TestTaskDepDummy.java b/src/test/java/net/minecraftforge/gradle/user/TestTaskDepDummy.java index 3cf4a7682..8f0cf10c9 100644 --- a/src/test/java/net/minecraftforge/gradle/user/TestTaskDepDummy.java +++ b/src/test/java/net/minecraftforge/gradle/user/TestTaskDepDummy.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/TestTaskExtractDepAts.java b/src/test/java/net/minecraftforge/gradle/user/TestTaskExtractDepAts.java index d88f489d3..345d7077e 100644 --- a/src/test/java/net/minecraftforge/gradle/user/TestTaskExtractDepAts.java +++ b/src/test/java/net/minecraftforge/gradle/user/TestTaskExtractDepAts.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/TestTaskRecompileMc.java b/src/test/java/net/minecraftforge/gradle/user/TestTaskRecompileMc.java index f00312eed..159b0e1e9 100644 --- a/src/test/java/net/minecraftforge/gradle/user/TestTaskRecompileMc.java +++ b/src/test/java/net/minecraftforge/gradle/user/TestTaskRecompileMc.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleDeobfBin.java b/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleDeobfBin.java index 4b6670893..75433a61e 100644 --- a/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleDeobfBin.java +++ b/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleDeobfBin.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleReobf.java b/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleReobf.java index c901756d2..092bef135 100644 --- a/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleReobf.java +++ b/src/test/java/net/minecraftforge/gradle/user/TestTaskSingleReobf.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatchesTest.java b/src/test/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatchesTest.java index acfb253d9..7a81a34d2 100644 --- a/src/test/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatchesTest.java +++ b/src/test/java/net/minecraftforge/gradle/user/patcherUser/TaskApplyBinPatchesTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/util/MultiDirSupplierTest.java b/src/test/java/net/minecraftforge/gradle/util/MultiDirSupplierTest.java index 033765d96..6f97736c2 100644 --- a/src/test/java/net/minecraftforge/gradle/util/MultiDirSupplierTest.java +++ b/src/test/java/net/minecraftforge/gradle/util/MultiDirSupplierTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/util/mcp/FmlCleanupTest.java b/src/test/java/net/minecraftforge/gradle/util/mcp/FmlCleanupTest.java index de3f5a4f5..459b287fa 100644 --- a/src/test/java/net/minecraftforge/gradle/util/mcp/FmlCleanupTest.java +++ b/src/test/java/net/minecraftforge/gradle/util/mcp/FmlCleanupTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/util/mcp/JavadocInserterTest.java b/src/test/java/net/minecraftforge/gradle/util/mcp/JavadocInserterTest.java index be59b1f9e..3c2e26319 100644 --- a/src/test/java/net/minecraftforge/gradle/util/mcp/JavadocInserterTest.java +++ b/src/test/java/net/minecraftforge/gradle/util/mcp/JavadocInserterTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/util/mcp/StripCommentsTest.java b/src/test/java/net/minecraftforge/gradle/util/mcp/StripCommentsTest.java index 0f8bc2fb2..ee85bd358 100644 --- a/src/test/java/net/minecraftforge/gradle/util/mcp/StripCommentsTest.java +++ b/src/test/java/net/minecraftforge/gradle/util/mcp/StripCommentsTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/versions/ExtensionLiteLoaderVersionTest.java b/src/test/java/net/minecraftforge/gradle/versions/ExtensionLiteLoaderVersionTest.java index d9e00e686..6d857e85c 100644 --- a/src/test/java/net/minecraftforge/gradle/versions/ExtensionLiteLoaderVersionTest.java +++ b/src/test/java/net/minecraftforge/gradle/versions/ExtensionLiteLoaderVersionTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/test/java/net/minecraftforge/gradle/versions/ExtensionMcpMappingTest.java b/src/test/java/net/minecraftforge/gradle/versions/ExtensionMcpMappingTest.java index f07a49171..98bcb2ddc 100644 --- a/src/test/java/net/minecraftforge/gradle/versions/ExtensionMcpMappingTest.java +++ b/src/test/java/net/minecraftforge/gradle/versions/ExtensionMcpMappingTest.java @@ -1,6 +1,6 @@ /* * A Gradle plugin for the creation of Minecraft mods and MinecraftForge plugins. - * Copyright (C) 2013-2018 Minecraft Forge + * Copyright (C) 2013-2019 Minecraft Forge * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public From d47561800919efbcc4533e4992dd11a80a69c8a2 Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 15 Feb 2019 01:19:01 -0800 Subject: [PATCH 10/13] disable javadocs jar. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ef55798b0..459341b18 100644 --- a/build.gradle +++ b/build.gradle @@ -172,7 +172,7 @@ task javadocJar(type: Jar, dependsOn: javadoc) { artifacts { archives jar - archives javadocJar + //archives javadocJar } test { From 8897d23a2dad83d3108ac20cb5662464f639b734 Mon Sep 17 00:00:00 2001 From: Chocohead Date: Sat, 16 Feb 2019 17:27:30 +0000 Subject: [PATCH 11/13] Roll back to Gradle 4.9 --- gradle/wrapper/gradle-wrapper.jar | Bin 56172 -> 52818 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 28861d273a5d270fd8f65dd74570c17c9c507736..deedc7fa5e6310eac3148a7dd0b1f069b07364cb 100644 GIT binary patch literal 52818 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≺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 literal 56172 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

ZM+x{iQDVZRnLYbdXrQjU&=u%hsN4|smH&B~F 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 b+=;!jU|P+J`>$CfFsoU|bwOU-ceCsYH7qU$ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 115e6ac0a..a95009c3b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From d0da1fc95d7aeb778bbbc6a0d601d88bf6984dd0 Mon Sep 17 00:00:00 2001 From: Joseph Burton Date: Thu, 28 Feb 2019 18:23:33 +0000 Subject: [PATCH 12/13] Update ForgeFlower version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ef55798b0..c403a93c3 100644 --- a/build.gradle +++ b/build.gradle @@ -74,7 +74,7 @@ dependencies { compile 'com.nothome:javaxdelta:2.0.1' // GDIFF implementation for BinPatches compile 'com.google.code.gson:gson:2.2.4' // Used instead of Argo for buuilding changelog. compile 'com.github.tony19:named-regexp:0.2.3' // 1.7 Named regexp features - compile 'net.minecraftforge:forgeflower:1.5.380.22' // Fernflower Forge edition + compile 'net.minecraftforge:forgeflower:1.5.380.26' // Fernflower Forge edition shade 'net.md-5:SpecialSource:1.8.3' // deobf and reobf From b63d06499942e98cbae0842d6a32e17f64b7c6e2 Mon Sep 17 00:00:00 2001 From: Chocohead Date: Tue, 5 Mar 2019 19:10:01 +0000 Subject: [PATCH 13/13] Potentially fix runClient and runServer Fixes LaunchWrapper being missing from the classpath when run from Gradle Shouldn't break anything --- src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java b/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java index 40a3af18d..c3d2fa2ba 100644 --- a/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java +++ b/src/main/java/net/minecraftforge/gradle/user/UserBasePlugin.java @@ -210,6 +210,7 @@ public void execute(TaskSourceCopy t) ConfigurableFileCollection col = project.files(getStartDir()); col.builtBy(TASK_MAKE_START); project.getDependencies().add(CONFIG_START, col); + project.getDependencies().add(CONFIG_START, "net.minecraft:launchwrapper:1.12"); } // TODO: do some GradleStart stuff based on the MC version?