Skip to content

Commit

Permalink
Added IFogReductionItem interface
Browse files Browse the repository at this point in the history
  • Loading branch information
GirafiStudios committed Aug 26, 2021
1 parent 95cc19a commit 210cfeb
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 14 deletions.
16 changes: 16 additions & 0 deletions src/main/java/com/teammetallurgy/atum/api/IFogReductionItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.teammetallurgy.atum.api;

import com.google.common.collect.Lists;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;

import java.util.List;

public interface IFogReductionItem {

float getFogReduction(float fogDensity, ArmorItem armorItem);

default List<EquipmentSlotType> getSlotTypes() {
return Lists.newArrayList(EquipmentSlotType.HEAD);
}
}
21 changes: 13 additions & 8 deletions src/main/java/com/teammetallurgy/atum/client/ClientEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.api.IFogReductionItem;
import com.teammetallurgy.atum.init.AtumBiomes;
import com.teammetallurgy.atum.init.AtumItems;
import com.teammetallurgy.atum.items.artifacts.ArtifactArmor;
import com.teammetallurgy.atum.items.artifacts.nuit.NuitsVanishingItem;
import com.teammetallurgy.atum.misc.AtumConfig;
import com.teammetallurgy.atum.world.DimensionHelper;
Expand All @@ -18,7 +18,7 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.Item;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.ResourceLocation;
Expand Down Expand Up @@ -54,19 +54,24 @@ public static void renderFog(EntityViewRenderEvent.RenderFogEvent event) {

if (entity instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) entity;
Item helmet = player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem();
if (player.getPosition().getY() <= 60) {
fogDensity += (float) (62 - player.getPosition().getY()) * 0.00333F;
}
Optional<RegistryKey<Biome>> biome = world.func_242406_i(entity.getPosition());
if (biome.isPresent() && biome.get() == AtumBiomes.OASIS) {
fogDensity = fogDensity / 2.0F;
}
if (helmet instanceof ArtifactArmor) {
fogDensity = fogDensity / 3.25F;
}
if (helmet == AtumItems.WANDERER_HELMET || helmet == AtumItems.DESERT_HELMET_IRON || helmet == AtumItems.DESERT_HELMET_GOLD || helmet == AtumItems.DESERT_HELMET_DIAMOND) {
fogDensity = fogDensity / 2.0F;

for (ItemStack armor : player.getArmorInventoryList()) {
if (armor.getItem() instanceof ArmorItem) {
ArmorItem armorItem = (ArmorItem) armor.getItem();
if (armorItem instanceof IFogReductionItem) {
IFogReductionItem fogReductionItem = (IFogReductionItem) armorItem;
if (fogReductionItem.getSlotTypes().contains(armorItem.getEquipmentSlot())) {
fogDensity = fogReductionItem.getFogReduction(fogDensity, armorItem);
}
}
}
}
if (player.getPosY() >= DimensionHelper.GROUND_LEVEL - 8) {
fogDensity *= 1 + sandstormFog - (sandstormFog - sandstormFog * SandstormHandler.INSTANCE.stormStrength);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package com.teammetallurgy.atum.items;

import com.teammetallurgy.atum.api.IFogReductionItem;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.IDyeableArmorItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.*;
import net.minecraft.nbt.CompoundNBT;

import javax.annotation.Nonnull;

public class WandererDyeableArmor extends TexturedArmorItem implements IDyeableArmorItem {
public class WandererDyeableArmor extends TexturedArmorItem implements IDyeableArmorItem, IFogReductionItem {

public WandererDyeableArmor(IArmorMaterial material, String name, EquipmentSlotType slot) {
super(material, name, slot);
Expand All @@ -24,4 +22,9 @@ public int getColor(@Nonnull ItemStack stack) {
CompoundNBT nbt = stack.getChildTag("display");
return nbt != null && nbt.contains("color", 99) ? nbt.getInt("color") : 14869989;
}

@Override
public float getFogReduction(float fogDensity, ArmorItem armorItem) {
return fogDensity / 2.0F;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.google.common.collect.Multimap;
import com.teammetallurgy.atum.Atum;
import com.teammetallurgy.atum.api.IArtifact;
import com.teammetallurgy.atum.api.IFogReductionItem;
import com.teammetallurgy.atum.items.TexturedArmorItem;
import com.teammetallurgy.atum.misc.StackHelper;
import net.minecraft.client.Minecraft;
Expand All @@ -16,6 +17,7 @@
import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
Expand All @@ -37,7 +39,7 @@
import java.util.UUID;

@Mod.EventBusSubscriber(modid = Atum.MOD_ID)
public abstract class ArtifactArmor extends TexturedArmorItem implements IArtifact {
public abstract class ArtifactArmor extends TexturedArmorItem implements IArtifact, IFogReductionItem {
private static final AttributeModifier SPEED_BOOST = new AttributeModifier(UUID.fromString("2aa9e06c-cc77-4c0a-b832-58d8aaef1500"), "Artifact boots speed boost", 0.02D, AttributeModifier.Operation.ADDITION);

public ArtifactArmor(IArmorMaterial material, String name, EquipmentSlotType slot, Properties properties) {
Expand Down Expand Up @@ -151,4 +153,9 @@ public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
}
}
}

@Override
public float getFogReduction(float fogDensity, ArmorItem armorItem) {
return fogDensity / 3.25F;
}
}

0 comments on commit 210cfeb

Please sign in to comment.