Made sky rendering work with the new fabric api.
This commit is contained in:
parent
82c5485b58
commit
a76646b029
5 changed files with 72 additions and 50 deletions
|
@ -14,7 +14,7 @@ archives_base_name=better-end
|
||||||
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
||||||
|
|
||||||
patchouli_version = 55-FABRIC-SNAPSHOT
|
patchouli_version = 55-FABRIC-SNAPSHOT
|
||||||
fabric_version = 0.41.3+1.17
|
fabric_version = 0.42.1+1.17
|
||||||
bclib_version = 0.5.2
|
bclib_version = 0.5.2
|
||||||
rei_version = 6.0.264-alpha
|
rei_version = 6.0.264-alpha
|
||||||
canvas_version = 1.0.+
|
canvas_version = 1.0.+
|
||||||
|
|
|
@ -2,14 +2,19 @@ package ru.betterend.client;
|
||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
|
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
|
||||||
|
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
|
||||||
|
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.network.chat.Style;
|
import net.minecraft.network.chat.Style;
|
||||||
import net.minecraft.network.chat.TextComponent;
|
import net.minecraft.network.chat.TextComponent;
|
||||||
import net.minecraft.network.chat.TranslatableComponent;
|
import net.minecraft.network.chat.TranslatableComponent;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
import ru.bclib.BCLib;
|
import ru.bclib.BCLib;
|
||||||
import ru.bclib.util.TranslationHelper;
|
import ru.bclib.util.TranslationHelper;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
|
import ru.betterend.client.render.BetterEndSkyRenderer;
|
||||||
import ru.betterend.events.ItemTooltipCallback;
|
import ru.betterend.events.ItemTooltipCallback;
|
||||||
import ru.betterend.interfaces.MultiModelItem;
|
import ru.betterend.interfaces.MultiModelItem;
|
||||||
import ru.betterend.item.CrystaliteArmor;
|
import ru.betterend.item.CrystaliteArmor;
|
||||||
|
@ -52,6 +57,12 @@ public class BetterEndClient implements ClientModInitializer {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
BetterEndSkyRenderer skyRenderer = new BetterEndSkyRenderer();
|
||||||
|
|
||||||
|
if(ClientOptions.isCustomSky()) {
|
||||||
|
DimensionRenderingRegistry.registerSkyRenderer(Level.END, skyRenderer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerTooltips() {
|
public static void registerTooltips() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.betterend.mixin.client;
|
package ru.betterend.client.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.GlStateManager;
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
@ -30,11 +30,14 @@ import ru.bclib.util.BackgroundInfo;
|
||||||
import ru.bclib.util.MHelper;
|
import ru.bclib.util.MHelper;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.client.ClientOptions;
|
import ru.betterend.client.ClientOptions;
|
||||||
|
import ru.betterend.mixin.client.LevelRendererAccessor;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@Mixin(LevelRenderer.class)
|
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
|
||||||
public class LevelRendererMixin {
|
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
|
||||||
|
|
||||||
|
public class BetterEndSkyRenderer implements DimensionRenderingRegistry.SkyRenderer {
|
||||||
private static final ResourceLocation NEBULA_1 = BetterEnd.makeID("textures/sky/nebula_2.png");
|
private static final ResourceLocation NEBULA_1 = BetterEnd.makeID("textures/sky/nebula_2.png");
|
||||||
private static final ResourceLocation NEBULA_2 = BetterEnd.makeID("textures/sky/nebula_3.png");
|
private static final ResourceLocation NEBULA_2 = BetterEnd.makeID("textures/sky/nebula_3.png");
|
||||||
private static final ResourceLocation HORIZON = BetterEnd.makeID("textures/sky/nebula_1.png");
|
private static final ResourceLocation HORIZON = BetterEnd.makeID("textures/sky/nebula_1.png");
|
||||||
|
@ -59,40 +62,36 @@ public class LevelRendererMixin {
|
||||||
private static float blind02;
|
private static float blind02;
|
||||||
private static float blind06;
|
private static float blind06;
|
||||||
|
|
||||||
@Shadow
|
private boolean initalized = false;
|
||||||
@Final
|
|
||||||
private Minecraft minecraft;
|
|
||||||
|
|
||||||
@Shadow
|
public void initalize() {
|
||||||
@Final
|
|
||||||
private TextureManager textureManager;
|
|
||||||
|
|
||||||
@Shadow
|
if(!initalized) {
|
||||||
private ClientLevel level;
|
be_initStars();
|
||||||
|
Random random = new Random(131);
|
||||||
|
axis1 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
||||||
|
axis2 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
||||||
|
axis3 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
||||||
|
axis4 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
||||||
|
axis1.normalize();
|
||||||
|
axis2.normalize();
|
||||||
|
axis3.normalize();
|
||||||
|
axis4.normalize();
|
||||||
|
|
||||||
@Shadow
|
this.initalized = true;
|
||||||
private int ticks;
|
}
|
||||||
|
|
||||||
@Inject(method = "<init>*", at = @At("TAIL"))
|
|
||||||
private void be_onInit(Minecraft client, RenderBuffers bufferBuilders, CallbackInfo info) {
|
|
||||||
be_initStars();
|
|
||||||
Random random = new Random(131);
|
|
||||||
axis1 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
|
||||||
axis2 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
|
||||||
axis3 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
|
||||||
axis4 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
|
|
||||||
axis1.normalize();
|
|
||||||
axis2.normalize();
|
|
||||||
axis3.normalize();
|
|
||||||
axis4.normalize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "renderSky", at = @At("HEAD"), cancellable = true)
|
@Override
|
||||||
private void be_renderBetterEndSky(PoseStack matrices, Matrix4f matrix4f, float tickDelta, Runnable runnable, CallbackInfo info) {
|
public void render(WorldRenderContext context) {
|
||||||
if (ClientOptions.isCustomSky() && minecraft.level.effects().skyType() == DimensionSpecialEffects.SkyType.END) {
|
initalize();
|
||||||
runnable.run();
|
|
||||||
|
|
||||||
time = (ticks % 360000) * 0.000017453292F;
|
PoseStack matrices = context.matrixStack();
|
||||||
|
|
||||||
|
Matrix4f matrix4f = context.projectionMatrix();
|
||||||
|
float tickDelta = context.tickDelta();
|
||||||
|
|
||||||
|
time = (((LevelRendererAccessor) context.gameRenderer().getMinecraft().levelRenderer).getTick() + context.tickDelta() % 360000) * 0.000017453292F;
|
||||||
time2 = time * 2;
|
time2 = time * 2;
|
||||||
time3 = time * 3;
|
time3 = time * 3;
|
||||||
|
|
||||||
|
@ -213,8 +212,6 @@ public class LevelRendererMixin {
|
||||||
RenderSystem.defaultBlendFunc();
|
RenderSystem.defaultBlendFunc();
|
||||||
RenderSystem.disableBlend();
|
RenderSystem.disableBlend();
|
||||||
|
|
||||||
info.cancel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void be_renderBuffer(PoseStack matrices, Matrix4f matrix4f, VertexBuffer buffer, VertexFormat format, float r, float g, float b, float a) {
|
private void be_renderBuffer(PoseStack matrices, Matrix4f matrix4f, VertexBuffer buffer, VertexFormat format, float r, float g, float b, float a) {
|
|
@ -0,0 +1,12 @@
|
||||||
|
package ru.betterend.mixin.client;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.LevelRenderer;
|
||||||
|
|
||||||
|
@Mixin(LevelRenderer.class)
|
||||||
|
public interface LevelRendererAccessor {
|
||||||
|
@Accessor("ticks")
|
||||||
|
int getTick();
|
||||||
|
}
|
|
@ -5,19 +5,21 @@
|
||||||
"compatibilityLevel": "JAVA_16",
|
"compatibilityLevel": "JAVA_16",
|
||||||
"client": [
|
"client": [
|
||||||
"AbstractSoundInstanceAccessor",
|
"AbstractSoundInstanceAccessor",
|
||||||
"HumanoidMobRendererMixin",
|
|
||||||
"ArmorStandRendererMixin",
|
"ArmorStandRendererMixin",
|
||||||
"MinecraftClientMixin",
|
|
||||||
"PlayerRendererMixin",
|
|
||||||
"LevelRendererMixin",
|
|
||||||
"MusicTrackerMixin",
|
|
||||||
"BiomeColorsMixin",
|
"BiomeColorsMixin",
|
||||||
|
"CapeLayerMixin",
|
||||||
|
"HumanoidMobRendererMixin",
|
||||||
|
"ItemStackMixin",
|
||||||
|
"LocalPlayerMixin",
|
||||||
|
"MinecraftClientMixin",
|
||||||
"ModelLoaderMixin",
|
"ModelLoaderMixin",
|
||||||
"LocalPlayerMixin",
|
"MusicTrackerMixin",
|
||||||
"CapeLayerMixin",
|
"PlayerRendererMixin"
|
||||||
"ItemStackMixin"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
}
|
},
|
||||||
|
"mixins": [
|
||||||
|
"LevelRendererAccessor"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue