Porting II

This commit is contained in:
techno-sam
2026-04-04 17:10:08 +02:00
parent 88a73023c1
commit 7d4eaf38c9
14 changed files with 208 additions and 204 deletions
@@ -1,48 +1,44 @@
// 1.21.8 -999999999-01-01T00:00:00 Crystalline Sky/Model Definitions
e832366c216102270b75085db7a7169881b853b3 assets/crystalline_sky/blockstates/sky.json
ecc125a24d3e2c86d922352d8449f26a4e06d122 assets/crystalline_sky/blockstates/sky_light.json
03e2eb768bc34fbeaabffbff8ed3a2a3044a6db1 assets/crystalline_sky/blockstates/weeping_sky.json
9b3d01168a1cc29b99cf69fe225ad69b0923c9fe assets/crystalline_sky/blockstates/weeping_sky_light.json
c0168359bc7e3978778cee2d000b21c3889c235c assets/crystalline_sky/items/sky.json
c9ebbcbf9d632aeab6bfab2014d7c225f2b290d9 assets/crystalline_sky/items/sky_light.json
2371c7a720a552589983925a24677fd3d1b649b4 assets/crystalline_sky/items/weeping_sky.json
b14b5a0b951ae24fb4b79df59416163b1303d32e assets/crystalline_sky/items/weeping_sky_light.json
6d1e10716c05150e73b2b9e254091125264a7a3d assets/crystalline_sky/models/block/sky.json
3183aeb9fff78d0c65f1ddd0dfb599420573e281 assets/crystalline_sky/models/block/sky_light_00.json
7eaa4c3d4913e0cb117585204dd1dd9e58402b83 assets/crystalline_sky/models/block/sky_light_01.json
59463cef438e58b137e5ce27402acf42a3a0ae87 assets/crystalline_sky/models/block/sky_light_02.json
ee9cb7604922cdb2ad71d021a593ca82f0baf493 assets/crystalline_sky/models/block/sky_light_03.json
317f9881c20b1aaa3902b3999dd1c76d00afbde6 assets/crystalline_sky/models/block/sky_light_04.json
2ce612b8445da92c6cecd07bd5364a25bcfb127f assets/crystalline_sky/models/block/sky_light_05.json
19859c3124196f3788bfbae1ec2bcd4d1e46db2e assets/crystalline_sky/models/block/sky_light_06.json
// 1.21.1 2026-04-04T17:09:36.734955339 Crystalline Sky/Model Definitions
fceb0c59b7f6d431200764ccf87596541bacb17f assets/crystalline_sky/models/block/sky_light_07.json
c0d693e4f78ce15c238909130382909abda4c922 assets/crystalline_sky/models/block/sky_light_08.json
ef9e5aca345b59cb4692a7bcfaac539aed6f6889 assets/crystalline_sky/models/block/sky_light_09.json
9c6ba4d90f2c4f2a9beb910c1b32023e49445749 assets/crystalline_sky/models/block/sky_light_10.json
e91808daecfc454b784f5fb27003c58bb0caedce assets/crystalline_sky/models/block/sky_light_11.json
e2c7bebd9eca446bb06fff866ec4d4996917e7e4 assets/crystalline_sky/models/block/sky_light_12.json
0b4015acca6117ea633ae3cdaf3fe40fcab6b628 assets/crystalline_sky/models/block/sky_light_13.json
0ac5351c3a01e0f9e76517452918e12770b3b54b assets/crystalline_sky/models/block/sky_light_14.json
a87d8988452529a1f5af5662ad636223fdd98fec assets/crystalline_sky/models/block/sky_light_15.json
14508173fcca14cb42755d47374c94d3eace42ce assets/crystalline_sky/models/block/weeping_sky.json
508ffb97ee711b53767b9d33659596197f69ee20 assets/crystalline_sky/models/block/weeping_sky_light.json
008a0d0a76a34d8f375fa355452a5d0f93f9af3b assets/crystalline_sky/models/item/sky.json
2fedd8aff557d4e559ffa8166b4e5ac78136046d assets/crystalline_sky/models/item/sky_light.json
9f0d9fe5dfb05bbe18177db5c40e600c5b256858 assets/crystalline_sky/models/item/sky_light_00.json
0e8a96cfb88f4c58679709cc9397b5700878a9c4 assets/crystalline_sky/models/item/sky_light_01.json
ed5894de7afa66f73c72093f2dd7d046cf647070 assets/crystalline_sky/models/item/sky_light_02.json
b29c14f77a08da7a6994cff4c6801d6f04b12ec0 assets/crystalline_sky/models/item/sky_light_03.json
51fa40ff02afcec303e7a18478cbae5375dfb140 assets/crystalline_sky/models/item/sky_light_04.json
42f8b696ba0f511edce656b9055764ed13013221 assets/crystalline_sky/models/item/sky_light_05.json
910c51120a0931851db6b75b337bc21241165c2f assets/crystalline_sky/models/item/sky_light_06.json
dff33a68a694de0f3ef177886c002204ffe49a8c assets/crystalline_sky/models/item/sky_light_07.json
89582890605d371d936384a83950af603d2fe495 assets/crystalline_sky/models/item/sky_light_08.json
7115b88da2cc0bfdc68646d034de8d14f181eb01 assets/crystalline_sky/models/item/sky_light_09.json
9c6c61b7f805a614d2d15d8dde390ed068913182 assets/crystalline_sky/models/item/sky_light_10.json
04f1e4eba184b8e7b1669fc61006e3d00e09d164 assets/crystalline_sky/models/item/sky_light_11.json
51fa40ff02afcec303e7a18478cbae5375dfb140 assets/crystalline_sky/models/item/sky_light_04.json
14508173fcca14cb42755d47374c94d3eace42ce assets/crystalline_sky/models/block/weeping_sky.json
317f9881c20b1aaa3902b3999dd1c76d00afbde6 assets/crystalline_sky/models/block/sky_light_04.json
9b3d01168a1cc29b99cf69fe225ad69b0923c9fe assets/crystalline_sky/blockstates/weeping_sky_light.json
a87d8988452529a1f5af5662ad636223fdd98fec assets/crystalline_sky/models/block/sky_light_15.json
0e8a96cfb88f4c58679709cc9397b5700878a9c4 assets/crystalline_sky/models/item/sky_light_01.json
ecc125a24d3e2c86d922352d8449f26a4e06d122 assets/crystalline_sky/blockstates/sky_light.json
b8795df31017499b35a5b37a4dfbe555a8242cb0 assets/crystalline_sky/models/item/sky_light_12.json
25f0831f8c64db0e5c08fc968445e329f1e3a91c assets/crystalline_sky/models/item/sky_light_13.json
58349dc5dedb8016fb0bc958fcd4a9ccde13a1cd assets/crystalline_sky/models/item/sky_light_14.json
d500e56057c0c2f3c948894694e2826f1726fd9e assets/crystalline_sky/models/item/sky_light_15.json
15c0a47d504ddd41bbecd4ac58c0c8ccd0f37943 assets/crystalline_sky/models/item/weeping_sky.json
0b4015acca6117ea633ae3cdaf3fe40fcab6b628 assets/crystalline_sky/models/block/sky_light_13.json
7115b88da2cc0bfdc68646d034de8d14f181eb01 assets/crystalline_sky/models/item/sky_light_09.json
910c51120a0931851db6b75b337bc21241165c2f assets/crystalline_sky/models/item/sky_light_06.json
59463cef438e58b137e5ce27402acf42a3a0ae87 assets/crystalline_sky/models/block/sky_light_02.json
9c6ba4d90f2c4f2a9beb910c1b32023e49445749 assets/crystalline_sky/models/block/sky_light_10.json
ef5afdbcc8401a27029b6f0a29fa1117761c620d assets/crystalline_sky/models/item/sky_light.json
9f0d9fe5dfb05bbe18177db5c40e600c5b256858 assets/crystalline_sky/models/item/sky_light_00.json
b29c14f77a08da7a6994cff4c6801d6f04b12ec0 assets/crystalline_sky/models/item/sky_light_03.json
19859c3124196f3788bfbae1ec2bcd4d1e46db2e assets/crystalline_sky/models/block/sky_light_06.json
508ffb97ee711b53767b9d33659596197f69ee20 assets/crystalline_sky/models/block/weeping_sky_light.json
ef9e5aca345b59cb4692a7bcfaac539aed6f6889 assets/crystalline_sky/models/block/sky_light_09.json
04f1e4eba184b8e7b1669fc61006e3d00e09d164 assets/crystalline_sky/models/item/sky_light_11.json
0ac5351c3a01e0f9e76517452918e12770b3b54b assets/crystalline_sky/models/block/sky_light_14.json
58349dc5dedb8016fb0bc958fcd4a9ccde13a1cd assets/crystalline_sky/models/item/sky_light_14.json
03e2eb768bc34fbeaabffbff8ed3a2a3044a6db1 assets/crystalline_sky/blockstates/weeping_sky.json
be0be7e1d7ce1ccabed01ef09c6499a2a7f2b132 assets/crystalline_sky/models/item/weeping_sky_light.json
e91808daecfc454b784f5fb27003c58bb0caedce assets/crystalline_sky/models/block/sky_light_11.json
3183aeb9fff78d0c65f1ddd0dfb599420573e281 assets/crystalline_sky/models/block/sky_light_00.json
ee9cb7604922cdb2ad71d021a593ca82f0baf493 assets/crystalline_sky/models/block/sky_light_03.json
c0d693e4f78ce15c238909130382909abda4c922 assets/crystalline_sky/models/block/sky_light_08.json
2ce612b8445da92c6cecd07bd5364a25bcfb127f assets/crystalline_sky/models/block/sky_light_05.json
25f0831f8c64db0e5c08fc968445e329f1e3a91c assets/crystalline_sky/models/item/sky_light_13.json
15c0a47d504ddd41bbecd4ac58c0c8ccd0f37943 assets/crystalline_sky/models/item/weeping_sky.json
ed5894de7afa66f73c72093f2dd7d046cf647070 assets/crystalline_sky/models/item/sky_light_02.json
42f8b696ba0f511edce656b9055764ed13013221 assets/crystalline_sky/models/item/sky_light_05.json
9c6c61b7f805a614d2d15d8dde390ed068913182 assets/crystalline_sky/models/item/sky_light_10.json
6d1e10716c05150e73b2b9e254091125264a7a3d assets/crystalline_sky/models/block/sky.json
e2c7bebd9eca446bb06fff866ec4d4996917e7e4 assets/crystalline_sky/models/block/sky_light_12.json
e832366c216102270b75085db7a7169881b853b3 assets/crystalline_sky/blockstates/sky.json
7eaa4c3d4913e0cb117585204dd1dd9e58402b83 assets/crystalline_sky/models/block/sky_light_01.json
89582890605d371d936384a83950af603d2fe495 assets/crystalline_sky/models/item/sky_light_08.json
008a0d0a76a34d8f375fa355452a5d0f93f9af3b assets/crystalline_sky/models/item/sky.json
@@ -1,3 +1,3 @@
// 1.21.8 -999999999-01-01T00:00:00 Crystalline Sky/Tags for minecraft:block
1389c0b812f7a6e4d5dd00edac1dc07beb5f9552 data/crystalline_sky/tags/block/sky_light_emitters.json
// 1.21.1 2026-04-04T17:09:36.733906405 Crystalline Sky/Tags for minecraft:block
606477607a09045ff2830cbc036e744d6a728bbd data/minecraft/tags/block/crystal_sound_blocks.json
1389c0b812f7a6e4d5dd00edac1dc07beb5f9552 data/crystalline_sky/tags/block/sky_light_emitters.json
@@ -1,3 +1,3 @@
// 1.21.8 -999999999-01-01T00:00:00 Crystalline Sky/Block Loot Tables
6a9b7a08424cbd3d699dfd3252d432517254aa45 data/crystalline_sky/loot_table/blocks/sky.json
// 1.21.1 2026-04-04T17:09:36.73618123 Crystalline Sky/Block Loot Tables
337de0acfc1b9b86adde0705e342ed1d4b5c9c4e data/crystalline_sky/loot_table/blocks/weeping_sky.json
6a9b7a08424cbd3d699dfd3252d432517254aa45 data/crystalline_sky/loot_table/blocks/sky.json
@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky"
}
}
@@ -1,125 +0,0 @@
{
"model": {
"type": "minecraft:select",
"block_state_property": "level",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_00"
},
"when": "0"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_01"
},
"when": "1"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_02"
},
"when": "2"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_03"
},
"when": "3"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_04"
},
"when": "4"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_05"
},
"when": "5"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_06"
},
"when": "6"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_07"
},
"when": "7"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_08"
},
"when": "8"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_09"
},
"when": "9"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_10"
},
"when": "10"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_11"
},
"when": "11"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_12"
},
"when": "12"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_13"
},
"when": "13"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_14"
},
"when": "14"
},
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light_15"
},
"when": "15"
}
],
"fallback": {
"type": "minecraft:model",
"model": "crystalline_sky:item/sky_light"
},
"property": "minecraft:block_state"
}
}
@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/weeping_sky"
}
}
@@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "crystalline_sky:item/weeping_sky_light"
}
}
@@ -1,5 +1,103 @@
{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "crystalline_sky:item/sky_light_00",
"predicate": {
"level": 0.0
}
},
{
"model": "crystalline_sky:item/sky_light_01",
"predicate": {
"level": 0.0625
}
},
{
"model": "crystalline_sky:item/sky_light_02",
"predicate": {
"level": 0.125
}
},
{
"model": "crystalline_sky:item/sky_light_03",
"predicate": {
"level": 0.1875
}
},
{
"model": "crystalline_sky:item/sky_light_04",
"predicate": {
"level": 0.25
}
},
{
"model": "crystalline_sky:item/sky_light_05",
"predicate": {
"level": 0.3125
}
},
{
"model": "crystalline_sky:item/sky_light_06",
"predicate": {
"level": 0.375
}
},
{
"model": "crystalline_sky:item/sky_light_07",
"predicate": {
"level": 0.4375
}
},
{
"model": "crystalline_sky:item/sky_light_08",
"predicate": {
"level": 0.5
}
},
{
"model": "crystalline_sky:item/sky_light_09",
"predicate": {
"level": 0.5625
}
},
{
"model": "crystalline_sky:item/sky_light_10",
"predicate": {
"level": 0.625
}
},
{
"model": "crystalline_sky:item/sky_light_11",
"predicate": {
"level": 0.6875
}
},
{
"model": "crystalline_sky:item/sky_light_12",
"predicate": {
"level": 0.75
}
},
{
"model": "crystalline_sky:item/sky_light_13",
"predicate": {
"level": 0.8125
}
},
{
"model": "crystalline_sky:item/sky_light_14",
"predicate": {
"level": 0.875
}
},
{
"model": "crystalline_sky:item/sky_light_15",
"predicate": {
"level": 0.9375
}
}
],
"textures": {
"layer0": "crystalline_sky:item/sky_light"
}
@@ -2,16 +2,22 @@ package io.github.slimeistdev.crystalline_sky;
import io.github.slimeistdev.crystalline_sky.mixin_ducks.client.DebugRenderer_Duck;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineItems;
import io.github.slimeistdev.crystalline_sky.registry.client.CrystallineRenderLayers;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.block.LightBlock;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.BlockStateComponent;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import org.lwjgl.glfw.GLFW;
public class CrystallineSkyClient implements ClientModInitializer {
@@ -38,6 +44,13 @@ public class CrystallineSkyClient implements ClientModInitializer {
client.inGameHud.getChatHud().addMessage(message);
}
});
ModelPredicateProviderRegistry.register(CrystallineItems.SKY_LIGHT, Identifier.ofVanilla("level"),
(stack, world, entity, seed) -> {
BlockStateComponent blockStateComponent = stack.getOrDefault(DataComponentTypes.BLOCK_STATE, BlockStateComponent.DEFAULT);
Integer integer = blockStateComponent.getValue(LightBlock.LEVEL_15);
return integer != null ? integer / 16.0F : 1.0F;
});
}
@SuppressWarnings("SameParameterValue")
@@ -1,5 +1,7 @@
package io.github.slimeistdev.crystalline_sky.datagen.providers;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineBlocks;
import io.github.slimeistdev.crystalline_sky.registry.CrystallineItems;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
@@ -44,6 +46,7 @@ public class CrystallineSkyModelProvider extends FabricModelProvider {
}
private void registerSkyLightBlock(BlockStateModelGenerator gen, Block block, Item item) {
gen.excludeFromSimpleItemModelGeneration(block);
BlockStateVariantMap.SingleProperty<Integer> singleProperty = BlockStateVariantMap.create(Properties.LEVEL_15);
for (int level = 0; level <= 15; level++) {
@@ -62,6 +65,29 @@ public class CrystallineSkyModelProvider extends FabricModelProvider {
}
// TODO generate root-level item model itself
Models.GENERATED.upload(
ModelIds.getItemModelId(item),
TextureMap.layer0(item),
gen.modelCollector,
(id, textures) -> {
JsonObject base = Models.GENERATED.createJson(id, textures);
var overrides = new JsonArray();
for (int level = 0; level <= 15; level++) {
JsonObject override = new JsonObject();
JsonObject predicate = new JsonObject();
predicate.addProperty("level", level / 16f);
override.add("predicate", predicate);
String suffix = String.format(Locale.ROOT, "_%02d", level);
Identifier model = TextureMap.getSubId(item, suffix);
override.addProperty("model", model.toString());
overrides.add(override);
}
base.add("overrides", overrides);
return base;
});
gen.blockStateCollector.accept(VariantsBlockStateSupplier.create(block).coordinate(singleProperty));
}
@@ -17,11 +17,10 @@ import java.util.function.Consumer;
@Mixin(GameRenderer.class)
public class GameRendererMixin {
@SuppressWarnings("InvalidInjectorMethodSignature")
@WrapOperation(method = "loadPrograms", at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z", ordinal = 0))
private <E extends Pair<ShaderProgram, Consumer<ShaderProgram>>> boolean loadSkyProgram(
List<E> instance,
E e,
Object e,
Operation<Boolean> original,
ResourceFactory factory
) throws IOException {
@@ -1,21 +1,25 @@
package io.github.slimeistdev.crystalline_sky.mixin.client;
import com.google.common.collect.ImmutableList;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import io.github.slimeistdev.crystalline_sky.registry.client.CrystallineRenderLayers;
import io.github.slimeistdev.crystalline_sky.mixin_ducks.client.RenderLayer_Duck;
import net.minecraft.client.render.RenderLayer;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(RenderLayer.class)
public class RenderLayerMixin {
@WrapOperation(method = "<clinit>", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/RenderLayer;BLOCK_LAYERS:Lcom/google/common/collect/ImmutableList;", opcode = Opcodes.PUTSTATIC))
private static void addSkyToBlockLayers(ImmutableList<RenderLayer> value, Operation<Void> original) {
original.call(ImmutableList.<RenderLayer>builder()
.addAll(value)
.add(CrystallineRenderLayers.SKY)
.build());
public class RenderLayerMixin implements RenderLayer_Duck {
@Shadow
@Final
@Mutable
private static ImmutableList<RenderLayer> BLOCK_LAYERS;
@Override
public void crystalline_sky$markAsBlockLayer() {
BLOCK_LAYERS = ImmutableList.<RenderLayer>builder()
.addAll(BLOCK_LAYERS)
.add((RenderLayer) (Object) this)
.build();
}
}
@@ -0,0 +1,5 @@
package io.github.slimeistdev.crystalline_sky.mixin_ducks.client;
public interface RenderLayer_Duck {
void crystalline_sky$markAsBlockLayer();
}
@@ -1,6 +1,7 @@
package io.github.slimeistdev.crystalline_sky.registry.client;
import com.mojang.blaze3d.systems.RenderSystem;
import io.github.slimeistdev.crystalline_sky.mixin_ducks.client.RenderLayer_Duck;
import io.github.slimeistdev.crystalline_sky.mixin_ducks.client.WorldRenderer_Duck;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -32,6 +33,11 @@ public class CrystallineRenderLayers {
.build(true)
);
static {
//noinspection DataFlowIssue
((RenderLayer_Duck) SKY).crystalline_sky$markAsBlockLayer();
}
private static class SkyBufferTexture extends RenderPhase.TextureBase {
public SkyBufferTexture() {
super(() -> {