Skip to content

Commit

Permalink
Thalassophobia effect added
Browse files Browse the repository at this point in the history
Some mixin work
  • Loading branch information
MysticKoko committed Dec 4, 2023
1 parent 24315ed commit a52cf0c
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,18 @@
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.CameraSubmersionType;
import net.minecraft.client.render.FogShape;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.Entity;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.registry.tag.BiomeTags;
import net.minecraft.server.command.WeatherCommand;
import net.minecraft.util.Util;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.Heightmap;
import net.minecraft.world.World;
import net.minecraft.world.biome.Biome;
import org.jetbrains.annotations.NotNull;
import dev.hybridlabs.aquatic.effect.HybridAquaticStatusEffects;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

Expand Down Expand Up @@ -68,47 +62,44 @@ public class BackgroundRendererMixin {
// }
// }

@Inject(method = "applyFog", at=@At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderFogStart(F)V"), locals = LocalCapture.CAPTURE_FAILHARD)
@Inject(method = "applyFog", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderFogStart(F)V"), locals = LocalCapture.CAPTURE_FAILHARD)
private static void hybrid$renderFog(Camera camera, BackgroundRenderer.FogType fogType, float viewDistance, boolean thickFog, float tickDelta, CallbackInfo ci, CameraSubmersionType cameraSubmersionType, Entity entity, BackgroundRenderer.FogData fogData) {

if (entity instanceof ClientPlayerEntity clientPlayerEntity) {

World world = clientPlayerEntity.getWorld();

switch (cameraSubmersionType) {

case LAVA, POWDER_SNOW -> {
// Empty cause no real need.
}
case WATER -> {
fogData.fogStart = -8.0F;

int topY = world.getSeaLevel();
float fogStep = (float) (topY - camera.getPos().y) / 32.0f; // as usual modify this end variable for when water fog should reach maximum darkness
// arg after start is the default fog starting point
// arg after that one is where the fog ends distance wise
fogData.fogEnd = MathHelper.lerp(fogStep, 80.0f, 12.0f);
fogData.fogEnd *= Math.max(0.25F, clientPlayerEntity.getUnderwaterVisibility());
RegistryEntry<Biome> registryEntry = world.getBiome(clientPlayerEntity.getBlockPos());
if (registryEntry.isIn(BiomeTags.HAS_CLOSER_WATER_FOG)) {
fogData.fogEnd *= 1.0F;
if (clientPlayerEntity.hasStatusEffect(HybridAquaticStatusEffects.THALASSOPHOBIA)) {
fogData.fogStart = 0.0F;
fogData.fogEnd = 32.0F;
fogData.fogShape = FogShape.SPHERE;
} else {
switch (cameraSubmersionType) {
case LAVA, POWDER_SNOW -> {
}

if (fogData.fogEnd > viewDistance) {
fogData.fogEnd = viewDistance;
fogData.fogShape = FogShape.SPHERE;
case WATER -> {
fogData.fogStart = -8.0F;
int topY = world.getSeaLevel();
float fogStep = (float) (topY - camera.getPos().y) / 32.0f;
fogData.fogEnd = MathHelper.lerp(fogStep, 80.0f, 12.0f);
fogData.fogEnd *= Math.max(0.25F, clientPlayerEntity.getUnderwaterVisibility());
RegistryEntry<Biome> registryEntry = world.getBiome(clientPlayerEntity.getBlockPos());
if (registryEntry.isIn(BiomeTags.HAS_CLOSER_WATER_FOG)) {
fogData.fogEnd *= 1.0F;
}

if (fogData.fogEnd > viewDistance) {
fogData.fogEnd = viewDistance;
fogData.fogShape = FogShape.SPHERE;
}
fogData.fogEnd = Math.max(fogData.fogEnd, 12.0f);
}
fogData.fogEnd = Math.max(fogData.fogEnd, 12.0f);
}
case NONE -> {

RegistryEntry<Biome> biomeEntry = world.getBiome(entity.getBlockPos());

if (biomeEntry.isIn(BiomeTags.IS_OCEAN) && (world.isRaining() || world.isNight())) {
fogData.fogStart = -0.8f;

fogData.fogEnd = MeasurementUtils.Block(16);
case NONE -> {
RegistryEntry<Biome> biomeEntry = world.getBiome(entity.getBlockPos());

if (biomeEntry.isIn(BiomeTags.IS_OCEAN) && (world.isRaining() || world.isNight())) {
fogData.fogStart = -0.8f;
fogData.fogEnd = MeasurementUtils.Block(16);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ class LanguageProvider(output: FabricDataOutput) : FabricLanguageProvider(output

// effects
mapOf(
HybridAquaticStatusEffects.BLEEDING to "Bleeding"
HybridAquaticStatusEffects.BLEEDING to "Bleeding",
HybridAquaticStatusEffects.THALASSOPHOBIA to "Thalassophobia"
).forEach { (effect, translation) ->
val identifier = Registries.STATUS_EFFECT.getId(effect)
builder.add("effect.${identifier?.namespace}.${identifier?.path}", translation)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import net.minecraft.util.Identifier

object HybridAquaticStatusEffects {
val BLEEDING = register("bleeding", Bleeding())
val THALASSOPHOBIA = register("thalassophobia", Thalassophobia())

private fun register(id: String, effect: StatusEffect): StatusEffect {
return Registry.register(Registries.STATUS_EFFECT, Identifier(HybridAquatic.MOD_ID, id), effect)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.hybridlabs.aquatic.effect

import net.minecraft.entity.effect.StatusEffect
import net.minecraft.entity.effect.StatusEffectCategory

class Thalassophobia : StatusEffect(StatusEffectCategory.HARMFUL, 0x000000) {
}

0 comments on commit a52cf0c

Please sign in to comment.