From 1c2c3f0cf1043833ecc9d80bff2dc3dcf3d99378 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Sat, 14 Jan 2023 20:18:48 +0100 Subject: [PATCH] Begin 0.11 development --- .gitignore | 2 + LICENSE => LICENSE.md | 0 README.MD | 28 +- build.gradle | 19 +- dependencies.gradle | 16 +- gradle.properties | 2 +- repositories.gradle | 4 + .../falsepattern/lib/DeprecationDetails.java | 1 + .../lib/dependencies/ComplexVersion.java | 2 +- .../lib/dependencies/DependencyLoader.java | 10 +- .../lib/dependencies/Library.java | 3 + .../lib/dependencies/RawVersion.java | 43 +++ .../falsepattern/lib/internal/Internet.java | 49 ++- .../lib/internal/asm/CoreLoadingPlugin.java | 3 + .../internal/impl/dependencies/DepRoot.java | 69 ++++ .../dependencies/DependencyLoaderImpl.java | 322 +++++++++++++++--- .../lib/internal/impl/dependencies/Pair.java | 32 ++ .../impl/updates/UpdateCheckerImpl.java | 70 ++-- .../lib/mapping/MappingManager.java | 68 +--- src/main/resources/DEPENDENCIES.md | 55 +++ {mappings => src/main/resources}/classes.csv | 0 {mappings => src/main/resources}/fields.csv | 0 src/main/resources/mappings.lzma2 | Bin 308154 -> 0 bytes {mappings => src/main/resources}/methods.csv | 0 .../lib/internal/tooling/Compact.java | 50 --- 25 files changed, 617 insertions(+), 231 deletions(-) rename LICENSE => LICENSE.md (100%) create mode 100644 src/main/java/com/falsepattern/lib/dependencies/RawVersion.java create mode 100644 src/main/java/com/falsepattern/lib/internal/impl/dependencies/DepRoot.java create mode 100644 src/main/java/com/falsepattern/lib/internal/impl/dependencies/Pair.java create mode 100644 src/main/resources/DEPENDENCIES.md rename {mappings => src/main/resources}/classes.csv (100%) rename {mappings => src/main/resources}/fields.csv (100%) delete mode 100644 src/main/resources/mappings.lzma2 rename {mappings => src/main/resources}/methods.csv (100%) delete mode 100644 src/test/java/com/falsepattern/lib/internal/tooling/Compact.java diff --git a/.gitignore b/.gitignore index 2edfc3f..a4db5de 100644 --- a/.gitignore +++ b/.gitignore @@ -149,3 +149,5 @@ gradle-app.setting .classpath # End of https://www.toptal.com/developers/gitignore/api/intellij+all,gradle,forgegradle,java + +srgmap.cfg \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/README.MD b/README.MD index ea2e47b..b966466 100644 --- a/README.MD +++ b/README.MD @@ -1,17 +1,17 @@ A library for 1.7.10 with lots of useful stuff, licensed under the LGPL3.0+SNEED license. -| Package | Contents / Purpose | -|-----------------------------------------------------------------|-------------------------------------------------------------------------------------------| -| [asm](src/main/java/com/falsepattern/lib/asm) | ASM helper code | -| [compat](src/main/java/com/falsepattern/lib/compat) | Code backported from vanilla 1.12.2 | -| [config](src/main/java/com/falsepattern/lib/config) | 1.12.2-style annotation-based config library | -| [dependencies](src/main/java/com/falsepattern/lib/dependencies) | Runtime dependency loader which uses Maven | -| [mapping](src/main/java/com/falsepattern/lib/mapping) | Notch-SRG-MCP name mapping helper code | -| [mixin](src/main/java/com/falsepattern/lib/mixin) | Mixin loader plugin boilerplate code | -| [text](src/main/java/com/falsepattern/lib/text) | Better Chat and GUI text processing | -| [toasts](src/main/java/com/falsepattern/lib/toasts) | The toast system from newer versions, with some extras | -| [updates](src/main/java/com/falsepattern/lib/updates) | Helper code for update checking | -| [util](src/main/java/com/falsepattern/lib/util) | Additional utilities that do not fit the above categories, see below for more information | +| Package | Contents / Purpose | +|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| [asm](src/main/java/com/falsepattern/lib/asm) | ASM helper code | +| [compat](src/main/java/com/falsepattern/lib/compat) | Code backported from vanilla 1.12.2 | +| [config](src/main/java/com/falsepattern/lib/config) | 1.12.2-style annotation-based config library | +| [dependencies](src/main/java/com/falsepattern/lib/dependencies) | Runtime dependency loader which uses Maven (DEPRECATED, see [The new data-driven dependency format](src/main/resources/DEPENDENCIES.MD) | +| [mapping](src/main/java/com/falsepattern/lib/mapping) | Notch-SRG-MCP name mapping helper code | +| [mixin](src/main/java/com/falsepattern/lib/mixin) | Mixin loader plugin boilerplate code | +| [text](src/main/java/com/falsepattern/lib/text) | Better Chat and GUI text processing | +| [toasts](src/main/java/com/falsepattern/lib/toasts) | The toast system from newer versions, with some extras | +| [updates](src/main/java/com/falsepattern/lib/updates) | Helper code for update checking | +| [util](src/main/java/com/falsepattern/lib/util) | Additional utilities that do not fit the above categories, see below for more information | The contents of the [util](src/main/java/com/falsepattern/lib/util) package so far: @@ -28,6 +28,4 @@ See the [@StableAPI](src/main/java/com/falsepattern/lib/StableAPI.java) annotati API stability. The update checker module and the library downloader module can be toggled with the `ENABLE_UPDATE_CHECKER` and -`ENABLE_LIBRARY_DOWNLOADS` booleans in the `falsepatternlib.cfg` config file respectively. Note that the update checker -depends on the module downloader to grab [FJson](https://github.com/FalsePattern/FJson), so if it's not already present -on disk, disabling the library loader breaks the update checker. This is only required the first time download, though. +`ENABLE_LIBRARY_DOWNLOADS` booleans in the `falsepatternlib.cfg` config file respectively. diff --git a/build.gradle b/build.gradle index 74849c5..f78365b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1656003793falsepattern59 +//version: 1656003793falsepattern60 /* DO NOT CHANGE THIS FILE! @@ -282,9 +282,13 @@ if(file("addon.gradle").exists()) { apply from: 'repositories.gradle' configurations { - implementation.extendsFrom(shadowImplementation) // TODO: remove after all uses are refactored - implementation.extendsFrom(shadowCompile) - implementation.extendsFrom(shadeCompile) + for (config in [shadowImplementation, shadowCompile, shadeCompile]) { + implementation.extendsFrom(shadeCompile) + compileClasspath.extendsFrom(config) + runtimeClasspath.extendsFrom(config) + testCompileClasspath.extendsFrom(config) + testRuntimeClasspath.extendsFrom(config) + } } repositories { @@ -314,6 +318,8 @@ dependencies { compile("org.spongepowered:mixin:0.8.5-gasstation_7") compile("com.llamalad7:MixinExtras:0.1.1-gasstation") compile("com.falsepattern:00gasstation-mc1.7.10:0.5.1:dev") + runtimeClasspath('org.jetbrains:intellij-fernflower:1.2.1.16') + testRuntimeClasspath('org.jetbrains:intellij-fernflower:1.2.1.16') } else if(hasMixinDeps.toBoolean()) { runtime("com.llamalad7:MixinExtras:0.1.1-gasstation") runtime("org.spongepowered:mixin:0.8.5-gasstation_7") @@ -668,8 +674,11 @@ publish.dependsOn(build) publishing { publications { maven(MavenPublication) { + from components.java artifact source: usesShadowedDependencies.toBoolean() ? shadowJar : jar, classifier: "" - artifact source: sourcesJar, classifier: "sources" + if (!project.hasProperty("noPublishedSources") || !noPublishedSources) { + artifact source: sourcesJar, classifier: "sources" + } artifact source: usesShadowedDependencies.toBoolean() ? shadowDevJar : devJar, classifier: "dev" if (apiPackage) { artifact source: apiJar, classifier: "api" diff --git a/dependencies.gradle b/dependencies.gradle index 7286317..1f2c034 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,12 +1,14 @@ dependencies { + //Dev-only deps compileOnly("org.projectlombok:lombok:1.18.24") { transitive = false } - compileOnly("org.spongepowered:mixin:0.8.3-gasstation") - compileOnly("com.llamalad7:MixinExtras:0.0.12-gasstation") - compileOnly("com.falsepattern:00gasstation-mc1.7.10:0.2.1:dev") - compileOnly("com.falsepattern:json:0.4.1") - compileOnly("org.tukaani:xz:1.9") - testCompile("org.tukaani:xz:1.9") - annotationProcessor("org.projectlombok:lombok:1.18.22") + annotationProcessor("org.projectlombok:lombok:1.18.24") + + compileOnly("org.jetbrains:annotations:23.1.0") + + //Mod deps + compileOnly("org.spongepowered:mixin:0.8.5-gasstation_7") + compileOnly("com.llamalad7:MixinExtras:0.1.1-gasstation") + compileOnly("com.falsepattern:00gasstation-mc1.7.10:0.5.1:dev") } diff --git a/gradle.properties b/gradle.properties index 09a56bd..2ad5b02 100644 --- a/gradle.properties +++ b/gradle.properties @@ -187,7 +187,7 @@ containsMixinsAndOrCoreModOnly = false # If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your # responsibility check the licence and request permission for distribution, if required. -usesShadowedDependencies = false +usesShadowedDependencies = true # If enabled, class stubbing will be enabled. In this mode, all classes with a package named "stubpackage" in their # path will be removed, and all classes that refer to said classes will be modified so that the "stubpackage" will map diff --git a/repositories.gradle b/repositories.gradle index 3d5cf5e..d6151d0 100644 --- a/repositories.gradle +++ b/repositories.gradle @@ -11,4 +11,8 @@ repositories { name = "mvnpattern" url = "https://mvn.falsepattern.com/releases/" } + maven { + name = "repsy_ventooth" + url = "https://repo.repsy.io/mvn/ventooth/public/" + } } diff --git a/src/main/java/com/falsepattern/lib/DeprecationDetails.java b/src/main/java/com/falsepattern/lib/DeprecationDetails.java index 8ff8c82..32589d4 100644 --- a/src/main/java/com/falsepattern/lib/DeprecationDetails.java +++ b/src/main/java/com/falsepattern/lib/DeprecationDetails.java @@ -34,4 +34,5 @@ import java.lang.annotation.RetentionPolicy; @StableAPI(since = "0.10.0") public @interface DeprecationDetails { @StableAPI.Expose String deprecatedSince(); + @StableAPI.Expose(since = "0.11.0") String replacement() default ""; } diff --git a/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java b/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java index 59bd9cb..a6f0737 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java +++ b/src/main/java/com/falsepattern/lib/dependencies/ComplexVersion.java @@ -56,7 +56,7 @@ public class ComplexVersion extends Version { } } else if (o instanceof SemanticVersion) { val other = (SemanticVersion) o; - val result = other.compareTo(versions[0]); + val result = versions[0].compareTo(other); if (result != 0) { return result; } diff --git a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java index ed3e50c..40f9d16 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java +++ b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java @@ -28,6 +28,13 @@ import lombok.NonNull; import java.util.concurrent.CompletableFuture; +/** + * DEPRECATED. See the DEPENDENCIES.MD files in the root of the resources for more information. + *
+ * This class will stay here for legacy compatibility
+ */
+@Deprecated
+@DeprecationDetails(deprecatedSince = "0.11.0")
@StableAPI(since = "0.6.0")
public class DependencyLoader {
@@ -64,8 +71,9 @@ public class DependencyLoader {
return new VoidBuilder();
}
- @StableAPI(since = "0.6.0")
+ @Deprecated
@DeprecationDetails(deprecatedSince = "0.10.0")
+ @StableAPI(since = "0.6.0")
public static class VoidBuilder {
private String loadingModId;
private String groupId;
diff --git a/src/main/java/com/falsepattern/lib/dependencies/Library.java b/src/main/java/com/falsepattern/lib/dependencies/Library.java
index 89f6b21..3fbe3fa 100644
--- a/src/main/java/com/falsepattern/lib/dependencies/Library.java
+++ b/src/main/java/com/falsepattern/lib/dependencies/Library.java
@@ -21,9 +21,12 @@
package com.falsepattern.lib.dependencies;
+import com.falsepattern.lib.DeprecationDetails;
import com.falsepattern.lib.StableAPI;
import lombok.NonNull;
+@Deprecated
+@DeprecationDetails(deprecatedSince = "0.11.0")
@StableAPI(since = "0.10.0")
public class Library {
@StableAPI.Expose
diff --git a/src/main/java/com/falsepattern/lib/dependencies/RawVersion.java b/src/main/java/com/falsepattern/lib/dependencies/RawVersion.java
new file mode 100644
index 0000000..e3447f5
--- /dev/null
+++ b/src/main/java/com/falsepattern/lib/dependencies/RawVersion.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2022 FalsePattern
+ * All Rights Reserved
+ *
+ * The above copyright notice, this permission notice and the word "SNEED"
+ * shall be included in all copies or substantial portions of the Software.
+ *
+ * This program 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see CV&=V!z_uIJyCAL3b_n5+xrwnv*_g5
zVDi4DPT$^*|3}JiA_Weh8p8+C&=hw~MEnNoidpX1+U+kFNaYvthvX^}zSVFZU$hJ2jlT1TR%Rv6@G)FJ8?K-^cNh`k+
zfLSBG>$5el1T$_N+CCq-*xc;Forx>I^a|`g2!+ghE^-;X#z_(W0@c)o1u~>y(c8k`
zM+`LU+uy7+_Yd?_(o#97)lC<2nJs)ggN=?X>U9xEBx79Ab%{G&kT74eOFUSB{F`nk
z*0kPe=$~l#M~da!3?sF#&SHg+y2KxJ9CQ@xn!9&L4k(-Nn3HhDDo#4M16fKL5aXA3
z)wBxD;N&J)#&)${&b=xgW7|e8VAe5ZGjDj)yyp4(d{ZUoa(u(6{-&ByUBN}J4N8hY
z$OQ!>PaB1=*%$wW$3L&KG!*w)=CNg5x_*~0_~N3}SO*mjT}OR(1M1-XAQ)>3>{3pj
zBBJ7?*|*~GHF3U!qgw-@BZ>}Yf
Ae}Y{ti<_EEaTwiO@m$
z^AYbxYn%tc^e5o-q`rEmv6z}HKIY>tWl;#48C^GRlVZu&mW|ix&2B2QWkMtBh?IYj
z9YF^YYZEcTe-^pM7-xq&*@K`*MwN-8auMG+pRp!d)a^l`*44&nt;0@59Hqhps<#8R
zkQt>Xb@Q{$-4?%bh~uKNSpY4AeD;gw>Y+a#_!B!OSso9Jb8Wf3pwRPnO9p9&;)j{H
z3pcLiUhSG2`f7mxVjYFbW7s5vSfw>3?rA5vB2k{b(3&
6w4zC{=DJ`$_K<9*q>qw
zZ~^941o4DjLlTqg&L1w5O5i{w1CK4zy$Rj1?QAp3nRP(3T^+ffyIEf^{{
z<#=`bo>0-x`4^C88F0C{JJuK{4`;hI8!8U@=n-fIMvsRcxsvsJ8?=P+89qnXMU*3F
zo{_%M&by_wne5mNicJKo5ZU{w1CuS!*VwkqvF=uqsfMMJ0H&Vz!r5_6E3WS3K(>!F
z_ZdQ}sL3GxI7*ts7l{FA0I^&&K8^uo^LC*#=?bP`b-=?rkChyoN@+zA+<0V=wZBj$
zUN|V+958zW>rSs2qxE{8_s>VQnfG|)>mVVeGaz*&t2E}4@Ew{#1Rd~J`Xt0W-$?TE
zGd QWsZ6P;n*cvZcCxy=uK
vc^#gq2`zZot9b
z7_OmiBQ4i|`F+i{xYpBSB@+(LeS!Kidf-SSDg;{SaQiKW6WMca4WRR#-oCQ3gcD6B
zN9== q_U$ad-ts{hm!%n8pkT3DpLI=S82&F76gw-5ZcJ*X>
zqZE(*t9=^%9mVwC6s{bkdp$g6-j$W1OGS@JfT3NyF$>M95_?b;6q_0}nOP4w_cX*t
zGVSW;)1Pqug6mMP5I1Gbi|Jo0GRgJ`CpF
}kSAf_Q;ztAtJnO(4cw=T{gsvl+A{7h%&E&wkRgCO$V~+r2SiZ!bd9@7`nqen z4$)6Mn0T;JoUuiI0ica5KpY|DIW$idks~w0F|ZuRKDA4|4ea}R(StRVsmt{h@YfV2 z1Nt^_#UisTgCCdNx26nBR>=RfFdZYQ&;?(XvBtqhKGQvohsv86@sJ*zO*TGoAC_B- zDL66|FA=StO0F|&*=dTiWe (fvDC@3}0yL<1^n_+%}671kv3c=0nLbF$Tv})}VEb+g&bs=P^6sYX^J$Mb1 zWOKo`oa#rN`)otC($t>$!;(T;z$znov2k?i@?Jw#8b@+PhAqOV%poKi;jbZRu7Y0U z_vF+&FQS*u`7>p1POomU*uRaGBtBV-WBw=pG^eTrnyAkoZCkYycD!)dK(^PvJagFJ zle`5O{z&^drhFMMRE;zM&jiVTm-)_9C;+K-;&kGOEepGI_530I&rjDp)9QGq( %oHI-^g(9XpX`~(yLDjjU1cQ#d8B>KF~haie^ n&Y}3jUpz<(C94a$nBy&70LQO^Y%LtMx|ih#2{x7tmksD?xqKB!s>1cY3iT z{6IhNjByrJE2QjV*%lO^pT5A5DTii=5gay$t1bT-bcN8Kq{8?eeI|Xy@8NW*o+&%d zqlH(e-4=9D^REzJmhv+V;>7Yey4LR%i0z9io@&xiCB2ImK@BYUl~hI$|6O!?M2uje zx}#gq{iTn14~G9wBCzx?^g_&OB3}VIWrnfil&jl6t`f~IRqeebku~rtR7^5^AP4+# z$8{rITJS`gAmnvHY>O^|?fPL&(~Z|RxnOJzN!APpptyd2_YWN*AVWL=Mzz?&Wc4%K z7Mjf<$I pbcxL>I11U7@&SyF-9-d~5xV4kMj8BtzW9UiTyn2b^>Ev4JP8Vd zfAJ^svcX~z%(B;{U^sCOT<<)(E!;6bzPf7?^_wNyx&`ET9o=vVeLpZ;&D4cO4Fkq{ zPl~FnTAPgRCRd-CJp$OO+!0NmOiC}VX%hebm)%WveQTHKoMB;oNI2&c0Vh1 `;X~ta@QP19; zykrr$&f}VMa-q>s7?LxN!dgoYFp8)wL*wtHCj^cfeb{AshcsMN-J+-?+5UJ0SRMUo zB((wt25>^GCGpJt6^!TDBLA3ySL7T_mL-hECp~G?TkC5Nw#&f5@8)&rt%wP+w2om$ zsK->U{tupi{k 4|84U*kIt}3A znI<-Pq>@FZnTa>pSMM&DU_BF5rU9mhx&@e-e-iz>KTy1X2Q8a5i?C-W$YW+CxSNA_ zxB(IwIhg*xF}H}#cQA8F4)0x z|Z=)$;Ise{~B{k1E! zma3At1=8#_>~g&*w`<;tmt26Hb$3R;MG@ws6eLVX=OwDW1o-Vu{6|tr$#Oq)nY8rC z4&Vlz%e|K#EOcBm?D1%qrt>{voq+pWoV!#)gU5q4)Ib6l#q>#UcOZylQXNOlg*M%? zh=aPcNqnu4rd{&*cHt)Uf6jG>c6zawT(2Z