Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 27 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## What
_What does this PR do, and why? A clear, concise description. Linking an issue can replace the description._


## AI Usage
_Disclosure is required when AI tools were used. See the [AI Policy](https://github.com/Frontiers-PackForge/CosmicCore/blob/main-1.20.1-forge/AI_POLICY.md). There is no penalty for using AI, only for hiding it. You are responsible for understanding and reviewing all AI-assisted code before opening this PR._

- [ ] No AI tools were used for this pull request.
- [ ] AI tools were used for this pull request.

_If you checked yes, fill in:_

#### Tool(s) used
_Example: Claude Code (Opus 4.8), Cursor, GitHub Copilot_

#### How it was used
_Briefly: what the tool did and to what extent. Machine-assisted code is fine, but you must have reviewed all of it yourself._


## How Was This Tested
_Screenshots, snippets, or a description of how you verified this in code or in game._


## Additional Information
_Anything else reviewers should know: GUI or render changes, compatibility notes, API or recipe changes._

_Please remove unused sections and these italic explanations before submitting._
65 changes: 65 additions & 0 deletions AI_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# AI Usage Policy

CosmicCore is built with AI assisted tooling, and that is welcome here. The lead
developer and contributors use AI assisted tools (Claude Code, Cursor, Copilot,
and others) as a normal part of the workflow. This policy is not anti-AI. It
exists so that AI is used honestly and well and to give credit to the human
efforts that go into maintaining working user facing experiences.

The rules are simple:

* **Disclose AI usage.** If AI tools helped produce a contribution, say so:
name the tool (for example Claude Code, Cursor, Copilot) and the extent it was
used. Disclosure can be a note in the pull request or a `Co-authored-by:`
trailer on the commit. There is no penalty for using AI. There **is** a problem
with hiding it.

* **You must fully understand your own code.** If you cannot explain what a
change does and how it fits the rest of the system without the AI holding your
hand, do not contribute it. The human who opens the pull request owns the code
in it. If you do not understand it, take the time to learn it and be capable
of organizing and tracing it without the usage of AI. Ghostipedia (The lead dev)
pre-acknowledges their own stupidity, and will try to learn from anything they
may not understand.

* **Human-review and trim AI text.** Issues, discussions, and pull request
descriptions may be AI-assisted, but a human must read, edit, and cut them down
before posting. AI tends toward verbose filler. Do the work of trimming it to
the point, same case with code if your agent spews duplicated code everywhere
like a pet owner, clean up after your robot.

* **No AI-generated media.** Art, textures, models, animations, audio, and
video must be human-made. Code and text are the only acceptable AI-assisted
content. CosmicCore's original art is part of its identity and is not open
season for generators.

* **Low-effort AI slop will not be accepted.** Disclosed or not, a contribution
that is clearly unreviewed machine output, and that puts the burden of
validation on someone else, will be closed. If you want to learn the codebase
the slow human way, say so and you will get help from many devs, including myself.
Note: this only applies to contributors, Ghostipedia themselves is fully
responsible for inspecting and checking their code works before deployment.

## There are Humans Here

This project is maintained by humans. Every issue and pull request is a point
where people interact with each other and with the work. Approaching that
boundary with low-effort, unverified output is rude, because it pushes the cost
of checking it onto someone else I recommend you stand behind honest, even if crude
work.

## AI is Welcome Here

To be clear, because the rules above are strict and absolute for incoming contributors
AI is apart of the workflow of Cosmiccore, and most likely will remain that way.
Tedious busy work is one of the many ways it has saved myself and others mental energy
and time. The strict rules are to help set firm boundaries on usage in a time where
it is uncertain what the next new thing in AI will look like, let alone the
discussions surrounding it. So keep it respectful, to me, and to other contributors.

## Credits

This policy is adapted from the
[GregTech CEu Modern AI Usage Policy](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/AI_POLICY.md),
which is itself adapted from the
[Ghostty Project](https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md).

This file was deleted.

This file was deleted.

31 changes: 31 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,37 @@ sourceSets {
}
}

// --- Sodium 0.8.x (dev-only render testing) --------------------------------------------------------------
// Sodium 0.8 ships on caffeinemc maven as a 3-artifact set (-api / -mod / the production "shell"). The shell
// claims modId "sodium", which on a dev classpath would shadow the real sodium-neoforge-mod and make the game
// report "sodium is not installed". So we strip the shell down to a plain LIBRARY (drop its mod metadata) and
// load sodium-neoforge-mod as the actual mod, plus Sinytra's Forgified Fabric API shims for the FRAPI paths 0.8
// needs. Pattern from SrRapero720/chloride (1.21.1-neo), adapted from NeoGradle to ModDevGradle.
// Defined here (before the dependency/repository applies) so dependencies.gradle can use the config + task.
ext.sodiumNeoVersion = "0.8.12-beta.1+mc1.21.1"

configurations {
sodiumShell { transitive = false }
}

tasks.register('stripSodiumShell', Jar) {
archiveBaseName = 'cc-sodium-neoforge-shell-lib'
archiveVersion = (sodiumNeoVersion as String).replace('+', '-')
destinationDirectory = layout.buildDirectory.dir('sodium-shell-lib')
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from { configurations.sodiumShell.collect { zipTree(it) } }
exclude 'META-INF/MANIFEST.MF'
exclude 'META-INF/neoforge.mods.toml'
exclude 'META-INF/jarjar/**'
exclude 'META-INF/services/net.neoforged.neoforgespi.locating.IModFileCandidateLocator'
manifest {
attributes(
'FMLModType': 'LIBRARY',
'Automatic-Module-Name': 'sodium_service'
)
}
}

apply from: "$rootDir/gradle/scripts/jars.gradle"
apply from: "$rootDir/gradle/scripts/moddevgradle.gradle"
apply from: "$rootDir/gradle/scripts/repositories.gradle"
Expand Down
Loading
Loading