Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
02263b3
Vigilance Config part 1
asoji Aug 21, 2025
cb9d387
Vigilance Config part 2
asoji Aug 21, 2025
03fcf54
you smell bad for doing that
asoji Aug 21, 2025
d051511
Merge branch 'kt/1.21.1/summer' into feat/1.21.1/summer/new-config
asoji Aug 21, 2025
7b6d7fd
you did a bad and you should feel bad.
asoji Aug 21, 2025
ba662bc
I don't know if this will work but fuck it we ball.
CephalonCosmic Aug 21, 2025
00506b9
Vigilance Config part 3
asoji Aug 22, 2025
2cd37b3
please never make me touch AI ever again
asoji Aug 23, 2025
1677c55
version change for next major update
asoji Aug 23, 2025
cb1bab1
minor spelling mistake
asoji Aug 23, 2025
9f18b97
Merge pull request #1 from devOS-Sanity-Edition/feat/1.21.1/summer/ne…
asoji Aug 23, 2025
f5cc416
Commands part 1
asoji Aug 23, 2025
509b791
mclo.gs crash uploading
asoji Aug 24, 2025
14112e2
Merge pull request #4 from devOS-Sanity-Edition/feat/1.21.1/summer/v3…
asoji Aug 24, 2025
c6db50c
before you say its gross, trust me, i know..
asoji Aug 24, 2025
e8c0d88
random whitespace? in my commits? likely
asoji Aug 24, 2025
3841c78
Merge branch 'feat/1.21.1/summer/v3/misc-patches' into feat/1.21.1/su…
asoji Aug 24, 2025
c6d5626
Merge pull request #3 from devOS-Sanity-Edition/feat/1.21.1/summer/v3…
asoji Aug 24, 2025
4eb0605
read unsup.ini file + optimize some imports
asoji Aug 24, 2025
44cc2a6
I GOT BASE64 BROTLI ENCODED QOI IMAGE WRITTEN
asoji Aug 24, 2025
c756edd
some config stuff, renamed unsupini object, aaaaa
asoji Aug 24, 2025
90f8b7f
improved code for restart cmd [thanks @Deftu]
asoji Aug 24, 2025
5bc6cef
ioa
asoji Aug 24, 2025
344e44e
whitespace
asoji Aug 24, 2025
212bccd
finicky windows 11 dark mode titlebar :sakaSigh:
asoji Aug 24, 2025
476ed1c
apply by default ig
asoji Aug 24, 2025
95b3382
[[ **VIOLENTLY HITS DESK**]] WHY IS DECODE EMPTY
asoji Aug 25, 2025
551287a
comment of rage
asoji Aug 25, 2025
7e4ffc1
everyone say `Thank You Storm`
asoji Aug 25, 2025
e376cde
oops dont malloc that twice please
asoji Aug 25, 2025
7ee7de2
mixin restructure
asoji Aug 25, 2025
5eaacec
creditting everyone whos helped
asoji Aug 25, 2025
f55854f
mixin name change
asoji Aug 25, 2025
7993979
tripping a roomba down the stairs like a child
asoji Aug 26, 2025
1741935
`/request dontSleep` done
asoji Aug 26, 2025
270e904
oops in 5 business ticks
asoji Aug 26, 2025
5ae89bd
finishing commands like how i finished your father
asoji Aug 26, 2025
b93f579
whitespace
asoji Aug 26, 2025
f8cdbfd
category changes
asoji Aug 26, 2025
79932aa
readme you fu-
asoji Aug 26, 2025
45c03f0
Merge pull request #5 from devOS-Sanity-Edition/feat/1.21.1/summer/v3…
asoji Aug 26, 2025
5e15062
v3 time
asoji Aug 26, 2025
f99b4f9
use custom Vigilance + text fix in command
asoji Aug 26, 2025
6938f25
optimize imports
asoji Aug 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ bin/
# fabric

run/
runServer/

# java

Expand All @@ -40,7 +41,4 @@ replay_*.log
*.jfr

# Kotlin 2.0+
.kotlin/

