diff options
| -rw-r--r-- | build.gradle.kts | 48 | ||||
| -rw-r--r-- | shots.txt | 61 | ||||
| -rw-r--r-- | versions/1.8.9/shots.txt | 78 |
3 files changed, 123 insertions, 64 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index d5e5445d6..400dd12b1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,11 +5,20 @@ import at.skyhanni.sharedvariables.SHVersionInfo import at.skyhanni.sharedvariables.versionString import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask +import moe.nea.shot.ShotParser +import moe.nea.shot.Shots +import net.fabricmc.loom.api.processor.MinecraftJarProcessor +import net.fabricmc.loom.api.processor.ProcessorContext +import net.fabricmc.loom.api.processor.SpecContext import net.fabricmc.loom.task.RunGameTask import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import skyhannibuildsystem.ChangelogVerification import skyhannibuildsystem.DownloadBackupRepo +import java.util.zip.ZipFile +import java.util.zip.ZipOutputStream +import kotlin.io.path.moveTo +import kotlin.io.path.outputStream plugins { idea @@ -117,7 +126,15 @@ tasks.register("checkPrDescription", ChangelogVerification::class) { this.prBody = project.findProperty("prBody") as String } -val shot = shots.shot("minecraft", rootProject.file("shots.txt")) +file("shots.txt") + .takeIf(File::exists) + ?.readText() + ?.lines() + ?.let(ShotParser()::parse) + ?.let(::Shots) + ?.let { + loom.addMinecraftJarProcessor(ShotApplicationJarProcessor::class.java, it) + } dependencies { minecraft("com.mojang:minecraft:${target.minecraftVersion.versionName}") @@ -152,10 +169,10 @@ dependencies { annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT") annotationProcessor("com.google.code.gson:gson:2.10.1") annotationProcessor("com.google.guava:guava:17.0") - } else if (target == ProjectTarget.BRIDGE116FABRIC) { + } else if (target == ProjectTarget.BRIDGE116FABRIC) { modCompileOnly("net.fabricmc:fabric-loader:0.16.7") modCompileOnly("net.fabricmc.fabric-api:fabric-api:0.42.0+1.16") - } else if (target == ProjectTarget.MODERN) { + } else if (target == ProjectTarget.MODERN) { modCompileOnly("net.fabricmc:fabric-loader:0.16.7") modCompileOnly("net.fabricmc.fabric-api:fabric-api:0.102.0+1.21") } @@ -406,3 +423,28 @@ tasks.withType<DetektCreateBaselineTask>().configureEach { jvmTarget = target.minecraftVersion.formattedJavaLanguageVersion outputs.cacheIf { false } // Custom rules won't work if cached } + +abstract class ShotApplicationJarProcessor @Inject constructor(val shots: Shots) : MinecraftJarProcessor<MinecraftJarProcessor.Spec> { + private class EnsureCompile(shots: Shots) : ShotApplicationJarProcessor(shots) + override fun buildSpec(context: SpecContext?): MinecraftJarProcessor.Spec? { + return object : MinecraftJarProcessor.Spec {} + } + + override fun processJar( + source: java.nio.file.Path, + spec: MinecraftJarProcessor.Spec, + context: ProcessorContext? + ) { + val dest = source.resolveSibling(source.fileName.toString() + "-temp-shot") + ZipFile(source.toFile()).use { input -> + ZipOutputStream(dest.outputStream()).use { output -> + shots.processZipFile(input, output) + } + } + dest.moveTo(source, overwrite = true) + } + + override fun getName(): String { + return "Shots" + } +} diff --git a/shots.txt b/shots.txt deleted file mode 100644 index 52297a4e5..000000000 --- a/shots.txt +++ /dev/null @@ -1,61 +0,0 @@ -net.minecraft.client.entity.EntityPlayerSP: - sendQueue: - annotate org.jetbrains.annotations.NotNull -net.minecraft.client.Minecraft: - renderEngine: - annotate org.jetbrains.annotations.NotNull - renderGlobal: - annotate org.jetbrains.annotations.NotNull - thePlayer: - annotate org.jetbrains.annotations.Nullable - pointedEntity: - annotate org.jetbrains.annotations.Nullable - effectRenderer: - annotate org.jetbrains.annotations.NotNull - fontRendererObj: - annotate org.jetbrains.annotations.NotNull - standardGalacticFontRenderer: - annotate org.jetbrains.annotations.NotNull - currentScreen: - annotate org.jetbrains.annotations.Nullable - entityRenderer: - annotate org.jetbrains.annotations.NotNull - guiAchievement: - annotate org.jetbrains.annotations.NotNull - ingameGUI: - annotate org.jetbrains.annotations.NotNull - objectMouseOver: - annotate org.jetbrains.annotations.Nullable - gameSettings: - annotate org.jetbrains.annotations.NotNull - mouseHelper: - annotate org.jetbrains.annotations.NotNull - mcDataDir: - annotate org.jetbrains.annotations.NotNull - frameTimer: - annotate org.jetbrains.annotations.NotNull - mcProfiler: - annotate org.jetbrains.annotations.NotNull - mcDefaultResourcePack: - annotate org.jetbrains.annotations.NotNull - theWorld: - annotate org.jetbrains.annotations.Nullable - <init>(net.minecraft.client.main.GameConfiguration): - annotateParameter 0 org.jetbrains.annotations.NotNull - getFrameBuffer(): - annotate org.jetbrains.annotations.NotNull - getVersion(): - annotate org.jetbrains.annotations.NotNull - drawSplashScreen(net.minecraft.client.renderer.texture.TextureManager): - annotate org.jetbrains.annotations.NotNull - getSaveLoader(): - annotate org.jetbrains.annotations.NotNull - displayGuiScreen(net.minecraft.client.gui.GuiScreen): - annotateParameter 0 org.jetbrains.annotations.Nullable - getMusicTicker(): - annotate org.jetbrains.annotations.NotNull -net.minecraft.util.ChatStyle: - getChatClickEvent(): - annotate org.jetbrains.annotations.Nullable - getChatHoverEvent(): - annotate org.jetbrains.annotations.Nullable diff --git a/versions/1.8.9/shots.txt b/versions/1.8.9/shots.txt new file mode 100644 index 000000000..971186264 --- /dev/null +++ b/versions/1.8.9/shots.txt @@ -0,0 +1,78 @@ +#net.minecraft.client.entity.EntityPlayerSP: +# sendQueue: +# annotate org.jetbrains.annotations.NotNull +#net.minecraft.client.Minecraft: +# renderEngine: +# annotate org.jetbrains.annotations.NotNull +# renderGlobal: +# annotate org.jetbrains.annotations.NotNull +# thePlayer: +# annotate org.jetbrains.annotations.Nullable +# pointedEntity: +# annotate org.jetbrains.annotations.Nullable +# effectRenderer: +# annotate org.jetbrains.annotations.NotNull +# fontRendererObj: +# annotate org.jetbrains.annotations.NotNull +# standardGalacticFontRenderer: +# annotate org.jetbrains.annotations.NotNull +# currentScreen: +# annotate org.jetbrains.annotations.Nullable +# entityRenderer: +# annotate org.jetbrains.annotations.NotNull +# guiAchievement: +# annotate org.jetbrains.annotations.NotNull +# ingameGUI: +# annotate org.jetbrains.annotations.NotNull +# objectMouseOver: +# annotate org.jetbrains.annotations.Nullable +# gameSettings: +# annotate org.jetbrains.annotations.NotNull +# mouseHelper: +# annotate org.jetbrains.annotations.NotNull +# mcDataDir: +# annotate org.jetbrains.annotations.NotNull +# frameTimer: +# annotate org.jetbrains.annotations.NotNull +# mcProfiler: +# annotate org.jetbrains.annotations.NotNull +# mcDefaultResourcePack: +# annotate org.jetbrains.annotations.NotNull +# theWorld: +# annotate org.jetbrains.annotations.Nullable +# <init>(net.minecraft.client.main.GameConfiguration): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# getFrameBuffer(): +# annotate org.jetbrains.annotations.NotNull +# getVersion(): +# annotate org.jetbrains.annotations.NotNull +# drawSplashScreen(net.minecraft.client.renderer.texture.TextureManager): +# annotate org.jetbrains.annotations.NotNull +# getSaveLoader(): +# annotate org.jetbrains.annotations.NotNull +# displayGuiScreen(net.minecraft.client.gui.GuiScreen): +# annotateParameter 0 org.jetbrains.annotations.Nullable +# getMusicTicker(): +# annotate org.jetbrains.annotations.NotNull +#net.minecraft.util.ChatStyle: +# getChatClickEvent(): +# annotate org.jetbrains.annotations.Nullable +# getChatHoverEvent(): +# annotate org.jetbrains.annotations.Nullable +# +#net.minecraft.item.ItemStack: +# <init>(net.minecraft.block.Block): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.block.Block, int): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.block.Block, int, int): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.item.Item): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.item.Item, int): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.item.Item, int, int): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# <init>(net.minecraft.item.Item, int, int, net.minecraft.nbt.NBTTagCompound): +# annotateParameter 0 org.jetbrains.annotations.NotNull +# annotateParameter 3 org.jetbrains.annotations.Nullable |
