aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-29 13:33:21 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-29 13:33:21 +0000
commite7fb530caf15236026808ffaecaf1b2cae140776 (patch)
treec85784520d0f1aef6e89ed8597fbc5000db65e0d
parent143a76dd8b380f85dad4fee6359b5a17022feccb (diff)
downloadGT5-Unofficial-e7fb530caf15236026808ffaecaf1b2cae140776.tar.gz
GT5-Unofficial-e7fb530caf15236026808ffaecaf1b2cae140776.tar.bz2
GT5-Unofficial-e7fb530caf15236026808ffaecaf1b2cae140776.zip
Re-allow removal of debuffs when sleeping.
Localized chat strings.
-rw-r--r--src/main/java/gtPlusPlus/core/handler/events/PlayerSleepEventHandler.java70
-rw-r--r--src/main/java/gtPlusPlus/core/util/minecraft/PlayerUtils.java5
-rw-r--r--src/main/resources/assets/miscutils/lang/en_US.lang8
3 files changed, 56 insertions, 27 deletions
diff --git a/src/main/java/gtPlusPlus/core/handler/events/PlayerSleepEventHandler.java b/src/main/java/gtPlusPlus/core/handler/events/PlayerSleepEventHandler.java
index d3700e1373..b9419a5ba6 100644
--- a/src/main/java/gtPlusPlus/core/handler/events/PlayerSleepEventHandler.java
+++ b/src/main/java/gtPlusPlus/core/handler/events/PlayerSleepEventHandler.java
@@ -17,6 +17,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.ChatComponentTranslation;
import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent;
import net.minecraftforge.event.entity.player.PlayerWakeUpEvent;
@@ -49,45 +50,62 @@ public class PlayerSleepEventHandler {
@SubscribeEvent
public void sleep(PlayerSleepInBedEvent event) {
- event.setResult(Result.ALLOW);
+
}
@SubscribeEvent
public void wake(PlayerWakeUpEvent event) {
EntityPlayer aPlayer = event.entityPlayer;
- if (aPlayer != null && !aPlayer.worldObj.isRemote) {
- // Try Heal
- float aCurrentHP = aPlayer.getHealth();
- float aMaxHP = aPlayer.getMaxHealth();
- if (aCurrentHP < aMaxHP) {
- float aDamage = aMaxHP - aCurrentHP;
- float aToHeal = MathUtils.randFloat(1, aDamage);
- if (aToHeal > 0) {
- aPlayer.heal(aToHeal);
- PlayerUtils.messagePlayer(aPlayer, "You slept well and now feel " + (aToHeal >= aDamage / 2 ? "much" : "a little") + " better.");
+ if (aPlayer != null && !aPlayer.worldObj.isRemote) {
+ boolean aRemovedBad = false;
+ try {
+ Collection<PotionEffect> aActive = aPlayer.getActivePotionEffects();
+ for (PotionEffect aEffect : aActive) {
+ for (Potion aBadPotion : sNegativeEffects) {
+ if (aEffect.getPotionID() == aBadPotion.getId()) {
+ ReflectionUtils.setField(aEffect, sEffectDuration, 1);
+ aRemovedBad = true;
+ Logger.INFO("Set duration of " + aEffect.getEffectName() + " to 1 tick");
+ }
+ }
}
}
- // Already healed, try give a buff
- else {
- int aRandomBuff = MathUtils.randInt(0, sPositiveEffects.size() - 1);
- Potion aPotionToApply = sPositiveEffects.get(aRandomBuff);
- if (aPotionToApply != null) {
- aPlayer.addPotionEffect(new GtPotionEffect(aPotionToApply.id, MathUtils.randInt(60, 180), MathUtils.randInt(0, 2)));
- PlayerUtils.messagePlayer(aPlayer, "You feel really well rested.");
- }
+ catch (Throwable t) {
+ t.printStackTrace();
}
- boolean aRemovedBad = false;
- /*for (Potion aBadPotion : sNegativeEffects) {
- if (curePotionEffect(aPlayer, aBadPotion)) {
- aRemovedBad = true;
- }
- }*/
if (aRemovedBad) {
- PlayerUtils.messagePlayer(aPlayer, "The downsides of life no longer effect you.");
+ messagePlayer(aPlayer, "sleep.event.downsides");
}
+ else {
+ // Try Heal
+ float aCurrentHP = aPlayer.getHealth();
+ float aMaxHP = aPlayer.getMaxHealth();
+ if (aCurrentHP < aMaxHP) {
+ float aDamage = aMaxHP - aCurrentHP;
+ float aToHeal = MathUtils.randFloat(1, aDamage);
+ if (aToHeal > 0) {
+ aPlayer.heal(aToHeal);
+ messagePlayer(aPlayer, (aToHeal >= aDamage / 2 ? "sleep.event.good" : "sleep.event.okay"));
+ }
+ }
+ // Already healed, try give a buff
+ else {
+ int aRandomBuff = MathUtils.randInt(0, sPositiveEffects.size() - 1);
+ Potion aPotionToApply = sPositiveEffects.get(aRandomBuff);
+ if (aPotionToApply != null) {
+ aPlayer.addPotionEffect(new GtPotionEffect(aPotionToApply.id, MathUtils.randInt(60, 180), MathUtils.randInt(0, 2)));
+ messagePlayer(aPlayer, "sleep.event.wellrested");
+ }
+ }
+ }
}
}
+
+ private static void messagePlayer(EntityPlayer aPlayer, String aChatKey) {
+ PlayerUtils.messagePlayer(aPlayer, new ChatComponentTranslation(aChatKey, new Object[0]));
+ }
+ private static Field sEffectDuration = ReflectionUtils.getField(PotionEffect.class, "duration");
private static Field sActivePotionEffects = ReflectionUtils.getField(EntityPlayer.class, "activePotionsMap");
private static Method sOnFinishedPotionEffect = ReflectionUtils.getMethod(EntityPlayer.class, "onFinishedPotionEffect", PotionEffect.class);
diff --git a/src/main/java/gtPlusPlus/core/util/minecraft/PlayerUtils.java b/src/main/java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
index 24ffa295b7..f2be723726 100644
--- a/src/main/java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
+++ b/src/main/java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
@@ -14,6 +14,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.IChatComponent;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
@@ -34,6 +35,10 @@ public class PlayerUtils {
public static void messagePlayer(final EntityPlayer P, final String S){
gregtech.api.util.GT_Utility.sendChatToPlayer(P, S);
}
+
+ public static void messagePlayer(final EntityPlayer P, final IChatComponent S){
+ P.addChatComponentMessage(S);
+ }
public static EntityPlayer getPlayer(final String name){
try{
diff --git a/src/main/resources/assets/miscutils/lang/en_US.lang b/src/main/resources/assets/miscutils/lang/en_US.lang
index a3639062f8..06b47f381e 100644
--- a/src/main/resources/assets/miscutils/lang/en_US.lang
+++ b/src/main/resources/assets/miscutils/lang/en_US.lang
@@ -3368,4 +3368,10 @@ item.FrothMonaziteflotation.name=Monazite Flotation Froth Cell
//Added 18/12/21
item.BasicGenericChemItem.13.name=Formaldehyde Catalyst
-item.hydrogenchloridemix.name=Hydrogen Chlorine Mix \ No newline at end of file
+item.hydrogenchloridemix.name=Hydrogen Chlorine Mix
+
+//Added 29/01/22
+sleep.event.okay=You slept well and now feel a little better.
+sleep.event.good=You slept well and now feel much better.
+sleep.event.wellrested=You feel really well rested.
+sleep.event.downsides=The downsides of life no longer effect you. \ No newline at end of file