Giter Club home page Giter Club logo

examplemod1.7.10's People

Contributors

basdxz avatar bombcar avatar derailedzack avatar theelan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

examplemod1.7.10's Issues

Brainstorming: Build Script CI

A loose collection of ideas on how it might be possible to test build scripts automatically. I've already had moments where I broke something with cleanup and fixes

idea complaining about gitVersion and versionDetails

image

is there perhaps a plugin I'm missing?

I did brew install gitversion and I get reasonable output:

{
  "Major": 9,
  "Minor": 12,
  "Patch": 8,
  "PreReleaseTag": "DrParadox7-master.1",
  "PreReleaseTagWithDash": "-DrParadox7-master.1",
  "PreReleaseLabel": "DrParadox7-master",
  "PreReleaseLabelWithDash": "-DrParadox7-master",
  "PreReleaseNumber": 1,
  "WeightedPreReleaseNumber": 1,
  "BuildMetaData": 6,
  "BuildMetaDataPadded": "0006",
  "FullBuildMetaData": "6.Branch.DrParadox7-master.Sha.e3a78fe1857d3715c2ee3faeec66848e5171dad2",
  "MajorMinorPatch": "9.12.8",
  "SemVer": "9.12.8-DrParadox7-master.1",
  "LegacySemVer": "9.12.8-DrParadox7-master1",
  "LegacySemVerPadded": "9.12.8-DrParadox7-maste0001",
  "AssemblySemVer": "9.12.8.0",
  "AssemblySemFileVer": "9.12.8.0",
  "FullSemVer": "9.12.8-DrParadox7-master.1+6",
  "InformationalVersion": "9.12.8-DrParadox7-master.1+6.Branch.DrParadox7-master.Sha.e3a78fe1857d3715c2ee3faeec66848e5171dad2",
  "BranchName": "DrParadox7_master",
  "EscapedBranchName": "DrParadox7-master",
  "Sha": "e3a78fe1857d3715c2ee3faeec66848e5171dad2",
  "ShortSha": "e3a78fe",
  "NuGetVersionV2": "9.12.8-drparadox7-maste0001",
  "NuGetVersion": "9.12.8-drparadox7-maste0001",
  "NuGetPreReleaseTagV2": "drparadox7-maste0001",
  "NuGetPreReleaseTag": "drparadox7-maste0001",
  "VersionSourceSha": "1e26a2674a2eb0b39e16da4a8acd2013f299d74a",
  "CommitsSinceVersionSource": 6,
  "CommitsSinceVersionSourcePadded": "0006",
  "UncommittedChanges": 0,
  "CommitDate": "2021-11-30"
}

but building Railcraft (for example) produces a Railcraft-1.7.10-latest-2-ge3a78fe.jar which apparently has no version number

Automatic versioning

It would be nice to have automatic minor or major version bump on each PR. This way nobody needs to remember to tag things.

Infer artifactId and groupId from git url

Using git remote get-url origin we can get url like [email protected]:TheElan/org-build-system-updater.git, from it a groupId can be extracted as github.com:TheElan -> github.com.TheElan and name as org-build-system-updater as artifactId

This way we are both compliant with jitpack scheme on other maven as well as locally without a need to setup it manually for each project. This would also work nicely with forks.

The only problem I can see here is jitpack building behavior. It looks like it doesn't clone but copy files, which means there is no git repo when it's building, might need to find some workaround either changing smth in jitpack.yml.

NPE when running genIntellijRuns on CodeChickenLib

bombcar@lappy386 ~/Documents/GitHub/CodeChickenLib (fixbuild) $ ./gradlew clean setupDecompWorkspace idea genI

> Task :idea
Generated IDEA project at file:///Users/bombcar/Documents/GitHub/CodeChickenLib/CodeChickenLib.ipr

