Multiloader IV

client setup ported
This commit is contained in:
techno-sam
2026-04-05 22:20:27 +02:00
parent 7c20d34844
commit b4355e8fd8
18 changed files with 212 additions and 52 deletions
@@ -0,0 +1,14 @@
package io.github.slimeistdev.crystalline_sky.multiloader.neoforge;
import io.github.slimeistdev.crystalline_sky.annotation.multiloader.ImplClass;
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
@ImplClass
public class ClientPlatformHelperImpl {
public static void registerItemProperty(Item item, ResourceLocation name, ClampedItemPropertyFunction property) {
ItemProperties.register(item, name, property);
}
}
@@ -1,9 +1,36 @@
package io.github.slimeistdev.crystalline_sky.neoforge;
import io.github.slimeistdev.crystalline_sky.CrystallineSky;
import io.github.slimeistdev.crystalline_sky.CrystallineSkyClient;
import io.github.slimeistdev.crystalline_sky.registry.client.CrystallineRenderTypes;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderType;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ClientTickEvent;
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
import net.neoforged.neoforge.client.event.RegisterNamedRenderTypesEvent;
@EventBusSubscriber(value = Dist.CLIENT, modid = CrystallineSky.ID)
public class CrystallineSkyClientImpl {
public static void init() {
CrystallineSkyClient.init();
}
@SubscribeEvent
public static void registerNamedRenderTypes(RegisterNamedRenderTypesEvent event) {
// NOTE: entity render type is just a placeholder, sky rendering isn't supported for entities
event.register(CrystallineSky.id("sky"), CrystallineRenderTypes.SKY, RenderType.entitySolid(CrystallineSky.id("sky")));
}
@SubscribeEvent
public static void registerBindings(RegisterKeyMappingsEvent event) {
CrystallineSkyClient.registerKeybindings(event::register);
}
@SubscribeEvent
public static void onEndTick(ClientTickEvent.Post event) {
CrystallineSkyClient.onEndTick(Minecraft.getInstance());
}
}
@@ -0,0 +1,29 @@
package io.github.slimeistdev.crystalline_sky.neoforge.mixin.client;
import com.google.common.collect.ImmutableList;
import io.github.slimeistdev.crystalline_sky.mixin_ducks.client.RenderType_Duck;
import net.minecraft.client.renderer.RenderType;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(RenderType.class)
public class RenderTypeMixin implements RenderType_Duck {
@Shadow
@Final
@Mutable
public static ImmutableList<RenderType> CHUNK_BUFFER_LAYERS;
@Shadow
public int chunkLayerId;
@Override
public void crystalline_sky$markAsBlockLayer() {
CHUNK_BUFFER_LAYERS = ImmutableList.<RenderType>builder()
.addAll(CHUNK_BUFFER_LAYERS)
.add((RenderType) (Object) this)
.build();
chunkLayerId = CHUNK_BUFFER_LAYERS.size() - 1;
}
}
@@ -10,6 +10,7 @@
"mixins": [
],
"client": [
"client.RenderTypeMixin"
],
"server": [
],