Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Special handling
Browse files Browse the repository at this point in the history
sddsd2332 committed Sep 16, 2024
1 parent 1b56c13 commit 23323a3
Showing 3 changed files with 67 additions and 11 deletions.
22 changes: 22 additions & 0 deletions src/main/java/mekanism/client/ClientTickHandler.java
Original file line number Diff line number Diff line change
@@ -16,16 +16,21 @@
import mekanism.common.item.ItemFlamethrower.FlamethrowerMode;
import mekanism.common.item.ItemMekTool.MekToolMode;
import mekanism.common.item.armor.ItemMekAsuitFeetArmour;
import mekanism.common.item.armor.ItemMekAsuitHeadArmour;
import mekanism.common.item.armor.ItemMekaSuitArmor;
import mekanism.common.item.interfaces.IJetpackItem;
import mekanism.common.item.interfaces.IJetpackItem.JetpackMode;
import mekanism.common.moduleUpgrade;
import mekanism.common.network.PacketFreeRunnerData;
import mekanism.common.network.PacketItemStack.ItemStackMessage;
import mekanism.common.network.PacketJumpBoostData;
import mekanism.common.network.PacketPortableTeleporter.PortableTeleporterMessage;
import mekanism.common.network.PacketPortableTeleporter.PortableTeleporterPacketType;
import mekanism.common.network.PacketStepAssistData;
import mekanism.common.util.UpgradeHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.GuiGameOver;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.player.EntityPlayer;
@@ -34,6 +39,7 @@
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumHand;
import net.minecraft.util.EnumParticleTypes;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.client.event.MouseEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.event.world.WorldEvent;
@@ -439,4 +445,20 @@ public TeleportData(EnumHand h, Frequency f, long t) {
teleportTime = t;
}
}

@SubscribeEvent
public void GuiScreenEvent(GuiOpenEvent event) {
if (event.getGui() instanceof GuiGameOver) {
if (mc.world.getWorldInfo().isHardcoreModeEnabled()) {
return;
}
if (mc.player instanceof EntityPlayerSP) {
ItemStack head = mc.player.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
if (!mc.player.isEntityAlive() && !head.isEmpty() && head.getItem() instanceof ItemMekAsuitHeadArmour && UpgradeHelper.isUpgradeInstalled(head, moduleUpgrade.EMERGENCY_RESCUE)) {
event.setCanceled(true);
}
}
}
}

}
54 changes: 43 additions & 11 deletions src/main/java/mekanism/common/CommonPlayerTickHandler.java
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import com.github.bsideup.jabel.Desugar;
import mekanism.api.gas.GasStack;
import mekanism.common.config.MekanismConfig;
import mekanism.common.entity.EntityFlame;
import mekanism.common.item.ItemFlamethrower;
import mekanism.common.item.ItemFreeRunners;
@@ -25,7 +26,12 @@
import net.minecraft.util.DamageSource;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDamageEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
@@ -106,7 +112,6 @@ public void onTick(PlayerTickEvent event) {
if (event.phase == Phase.START) {
isMekAsuitArmorFlying(event.player);
}

}

