more stuff
This commit is contained in:
parent
c8a67a5a1f
commit
6a717093b2
13 changed files with 242 additions and 27 deletions
|
|
@ -16,10 +16,22 @@ public class MedicalEffects {
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final MedicalEffect WEAK_ALCOHOL = new MedicalEffect() {
|
public static final MedicalEffect WEAK_ALCOHOL = new MedicalEffect() {
|
||||||
|
@Override
|
||||||
|
public void applyOnSkin(ServerPlayer player, float ml, Limb limb) {
|
||||||
|
player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).ifPresent(h->{
|
||||||
|
h.setLimbPain(limb, h.getLimbPain(limb)+0.2f*ml);
|
||||||
|
h.setLimbDesinfected(limb,Math.max(h.getLimbDesinfected(limb),100*ml));
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final MedicalEffect ETHANOL = new MedicalEffect() {
|
public static final MedicalEffect ETHANOL = new MedicalEffect() {
|
||||||
|
@Override
|
||||||
|
public void applyOnSkin(ServerPlayer player, float ml, Limb limb) {
|
||||||
|
player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).ifPresent(h->{
|
||||||
|
h.setLimbPain(limb, h.getLimbPain(limb)+0.2f*ml);
|
||||||
|
h.setLimbDesinfected(limb,Math.max(h.getLimbDesinfected(limb),700*ml));
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,14 @@ import net.adinvas.prototype_pain.fluid_system.MultiTankHelper;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import xyz.illuc.neuralgiacore.registers.RegisterMedicalFluids;
|
import xyz.illuc.neuralgiacore.registers.RegisterMedicalFluids;
|
||||||
|
|
||||||
|
//TODO make it expire
|
||||||
|
|
||||||
public class BloodBagItem extends SyringeItem {
|
public class BloodBagItem extends SyringeItem {
|
||||||
@Override
|
@Override
|
||||||
public int getCapacity() {
|
public int getCapacity() {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import net.adinvas.prototype_pain.item.multi_tank.MultiTankFluidItem;
|
||||||
import net.adinvas.prototype_pain.limbs.Limb;
|
import net.adinvas.prototype_pain.limbs.Limb;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
@ -13,6 +14,14 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class SyringeItem extends MultiTankFluidItem implements IMedicalMinigameUsable {
|
public class SyringeItem extends MultiTankFluidItem implements IMedicalMinigameUsable {
|
||||||
|
|
||||||
|
public SyringeItem(Properties properties) {
|
||||||
|
super(properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SyringeItem() {
|
||||||
|
super(new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCapacity() {
|
public int getCapacity() {
|
||||||
return 250;
|
return 250;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package xyz.illuc.neuralgiacore.mixin.PrototypePain;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
|
import net.adinvas.prototype_pain.limbs.PlayerHealthData;
|
||||||
|
import net.dries007.tfc.common.capabilities.food.TFCFoodData;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.food.FoodData;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import xyz.illuc.neuralgiacore.interfaces.IPlayerHealthDataAccessor;
|
||||||
|
|
||||||
|
@Mixin(PlayerHealthData.class)
|
||||||
|
public abstract class MixinDehydration {
|
||||||
|
|
||||||
|
@Shadow public abstract void setOxygenCap(float value);
|
||||||
|
|
||||||
|
@Shadow public abstract float getOxygenCap();
|
||||||
|
|
||||||
|
@Inject(method = "tickUpdate", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 5, shift = At.Shift.AFTER), remap = false)
|
||||||
|
private void modifyConsciousnessWithThirst(ServerPlayer player, CallbackInfo ci) {
|
||||||
|
FoodData nutrition = player.getFoodData();
|
||||||
|
assert nutrition instanceof TFCFoodData;
|
||||||
|
this.setOxygenCap((float) (this.getOxygenCap() - (100-((TFCFoodData) nutrition).getThirst())/2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -28,11 +28,8 @@ public class MixinModdedMedicalFluids {
|
||||||
default -> {
|
default -> {
|
||||||
Stream<TagKey<Fluid>> tags = fs.defaultFluidState().getTags();
|
Stream<TagKey<Fluid>> tags = fs.defaultFluidState().getTags();
|
||||||
if (tags.anyMatch(n -> {
|
if (tags.anyMatch(n -> {
|
||||||
System.out.println(n.toString());
|
|
||||||
return n.toString().equals("TagKey[minecraft:fluid / tfc:alcohols]");
|
return n.toString().equals("TagKey[minecraft:fluid / tfc:alcohols]");
|
||||||
})) {
|
})) { yield RegisterMedicalFluids.WEAK_ALCOHOL.get(); }
|
||||||
yield RegisterMedicalFluids.WEAK_ALCOHOL.get();
|
|
||||||
}
|
|
||||||
yield ModMedicalFluids.VANILLA_WATER.get();
|
yield ModMedicalFluids.VANILLA_WATER.get();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
package xyz.illuc.neuralgiacore.mixin.PrototypePain;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
|
import net.adinvas.prototype_pain.limbs.PlayerHealthData;
|
||||||
|
import net.dries007.tfc.common.capabilities.food.TFCFoodData;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.food.FoodData;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
import xyz.illuc.neuralgiacore.interfaces.IPlayerHealthDataAccessor;
|
||||||
|
|
||||||
|
@Mixin(PlayerHealthData.class)
|
||||||
|
public class MixinRespitoryArrest {
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
private boolean respitoryArrest;
|
||||||
|
|
||||||
|
@Redirect(
|
||||||
|
method = "tickUpdate", // replace with your method name
|
||||||
|
at = @At(
|
||||||
|
value = "FIELD",
|
||||||
|
target = "Lnet/adinvas/prototype_pain/limbs/PlayerHealthData;respitoryArrest:Z",
|
||||||
|
opcode = Opcodes.PUTFIELD
|
||||||
|
),
|
||||||
|
remap = false
|
||||||
|
)
|
||||||
|
private void tfcpain$redirectRespitoryArrest(PlayerHealthData instance, boolean value, @Local(argsOnly = true) ServerPlayer player) {
|
||||||
|
boolean dehydrated = false;
|
||||||
|
boolean septicShock = false;
|
||||||
|
|
||||||
|
FoodData nutrition = player.getFoodData();
|
||||||
|
if (nutrition instanceof TFCFoodData) {
|
||||||
|
if (((TFCFoodData) nutrition).getThirst() == 0)
|
||||||
|
dehydrated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
IPlayerHealthDataAccessor accessor = (IPlayerHealthDataAccessor) this;
|
||||||
|
if (accessor.getSepsis() > 99F){
|
||||||
|
septicShock = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean modified = value || dehydrated || septicShock;
|
||||||
|
|
||||||
|
respitoryArrest = modified;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package xyz.illuc.neuralgiacore.mixin.PrototypePain;
|
package xyz.illuc.neuralgiacore.mixin.PrototypePain;
|
||||||
|
|
||||||
|
import net.adinvas.prototype_pain.PlayerHealthProvider;
|
||||||
import net.adinvas.prototype_pain.limbs.PlayerHealthData;
|
import net.adinvas.prototype_pain.limbs.PlayerHealthData;
|
||||||
|
import net.dries007.tfc.common.capabilities.food.TFCFoodData;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
@ -17,4 +19,42 @@ public class MixinSickness {
|
||||||
|
|
||||||
accessor.setSickness(Math.max(0, Math.min(100, ((accessor.getSickness() + sicknessRemoval)))));
|
accessor.setSickness(Math.max(0, Math.min(100, ((accessor.getSickness() + sicknessRemoval)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "tickUpdate", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 5, shift = At.Shift.AFTER), remap = false)
|
||||||
|
private void updateVomitTime(ServerPlayer player, CallbackInfo ci) {
|
||||||
|
IPlayerHealthDataAccessor accessor = (IPlayerHealthDataAccessor) this;
|
||||||
|
|
||||||
|
float sickness = accessor.getSickness();
|
||||||
|
float vomitTime = accessor.getVomitTime();
|
||||||
|
|
||||||
|
|
||||||
|
if (sickness > 50) {
|
||||||
|
accessor.setVomitTime(vomitTime + (sickness * 0.0025F));
|
||||||
|
} else {
|
||||||
|
accessor.setVomitTime(vomitTime - (sickness * 0.0025F));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accessor.getVomitTime() > 50) {
|
||||||
|
throwUp(player);
|
||||||
|
accessor.setVomitTime(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
accessor.setVomitTime(Math.max(0, accessor.getVomitTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void throwUp(ServerPlayer player) {
|
||||||
|
player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).ifPresent(h -> {
|
||||||
|
IPlayerHealthDataAccessor accessor = (IPlayerHealthDataAccessor) h;
|
||||||
|
|
||||||
|
if (player.getFoodData() instanceof TFCFoodData) {
|
||||||
|
float thirst = ((TFCFoodData) player.getFoodData()).getThirst();
|
||||||
|
((TFCFoodData) player.getFoodData()).setThirst(thirst - 10);
|
||||||
|
}
|
||||||
|
//System.out.println(player.getFoodData().getFoodLevel());
|
||||||
|
player.getFoodData().setFoodLevel(player.getFoodData().getFoodLevel() - 2);
|
||||||
|
|
||||||
|
|
||||||
|
accessor.setSickness(Math.max(0, Math.min(100, accessor.getSickness() - 8)));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,15 +25,15 @@ public class MixinHealthBar {
|
||||||
remap = false
|
remap = false
|
||||||
)
|
)
|
||||||
private static void renderHealth(LivingEntity player, ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
private static void renderHealth(LivingEntity player, ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
||||||
tfcpain$renderConscioussnes(gui, graphics, width, height);
|
renderConscioussnes(gui, graphics, width, height);
|
||||||
tfcpain$renderOxygen(gui, graphics, width, height);
|
renderOxygen(gui, graphics, width, height);
|
||||||
|
|
||||||
}
|
}
|
||||||
@Unique
|
@Unique
|
||||||
private static final ResourceLocation TEXTURE = new ResourceLocation("tfcpain", "textures/overlay.png");
|
private static final ResourceLocation TEXTURE = new ResourceLocation("neuralgiacore", "textures/overlay.png");
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private static void tfcpain$renderConscioussnes(ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
private static void renderConscioussnes(ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
||||||
PoseStack stack = graphics.pose();
|
PoseStack stack = graphics.pose();
|
||||||
Minecraft minecraft = Minecraft.getInstance();
|
Minecraft minecraft = Minecraft.getInstance();
|
||||||
if ( gui.shouldDrawSurvivalElements() && setup(gui, minecraft)) {
|
if ( gui.shouldDrawSurvivalElements() && setup(gui, minecraft)) {
|
||||||
|
|
@ -65,7 +65,7 @@ public class MixinHealthBar {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private static void tfcpain$renderOxygen(ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
private static void renderOxygen(ForgeGui gui, GuiGraphics graphics, int width, int height) {
|
||||||
PoseStack stack = graphics.pose();
|
PoseStack stack = graphics.pose();
|
||||||
Minecraft minecraft = Minecraft.getInstance();
|
Minecraft minecraft = Minecraft.getInstance();
|
||||||
if ( gui.shouldDrawSurvivalElements() && setup(gui, minecraft)) {
|
if ( gui.shouldDrawSurvivalElements() && setup(gui, minecraft)) {
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class RadiationSicknessMoodle extends AbstractMoodleVisual {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) {
|
public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) {
|
||||||
ResourceLocation tex = new ResourceLocation("neuralgia", "textures/moodles/radiation.png");
|
ResourceLocation tex = new ResourceLocation("neuralgiacore", "textures/moodles/radiation.png");
|
||||||
ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16);
|
ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16);
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
@ -51,16 +51,16 @@ public class RadiationSicknessMoodle extends AbstractMoodleVisual {
|
||||||
List<Component> componentList = new ArrayList();
|
List<Component> componentList = new ArrayList();
|
||||||
switch (this.getMoodleStatus()) {
|
switch (this.getMoodleStatus()) {
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title1").withStyle(ChatFormatting.YELLOW));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.title1").withStyle(ChatFormatting.YELLOW));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description1").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.description1").withStyle(ChatFormatting.GRAY));
|
||||||
break;
|
break;
|
||||||
case HEAVY:
|
case HEAVY:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title2").withStyle(ChatFormatting.GOLD));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.title2").withStyle(ChatFormatting.GOLD));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description2").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.description2").withStyle(ChatFormatting.GRAY));
|
||||||
break;
|
break;
|
||||||
case CRITICAL:
|
case CRITICAL:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title3").withStyle(ChatFormatting.RED));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.title3").withStyle(ChatFormatting.RED));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description3").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.radiation.description3").withStyle(ChatFormatting.GRAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
return componentList;
|
return componentList;
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class SepsisMoodle extends AbstractMoodleVisual {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) {
|
public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) {
|
||||||
ResourceLocation tex = new ResourceLocation("neuralgia", "textures/moodles/sepsis.png");
|
ResourceLocation tex = new ResourceLocation("neuralgiacore", "textures/moodles/sepsis.png");
|
||||||
ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16);
|
ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16);
|
||||||
return tex;
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
@ -51,16 +51,16 @@ public class SepsisMoodle extends AbstractMoodleVisual {
|
||||||
List<Component> componentList = new ArrayList();
|
List<Component> componentList = new ArrayList();
|
||||||
switch (this.getMoodleStatus()) {
|
switch (this.getMoodleStatus()) {
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.title1").withStyle(ChatFormatting.YELLOW));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.title1").withStyle(ChatFormatting.YELLOW));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.description1").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.description1").withStyle(ChatFormatting.GRAY));
|
||||||
break;
|
break;
|
||||||
case HEAVY:
|
case HEAVY:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.title2").withStyle(ChatFormatting.GOLD));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.title2").withStyle(ChatFormatting.GOLD));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.description2").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.description2").withStyle(ChatFormatting.GRAY));
|
||||||
break;
|
break;
|
||||||
case CRITICAL:
|
case CRITICAL:
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.title3").withStyle(ChatFormatting.RED));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.title3").withStyle(ChatFormatting.RED));
|
||||||
componentList.add(Component.translatable("neuralgia.gui.moodle.sepsis.description3").withStyle(ChatFormatting.GRAY));
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sepsis.description3").withStyle(ChatFormatting.GRAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
return componentList;
|
return componentList;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
package xyz.illuc.neuralgiacore.moodles;
|
||||||
|
|
||||||
|
|
||||||
|
import net.adinvas.prototype_pain.PlayerHealthProvider;
|
||||||
|
import net.adinvas.prototype_pain.client.moodles.AbstractMoodleVisual;
|
||||||
|
import net.adinvas.prototype_pain.client.moodles.MoodleStatus;
|
||||||
|
import net.minecraft.ChatFormatting;
|
||||||
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import xyz.illuc.neuralgiacore.interfaces.IPlayerHealthDataAccessor;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SicknessMoodle extends AbstractMoodleVisual {
|
||||||
|
public SicknessMoodle() {
|
||||||
|
}
|
||||||
|
//noinspection ConstantConditions
|
||||||
|
@Override
|
||||||
|
public MoodleStatus calculateStatus(Player player) {
|
||||||
|
if (!player.isLocalPlayer()) return MoodleStatus.NONE;
|
||||||
|
|
||||||
|
return player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).map(ph -> {
|
||||||
|
IPlayerHealthDataAccessor accessor = (IPlayerHealthDataAccessor) ph;
|
||||||
|
float sickness = accessor.getSickness();
|
||||||
|
|
||||||
|
if (sickness > 75F) {
|
||||||
|
return (MoodleStatus.CRITICAL);
|
||||||
|
} else if (sickness > 50F) {
|
||||||
|
return (MoodleStatus.HEAVY);
|
||||||
|
} else if (sickness > 30F) {
|
||||||
|
return (MoodleStatus.NORMAL);
|
||||||
|
} else if (sickness > 10F) {
|
||||||
|
return (MoodleStatus.LIGHT);
|
||||||
|
} else {
|
||||||
|
return (MoodleStatus.NONE);
|
||||||
|
}
|
||||||
|
}).orElse(MoodleStatus.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) {
|
||||||
|
ResourceLocation tex = new ResourceLocation("neuralgiacore", "textures/moodles/sickness.png");
|
||||||
|
ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16);
|
||||||
|
return tex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Component> getTooltip(Player player) {
|
||||||
|
List<Component> componentList = new ArrayList();
|
||||||
|
switch (this.getMoodleStatus()) {
|
||||||
|
case LIGHT:
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.title1").withStyle(ChatFormatting.YELLOW));
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.description1").withStyle(ChatFormatting.GRAY));
|
||||||
|
break;
|
||||||
|
case NORMAL:
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.title2").withStyle(ChatFormatting.YELLOW));
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.description2").withStyle(ChatFormatting.GRAY));
|
||||||
|
break;
|
||||||
|
case HEAVY:
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.title3").withStyle(ChatFormatting.GOLD));
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.description3").withStyle(ChatFormatting.GRAY));
|
||||||
|
break;
|
||||||
|
case CRITICAL:
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.title4").withStyle(ChatFormatting.RED));
|
||||||
|
componentList.add(Component.translatable("neuralgiacore.gui.moodle.sickness.description4").withStyle(ChatFormatting.GRAY));
|
||||||
|
}
|
||||||
|
|
||||||
|
return componentList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import xyz.illuc.neuralgiacore.NeuralgiaCoreMod;
|
import xyz.illuc.neuralgiacore.NeuralgiaCoreMod;
|
||||||
import xyz.illuc.neuralgiacore.moodles.SepsisMoodle;
|
import xyz.illuc.neuralgiacore.moodles.SepsisMoodle;
|
||||||
|
import xyz.illuc.neuralgiacore.moodles.SicknessMoodle;
|
||||||
|
|
||||||
import static net.adinvas.prototype_pain.client.moodles.MoodleController.registerMoodle;
|
import static net.adinvas.prototype_pain.client.moodles.MoodleController.registerMoodle;
|
||||||
|
|
||||||
|
|
@ -11,6 +12,6 @@ import static net.adinvas.prototype_pain.client.moodles.MoodleController.registe
|
||||||
public class RegisterMoodles {
|
public class RegisterMoodles {
|
||||||
static {
|
static {
|
||||||
registerMoodle(new SepsisMoodle());
|
registerMoodle(new SepsisMoodle());
|
||||||
//registerMoodle(new SicknessMoodle());
|
registerMoodle(new SicknessMoodle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6,10 +6,12 @@
|
||||||
"refmap": "neuralgiacore.refmap.json",
|
"refmap": "neuralgiacore.refmap.json",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"PrototypePain.MixinAmbientTemperature",
|
"PrototypePain.MixinAmbientTemperature",
|
||||||
|
"PrototypePain.MixinDehydration",
|
||||||
"PrototypePain.MixinLegUsePacket",
|
"PrototypePain.MixinLegUsePacket",
|
||||||
"PrototypePain.MixinModdedMedicalFluids",
|
"PrototypePain.MixinModdedMedicalFluids",
|
||||||
"PrototypePain.MixinOverlayController",
|
"PrototypePain.MixinOverlayController",
|
||||||
"PrototypePain.MixinPlayerHealthDataExtras",
|
"PrototypePain.MixinPlayerHealthDataExtras",
|
||||||
|
"PrototypePain.MixinRespitoryArrest",
|
||||||
"PrototypePain.MixinSepsis",
|
"PrototypePain.MixinSepsis",
|
||||||
"PrototypePain.MixinSickness",
|
"PrototypePain.MixinSickness",
|
||||||
"PrototypePain.MixinSicknessOverlay",
|
"PrototypePain.MixinSicknessOverlay",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue