From c8a67a5a1fc9aa2a7d9e995139b953b7ce865f10 Mon Sep 17 00:00:00 2001 From: illuc Date: Sat, 21 Feb 2026 15:25:05 +0200 Subject: [PATCH] stuff --- build.gradle | 58 ++++++++++++++- gradle.properties | 2 +- .../illuc/neuralgiacore/MedicalEffects.java | 25 +++++++ .../NeuralgiaCoreCreativeTab.java | 43 +++++++++++ .../illuc/neuralgiacore/NeuralgiaCoreMod.java | 3 + .../entities/OfflinePlayerEntity.java | 10 ++- .../entities/OfflinePlayerRenderer.java | 10 ++- .../neuralgiacore/items/BloodBagItem.java | 43 +++++++++++ .../illuc/neuralgiacore/items/SimpleItem.java | 9 +++ .../neuralgiacore/items/SyringeItem.java | 39 ++++++++++ .../neuralgiacore/items/ToweletteItem.java | 42 +++++++++++ .../MixinModdedMedicalFluids.java | 41 +++++++++++ .../PrototypePain/MixinTemperatureDamage.java | 10 +++ .../MixinDisableTemperatureDamage.java | 22 ++++++ .../mixin/TfcAmbiental/MixinSkipVignette.java | 18 +++++ .../moodles/RadiationSicknessMoodle.java | 69 ++++++++++++++++++ .../registers/RegisterItems.java | 9 ++- .../registers/RegisterMedicalFluids.java | 24 ++++++ .../assets/neuralgiacore/lang/en_us.json | 11 ++- .../neuralgiacore/models/item/blood_bag.json | 6 ++ .../neuralgiacore/models/item/syringe.json | 6 ++ .../neuralgiacore/models/item/towelette.json | 6 ++ .../neuralgiacore/textures/item/blood_bag.png | Bin 0 -> 915 bytes .../neuralgiacore/textures/item/syringe.png | Bin 0 -> 915 bytes .../neuralgiacore/textures/item/towelette.png | Bin 0 -> 915 bytes src/main/resources/neuralgiacore.mixins.json | 5 +- 26 files changed, 499 insertions(+), 12 deletions(-) create mode 100644 src/main/java/xyz/illuc/neuralgiacore/MedicalEffects.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreCreativeTab.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/items/BloodBagItem.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/items/SimpleItem.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/items/SyringeItem.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/items/ToweletteItem.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinModdedMedicalFluids.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinTemperatureDamage.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinDisableTemperatureDamage.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinSkipVignette.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/moodles/RadiationSicknessMoodle.java create mode 100644 src/main/java/xyz/illuc/neuralgiacore/registers/RegisterMedicalFluids.java create mode 100644 src/main/resources/assets/neuralgiacore/models/item/blood_bag.json create mode 100644 src/main/resources/assets/neuralgiacore/models/item/syringe.json create mode 100644 src/main/resources/assets/neuralgiacore/models/item/towelette.json create mode 100644 src/main/resources/assets/neuralgiacore/textures/item/blood_bag.png create mode 100644 src/main/resources/assets/neuralgiacore/textures/item/syringe.png create mode 100644 src/main/resources/assets/neuralgiacore/textures/item/towelette.png diff --git a/build.gradle b/build.gradle index 88ad5d1..47b0934 100644 --- a/build.gradle +++ b/build.gradle @@ -114,6 +114,8 @@ mixin { sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { + mavenCentral() + flatDir { dir 'libs' } @@ -135,10 +137,42 @@ repositories { url "https://maven.squiddev.cc" } - mavenCentral() + maven { + name = 'GeckoLib' + url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' + } + + maven { + name = "Valkyrien Skies Internal" + url = 'https://maven.valkyrienskies.org' + content { + includeGroup "org.valkyrienskies.core" + includeGroup "org.valkyrienskies" + includeGroup "com.github.Rubydesic" + + } + } + + maven { + name = 'Kotlin for Forge' + url = 'https://thedarkcolour.github.io/KotlinForForge/' + content { includeGroup "thedarkcolour" } + } + + maven { + name = 'GTCEu Maven' + url = 'https://maven.gtceu.com' + content { + includeGroup 'com.gregtechceu.gtceu' + } + } + + + } dependencies { + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.5.0")) implementation(jarJar("io.github.llamalad7:mixinextras-forge:0.5.0")) { jarJar.ranged(it, "[0.5.0,)") @@ -153,11 +187,29 @@ dependencies { implementation fg.deobf("curse.maven:curios-309927:5367944") implementation fg.deobf("curse.maven:tacz-1028108:6654541") implementation fg.deobf("maven.modrinth:prototype-pain:2.7.2") + implementation fg.deobf("maven.modrinth:warium:1.2.7") + implementation fg.deobf("software.bernie.geckolib:geckolib-forge-1.20.1:4.8.3") + implementation fg.deobf("com.gregtechceu.gtceu:gtceu-1.20.1:7.5.2") { transitive = false } + + + + implementation("thedarkcolour:kotlinforforge:4.12.0") + implementation fg.deobf("org.valkyrienskies:valkyrienskies-120-forge:2.4.10+d5a58dc1f2") { transitive = false } + implementation("org.valkyrienskies.core:api:1.1.0+1d4a7373e9") + implementation("org.valkyrienskies.core:util:1.1.0+1d4a7373e9") + implementation("org.valkyrienskies.core:internal:1.1.0+1d4a7373e9") + implementation("org.valkyrienskies.core:impl:1.1.0+1d4a7373e9") + implementation "org.joml:joml:1.10.5" + + implementation fg.deobf("maven.modrinth:interactive:EScBvcOc") + implementation fg.deobf("maven.modrinth:create-radars:0.3.5") + + implementation fg.deobf("maven.modrinth:valkyrien-warium:1.0.0") implementation fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:slim") implementation fg.deobf("dev.engine-room.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}") implementation(fg.deobf("net.createmod.ponder:Ponder-Forge-${minecraft_version}:${ponder_version}")) - implementation(fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")) + //implementation(fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")) compileOnly fg.deobf("cc.tweaked:cc-tweaked-$minecraft_version-core-api:$cc_version") compileOnly fg.deobf("cc.tweaked:cc-tweaked-$minecraft_version-forge-api:$cc_version") @@ -167,7 +219,7 @@ dependencies { // compileOnly fg.deobf("curse.maven:prototype_pain-1333811:7393939") //returns a 403 for whatever reason implementation fg.deobf("curse.maven:prototype-physics-1380559:7206624") - annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + } diff --git a/gradle.properties b/gradle.properties index fae3823..2055d8c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ forge_version_range=[47,) loader_version_range=[47,) # Dependencies -create_version=6.0.7-281 +create_version=6.0.8-288 flywheel_version=1.0.5 registrate_version=MC1.20-1.3.3 ponder_version=1.0.91 diff --git a/src/main/java/xyz/illuc/neuralgiacore/MedicalEffects.java b/src/main/java/xyz/illuc/neuralgiacore/MedicalEffects.java new file mode 100644 index 0000000..c9c408a --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/MedicalEffects.java @@ -0,0 +1,25 @@ +package xyz.illuc.neuralgiacore; + +import net.adinvas.prototype_pain.PlayerHealthProvider; +import net.adinvas.prototype_pain.fluid_system.MedicalEffect; +import net.adinvas.prototype_pain.limbs.Limb; +import net.minecraft.server.level.ServerPlayer; + +public class MedicalEffects { + public static final MedicalEffect BLOOD = new MedicalEffect() { + @Override + public void applyInjected(ServerPlayer player, float ml, Limb limb) { + player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).ifPresent(h -> { + h.setBloodVolume(h.getBloodVolume() + ml/1000); + }); + } + }; + + public static final MedicalEffect WEAK_ALCOHOL = new MedicalEffect() { + + }; + + public static final MedicalEffect ETHANOL = new MedicalEffect() { + + }; +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreCreativeTab.java b/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreCreativeTab.java new file mode 100644 index 0000000..bf47492 --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreCreativeTab.java @@ -0,0 +1,43 @@ +package xyz.illuc.neuralgiacore; + +import net.adinvas.prototype_pain.PrototypePain; +import net.adinvas.prototype_pain.item.INbtDrivenDurability; +import net.adinvas.prototype_pain.item.multi_tank.MultiTankFluidItem; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; +import xyz.illuc.neuralgiacore.registers.RegisterItems; + +public class NeuralgiaCoreCreativeTab { + public static final DeferredRegister CREATIVE_TABS = + DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NeuralgiaCoreMod.MOD_ID); + + public static final RegistryObject NEURALGIA_TAB = CREATIVE_TABS.register("neuralgiatab", + () -> CreativeModeTab.builder() + .title(Component.translatable("itemGroup.neuralgia")) + .icon(() -> new ItemStack(RegisterItems.Syringe.get())) + .displayItems((parameters, output) -> { + for (RegistryObject itemRegistryObject : RegisterItems.ITEMS.getEntries()){ + if (itemRegistryObject.get() instanceof INbtDrivenDurability nbt){ + ItemStack stack = new ItemStack(itemRegistryObject.get()); + nbt.setupDefaults(stack); + output.accept(stack); + continue; + } + if (itemRegistryObject.get() instanceof MultiTankFluidItem multiTankFluidItem){ + ItemStack stack = new ItemStack(itemRegistryObject.get()); + multiTankFluidItem.setupDefault(stack); + output.accept(stack); + continue; + } + output.accept(itemRegistryObject.get()); + + } + }) + .build() + ); +} \ No newline at end of file diff --git a/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreMod.java b/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreMod.java index b5d3b80..e6c700b 100644 --- a/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreMod.java +++ b/src/main/java/xyz/illuc/neuralgiacore/NeuralgiaCoreMod.java @@ -28,6 +28,7 @@ import xyz.illuc.neuralgiacore.entities.OfflinePlayerEntity; import xyz.illuc.neuralgiacore.entities.OfflinePlayerRenderer; import xyz.illuc.neuralgiacore.peripherals.BearingPeripheral; import xyz.illuc.neuralgiacore.registers.RegisterItems; +import xyz.illuc.neuralgiacore.registers.RegisterMedicalFluids; @Mod(NeuralgiaCoreMod.MOD_ID) @@ -56,6 +57,8 @@ public class NeuralgiaCoreMod { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); RegisterItems.ITEMS.register(modEventBus); + RegisterMedicalFluids.register(modEventBus); + NeuralgiaCoreCreativeTab.CREATIVE_TABS.register(modEventBus); ENTITY_TYPES.register(modEventBus); diff --git a/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerEntity.java b/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerEntity.java index 62e0de0..8513b98 100644 --- a/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerEntity.java +++ b/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerEntity.java @@ -9,10 +9,7 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.*; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -124,6 +121,11 @@ public class OfflinePlayerEntity extends LivingEntity { return HumanoidArm.RIGHT; } + @Override + public EntityDimensions getDimensions(Pose pose) { + return EntityDimensions.scalable(0.6F, 1.8F); + } + public void setPlayerUUID(UUID uuid) { this.entityData.set(DATA_PLAYER_UUID, Optional.ofNullable(uuid)); } diff --git a/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerRenderer.java b/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerRenderer.java index 3607491..aa88a6d 100644 --- a/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerRenderer.java +++ b/src/main/java/xyz/illuc/neuralgiacore/entities/OfflinePlayerRenderer.java @@ -11,6 +11,7 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.SkullBlockEntity; +import net.minecraft.world.phys.Vec3; import java.util.HashMap; import java.util.Map; @@ -19,7 +20,7 @@ import java.util.UUID; public class OfflinePlayerRenderer extends LivingEntityRenderer> { public OfflinePlayerRenderer(EntityRendererProvider.Context context) { - super(context, new PlayerModel<>(context.bakeLayer(ModelLayers.PLAYER), false), 0.5F); + super(context, new PlayerModel<>(context.bakeLayer(ModelLayers.PLAYER), false), 0.0F); } private static HashMap players = new HashMap<>(); @@ -52,6 +53,13 @@ public class OfflinePlayerRenderer extends LivingEntityRenderer use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + player.getCapability(PlayerHealthProvider.PLAYER_HEALTH_DATA).ifPresent(h->{ + h.setBloodVolume(h.getBloodVolume() - 0.1f); + MultiTankHelper.addFluid(stack, 100, RegisterMedicalFluids.BLOOD.get().getAsStack(1)); + player.playSound(SoundEvents.FISH_SWIM, 1.0F, 1.0F); + + }); + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/items/SimpleItem.java b/src/main/java/xyz/illuc/neuralgiacore/items/SimpleItem.java new file mode 100644 index 0000000..ca13457 --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/items/SimpleItem.java @@ -0,0 +1,9 @@ +package xyz.illuc.neuralgiacore.items; + +import net.minecraft.world.item.Item; + +public class SimpleItem extends Item { + public SimpleItem() { + super(new Properties()); + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/items/SyringeItem.java b/src/main/java/xyz/illuc/neuralgiacore/items/SyringeItem.java new file mode 100644 index 0000000..2a072ea --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/items/SyringeItem.java @@ -0,0 +1,39 @@ +package xyz.illuc.neuralgiacore.items; + +import net.adinvas.prototype_pain.client.MinigameOpener; +import net.adinvas.prototype_pain.item.IMedicalMinigameUsable; +import net.adinvas.prototype_pain.item.multi_tank.MultiTankFluidItem; +import net.adinvas.prototype_pain.limbs.Limb; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import org.jetbrains.annotations.Nullable; + +public class SyringeItem extends MultiTankFluidItem implements IMedicalMinigameUsable { + + @Override + public int getCapacity() { + return 250; + } + + @Override + public void openMinigameScreen(Player target, ItemStack stack, @Nullable Limb limb, InteractionHand hand) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT,() -> () ->{ + MinigameOpener.OpenSyringeMinigame(target,stack,limb,hand); + }); + } + + @Override + public void openMinigameBagScreen(Player target, ItemStack stack, ItemStack bagStack, int slot, @Nullable Limb limb, InteractionHand hand) { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT,() -> () ->{ + MinigameOpener.OpenSyringeMinigame(target,stack,bagStack,slot,limb,hand); + }); + } + + @Override + public void useMinigameAction(float durability, Player target, @Nullable Limb limb) { + + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/items/ToweletteItem.java b/src/main/java/xyz/illuc/neuralgiacore/items/ToweletteItem.java new file mode 100644 index 0000000..c606f33 --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/items/ToweletteItem.java @@ -0,0 +1,42 @@ +package xyz.illuc.neuralgiacore.items; + +import net.adinvas.prototype_pain.Util; +import net.adinvas.prototype_pain.fluid_system.MedicalFluid; +import net.adinvas.prototype_pain.fluid_system.MultiTankHelper; +import net.adinvas.prototype_pain.item.ISimpleMedicalUsable; +import net.adinvas.prototype_pain.item.multi_tank.MultiTankFluidItem; +import net.adinvas.prototype_pain.limbs.Limb; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +import java.util.List; + +public class ToweletteItem extends MultiTankFluidItem implements ISimpleMedicalUsable { + public int getOnSkinAmount(){ + return 100; + } + + @Override + public int getCapacity() { + return 100; + } + + @Override + public ItemStack onMedicalUse(Limb limb, ServerPlayer source, ServerPlayer target, ItemStack stack) { + int max = (int) Math.min(MultiTankHelper.getFilledTotal(stack),getOnSkinAmount()); + List drained = MultiTankHelper.drain(stack,max); + for (FluidStack fs : drained){ + MedicalFluid MF; + MF = Util.getFallback(fs.getFluid()); + if (fs.hasTag()){ + if (fs.getTag().contains("MedicalId")){ + MF = MedicalFluid.getFromId(fs.getTag().getString("MedicalId")); + } + } + MF.getMedicalEffect().applyOnSkin(target,fs.getAmount(),limb); + } + stack.shrink(1); + return stack; + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinModdedMedicalFluids.java b/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinModdedMedicalFluids.java new file mode 100644 index 0000000..df516cd --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinModdedMedicalFluids.java @@ -0,0 +1,41 @@ +package xyz.illuc.neuralgiacore.mixin.PrototypePain; + +import net.adinvas.prototype_pain.ModMedicalFluids; +import net.adinvas.prototype_pain.Util; +import net.adinvas.prototype_pain.fluid_system.MedicalFluid; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import xyz.illuc.neuralgiacore.registers.RegisterMedicalFluids; + +import java.util.List; +import java.util.stream.Stream; + +@Mixin(Util.class) +public class MixinModdedMedicalFluids { + /** + * @author + * @reason + */ + @Overwrite(remap = false) + public static MedicalFluid getFallback(Fluid fs) { + return switch (fs.getFluidType().toString()) { + case "gtceu:ethanol" -> RegisterMedicalFluids.ETHANOL.get(); + default -> { + Stream> tags = fs.defaultFluidState().getTags(); + if (tags.anyMatch(n -> { + System.out.println(n.toString()); + return n.toString().equals("TagKey[minecraft:fluid / tfc:alcohols]"); + })) { + yield RegisterMedicalFluids.WEAK_ALCOHOL.get(); + } + yield ModMedicalFluids.VANILLA_WATER.get(); + } + }; + + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinTemperatureDamage.java b/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinTemperatureDamage.java new file mode 100644 index 0000000..c11e99c --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/mixin/PrototypePain/MixinTemperatureDamage.java @@ -0,0 +1,10 @@ +package xyz.illuc.neuralgiacore.mixin.PrototypePain; + +import net.adinvas.prototype_pain.limbs.PlayerHealthData; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(PlayerHealthData.class) +public class MixinTemperatureDamage { + //TODO make heatstroke reduce consciousness + //TODO make frostbite damage skin and reduce consciousness +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinDisableTemperatureDamage.java b/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinDisableTemperatureDamage.java new file mode 100644 index 0000000..faa9dda --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinDisableTemperatureDamage.java @@ -0,0 +1,22 @@ +package xyz.illuc.neuralgiacore.mixin.TfcAmbiental; + +import com.lumintorious.tfcambiental.capability.TemperatureCapability; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(TemperatureCapability.class) +public class MixinDisableTemperatureDamage { + @Redirect( + method = "update", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;hurt(Lnet/minecraft/world/damagesource/DamageSource;F)Z" + ) + ) + private boolean disableTemperatureDamage(Player player, DamageSource source, float amount) { + return false; + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinSkipVignette.java b/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinSkipVignette.java new file mode 100644 index 0000000..2a8ddc1 --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/mixin/TfcAmbiental/MixinSkipVignette.java @@ -0,0 +1,18 @@ +package xyz.illuc.neuralgiacore.mixin.TfcAmbiental; + +import com.lumintorious.tfcambiental.TFCAmbientalGuiRenderer; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(TFCAmbientalGuiRenderer.class) +public class MixinSkipVignette { + /** + * @author + * @reason + */ + @Overwrite(remap = false) + private static void drawTemperatureVignettes(int width, int height, Player player) { + //no lol + } +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/moodles/RadiationSicknessMoodle.java b/src/main/java/xyz/illuc/neuralgiacore/moodles/RadiationSicknessMoodle.java new file mode 100644 index 0000000..651f05b --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/moodles/RadiationSicknessMoodle.java @@ -0,0 +1,69 @@ +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 RadiationSicknessMoodle extends AbstractMoodleVisual { + public RadiationSicknessMoodle() { + } + //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 radiationSickness = accessor.getRadiationSickness(); + + + if (radiationSickness > 80F) { + return MoodleStatus.CRITICAL; + } else if (radiationSickness > 50F) { + return MoodleStatus.HEAVY; + } else if (radiationSickness > 10F){ + return MoodleStatus.NORMAL; + } else { + return MoodleStatus.NONE; + } + }).orElse(MoodleStatus.NONE); + } + + @Override + public ResourceLocation renderIcon(GuiGraphics ms, float partialTicks, int x, int y) { + ResourceLocation tex = new ResourceLocation("neuralgia", "textures/moodles/radiation.png"); + ms.blit(tex, x, y, 0.0F, 0.0F, 16, 16, 16, 16); + return tex; + } + + @Override + public List getTooltip(Player player) { + List componentList = new ArrayList(); + switch (this.getMoodleStatus()) { + case NORMAL: + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title1").withStyle(ChatFormatting.YELLOW)); + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description1").withStyle(ChatFormatting.GRAY)); + break; + case HEAVY: + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title2").withStyle(ChatFormatting.GOLD)); + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description2").withStyle(ChatFormatting.GRAY)); + break; + case CRITICAL: + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.title3").withStyle(ChatFormatting.RED)); + componentList.add(Component.translatable("neuralgia.gui.moodle.radiation.description3").withStyle(ChatFormatting.GRAY)); + } + + return componentList; + } + +} diff --git a/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterItems.java b/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterItems.java index dc436cb..7969547 100644 --- a/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterItems.java +++ b/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterItems.java @@ -5,12 +5,19 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import xyz.illuc.neuralgiacore.NeuralgiaCoreMod; -import xyz.illuc.neuralgiacore.items.LinenBandage; +import xyz.illuc.neuralgiacore.items.*; public class RegisterItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, NeuralgiaCoreMod.MOD_ID); public static final RegistryObject LinenBandage = ITEMS.register("bandage", LinenBandage::new); + public static final RegistryObject Towelette = ITEMS.register("towelette", ToweletteItem::new); + public static final RegistryObject Syringe = ITEMS.register("syringe", SyringeItem::new); + public static final RegistryObject BloodBag = ITEMS.register("blood_bag", BloodBagItem::new); + + public static final RegistryObject OpiumPowder = ITEMS.register("opium_powder", SimpleItem::new); + public static final RegistryObject MorphinePowder = ITEMS.register("morphine_powder", SimpleItem::new); + } diff --git a/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterMedicalFluids.java b/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterMedicalFluids.java new file mode 100644 index 0000000..ff40c86 --- /dev/null +++ b/src/main/java/xyz/illuc/neuralgiacore/registers/RegisterMedicalFluids.java @@ -0,0 +1,24 @@ +package xyz.illuc.neuralgiacore.registers; + +import net.adinvas.prototype_pain.ModMedicalRegistry; +import net.adinvas.prototype_pain.fluid_system.MedicalFluid; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; +import xyz.illuc.neuralgiacore.MedicalEffects; +import xyz.illuc.neuralgiacore.NeuralgiaCoreMod; + +public class RegisterMedicalFluids { + + public static final DeferredRegister MEDICAL_FLUIDS = + DeferredRegister.create(ModMedicalRegistry.MEDICAL_FLUIDS_KEY, NeuralgiaCoreMod.MOD_ID); + + public static final RegistryObject BLOOD = MEDICAL_FLUIDS.register("blood",() -> new MedicalFluid(MedicalEffects.BLOOD, 0x8a0303)); + public static final RegistryObject WEAK_ALCOHOL = MEDICAL_FLUIDS.register("weak_alcohol",() -> new MedicalFluid(MedicalEffects.WEAK_ALCOHOL, 0xC2A98F)); + public static final RegistryObject ETHANOL = MEDICAL_FLUIDS.register("ethanol",() -> new MedicalFluid(MedicalEffects.ETHANOL, 0xE6E8F2)); + + + public static void register(IEventBus bus) { + MEDICAL_FLUIDS.register(bus); + } +} diff --git a/src/main/resources/assets/neuralgiacore/lang/en_us.json b/src/main/resources/assets/neuralgiacore/lang/en_us.json index 43fac7e..e29a216 100644 --- a/src/main/resources/assets/neuralgiacore/lang/en_us.json +++ b/src/main/resources/assets/neuralgiacore/lang/en_us.json @@ -2,6 +2,9 @@ "_": "---ITEMS---", "item.neuralgiacore.herbal_mixture": "Herbal Mixture", "item.neuralgiacore.bandage": "Linen Bandage", + "item.neuralgiacore.blood_bag": "Blood Bag", + "item.neuralgiacore.syringe": "Syringe", + "item.neuralgiacore.towelette": "Towelette", "_": "---MOODLES---", @@ -12,5 +15,11 @@ "neuralgiacore.gui.moodle.sepsis.description2": "Increased heart rate, lowered blood pressure, lightheadedness and a strong fever. Signs of organ dysfunction. Likely to soon enter septic shock.", "neuralgiacore.gui.moodle.sepsis.title3": "Septic shock", - "neuralgiacore.gui.moodle.sepsis.description3": "Critically low blood pressure and multiple organ dysfunction syndrome caused by sepsis. Death is fast approaching." + "neuralgiacore.gui.moodle.sepsis.description3": "Critically low blood pressure and multiple organ dysfunction syndrome caused by sepsis. Death is fast approaching.", + + + "medical_fluid.neuralgiacore.blood": "Blood", + "medical_fluid.neuralgiacore.blood.description": "Blood, used in blood transfusions.", + + "itemGroup.neuralgia": "Neuralgia" } \ No newline at end of file diff --git a/src/main/resources/assets/neuralgiacore/models/item/blood_bag.json b/src/main/resources/assets/neuralgiacore/models/item/blood_bag.json new file mode 100644 index 0000000..d5adaeb --- /dev/null +++ b/src/main/resources/assets/neuralgiacore/models/item/blood_bag.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "neuralgiacore:item/blood_bag" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/neuralgiacore/models/item/syringe.json b/src/main/resources/assets/neuralgiacore/models/item/syringe.json new file mode 100644 index 0000000..746cb81 --- /dev/null +++ b/src/main/resources/assets/neuralgiacore/models/item/syringe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "neuralgiacore:item/syringe" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/neuralgiacore/models/item/towelette.json b/src/main/resources/assets/neuralgiacore/models/item/towelette.json new file mode 100644 index 0000000..0612bea --- /dev/null +++ b/src/main/resources/assets/neuralgiacore/models/item/towelette.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "neuralgiacore:item/towelette" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/neuralgiacore/textures/item/blood_bag.png b/src/main/resources/assets/neuralgiacore/textures/item/blood_bag.png new file mode 100644 index 0000000000000000000000000000000000000000..549921851b9cf334f6e73acbeb6e85c902238d36 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7n=_rA13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(On%q8PiiNa2Zqxo;LJ^=;*HT_KRw8Yb(b_qR!n*R!j8@q?&> z56K%}J$STcb@OTkj=F{&+L@3 z@z2nW??szClzJ>&W=0;Hqq6j&^}ct44_?R4N&h+jcX7+rrlSoF9&-}fGKKR6&ga}> zdtUp9L;JMWN6U{bp5iKXPj)@}DE)lWX{Pf%Gj5)-DQt<*DcyMK=$f3YBbSdDhF;c; zKT)}+=-#6>p|97}`u{r=;20nI%<635k_{cI9s&y&^l`1)uyQ?DNsvxThW*RO@`Zne zc8U~*9yqbFLCWOBI{82Rb>-Qj%hmQS2@rZwTR5lRa6!I!hN;Z+-!}@Q)Ez!Z?zm+A zFG_gEUzNQVFDAJkxL{ULc=zHI+XqGL9d?qNG&6g<%WBE`}`< z2PJbCYGe8D3oWGWGJ|M`UZqI@`*DrFy?r=IEGl9K04XZpUF_7O@2a4qeGLk z=7Up)GZgk8nCR*z{J&+g8@qa}jEcoibsrhSMq|DY+#J&Fe0l+ThSTpzF4nP_a7`$o zXoL6ree2&}e*gORA$j+l*bPs&J^NO_H>^LG>B#lYr4uZk3NiTY+`@E+V}p3rVL^sO zfrnGPWA5KMXTEJgIqQj(%Po#6X-~C-PagiOEdE^G`|Xjh>t^OiJ=NaxFoQE`d+T%Dgp*WF%x z_hrzDr@Sf)8LKApZaNy|vBJss&EgtY)^;a7dw-r^av}BAn;fl{r!S8&TG!&}Qhh7+ z_0N^XTXnmp&zCn|_G)g3Ri?wrk|IU6Z(6%+>dzM3m9su-b1Hn#o_)IK9<00B(Yst& zS>}svaARNga=w1PYw;?)g?Hs1zdX`W8nb(m{*7bX6QWD5=gipi?f$wG=l3{sr?f)1U7#KWV{an^LB{Ts5!tR*s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/neuralgiacore/textures/item/syringe.png b/src/main/resources/assets/neuralgiacore/textures/item/syringe.png new file mode 100644 index 0000000000000000000000000000000000000000..549921851b9cf334f6e73acbeb6e85c902238d36 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7n=_rA13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(On%q8PiiNa2Zqxo;LJ^=;*HT_KRw8Yb(b_qR!n*R!j8@q?&> z56K%}J$STcb@OTkj=F{&+L@3 z@z2nW??szClzJ>&W=0;Hqq6j&^}ct44_?R4N&h+jcX7+rrlSoF9&-}fGKKR6&ga}> zdtUp9L;JMWN6U{bp5iKXPj)@}DE)lWX{Pf%Gj5)-DQt<*DcyMK=$f3YBbSdDhF;c; zKT)}+=-#6>p|97}`u{r=;20nI%<635k_{cI9s&y&^l`1)uyQ?DNsvxThW*RO@`Zne zc8U~*9yqbFLCWOBI{82Rb>-Qj%hmQS2@rZwTR5lRa6!I!hN;Z+-!}@Q)Ez!Z?zm+A zFG_gEUzNQVFDAJkxL{ULc=zHI+XqGL9d?qNG&6g<%WBE`}`< z2PJbCYGe8D3oWGWGJ|M`UZqI@`*DrFy?r=IEGl9K04XZpUF_7O@2a4qeGLk z=7Up)GZgk8nCR*z{J&+g8@qa}jEcoibsrhSMq|DY+#J&Fe0l+ThSTpzF4nP_a7`$o zXoL6ree2&}e*gORA$j+l*bPs&J^NO_H>^LG>B#lYr4uZk3NiTY+`@E+V}p3rVL^sO zfrnGPWA5KMXTEJgIqQj(%Po#6X-~C-PagiOEdE^G`|Xjh>t^OiJ=NaxFoQE`d+T%Dgp*WF%x z_hrzDr@Sf)8LKApZaNy|vBJss&EgtY)^;a7dw-r^av}BAn;fl{r!S8&TG!&}Qhh7+ z_0N^XTXnmp&zCn|_G)g3Ri?wrk|IU6Z(6%+>dzM3m9su-b1Hn#o_)IK9<00B(Yst& zS>}svaARNga=w1PYw;?)g?Hs1zdX`W8nb(m{*7bX6QWD5=gipi?f$wG=l3{sr?f)1U7#KWV{an^LB{Ts5!tR*s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/neuralgiacore/textures/item/towelette.png b/src/main/resources/assets/neuralgiacore/textures/item/towelette.png new file mode 100644 index 0000000000000000000000000000000000000000..549921851b9cf334f6e73acbeb6e85c902238d36 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7n=_rA13aCb6$*;-(=u~X z85lGs)=sqbIP4&EG(On%q8PiiNa2Zqxo;LJ^=;*HT_KRw8Yb(b_qR!n*R!j8@q?&> z56K%}J$STcb@OTkj=F{&+L@3 z@z2nW??szClzJ>&W=0;Hqq6j&^}ct44_?R4N&h+jcX7+rrlSoF9&-}fGKKR6&ga}> zdtUp9L;JMWN6U{bp5iKXPj)@}DE)lWX{Pf%Gj5)-DQt<*DcyMK=$f3YBbSdDhF;c; zKT)}+=-#6>p|97}`u{r=;20nI%<635k_{cI9s&y&^l`1)uyQ?DNsvxThW*RO@`Zne zc8U~*9yqbFLCWOBI{82Rb>-Qj%hmQS2@rZwTR5lRa6!I!hN;Z+-!}@Q)Ez!Z?zm+A zFG_gEUzNQVFDAJkxL{ULc=zHI+XqGL9d?qNG&6g<%WBE`}`< z2PJbCYGe8D3oWGWGJ|M`UZqI@`*DrFy?r=IEGl9K04XZpUF_7O@2a4qeGLk z=7Up)GZgk8nCR*z{J&+g8@qa}jEcoibsrhSMq|DY+#J&Fe0l+ThSTpzF4nP_a7`$o zXoL6ree2&}e*gORA$j+l*bPs&J^NO_H>^LG>B#lYr4uZk3NiTY+`@E+V}p3rVL^sO zfrnGPWA5KMXTEJgIqQj(%Po#6X-~C-PagiOEdE^G`|Xjh>t^OiJ=NaxFoQE`d+T%Dgp*WF%x z_hrzDr@Sf)8LKApZaNy|vBJss&EgtY)^;a7dw-r^av}BAn;fl{r!S8&TG!&}Qhh7+ z_0N^XTXnmp&zCn|_G)g3Ri?wrk|IU6Z(6%+>dzM3m9su-b1Hn#o_)IK9<00B(Yst& zS>}svaARNga=w1PYw;?)g?Hs1zdX`W8nb(m{*7bX6QWD5=gipi?f$wG=l3{sr?f)1U7#KWV{an^LB{Ts5!tR*s literal 0 HcmV?d00001 diff --git a/src/main/resources/neuralgiacore.mixins.json b/src/main/resources/neuralgiacore.mixins.json index b2acc9c..a4b6713 100644 --- a/src/main/resources/neuralgiacore.mixins.json +++ b/src/main/resources/neuralgiacore.mixins.json @@ -7,6 +7,7 @@ "mixins": [ "PrototypePain.MixinAmbientTemperature", "PrototypePain.MixinLegUsePacket", + "PrototypePain.MixinModdedMedicalFluids", "PrototypePain.MixinOverlayController", "PrototypePain.MixinPlayerHealthDataExtras", "PrototypePain.MixinSepsis", @@ -14,9 +15,11 @@ "PrototypePain.MixinSicknessOverlay", "Tfc.MixinFoodData", "Tfc.MixinHealthBar", - "Tfc.MixinOptimizeClimateUpdate" + "Tfc.MixinOptimizeClimateUpdate", + "TfcAmbiental.MixinDisableTemperatureDamage" ], "client": [ + "TfcAmbiental.MixinSkipVignette", "vanilla.MixinRemovePlayerNametag" ], "injectors": {