mirror of
https://github.com/wisplite/crystalline-sky.git
synced 2026-10-30 13:32:18 -05:00
Skybox X
neoforge sodium compat
This commit is contained in:
+27
@@ -0,0 +1,27 @@
|
||||
package io.github.slimeistdev.crystalline_sky.neoforge.mixin.client.compat.sodium;
|
||||
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||
import io.github.slimeistdev.crystalline_sky.CrystallineSky;
|
||||
import io.github.slimeistdev.crystalline_sky.annotation.mixin.ConditionalMixin;
|
||||
import io.github.slimeistdev.crystalline_sky.compat.Mods;
|
||||
import net.caffeinemc.mods.sodium.client.gl.shader.ShaderLoader;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@ConditionalMixin(mods = Mods.SODIUM)
|
||||
@Mixin(ShaderLoader.class)
|
||||
public class ShaderLoaderMixin {
|
||||
// thank you neoforge for making mods be in separate modules
|
||||
@SuppressWarnings("NameDoesntMatchTargetClass")
|
||||
@WrapOperation(method = "getShaderSource", at = @At(value = "INVOKE", target = "Ljava/lang/Class;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"))
|
||||
private static InputStream getShadersInProperContext(Class<?> instance, String name, Operation<InputStream> original, ResourceLocation name$) {
|
||||
if (name$.getNamespace().equals(CrystallineSky.ID))
|
||||
return original.call(CrystallineSky.class, name);
|
||||
|
||||
return original.call(instance, name);
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package io.github.slimeistdev.crystalline_sky.neoforge.mixin.client.compat.sodium;
|
||||
|
||||
import io.github.slimeistdev.crystalline_sky.annotation.mixin.ConditionalMixin;
|
||||
import io.github.slimeistdev.crystalline_sky.compat.Mods;
|
||||
import io.github.slimeistdev.crystalline_sky.neoforge.skybox_model.SkyboxBakedModel;
|
||||
import io.github.slimeistdev.crystalline_sky.util.SharedRenderVariables;
|
||||
import net.caffeinemc.mods.sodium.client.render.frapi.render.AbstractBlockRenderContext;
|
||||
import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@ConditionalMixin(mods = Mods.SODIUM)
|
||||
@Mixin(SkyboxBakedModel.class)
|
||||
public class SkyboxBakedModelMixin implements FabricBakedModel {
|
||||
@Override
|
||||
public void emitBlockQuads(BlockAndTintGetter blockView, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context) {
|
||||
SharedRenderVariables.pushShadeFullBright();
|
||||
((AbstractBlockRenderContext) context).bufferDefaultModel((BakedModel) this, state);
|
||||
SharedRenderVariables.popShadeFullBright();
|
||||
}
|
||||
}
|
||||
+1
-7
@@ -1,6 +1,5 @@
|
||||
package io.github.slimeistdev.crystalline_sky.neoforge.skybox_model;
|
||||
|
||||
import io.github.slimeistdev.crystalline_sky.util.SharedRenderVariables;
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
@@ -84,13 +83,8 @@ public class SkyboxBakedModel<T extends BakedModel> extends BakedModelWrapper<T>
|
||||
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource rand) {
|
||||
CacheKey key = new CacheKey(state, side);
|
||||
return quadCache.computeIfAbsent(key, $ -> {
|
||||
SharedRenderVariables.pushShadeFullBright();
|
||||
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand);
|
||||
List<BakedQuad> out = process(quads);
|
||||
|
||||
SharedRenderVariables.popShadeFullBright();
|
||||
return out;
|
||||
return process(quads);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
"mixins": [
|
||||
],
|
||||
"client": [
|
||||
"client.RenderTypeMixin"
|
||||
"client.RenderTypeMixin",
|
||||
"client.compat.sodium.ShaderLoaderMixin",
|
||||
"client.compat.sodium.SkyboxBakedModelMixin"
|
||||
],
|
||||
"server": [
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user