Enderscape integration

This commit is contained in:
paulevsGitch 2021-11-22 15:51:00 +03:00
parent ae0efb1f52
commit d8bad90731
6 changed files with 64 additions and 9 deletions

View file

@ -3,14 +3,12 @@ package ru.betterend.client;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level;
import ru.bclib.BCLib;
import ru.bclib.util.TranslationHelper;
import ru.betterend.BetterEnd;

View file

@ -11,6 +11,8 @@ import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.math.Matrix4f;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.minecraft.client.renderer.FogRenderer;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.resources.ResourceLocation;
@ -20,9 +22,6 @@ import ru.betterend.BetterEnd;
import java.util.Random;
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
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_2 = BetterEnd.makeID("textures/sky/nebula_3.png");
@ -43,10 +42,10 @@ public class BetterEndSkyRenderer implements DimensionRenderingRegistry.SkyRende
private Vector3f axis3;
private Vector3f axis4;
private boolean initalized = false;
private boolean initialised;
private void initialise() {
if(!initalized) {
if (!initialised) {
initStars();
Random random = new Random(131);
axis1 = new Vector3f(random.nextFloat(), random.nextFloat(), random.nextFloat());
@ -57,7 +56,7 @@ public class BetterEndSkyRenderer implements DimensionRenderingRegistry.SkyRende
axis2.normalize();
axis3.normalize();
axis4.normalize();
this.initalized = true;
initialised = true;
}
}

View file

@ -0,0 +1,30 @@
package ru.betterend.integration;
import net.minecraft.core.MappedRegistry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.biome.Biome;
import ru.bclib.api.BiomeAPI;
import ru.bclib.integration.ModIntegration;
public class EnderscapeIntegration extends ModIntegration {
public EnderscapeIntegration() {
super("enderscape");
}
@Override
public void init() {
Class<?> enderscape = getClass("net.enderscape.Enderscape");
Class<?> enderscapeIslandsBiome = getClass("net.enderscape.world.biomes.EnderscapeIslandsBiome");
MappedRegistry<?> biomes = getStaticFieldValue(enderscape, "ENDERSCAPE_BIOME");
biomes.entrySet().forEach(entry -> {
ResourceKey key = entry.getKey();
Biome biome = getBiome(key.location().getPath());
if (enderscapeIslandsBiome.isInstance(entry.getValue())) {
BiomeAPI.registerEndVoidBiome(biome);
}
else {
BiomeAPI.registerEndLandBiome(biome);
}
});
}
}

View file

@ -18,6 +18,7 @@ public class Integrations {
public static final ModIntegration BYG = ModIntegrationAPI.register(new BYGIntegration());
public static final ModIntegration NOURISH = ModIntegrationAPI.register(new NourishIntegration());
public static final ModIntegration FLAMBOYANT_REFABRICATED = ModIntegrationAPI.register(new FlamboyantRefabricatedIntegration());
public static final ModIntegration ENDERSCAPE = ModIntegrationAPI.register(new EnderscapeIntegration());
private static boolean hasHydrogen;

View file

@ -0,0 +1,26 @@
package ru.betterend.mixin.client;
import net.minecraft.client.renderer.DimensionSpecialEffects.EndEffects;
import net.minecraft.world.phys.Vec3;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.betterend.integration.Integrations;
@Mixin(value = EndEffects.class, priority = 10)
public class EndEffectsMixin {
@Inject(method = "getBrightnessDependentFogColor", at = @At("HEAD"), cancellable = true)
private void be_restoreBrightness(Vec3 color, float sunHeight, CallbackInfoReturnable<Vec3> info) {
if (Integrations.ENDERSCAPE.modIsInstalled()) {
info.setReturnValue(color.scale(0.15000000596046448D));
}
}
@Inject(method = "isFoggyAt", at = @At("HEAD"), cancellable = true)
private void be_restoreFog(int camX, int camY, CallbackInfoReturnable<Boolean> info) {
if (Integrations.ENDERSCAPE.modIsInstalled()) {
info.setReturnValue(false);
}
}
}

View file

@ -13,6 +13,7 @@
"BiomeColorsMixin",
"LocalPlayerMixin",
"ModelLoaderMixin",
"EndEffectsMixin",
"CapeLayerMixin",
"ItemStackMixin"
],