> Task :genIntellijRuns
java.lang.NullPointerException
        at net.minecraftforge.gradle.user.UserBasePlugin.add(UserBasePlugin.java:552)
        at net.minecraftforge.gradle.user.UserBasePlugin.injectIntellijRuns(UserBasePlugin.java:519)
        at net.minecraftforge.gradle.user.UserBasePlugin$3.execute(UserBasePlugin.java:446)
        at net.minecraftforge.gradle.user.UserBasePlugin$3.execute(UserBasePlugin.java:415)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:732)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:705)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
        at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$1(ExecuteStep.java:66)
        at java.util.Optional.orElseGet(Optional.java:267)
        at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:66)
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:44)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
        at java.util.Optional.map(Optional.java:215)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
        at java.util.Optional.orElseGet(Optional.java:267)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine.rebuild(DefaultExecutionEngine.java:46)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$0(ExecuteActionsTaskExecuter.java:182)
        at java.util.Optional.map(Optional.java:215)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:182)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(Thread.java:748)

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.9.1/userguide/command_line_interface.html#sec:command_line_warnings

Now this was run on codechickenlib - which makes sense; a library might not be able to generate runs, but we should detect it's a library and just politely warn out.

Also we should print the "build script" ID when it explodes, mine was 8fa7883b6196c1765266f4e6ddf3118d5043aafb

[CI] Basic smoke test

It would be nice to test if MC at least starts and loads world correctly with your changes. There is a libs which allow integration tests.

The proposition is as follows:

  1. Add MinecraftJUnit library as a default dependency to the mod dependencies list (or any better lib with similar functionality)
  2. Implement smoke tests which check if server starts up correctly and world is able to load
  3. Add CI workflow which runs said tests.
  4. Add junit report collection to workflow (junit should output a xml report in build), you could use action-junit-report for this (chosen arbitrary as a first link in the search)

Test out unified build script

A list of PR's that test the build script:

TC Node Tracker

  • Mixins: No
  • CoreMod: No
  • AccessTransformers: No
  • Shadow: No

Hodgepodge

Does not run in dev. Likely culprit: CoFHCore Fixed
CI Fails Fixed with setupDecompWorkspace in GitHub CI

  • Mixins: Yes
  • CoreMod: Yes
  • AccessTransformers: Yes
  • Shadow: No

Example tests

As a continuation of #15

It would be nice to have some example tests, to show how they can be done.

[CI] Automated code reformating

  • Add a code reformating plugin to gradle
  • Add CI stage to automatically reformat code and commit if any changes were done (e.g. via checking git status)
  • Maki it possible to configure format via external file (plugin probably accepts XML with formatting rules, which you can also import into IDE)

detect changed modid

On my server, if I remove or forget a mod, it pops up a window saying all these world blocks will be deleted (even if none are present iirc).

We should have a CI check for that per mod, so if 'chisel' becomes 'chisel-g43g32' somehow, it'l flag it.

To-Do

  • accessTransformerFile parameter + example
  • Support core mod (requires fully qualified name)
  • Somehow link the normal FMLCorePluginContainsFMLMod and loadNormalModAfterApplingMixins into one parameter
  • Add manifest setup to dev and sources jar
  • Every now and then (when appropriate): Merge main into example branches
  • Describe forge SRG file popup (Screenshot!) and how to solve it. Might not solvable in the build script
  • Warn users about access transformers: Minecraft sources will not be attached! This will disable search functionality in IDEA
  • Actually test it on a couple different projects. Do any issues pop up?
    • Tested NEI: No issues for Access Transformers, Core Mods or Shadow. Even as dependency
  • Provide function to check if file exists for fully qualified name
  • Universal manifest task
    • api artifact should not contain mixins, manifest info and access transformers
  • Run once at begin function:
    • Move java check there
    • Move GT timeout protection there
    • Check new parameters for existing and ask user to modify build.properties if missing
    • Check parameters for validity if possible (mostly: does specified file exist?)
      • modGroup
      • apiPackage
      • accessTransformersFile
      • mixinPlugin
      • mixinsPackage
      • coreModClass
  • Support Kotlin and Kotlin Mixins
  • Is FMLCorePluginContainsFMLMod required if Mixins are used? Strip otherwise
  • compileOnly() configuration must be transitive = false
  • Add try-catch for gitVersion() and print "please add a version tag" on fail
  • Remove maven transitive dependency approach because it won't work
  • Force Gradle onto idk 8
  • Add readme description on how to redirect automatic updates to a fork (maybe even consider an optional property in build.gradle)
  • Add property for tag prefix: Only take tags that fit prefix<version> into account