public void tickEnd(EntityPlayer player) {
@@ -368,7 +373,7 @@ private boolean tryAbsorbAll(LivingAttackEvent event, ItemStack stack, float abs
}

@SubscribeEvent
public void onLivingJump(LivingEvent.LivingJumpEvent event) {
public void onLivingJump(LivingJumpEvent event) {
if (event.getEntity() instanceof EntityPlayer player) {
ItemStack feet = player.getItemStackFromSlot(EntityEquipmentSlot.FEET);
if (!feet.isEmpty() && feet.getItem() instanceof ItemMekAsuitFeetArmour feetArmor) {
@@ -418,24 +423,51 @@ public void getBreakSpeed(PlayerEvent.BreakSpeed event) {
private record FallEnergyInfo(ItemStack stack, float damageRatio, float energyCost) {
}


//When the player dies
@SubscribeEvent
public void onDeath(LivingDeathEvent event) {
if (event.getEntityLiving() instanceof EntityPlayer player) {
ItemStack head = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
if (!head.isEmpty() && head.getItem() instanceof ItemMekAsuitHeadArmour && UpgradeHelper.isUpgradeInstalled(head,moduleUpgrade.EMERGENCY_RESCUE)){
if (!head.isEmpty() && head.getItem() instanceof ItemMekAsuitHeadArmour && UpgradeHelper.isUpgradeInstalled(head, moduleUpgrade.EMERGENCY_RESCUE)) {
event.setCanceled(true);
int installed = UpgradeHelper.getUpgradeLevel(head, moduleUpgrade.EMERGENCY_RESCUE);
int toAdd = Math.max(installed - 1, 0);
UpgradeHelper.setUpgradeLevel(head,moduleUpgrade.EMERGENCY_RESCUE,toAdd);
event.setCanceled(true);
UpgradeHelper.setUpgradeLevel(head, moduleUpgrade.EMERGENCY_RESCUE, toAdd);
player.setHealth(5F);
player.clearActivePotions();
player.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE,800,2));
player.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE, 800, 2));
player.addPotionEffect(new PotionEffect(MobEffects.REGENERATION, 900, 2));
player.addPotionEffect(new PotionEffect(MobEffects.ABSORPTION,100,2));
player.addPotionEffect(new PotionEffect(MobEffects.ABSORPTION, 100, 2));
player.setAir(300);
player.getFoodStats().addStats(20,20);
player.sendMessage(new TextComponentGroup(TextFormatting.GRAY).string("[",TextFormatting.RED).translation("item.module.emergency_rescue.name",TextFormatting.RED).string("]",TextFormatting.RED).string(":").translation("module.emergency_rescue.use",TextFormatting.YELLOW));
player.getFoodStats().addStats(20, 20);
player.sendMessage(new TextComponentGroup(TextFormatting.GRAY).string("[", TextFormatting.RED).translation("item.module.emergency_rescue.name", TextFormatting.RED).string("]", TextFormatting.RED).string(":").translation("module.emergency_rescue.use", TextFormatting.YELLOW));
}
}
}


@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent event) {
//If the player is affected by setHealth
//What? Why do you want to go straight to setHealth?
if (MekanismConfig.current().mekce.MekAsuitOverloadProtection.val()){
if (event.getEntityLiving() instanceof EntityPlayer player) {
ItemStack head = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
if (!player.isEntityAlive() && !head.isEmpty() && head.getItem() instanceof ItemMekAsuitHeadArmour && UpgradeHelper.isUpgradeInstalled(head, moduleUpgrade.EMERGENCY_RESCUE)) {
player.hurtResistantTime = 20;
player.deathTime = 0;
player.isDead = false;
player.setHealth(5F);
player.clearActivePotions();
player.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE, 800, 2));
player.addPotionEffect(new PotionEffect(MobEffects.REGENERATION, 900, 2));
player.addPotionEffect(new PotionEffect(MobEffects.ABSORPTION, 100, 2));
player.setAir(300);
player.getFoodStats().addStats(20, 20);
int installed = UpgradeHelper.getUpgradeLevel(head, moduleUpgrade.EMERGENCY_RESCUE);
int toAdd = Math.max(installed - 1, 0);
UpgradeHelper.setUpgradeLevel(head, moduleUpgrade.EMERGENCY_RESCUE, toAdd);
}
}
}
}
2 changes: 2 additions & 0 deletions src/main/java/mekanism/common/config/MEKCEConfig.java
Original file line number Diff line number Diff line change
@@ -100,4 +100,6 @@ public class MEKCEConfig extends BaseConfig {
public final BooleanOption BinRecipeClosed = new BooleanOption(this,"mekce","BinRecipeClosed",false,"Turn off the BIN synthesis recipe").setRequiresGameRestart(true);

public final BooleanOption BinRecipeRemovesItem = new BooleanOption(this,"mekce","BinRecipeRemovesItem",false,"Close Bin to remove items").setRequiresGameRestart(true);
public final BooleanOption MekAsuitOverloadProtection = new BooleanOption(this,"mekce","MekAsuitOverloadProtection",true,"Allows MekAsuit to intercept direct setHealth with Emergency Rescue installed");

}

0 comments on commit 23323a3

Please sign in to comment.