# no.
localLibs/
.kotlin/
22 changes: 18 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,29 @@ Some fixes done for the Winter's modpacks.
- Potential Problem Mods screen on first startup
- Be able to click on Journeymap formatted waypoints if you use Xaero's [Journey already integrates the other way around]
- Everyone in the end during an end fight gets a dragon egg
- Dark Titlebar [Windows 11 only]
- Ability to change titlebar and icon [Must be a 32x32 Brotli-compressed QOI Image in Base64 string form] [Converter here](https://qoi.y2k.diy/)
- Ability to read unsup.ini files in pack folder to set icon [Must be a 32x32 Brotli-compressed QOI Image in Base64 string form] and titlebar
- `request` commands, notably `request dontSleep`, `request attention` and [OP Level 4 only] `request serverRestart`
- `restart` command that saves, does a 15 second countdown, and then stops server [and let Pelican/Pterodactyl start server back up under assumption]
- Generative AI deterrent in logs
- Uploads crash logs automatically and opens up browser

A lot of this can be found in the mod's config, which is powered by [Vigilance](https://github.com/EssentialGG/Vigilance)

![java_axPRlxeTJb](https://github.com/user-attachments/assets/503969a7-b709-4ccd-baac-2195fc5fca29)

## Credits
- BluSpring for.. basically half of this mod and why it even exists. Major major code help.
- Cartrigger for idea of Raccoon trinket slot and the 2 raccoon slot textures
- CephalonCosmic for internal tool to figure out which NBT files have certain values
- CephalonCosmic for internal tool to figure out which NBT files have certain values, and fixing the internal impl for getting QOI Images working correctly
- Deftu for Vigilance config assistance and better server restart command implementation
- IThundxr for
- maximumpower55 for helping with the pack
- maximumpower55 for helping with the pack, and the mclo.gs crash handling from TeaBridge
- Oliver-makes-code for showing how to setup datapacks as a resource pack for actual working Structure NBT overriding
- ims212 for end dragon fight mixin
- IMS212 for end dragon fight mixin

## License
As per usual with all my projects, [MIT License](LICENSE).
As per usual with all my projects, [MIT License](LICENSE).

However, the [CrashReportGAIDeterrentMixin](src/main/java/one/devos/nautical/winterisms/mixin/common/CrashReportGenerativeAIDeterrentMixin.java) in specific is 0BSD, feel free to take it, no attributions needed. :p
24 changes: 23 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ repositories {
maven("https://maven.bawnorton.com/releases") // MixinSquared
maven("https://maven.ladysnake.org/releases")
maven("https://cursemaven.com") // ech. curseforge.
maven("https://repo.essential.gg/repository/maven-public") // Essential's Vigilance Config
maven("https://jitpack.io")
mavenLocal()
}

//All dependencies and their versions are in ./gradle/libs.versions.toml
Expand All @@ -41,20 +44,35 @@ dependencies {
modLocalRuntime(libs.bundles.dev.mods)

// Config
include(modImplementation(libs.midnightlib.get())!!)
// include(implementation(libs.essential.vigilance.get())!!)
modImplementation(files("localLibs/Vigilance-312-CUSTOM.jar")) // bestie i am at my fucking limit
include(implementation(libs.essential.elementa.get())!!)
include(modImplementation(libs.essential.universalcraft.get())!!)

// modImplementation(files("localLibs/centered-crosshair+1.21-1.0.8.jar"))

include(modImplementation(libs.fmw.get())!!) // just to avoid the basic long metadata calls
include(implementation(annotationProcessor(libs.mixinsquared.get())!!)!!)
include(implementation(libs.mixinconstraints.get())!!)
include(implementation(libs.brigadier.kotlin.get())!!)
include(implementation(libs.ini4j.get())!!)
include(implementation(libs.qoi.main.get())!!)
include(implementation(libs.qoi.awt.get())!!)
include(implementation(libs.brotli.get())!!)
include(implementation(libs.jna.main.get())!!)
include(implementation(libs.jna.platform.get())!!)

modImplementation(libs.grappling.hook)
modImplementation(libs.lattice)
modCompileOnly(libs.xaeros.minimap)
modImplementation(libs.journeymap)
modImplementation(libs.multikeybindings)
// modImplementation(libs.yungs.api) // aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
modImplementation(libs.cloth.config)
modImplementation(libs.better.end.island)
modImplementation(libs.cicada)
modImplementation(libs.`do`.a.barrel.roll)
modImplementation(libs.fabric.permissions.api) // DABR needs this but it doesnt bundle it which is dumb. so you crash on world join w/ this

modCompileOnly(libs.enderscape)

Expand Down Expand Up @@ -82,6 +100,10 @@ java {
targetCompatibility = JavaVersion.VERSION_21
}

tasks.remapJar { // bestie i am at my fucking limit
nestedJars.from(files("localLibs/Vigilance-312-CUSTOM.jar"))
}

tasks.jar {
from("LICENSE") {
rename { "${it}_${project.base.archivesName.get()}"}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
org.gradle.parallel=true

# Mod Properties
mod_version=2.0.3
mod_version=3.0.0
maven_group=one.devos.nautical
archives_base_name=winterisms

Expand Down
72 changes: 50 additions & 22 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,60 +1,88 @@
[versions]
better_end_island = "1.21.1-Fabric-3.1.2"
brigadier_kotlin = "1.4.2"
brotli = "0.1.2"
cardinal_components = "6.1.1"
cicada = "0.14.2+1.21-1.21.1"
cloth_config = "15.0.140+fabric"
do_a_barrel_roll = "3.7.3+1.21-fabric"
enderscape = "wbBsMlR1"
essential_elementa = "710"
essential_universalcraft = "427" # the stanley parable number?!
essential_vigilance = "312"
fabric_api = "0.116.4+1.21.1"
fabric_language_kotlin = "1.13.4+kotlin.2.2.0"
fabric_loader = "0.16.14"
fabric_permissions_api = "0.3.1"
flashback = "hQkBepoB"
fmw = "1.0.0+build.8"
grappling_hook = "0.7.3-1.21.1"
ini4j = "0.5.4"
jna = "5.17.0"
journeymap = "1.21.1-6.0.0-beta.52+fabric"
lattice = "1.2.10"
midnightlib = "1.7.5+1.21.1-fabric"
minecraft = "1.21.1"
mixinconstraints = "1.0.9"
mixinsquared = "0.3.3"
modmenu = "11.0.3"
sodium = "mc1.21.1-0.6.13-fabric"
trinkets = "3.10.0"
xaeros_minimap = "25.2.10_Fabric_1.21"
enderscape = "wbBsMlR1"
journeymap = "1.21.1-6.0.0-beta.52+fabric"
multikeybindings = "1.0.2+1.21.1"
techreborn = "5776057"
reborncore = "5776056"
cardinal_components = "6.1.1"
polymorph = "AGMyBSJE"
qoi = "1.2.1"
reborn_energy = "4.1.0"
better_end_island = "1.21.1-Fabric-3.1.2"
reborncore = "5776056"
sodium = "mc1.21.1-0.6.13-fabric"
techreborn = "5776057"
trinkets = "3.10.0"
xaeros_minimap = "25.2.10_Fabric_1.21"
yungs_api = "1.21.1-Fabric-5.1.6"

[libraries]
better_end_island = { module = "maven.modrinth:yungs-better-end-island", version.ref = "better_end_island" }
brigadier_kotlin = { module = "com.github.Phyrone:brigardier-kotlin", version.ref = "brigadier_kotlin" }
brotli = { module = "org.brotli:dec", version.ref = "brotli" }
cardinal_components_base = { module = "org.ladysnake.cardinal-components-api:cardinal-components-base", version.ref = "cardinal_components" }
cardinal_components_block = { module = "org.ladysnake.cardinal-components-api:cardinal-components-block", version.ref = "cardinal_components" }
cardinal_components_entity = { module = "org.ladysnake.cardinal-components-api:cardinal-components-entity", version.ref = "cardinal_components" }
cicada = { module = "maven.modrinth:cicada", version.ref = "cicada" }
cloth_config = { module = "maven.modrinth:cloth-config", version.ref = "cloth_config" }
do_a_barrel_roll = { module = "maven.modrinth:do-a-barrel-roll", version.ref = "do_a_barrel_roll" }
enderscape = { module = "maven.modrinth:enderscape", version.ref = "enderscape" }
essential_elementa = { module = "gg.essential:elementa", version.ref = "essential_elementa" }
essential_universalcraft = { module = "gg.essential:universalcraft-1.21-fabric", version.ref = "essential_universalcraft" }
essential_vigilance = { module = "gg.essential:vigilance", version.ref = "essential_vigilance" }
fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" }
fabric_language_kotlin = { module = "net.fabricmc:fabric-language-kotlin", version.ref = "fabric_language_kotlin" }
fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_loader" }
fabric_permissions_api = { module = "me.lucko:fabric-permissions-api", version.ref = "fabric_permissions_api" }
flashback = { module = "maven.modrinth:flashback", version.ref = "flashback" }
fmw = { module = "gay.asoji:fmw", version.ref = "fmw" }
grappling_hook = { module = "io.github.moonlight_maya:Grappling-Hook", version.ref = "grappling_hook" }
ini4j = { module = "org.ini4j:ini4j", version.ref = "ini4j" }
jna_main = { module = "net.java.dev.jna:jna", version.ref = "jna" }
jna_platform = { module = "net.java.dev.jna:jna-platform", version.ref = "jna" }
journeymap = { module = "maven.modrinth:journeymap", version.ref = "journeymap" }
lattice = { module = "com.moulberry:lattice", version.ref = "lattice" }
midnightlib = { module = "maven.modrinth:midnightlib", version.ref = "midnightlib" }
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
mixinconstraints = { module = "com.moulberry:mixinconstraints", version.ref = "mixinconstraints" }
mixinsquared = { module = "com.github.bawnorton.mixinsquared:mixinsquared-fabric", version.ref = "mixinsquared" }
modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" }
sodium = { module = "maven.modrinth:sodium", version.ref = "sodium" }
trinkets = { module = "dev.emi:trinkets", version.ref = "trinkets" }
xaeros_minimap = { module = "maven.modrinth:xaeros-minimap", version.ref = "xaeros_minimap" }
enderscape = { module = "maven.modrinth:enderscape", version.ref = "enderscape" }
journeymap = { module = "maven.modrinth:journeymap", version.ref = "journeymap" }
multikeybindings = { module = "maven.modrinth:multi-key-bindings", version.ref = "multikeybindings" }
techreborn = { module = "curse.maven:techreborn-233564", version.ref = "techreborn" }
reborncore = { module = "curse.maven:reborncore-237903", version.ref = "reborncore" }
polymorph = { module = "maven.modrinth:polymorph", version.ref = "polymorph" }
cardinal_components_base = { module = "org.ladysnake.cardinal-components-api:cardinal-components-base", version.ref = "cardinal_components" }
cardinal_components_block = { module = "org.ladysnake.cardinal-components-api:cardinal-components-block", version.ref = "cardinal_components" }
cardinal_components_entity = { module = "org.ladysnake.cardinal-components-api:cardinal-components-entity", version.ref = "cardinal_components" }
qoi_awt = { module = "me.saharnooby:qoi-java-awt", version.ref = "qoi" }
qoi_main = { module = "me.saharnooby:qoi-java", version.ref = "qoi" }
reborn_energy = { module = "teamreborn:energy", version.ref = "reborn_energy" }
better_end_island = { module = "maven.modrinth:yungs-better-end-island", version.ref = "better_end_island" }
reborncore = { module = "curse.maven:reborncore-237903", version.ref = "reborncore" }
sodium = { module = "maven.modrinth:sodium", version.ref = "sodium" }
techreborn = { module = "curse.maven:techreborn-233564", version.ref = "techreborn" }
trinkets = { module = "dev.emi:trinkets", version.ref = "trinkets" }
xaeros_minimap = { module = "maven.modrinth:xaeros-minimap", version.ref = "xaeros_minimap" }
yungs_api = { module = "maven.modrinth:yungs-api", version.ref = "yungs_api" }

[bundles]
dev_mods = [ "sodium", "modmenu" ]
dependencies = [ "midnightlib", "flashback", "trinkets" ]
dev_mods = [ "sodium" ]
dependencies = [ "midnightlib", "flashback", "trinkets", "modmenu" ]
techreborn = [ "techreborn", "reborncore", "reborn_energy" ]
polymorph = [ "polymorph", "cardinal_components_base", "cardinal_components_block", "cardinal_components_entity" ]

Expand Down
Binary file added localLibs/Vigilance-312-CUSTOM.jar
Binary file not shown.
51 changes: 0 additions & 51 deletions src/main/java/one/devos/nautical/winterisms/config/Config.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package one.devos.nautical.winterisms.mixin.client;

import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Minecraft.class)
public class DisableVanillaTitle {
@Inject(method = "updateTitle", at = @At("HEAD"), cancellable = true)
private void disableVanillaTitle(final CallbackInfo ci) {
ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package one.devos.nautical.winterisms.mixin;
package one.devos.nautical.winterisms.mixin.client;

import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.Util;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package one.devos.nautical.winterisms.mixin;
package one.devos.nautical.winterisms.mixin.client;

import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.KeyMapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package one.devos.nautical.winterisms.mixin;
package one.devos.nautical.winterisms.mixin.client;

import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.TitleScreen;
Expand All @@ -18,7 +18,7 @@ protected TitleScreenMixin(Component title) {

@Inject(at = @At("RETURN"), method = "init")
private void init(CallbackInfo info) {
if (Config.incompatibleModsWarningScreenViewed == false) {
if (!Config.INSTANCE.getIncompatibleModsWarningScreenViewed()) {
this.minecraft.setScreen(new InitialIncompatibleWarningScreen(this));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package one.devos.nautical.winterisms.mixin.client;

import net.minecraft.client.Minecraft;
import one.devos.nautical.winterisms.client.titlebar.QOIWindowIcon;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Minecraft.class)
public class WindowQOIDataMixin {
@Inject(method = "onResourceLoadFinished", at = @At("HEAD"))
private void onResourceLoadFinished(CallbackInfo ci) {
QOIWindowIcon.INSTANCE.okayLetsDoThisShit();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package one.devos.nautical.winterisms.mixin.client;

import net.minecraft.client.Minecraft;
import one.devos.nautical.winterisms.client.titlebar.DarkModeTitleBar;
import org.lwjgl.glfw.GLFWNativeWin32;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Minecraft.class)
public class WindowTitlebarMixin {
@Inject(method = "setWindowActive", at = @At("HEAD"))
private void titlebar(boolean windowActive, CallbackInfo ci) {
long window = Minecraft.getInstance().getWindow().getWindow();
int windowId = (int) GLFWNativeWin32.glfwGetWin32Window(window);

DarkModeTitleBar.INSTANCE.darkModeTitleBarForWindows11(windowId);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package one.devos.nautical.winterisms.mixin.compat.client.flashback;
package one.devos.nautical.winterisms.mixin.client.compat.flashback;

import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.moulberry.flashback.Flashback;
Expand All @@ -21,7 +21,7 @@ public class FlashbackReplayIncompatibleModsMixin {
remap = false
)
private static List<String> getReplayIncompatibleMods(List<String> original) {
if (Objects.equals(Config.flashbackReplayForceAllowIncompatibleMods, Config.painAndSufferingAndSufferingAndPain)) {
if (Objects.equals(Config.INSTANCE.getFlashbackReplayForceAllowIncompatibleMods(), Config.INSTANCE.getPainAndSufferingAndSufferingAndPain())) {
original.clear();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package one.devos.nautical.winterisms.mixin.compat.client.flashback;
package one.devos.nautical.winterisms.mixin.client.compat.flashback;

import com.bawnorton.mixinsquared.TargetHandler;
import com.moulberry.mixinconstraints.annotations.IfModLoaded;
Expand Down
Loading
Loading