From 312b6739fc872cbfd4714a89c100c681f23e586c Mon Sep 17 00:00:00 2001 From: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Sat, 23 Aug 2025 00:36:46 -0700 Subject: [PATCH] Start implementing sky light --- .editorconfig | 6 + build.gradle | 50 ++++++- custom_mappings.tiny | 81 ++++++++++++ gradle.properties | 18 +-- libs.versions.toml | 4 + .../crystalline_sky/CrystallineSky.java | 26 ++++ .../slimeistdev/crystalline_sky/ModSetup.java | 11 ++ .../mixin/ChunkLightProviderMixin.java | 16 +++ .../mixin/ChunkSkyLightProviderMixin.java | 123 ++++++++++++++++++ .../mixin/LightStorageAccessor.java | 11 ++ .../registry/CrystallineBlocks.java | 33 +++++ .../registry/CrystallineItems.java | 10 ++ .../java/io/github/username/modid/ModId.java | 15 --- .../{mod_id => crystalline_sky}/icon.png | Bin .../lang/en_us.json | 0 .../resources/crystalline_sky.mixins.json | 21 +++ src/main/resources/fabric.mod.json | 70 +++++----- src/main/resources/mod_id.mixins.json | 15 --- 18 files changed, 435 insertions(+), 75 deletions(-) create mode 100644 custom_mappings.tiny create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/CrystallineSky.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/ModSetup.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkLightProviderMixin.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/mixin/LightStorageAccessor.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineBlocks.java create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineItems.java delete mode 100644 src/main/java/io/github/username/modid/ModId.java rename src/main/resources/assets/{mod_id => crystalline_sky}/icon.png (100%) rename src/main/resources/assets/{mod_id => crystalline_sky}/lang/en_us.json (100%) create mode 100644 src/main/resources/crystalline_sky.mixins.json delete mode 100644 src/main/resources/mod_id.mixins.json diff --git a/.editorconfig b/.editorconfig index 6d7dcc0..14b4436 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,6 +4,10 @@ indent_style = tab tab_width = 4 insert_final_newline = true +[{*.py,*.ipynb}] +indent_size = 4 +indent_style = space + [*.yml] indent_size = 2 indent_style = space @@ -22,3 +26,5 @@ ij_groovy_method_brace_style = end_of_line [{*.har,*.json,*.png.mcmeta,mcmod.info,pack.mcmeta}] ij_json_array_wrapping = split_into_lines +indent_size = 2 +indent_style = space diff --git a/build.gradle b/build.gradle index 602f69f..8aa04b3 100644 --- a/build.gradle +++ b/build.gradle @@ -6,18 +6,53 @@ plugins { alias libs.plugins.minotaur } +boolean inCI = System.getenv("GITHUB_RUN_NUMBER") != null + version = "$modVersion+$branchName" base.archivesName = project.slug repositories { + exclusiveContent { + forRepository { + //noinspection ForeignDelegate + maven { + name 'Modrinth' + url "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } + exclusiveContent { + forRepository { + //noinspection ForeignDelegate + maven { + name 'Terraformers' + url "https://maven.terraformersmc.com/" + } + } + filter { + includeGroup "com.terraformersmc" + } + } } dependencies { minecraft libs.mc - mappings variantOf(libs.yarn) { classifier "v2" } + mappings loom.layered { + it.mappings variantOf(libs.yarn) { classifier "v2" } + it.mappings file("custom_mappings.tiny") + } modImplementation libs.fl modImplementation libs.fapi + + if (!inCI) { + modRuntimeOnly libs.mm + } + + include(implementation(annotationProcessor(libs.mixinextras.get()))) } processResources { @@ -40,6 +75,18 @@ processResources { inputs.properties meta filesMatching("*.mod.json") { expand(meta) } filesMatching("META-INF/*mods.toml") { expand(meta) } + + // don't add development or to-do files into built jar + exclude("**/*.bbmodel", "**/*.lnk", "**/*.xcf", "**/*.blend", "**/*.blend1") +} + +loom { + runs.configureEach { + vmArg("-XX:+AllowEnhancedClassRedefinition") + vmArg("-XX:+IgnoreUnrecognizedVMOptions") + vmArg("-Dmixin.debug.export=true") + vmArg("-Dfabric-tag-conventions-v2.missingTagTranslationWarning=VERBOSE") + } } tasks.withType(JavaCompile).configureEach { @@ -68,6 +115,7 @@ modrinth { token = "$System.env.MODRINTH_TOKEN" projectId = slug versionNumber = project.version + versionType = System.getenv().getOrDefault("RELEASE_TYPE", "release") uploadFile = remapJar gameVersions = compatibleVersions.split(", ").toList() loaders = compatibleLoaders.split(", ").toList() diff --git a/custom_mappings.tiny b/custom_mappings.tiny new file mode 100644 index 0000000..7ab4394 --- /dev/null +++ b/custom_mappings.tiny @@ -0,0 +1,81 @@ +tiny 2 0 official intermediary named +c fac net/minecraft/class_3558 net/minecraft/world/chunk/light/ChunkLightProvider + f I a field_44729 MAX_LEVEL + f I b field_44730 MIN_OPACITY + f J c field_44731 PULL_LIGHT_IN_ENTRY + f I g field_44732 MIN_QUEUE_SIZE + f Lit/unimi/dsi/fastutil/longs/LongArrayFIFOQueue; i field_44734 decreaseQueue + f Lit/unimi/dsi/fastutil/longs/LongArrayFIFOQueue; j field_44735 increaseQueue + f I k field_31709 CACHE_SIZE + m (J)V a method_51529 checkNode + m (JJ)V a method_51530 propagateDecrease + m (JJI)V a method_51531 propagateIncrease + m (JJ)V b method_51565 enqueueDecrease + m (JJ)V c method_51566 enqueueIncrease + m ()I d method_51567 propagateIncreases + m ()I e method_51570 propagateDecreases + +c fac$a net/minecraft/class_3558$class_8531 net/minecraft/world/chunk/light/ChunkLightProvider$QueueEntry + m (IZ)J a method_51573 increaseLightFromEmission + m (ZZZZZ)J a method_51578 increaseSkySourceInDirections + m (IZLjh;)J b method_51579 increaseOnlyOneDirection + m (J)Z c method_51582 isIncreaseFromEmission + +c fae net/minecraft/class_3572 net/minecraft/world/chunk/light/ChunkSkyLightProvider + f J g field_44743 REMOVE_TOP_SKY_SOURCE_ENTRY + f J h field_44744 REMOVE_SKY_SOURCE_ENTRY + f J i field_44745 ADD_SKY_SOURCE_ENTRY + f Ljb$a; j field_44746 scratchPos + m (IIII)V a method_51586 removeSourcesBelow + m (JLjh;IZI)V a method_51587 propagateFromEmptySections + p 0 blockPos + p 1 direction + p 2 lightLevel + p 3 shouldIncrease + p 4 emptySections + m (III)V b method_51590 updateSourcesInColumn + m (IIII)V b method_51591 addSourcesAbove + m (J)V a method_51529 checkNode + v 3 5 -1 _ _ x + v 4 11 -1 _ _ y + v 5 17 -1 _ _ z + v 6 23 -1 _ _ sectionPos + v 8 54 -1 _ _ lowestSourceY + v 9 100 -1 _ _ aboveLowest + v 10 137 -1 _ _ storedLightLevel + m (JJI)V a method_51531 propagateIncrease + v 6 3 -1 _ _ blockState + v 7 10 -1 _ _ emptySectionsBelow + v 11 37 -1 _ _ direction + v 12 57 -1 _ _ targetPos + v 14 92 -1 _ _ storedLightLevel + v 15 98 -1 _ _ baseLevelToPropagate + v 16 128 -1 _ _ targetState + v 17 139 -1 _ _ trueLevelToPropagate + m (Ldlz;)V b method_51471 propagateLight + v 2 12 -1 _ _ packedZeroPos + v 4 48 -1 _ _ sourcesO + v 5 74 -1 _ _ sourcesZN + v 6 100 -1 _ _ sourcesZP + v 7 126 -1 _ _ sourcesXN + v 8 152 -1 _ _ sourcesXP + v 9 165 -1 _ _ topSectionY + v 10 177 -1 _ _ bottomSectionY + v 11 186 -1 _ _ baseX + v 12 195 -1 _ _ baseZ + v 13 201 -1 _ _ sectionY + v 14 223 -1 _ _ packedSectionPos + v 16 237 -1 _ _ chunkNibbleArray + v 17 252 -1 _ _ sectionMinY + v 18 259 -1 _ _ sectionMaxY + v 19 262 -1 _ _ isMinBelowCurrent + v 20 265 -1 _ _ localZ + v 21 275 -1 _ _ localX + v 22 293 -1 _ _ minSourceY_O + v 23 333 -1 _ _ minSourceY_ZN + v 24 364 -1 _ _ minSourceY_ZP + v 25 394 -1 _ _ minSourceY_XN + v 26 425 -1 _ _ minSourceY_XP + v 27 444 -1 _ _ minSourceY_max + v 28 448 -1 _ _ it_y + v 29 507 -1 _ _ it_pos diff --git a/gradle.properties b/gradle.properties index d42314b..1253ec3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,15 +6,15 @@ org.gradle.configuration-cache=true # Loom fabric.loom.multiProjectOptimisation=true # Mod Metadata -group=io.github.username -user=username -slug=mod-id -modId=mod_id -modName=Mod ID -modDescription=Sal doesn't have editing software so he has to make memes through minecraft mod descriptions, making him tonight's big loser. -authors=Anonymous -contributors=all this mod's adoring fans! -license=MIT +group=io.github.slimeistdev +user=techno-sam +slug=crystalline-sky +modId=crystalline_sky +modName=Crystalline Sky +modDescription= Crystallizes the heavens into block form. For all your sky-in-a-cave needs. +authors=Slimeist +contributors= +license=EUPL 1.2 or later # Mod Version modVersion=0.1.0 # Branch Metadata diff --git a/libs.versions.toml b/libs.versions.toml index 0d94ae7..b5461ed 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -6,6 +6,8 @@ mc = "1.21.8" fl = "0.16.14" yarn = "1.21.8+build.1" fapi = "0.130.0+1.21.8" +mixinextras = "0.5.0" +mm = "15.0.0-beta.3" [plugins] loom = { id = "fabric-loom", version.ref = "loom" } @@ -16,3 +18,5 @@ mc = { group = "mojang", name = "minecraft", version.ref = "mc" } fl = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fl" } yarn = { group = "net.fabricmc", name = "yarn", version.ref = "yarn" } fapi = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fapi" } +mixinextras = { group = "io.github.llamalad7", name = "mixinextras-fabric", version.ref = "mixinextras" } +mm = { group = "com.terraformersmc", name = "modmenu", version.ref = "mm" } diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/CrystallineSky.java b/src/main/java/io/github/slimeistdev/crystalline_sky/CrystallineSky.java new file mode 100644 index 0000000..c2f78d0 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/CrystallineSky.java @@ -0,0 +1,26 @@ +package io.github.slimeistdev.crystalline_sky; + +import net.fabricmc.api.ModInitializer; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.util.Identifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CrystallineSky implements ModInitializer { + public static final String ID = "crystalline_sky"; + public static final Logger LOG = LoggerFactory.getLogger(ID); + + @Override + public void onInitialize() { + ModSetup.init(); + } + + public static Identifier id(String path) { + return Identifier.of(ID, path); + } + + public static RegistryKey key(RegistryKey> registryKey, String path) { + return RegistryKey.of(registryKey, id(path)); + } +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/ModSetup.java b/src/main/java/io/github/slimeistdev/crystalline_sky/ModSetup.java new file mode 100644 index 0000000..e846e69 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/ModSetup.java @@ -0,0 +1,11 @@ +package io.github.slimeistdev.crystalline_sky; + +import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks; +import io.github.slimeistdev.crystalline_sky.registry.CrystallineItems; + +public class ModSetup { + public static void init() { + CrystallineBlocks.init(); + CrystallineItems.init(); + } +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkLightProviderMixin.java b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkLightProviderMixin.java new file mode 100644 index 0000000..35e3ac8 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkLightProviderMixin.java @@ -0,0 +1,16 @@ +package io.github.slimeistdev.crystalline_sky.mixin; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks; +import net.minecraft.block.BlockState; +import net.minecraft.world.chunk.light.ChunkLightProvider; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ChunkLightProvider.class) +public class ChunkLightProviderMixin { + @WrapMethod(method = "needsLightUpdate") + private static boolean updateSky(BlockState oldState, BlockState newState, Operation original) { + return original.call(oldState, newState) || (oldState.isOf(CrystallineBlocks.SKY) != newState.isOf(CrystallineBlocks.SKY)); + } +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java new file mode 100644 index 0000000..85e44e8 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/ChunkSkyLightProviderMixin.java @@ -0,0 +1,123 @@ +package io.github.slimeistdev.crystalline_sky.mixin; + +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.Share; +import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; +import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkSectionPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.chunk.ChunkProvider; +import net.minecraft.world.chunk.ChunkToNibbleArrayMap; +import net.minecraft.world.chunk.light.ChunkLightProvider; +import net.minecraft.world.chunk.light.ChunkSkyLightProvider; +import net.minecraft.world.chunk.light.LightStorage; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Slice; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ChunkSkyLightProvider.class) +public abstract class ChunkSkyLightProviderMixin, S extends LightStorage> extends ChunkLightProvider { + @Shadow + @Final + private BlockPos.Mutable scratchPos; + + @Unique + private static final int crystalline_sky$EMISSION_FROM_SKY_BLOCK = 1 << 22; // used to allow 15-level light to go down without reduction + + protected ChunkSkyLightProviderMixin(ChunkProvider chunkProvider, S lightStorage) { + super(chunkProvider, lightStorage); + } + + @Inject(method = "checkNode", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;get(J)I")) + private void emitFromSky(long blockPos, CallbackInfo ci) { + BlockState state = getStateForLighting(scratchPos.set(blockPos)); + if (state.isOf(CrystallineBlocks.SKY) && ((LightStorageAccessor) lightStorage).crystalline_sky$callIsSectionInEnabledColumn(ChunkSectionPos.fromBlockPos(blockPos))) { + enqueueIncrease(blockPos, QueueEntry.increaseLightFromEmission(15, isTrivialForLighting(state)) | crystalline_sky$EMISSION_FROM_SKY_BLOCK); + } + } + + @Definition(id = "lightLevel", local = @Local(type = int.class, argsOnly = true, ordinal = 0)) + @Expression("lightLevel - 1") + @ModifyExpressionValue( + method = "propagateIncrease", + at = @At("MIXINEXTRAS:EXPRESSION"), + slice = @Slice( + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;get(J)I"), + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getStateForLighting(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", ordinal = 0) + ) + ) + private int unreducedDown1(int original, long blockPos, long packed, int lightLevel, @SuppressWarnings("LocalMayBeArgsOnly") @Local(ordinal = 0) LocalRef direction, @Share("unreduced") LocalBooleanRef unreduced) { + if (lightLevel == 15 && (packed & crystalline_sky$EMISSION_FROM_SKY_BLOCK) != 0 && direction.get() == Direction.DOWN) { + unreduced.set(true); + return lightLevel; + } else { + unreduced.set(false); + return original; + } + } + + @WrapOperation( + method = "propagateIncrease", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getOpacity(Lnet/minecraft/block/BlockState;)I", + ordinal = 0 + ), + slice = @Slice( + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getStateForLighting(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", ordinal = 0) + ) + ) + private int unreducedDown2(ChunkSkyLightProvider instance, BlockState blockState, Operation original, @Share("unreduced") LocalBooleanRef unreduced) { + if (unreduced.get()) { + return blockState.getOpacity(); + } + + return original.call(instance, blockState); + } + + @WrapOperation( + method = "propagateIncrease", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;enqueueIncrease(JJ)V" + ), + slice = @Slice( + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/ChunkSkyLightProvider;getStateForLighting(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;", ordinal = 0) + ) + ) + private void passFlagOn(ChunkSkyLightProvider instance, long pos, long flags, Operation original, @Share("unreduced") LocalBooleanRef unreduced) { + if (unreduced.get()) { + flags |= crystalline_sky$EMISSION_FROM_SKY_BLOCK; + } + original.call(instance, pos, flags); + } + + @Definition(id = "k", local = @Local(type = int.class, ordinal = 4)) + @Definition(id = "j", local = @Local(type = int.class, ordinal = 1)) + @Expression("k <= j - 1") + @ModifyExpressionValue( + method = "propagateDecrease", + at = @At("MIXINEXTRAS:EXPRESSION"), + slice = @Slice( + from = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;get(J)I"), + to = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/light/SkyLightStorage;set(JI)V") + ) + ) + private boolean cleanBelowSkyLight(boolean original, @Local(ordinal = 1) LocalIntRef j, @Local(ordinal = 4) LocalIntRef k, @SuppressWarnings("LocalMayBeArgsOnly") @Local LocalRef direction) { + return original || direction.get() == Direction.DOWN && j.get() == 15 && k.get() == 15; + } +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/LightStorageAccessor.java b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/LightStorageAccessor.java new file mode 100644 index 0000000..7e74e17 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/LightStorageAccessor.java @@ -0,0 +1,11 @@ +package io.github.slimeistdev.crystalline_sky.mixin; + +import net.minecraft.world.chunk.light.LightStorage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(LightStorage.class) +public interface LightStorageAccessor { + @Invoker("isSectionInEnabledColumn") + boolean crystalline_sky$callIsSectionInEnabledColumn(long sectionPos); +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineBlocks.java b/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineBlocks.java new file mode 100644 index 0000000..0172dad --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineBlocks.java @@ -0,0 +1,33 @@ +package io.github.slimeistdev.crystalline_sky.registry; + +import io.github.slimeistdev.crystalline_sky.CrystallineSky; +import net.minecraft.block.AbstractBlock.Settings; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; +import net.minecraft.block.TransparentBlock; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; + +import java.util.function.Function; + +@SuppressWarnings("SameParameterValue") +public class CrystallineBlocks { + public static final Block SKY = register("sky", TransparentBlock::new, Settings.create() + .strength(0.3f) + .sounds(BlockSoundGroup.GLASS) + .nonOpaque() + .allowsSpawning(Blocks::never) + .solidBlock(Blocks::never) + .suffocates(Blocks::never) + .blockVision(Blocks::never)); + + public static void init() {} + + private static T register(String id, Function factory, Settings settings) { + RegistryKey key = CrystallineSky.key(RegistryKeys.BLOCK, id); + return Registry.register(Registries.BLOCK, key, factory.apply(settings.registryKey(key))); + } +} diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineItems.java b/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineItems.java new file mode 100644 index 0000000..6305396 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/registry/CrystallineItems.java @@ -0,0 +1,10 @@ +package io.github.slimeistdev.crystalline_sky.registry; + +import net.minecraft.item.Item; +import net.minecraft.item.Items; + +public class CrystallineItems { + public static final Item SKY = Items.register(CrystallineBlocks.SKY); + + public static void init() {} +} diff --git a/src/main/java/io/github/username/modid/ModId.java b/src/main/java/io/github/username/modid/ModId.java deleted file mode 100644 index c2f5c09..0000000 --- a/src/main/java/io/github/username/modid/ModId.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.username.modid; - -import net.fabricmc.api.ModInitializer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ModId implements ModInitializer { - public static final String ID = "mod_id"; - public static final Logger LOGGER = LoggerFactory.getLogger(ID); - - @Override - public void onInitialize() { - //LOGGER.info("[Mod ID] pretty pink princess ponies prancing perpendicular"); - } -} diff --git a/src/main/resources/assets/mod_id/icon.png b/src/main/resources/assets/crystalline_sky/icon.png similarity index 100% rename from src/main/resources/assets/mod_id/icon.png rename to src/main/resources/assets/crystalline_sky/icon.png diff --git a/src/main/resources/assets/mod_id/lang/en_us.json b/src/main/resources/assets/crystalline_sky/lang/en_us.json similarity index 100% rename from src/main/resources/assets/mod_id/lang/en_us.json rename to src/main/resources/assets/crystalline_sky/lang/en_us.json diff --git a/src/main/resources/crystalline_sky.mixins.json b/src/main/resources/crystalline_sky.mixins.json new file mode 100644 index 0000000..8d39921 --- /dev/null +++ b/src/main/resources/crystalline_sky.mixins.json @@ -0,0 +1,21 @@ +{ + "required": true, + "minVersion": "0.8", + "mixinextras": { + "minVersion": "0.5.0" + }, + "package": "io.github.slimeistdev.crystalline_sky.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "ChunkLightProviderMixin", + "ChunkSkyLightProviderMixin", + "LightStorageAccessor" + ], + "client": [ + ], + "server": [ + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ebd4046..d0ee967 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,37 +1,37 @@ { - "schemaVersion": 1, - "id": "${modId}", - "version": "${version}", - "name": "${modName}", - "description": "${modDescription}", - "authors": [ - "${authors}" - ], - "contributors": [ - "${contributors}" - ], - "contact": { - "homepage": "${homepage}", - "issues": "${issues}", - "sources": "${sources}" - }, - "license": "${license}", - "icon": "assets/${modId}/icon.png", - "mixins": [ - "${modId}.mixins.json" - ], - "depends": { - "minecraft": ">=${mc}", - "fabricloader": ">=${fl}", - "fabric-api": ">=${fapi}" - }, - "suggests": { - }, - "entrypoints": { - "main": [ - "io.github.username.modid.ModId" - ], - "client": [ - ] - } + "schemaVersion": 1, + "id": "${modId}", + "version": "${version}", + "name": "${modName}", + "description": "${modDescription}", + "authors": [ + "${authors}" + ], + "contributors": [ + "${contributors}" + ], + "contact": { + "homepage": "${homepage}", + "issues": "${issues}", + "sources": "${sources}" + }, + "license": "${license}", + "icon": "assets/${modId}/icon.png", + "mixins": [ + "${modId}.mixins.json" + ], + "depends": { + "minecraft": ">=${mc}", + "fabricloader": ">=${fl}", + "fabric-api": ">=${fapi}" + }, + "suggests": { + }, + "entrypoints": { + "main": [ + "io.github.slimeistdev.crystalline_sky.CrystallineSky" + ], + "client": [ + ] + } } diff --git a/src/main/resources/mod_id.mixins.json b/src/main/resources/mod_id.mixins.json deleted file mode 100644 index 5fcea4e..0000000 --- a/src/main/resources/mod_id.mixins.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "io.github.username.modid.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - ], - "client": [ - ], - "server": [ - ], - "injectors": { - "defaultRequire": 1 - } -}