Optionals:

  • refactor property checks to methods for easy reuse and extendability
  • Add panic task (execute or print how to do): clean + forgegradle.cleanCache + idea invalidate cache + setupDecompWorkspace + kill all JVM instances
  • Add environment variable to override version info on local dev builds(?)
  • Add publishToMavenLocal task that overrides groupid to com.github
  • Add documentation for local install szenario
  • Try `configurations.compileOnly { transitive = false }

Support different tags

Add support for multiple tag prefixes: for example dev and release. Add configuration options for an optional organisation.gradle

Toolchains not working as expected on Windows

Try to find out what causes wired behaviour, on system where only jre was present and dev used a bundled version of 11th in IDEA there was a problem of gradle not downloading jdk and attempting to use jre.

Running ./gradlew build should ensure proper java setup

Test cases to try out:

  1. No java in the system - should automatically install 8th when
  2. Newer (11th) java in the system - should automatically install 8th when
  3. 8th jre in the system - should install 8th jdk
  4. Newer (11th) jre in the system - should install 8th jdk
  5. Many jdk versions including 8th - should use 8th
  6. Many jdk versions excluding 8th - should install 8th

Fiddle with PATH and JAVA_HOME (empty, present (pointing to java install dir), absent)

[CI] Code linting

Add plugin(s) which perform static analysis and include them in CI step along with action which will pinpoint lines in question. (E.g. stream not closed, infinite loop, etc)

Update outdated unified repositories

  • Add/Update GitHub CI
  • Update build.gradle
  • Update .gitignore
  • Strip dependencies, if transitive
  • Fix dependency versions? (discuss!)
    • Option to use dynamic versions (example compile 'org.springframework:spring-core:3.0.+'). It might update to newer versions, but will skip untagged dev commits. Benefit: Stays more up-to-date. Negativ: A tagged commit can still break the system, yet it is less like because it is specifically choosen
  • Remove transitive dependencies if the mod depends itself on it and define those again. This will prevent outdated or changed transitive dependencies that mods itself depends on.
  • Add names to repositories
  • fix username (remove quotes)

build.gradle lots of red

All the GradleExceptions are red underlined with "unable to resolve GradleException", and the first two imports don't work, saying "unable to resolve class ..."

Not sure where I went wrong but I defiantly did lol... Help would be much appreciated!

exception in phase 'semantic analysis'

problem occurred configuring root project 'ExampleMod1.7.10-main'.

Could not open cp_proj generic class cache for build file '/Minecarft/ExampleMod1.7.10-main/build.gradle' (.gradle/caches/6.9.1/scripts/no4yshs0nedrc26qe3co4g14).
BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 65

Mod Migration Guild

Just a list of things to mention in this guide:

  • Replace gradle/ folder with the one provided by this example
  • Extract dependencies from current build.gradle or build.gradle.kts to new file dependencies.gradle
  • Extract repositories from current build.gradle or build.gradle.kts to new file repositories.gradle
  • Adapt gradle.properties to your mod
  • Ensure src/main/resources/mcmod.info contains ${modId}, ${modName}. ${modVersion} and ${minecraftVersion}
  • Replace or copy .gitignore in your project
  • Copy jitpack.yml into your project
  • Copy .github/workflows/gradle.yml to your project (including folders)

If you migrate a project with mixins:

  • Extract mixins package from mixins.mymodid.json and add information to gradle.properties
  • Extract MixinPlugin information from mixins.mymodid.json and add information to gradle.properties
    or
  • Implement MixinPlugin according to this example
  • Remove mixins.mymodid.json

Memory strangeness on OpenComputer

repo had an issue compiling OpenComputer on Windows - it crashed out due to lack of RAM.

there are jvm options in the gradlew and gradle.bat but the same limit didn’t seem to crash me out but it may have reused a previous gradle.

It would be nice for those to be reasonable amounts and easily changed in one place.

What’s interesting is if CI worked with them - did it actually use them? They were like 64m

Archive name override

Add an optional property to override the archive name.

Crops++ goes by CropsPP-XXX.jar but the internal name is berriespp. GT++ goes by gt-plus-plus but the internal name is miscutils

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.