Liquid fog fix (#81), Nether fog config
This commit is contained in:
parent
ebba0dde6c
commit
d802de90f9
10 changed files with 55 additions and 30 deletions
|
@ -4,15 +4,14 @@ import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import ru.bclib.api.tag.TagAPI;
|
|
||||||
import ru.bclib.api.WorldDataAPI;
|
import ru.bclib.api.WorldDataAPI;
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
|
||||||
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
||||||
import ru.bclib.api.dataexchange.handler.autosync.Chunker;
|
import ru.bclib.api.dataexchange.handler.autosync.Chunker;
|
||||||
import ru.bclib.api.dataexchange.handler.autosync.HelloClient;
|
import ru.bclib.api.dataexchange.handler.autosync.HelloClient;
|
||||||
import ru.bclib.api.dataexchange.handler.autosync.HelloServer;
|
import ru.bclib.api.dataexchange.handler.autosync.HelloServer;
|
||||||
import ru.bclib.api.dataexchange.handler.autosync.RequestFiles;
|
import ru.bclib.api.dataexchange.handler.autosync.RequestFiles;
|
||||||
import ru.bclib.api.dataexchange.handler.autosync.SendFiles;
|
import ru.bclib.api.dataexchange.handler.autosync.SendFiles;
|
||||||
|
import ru.bclib.api.tag.TagAPI;
|
||||||
import ru.bclib.config.Configs;
|
import ru.bclib.config.Configs;
|
||||||
import ru.bclib.recipes.CraftingRecipes;
|
import ru.bclib.recipes.CraftingRecipes;
|
||||||
import ru.bclib.registry.BaseBlockEntities;
|
import ru.bclib.registry.BaseBlockEntities;
|
||||||
|
|
|
@ -8,9 +8,9 @@ import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import ru.bclib.api.biomes.BiomeAPI;
|
||||||
import ru.bclib.api.tag.TagAPI;
|
import ru.bclib.api.tag.TagAPI;
|
||||||
import ru.bclib.api.tag.TagAPI.TagLocation;
|
import ru.bclib.api.tag.TagAPI.TagLocation;
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
|
||||||
import ru.bclib.blocks.BaseBarrelBlock;
|
import ru.bclib.blocks.BaseBarrelBlock;
|
||||||
import ru.bclib.blocks.BaseChestBlock;
|
import ru.bclib.blocks.BaseChestBlock;
|
||||||
import ru.bclib.blocks.BaseFurnaceBlock;
|
import ru.bclib.blocks.BaseFurnaceBlock;
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
package ru.bclib.api.biomes;
|
package ru.bclib.api.biomes;
|
||||||
|
|
||||||
import com.google.common.collect.*;
|
import com.google.common.collect.HashMultimap;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.event.registry.DynamicRegistrySetupCallback;
|
|
||||||
import net.fabricmc.fabric.api.event.registry.RegistryEntryAddedCallback;
|
|
||||||
import net.fabricmc.fabric.impl.biome.NetherBiomeData;
|
import net.fabricmc.fabric.impl.biome.NetherBiomeData;
|
||||||
import net.fabricmc.fabric.impl.biome.TheEndBiomeData;
|
import net.fabricmc.fabric.impl.biome.TheEndBiomeData;
|
||||||
import net.fabricmc.fabric.impl.structure.FabricStructureImpl;
|
import net.fabricmc.fabric.impl.structure.FabricStructureImpl;
|
||||||
|
@ -22,7 +26,11 @@ import net.minecraft.world.entity.MobCategory;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.LevelAccessor;
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
import net.minecraft.world.level.WorldGenLevel;
|
import net.minecraft.world.level.WorldGenLevel;
|
||||||
import net.minecraft.world.level.biome.*;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
import net.minecraft.world.level.biome.BiomeGenerationSettings;
|
||||||
|
import net.minecraft.world.level.biome.BiomeSource;
|
||||||
|
import net.minecraft.world.level.biome.Biomes;
|
||||||
|
import net.minecraft.world.level.biome.Climate;
|
||||||
import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData;
|
import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
@ -42,14 +50,16 @@ import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.StructureFeature;
|
import net.minecraft.world.level.levelgen.feature.StructureFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration;
|
import net.minecraft.world.level.levelgen.feature.configurations.StructureFeatureConfiguration;
|
||||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||||
import net.minecraft.world.level.storage.WorldData;
|
|
||||||
import org.apache.commons.lang3.mutable.MutableInt;
|
import org.apache.commons.lang3.mutable.MutableInt;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import ru.bclib.BCLib;
|
import ru.bclib.BCLib;
|
||||||
import ru.bclib.entity.BCLEntityWrapper;
|
import ru.bclib.entity.BCLEntityWrapper;
|
||||||
import ru.bclib.interfaces.*;
|
import ru.bclib.interfaces.BiomeSourceAccessor;
|
||||||
|
import ru.bclib.interfaces.NoiseGeneratorSettingsProvider;
|
||||||
|
import ru.bclib.interfaces.SurfaceMaterialProvider;
|
||||||
|
import ru.bclib.interfaces.SurfaceProvider;
|
||||||
|
import ru.bclib.interfaces.SurfaceRuleProvider;
|
||||||
import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor;
|
import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor;
|
||||||
import ru.bclib.mixin.common.BiomeSourceMixin;
|
|
||||||
import ru.bclib.mixin.common.MobSpawnSettingsAccessor;
|
import ru.bclib.mixin.common.MobSpawnSettingsAccessor;
|
||||||
import ru.bclib.mixin.common.StructureSettingsAccessor;
|
import ru.bclib.mixin.common.StructureSettingsAccessor;
|
||||||
import ru.bclib.util.CollectionsUtil;
|
import ru.bclib.util.CollectionsUtil;
|
||||||
|
@ -61,8 +71,16 @@ import ru.bclib.world.features.BCLFeature;
|
||||||
import ru.bclib.world.generator.BiomePicker;
|
import ru.bclib.world.generator.BiomePicker;
|
||||||
import ru.bclib.world.structures.BCLStructureFeature;
|
import ru.bclib.world.structures.BCLStructureFeature;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
|
@ -2,8 +2,6 @@ package ru.bclib.client.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.renderer.FogRenderer;
|
|
||||||
import net.minecraft.client.renderer.FogRenderer.FogMode;
|
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.effect.MobEffectInstance;
|
import net.minecraft.world.effect.MobEffectInstance;
|
||||||
|
@ -12,7 +10,9 @@ import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
import net.minecraft.world.level.material.FogType;
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
import ru.bclib.api.biomes.BiomeAPI;
|
||||||
|
import ru.bclib.config.Configs;
|
||||||
import ru.bclib.util.BackgroundInfo;
|
import ru.bclib.util.BackgroundInfo;
|
||||||
import ru.bclib.util.MHelper;
|
import ru.bclib.util.MHelper;
|
||||||
import ru.bclib.world.biomes.BCLBiome;
|
import ru.bclib.world.biomes.BCLBiome;
|
||||||
|
@ -25,12 +25,12 @@ public class CustomFogRenderer {
|
||||||
private static float fogStart = 0;
|
private static float fogStart = 0;
|
||||||
private static float fogEnd = 192;
|
private static float fogEnd = 192;
|
||||||
|
|
||||||
public static boolean applyFogDensity(Camera camera, FogRenderer.FogMode fogMode, float viewDistance, boolean thickFog) {
|
public static boolean applyFogDensity(Camera camera, float viewDistance, boolean thickFog) {
|
||||||
if (fogMode != FogMode.FOG_SKY && fogMode != FogMode.FOG_TERRAIN) {
|
FogType fogType = camera.getFluidInCamera();
|
||||||
|
if (fogType != FogType.NONE) {
|
||||||
BackgroundInfo.fogDensity = 1;
|
BackgroundInfo.fogDensity = 1;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity entity = camera.getEntity();
|
Entity entity = camera.getEntity();
|
||||||
|
|
||||||
if (!isForcedDimension(entity.level) && shouldIgnoreArea(entity.level, (int) entity.getX(), (int) entity.getEyeY(), (int) entity.getZ())) {
|
if (!isForcedDimension(entity.level) && shouldIgnoreArea(entity.level, (int) entity.getX(), (int) entity.getEyeY(), (int) entity.getZ())) {
|
||||||
|
@ -41,7 +41,7 @@ public class CustomFogRenderer {
|
||||||
float fog = getFogDensity(entity.level, entity.getX(), entity.getEyeY(), entity.getZ());
|
float fog = getFogDensity(entity.level, entity.getX(), entity.getEyeY(), entity.getZ());
|
||||||
BackgroundInfo.fogDensity = fog;
|
BackgroundInfo.fogDensity = fog;
|
||||||
|
|
||||||
if (thickFog) {
|
if (thickFog(thickFog, entity.level)) {
|
||||||
fogStart = viewDistance * 0.05F / fog;
|
fogStart = viewDistance * 0.05F / fog;
|
||||||
fogEnd = Math.min(viewDistance, 192.0F) * 0.5F / fog;
|
fogEnd = Math.min(viewDistance, 192.0F) * 0.5F / fog;
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,16 @@ public class CustomFogRenderer {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean thickFog(boolean thickFog, Level level) {
|
||||||
|
if (!thickFog) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (level.dimension() == Level.NETHER) {
|
||||||
|
return Configs.CLIENT_CONFIG.netherThickFog();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isForcedDimension(Level level) {
|
private static boolean isForcedDimension(Level level) {
|
||||||
return level.dimension() == Level.END || level.dimension() == Level.NETHER;
|
return level.dimension() == Level.END || level.dimension() == Level.NETHER;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,10 @@ public class ClientConfig extends NamedPathConfig {
|
||||||
|
|
||||||
@ConfigUI(topPadding = 12)
|
@ConfigUI(topPadding = 12)
|
||||||
public static final ConfigToken<Boolean> DEBUG_HASHES = ConfigToken.Boolean(false, "debugHashes", AutoSync.SYNC_CATEGORY);
|
public static final ConfigToken<Boolean> DEBUG_HASHES = ConfigToken.Boolean(false, "debugHashes", AutoSync.SYNC_CATEGORY);
|
||||||
|
|
||||||
|
@ConfigUI(leftPadding = 8)
|
||||||
|
public static final ConfigToken<Boolean> NETHER_THICK_FOG = ConfigToken.Boolean(true, "netherThickFog", "rendering");
|
||||||
|
|
||||||
public ClientConfig() {
|
public ClientConfig() {
|
||||||
super(BCLib.MOD_ID, "client", false);
|
super(BCLib.MOD_ID, "client", false);
|
||||||
}
|
}
|
||||||
|
@ -49,7 +51,12 @@ public class ClientConfig extends NamedPathConfig {
|
||||||
public boolean isShowingModInfo() {
|
public boolean isShowingModInfo() {
|
||||||
return get(DISPLAY_MOD_INFO) /*&& isAllowingAutoSync()*/;
|
return get(DISPLAY_MOD_INFO) /*&& isAllowingAutoSync()*/;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean suppressExperimentalDialog() {
|
public boolean suppressExperimentalDialog() {
|
||||||
return get(SUPPRESS_EXPERIMENTAL_DIALOG);
|
return get(SUPPRESS_EXPERIMENTAL_DIALOG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean netherThickFog() {
|
||||||
|
return get(NETHER_THICK_FOG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package ru.bclib.interfaces;
|
package ru.bclib.interfaces;
|
||||||
|
|
||||||
import net.minecraft.world.level.biome.BiomeSource;
|
import net.minecraft.world.level.biome.BiomeSource;
|
||||||
import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface SurfaceRuleProvider {
|
public interface SurfaceRuleProvider {
|
||||||
void bclib_addBiomeSource(BiomeSource source);
|
void bclib_addBiomeSource(BiomeSource source);
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class FogRendererMixin {
|
||||||
|
|
||||||
@Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
||||||
private static void bclib_fogDensity(Camera camera, FogRenderer.FogMode fogMode, float viewDistance, boolean thickFog, CallbackInfo info) {
|
private static void bclib_fogDensity(Camera camera, FogRenderer.FogMode fogMode, float viewDistance, boolean thickFog, CallbackInfo info) {
|
||||||
if (CustomFogRenderer.applyFogDensity(camera, fogMode, viewDistance, thickFog)) {
|
if (CustomFogRenderer.applyFogDensity(camera, viewDistance, thickFog)) {
|
||||||
info.cancel();
|
info.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,7 @@ import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Mutable;
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At.Shift;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import ru.bclib.BCLib;
|
import ru.bclib.BCLib;
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
|
||||||
import ru.bclib.interfaces.BiomeSourceAccessor;
|
import ru.bclib.interfaces.BiomeSourceAccessor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
|
@ -21,7 +21,6 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
|
||||||
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
import ru.bclib.api.dataexchange.DataExchangeAPI;
|
||||||
import ru.bclib.recipes.BCLRecipeManager;
|
import ru.bclib.recipes.BCLRecipeManager;
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,8 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf
|
||||||
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
import net.minecraft.world.level.levelgen.structure.BoundingBox;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
|
||||||
import ru.bclib.api.tag.CommonBlockTags;
|
|
||||||
import ru.bclib.api.biomes.BiomeAPI;
|
import ru.bclib.api.biomes.BiomeAPI;
|
||||||
|
import ru.bclib.api.tag.CommonBlockTags;
|
||||||
import ru.bclib.util.BlocksHelper;
|
import ru.bclib.util.BlocksHelper;
|
||||||
import ru.bclib.world.processors.DestructionStructureProcessor;
|
import ru.bclib.world.processors.DestructionStructureProcessor;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue