diff --git a/Jenkinsfile b/Jenkinsfile index f91a875..72cfbec 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,7 +18,7 @@ pipeline { stage('Deploy') { steps { echo 'Deploying....' - dir('remappedJars') { + dir('shrinkedJars') { archiveArtifacts artifacts:'*.jar', fingerprint: false } } diff --git a/build.gradle.kts b/build.gradle.kts index d1fdc94..3ead5e8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,12 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +buildscript { + dependencies { + classpath("com.guardsquare:proguard-gradle:7.1.0-beta2") { + exclude("com.android.tools.build") + } + } +} + plugins { kotlin("jvm") version "1.5.0-M2" id("com.github.johnrengelman.shadow") version "6.1.0" apply false @@ -20,7 +28,24 @@ subprojects { apply(plugin = "forgified-fabric-loom") apply(plugin = "com.github.johnrengelman.shadow") val shadowC by configurations.creating - tasks.withType(ShadowJar::class) { this.configurations = listOf(shadowC) } + tasks { + withType(ShadowJar::class) { this.configurations = listOf(shadowC) } + val shrinkJar = register("shrinkJar", proguard.gradle.ProGuardTask::class) { + injars( + this@tasks.getByName("remapJar") + ) + libraryjars("/lib/rt.jar") + outjars("$rootDir/shrinkedJars/") + keep("class fr.username404.snowygui.** { * ; }") + keepattributes(); keepdirectories(); keeppackagenames(); keepparameternames() + adaptclassstrings(); adaptresourcefilecontents() + dontwarn("fr.username404.**") + dontwarn("java.**") // Needed for the current version of proguard + // Note: dontpreverify() should NOT be used, it will cause errors at runtime + dontoptimize(); dontobfuscate() + } + if (this@subprojects.name != "common") build.get().finalizedBy(shrinkJar) + } extensions.configure("loom") { MappingsDep = officialMojangMappings() silentMojangMappingsLicense() @@ -28,7 +53,10 @@ subprojects { refmapName = "snowygui-common-refmap.json" } dependencies { - shadowC(kotlin("stdlib-jdk8")) + shadowC(kotlin("stdlib-jdk8") as String) { + exclude(module = "kotlin-stdlib-common") + exclude(module = "annotations") + } "minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}") "mappings"(MappingsDep) } diff --git a/common/src/main/kotlin/fr/username404/snowygui/exec/info.kt b/common/src/main/kotlin/fr/username404/snowygui/exec/info.kt deleted file mode 100644 index 3f6d648..0000000 --- a/common/src/main/kotlin/fr/username404/snowygui/exec/info.kt +++ /dev/null @@ -1,82 +0,0 @@ -package fr.username404.snowygui.exec - -import java.awt.* -import javax.swing.* - -private val Background: Color = Color( - 32, // Red - 32, // Green - 135, // Blue - 120 -) - -object ExecObj { - fun createWindow() { - val frame = JFrame("Snowy Info") - with(frame) { - createInterface(this) - setSize(300, 410) - isResizable = false - defaultCloseOperation = JFrame.EXIT_ON_CLOSE - isVisible = true - } - } - private fun createInterface(frame: JFrame) { - frame.setLocationRelativeTo(null) - val panel: JPanel = object: JPanel() { - override fun paintComponent(g: Graphics?) { - if (g is Graphics2D) { - val p: Paint = GradientPaint( - 0.0f, - 0.0f, - Background, - width.toFloat(), - height.toFloat(), - Color( - 52, - 170, - 166, - 255 - ), - true - ) - g.paint = p - g.fillRect(0, 0, width, height) - } else { - super.paintComponent(g) - } - }; init { - layout = FlowLayout() - componentOrientation = ComponentOrientation.LEFT_TO_RIGHT - ((this.layout) as FlowLayout).alignment = FlowLayout.CENTER - } - }.apply { - val iconStream = ExecObj.javaClass.getResourceAsStream("/icon.png") - add( - JLabel( - ImageIcon( - Toolkit.getDefaultToolkit() - .createImage(iconStream.readBytes()) - .getScaledInstance(256, 256, Image.SCALE_SMOOTH) - ) - ) - ) - iconStream.close() - add( - JLabel("You should install this mod by dropping it into your mods folder, and not by running it.").apply { - font = Font.createFont(Font.TRUETYPE_FONT, ExecObj.javaClass.getResourceAsStream("/font/NotoSans-Regular.ttf")).deriveFont(Font.BOLD, 20F) - verticalTextPosition = SwingConstants.CENTER - horizontalTextPosition = SwingConstants.CENTER - preferredSize = Dimension( - 290, 110 - ) - } - ) - } - frame.contentPane = panel - } -} - -fun main() { - ExecObj.createWindow() -} \ No newline at end of file diff --git a/common/src/main/resources/font/LICENSE_OFL.txt b/common/src/main/resources/font/LICENSE_OFL.txt deleted file mode 100644 index d952d62..0000000 --- a/common/src/main/resources/font/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/common/src/main/resources/font/NotoSans-Regular.ttf b/common/src/main/resources/font/NotoSans-Regular.ttf deleted file mode 100644 index a1b8994..0000000 Binary files a/common/src/main/resources/font/NotoSans-Regular.ttf and /dev/null differ