From da36b62cc8fb6295608ae93b0aac18236073a1d0 Mon Sep 17 00:00:00 2001
From: Sunskimmer822 <92886026+Sunskimmer822@users.noreply.github.com>
Date: Thu, 24 Feb 2022 11:32:28 -0800
Subject: [PATCH] make lean effect

---
 .../net/serenas/shitmod/ExpStatusEffect.java  | 29 ++++++++++++++
 src/main/java/net/serenas/shitmod/Lean.java   |  2 +-
 .../net/serenas/shitmod/LeanStatusEffect.java | 39 +++++++++++++++++++
 .../java/net/serenas/shitmod/Shitmod.java     | 18 +++++++++
 .../resources/assets/shitmod/lang/en_us.json  |  4 +-
 5 files changed, 90 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/net/serenas/shitmod/ExpStatusEffect.java
 create mode 100644 src/main/java/net/serenas/shitmod/LeanStatusEffect.java

diff --git a/src/main/java/net/serenas/shitmod/ExpStatusEffect.java b/src/main/java/net/serenas/shitmod/ExpStatusEffect.java
new file mode 100644
index 0000000..930772d
--- /dev/null
+++ b/src/main/java/net/serenas/shitmod/ExpStatusEffect.java
@@ -0,0 +1,29 @@
+package net.serenas.shitmod;
+
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.effect.StatusEffect;
+import net.minecraft.entity.effect.StatusEffectCategory;
+import net.minecraft.entity.player.PlayerEntity;
+
+public class ExpStatusEffect extends StatusEffect {
+    public ExpStatusEffect() {
+      super(
+        StatusEffectCategory.BENEFICIAL, // whether beneficial or harmful for entities
+        0x98D982); // color in RGB
+    }
+   
+    // This method is called every tick to check whether it should apply the status effect or not
+    @Override
+    public boolean canApplyUpdateEffect(int duration, int amplifier) {
+      // In our case, we just make it return true so that it applies the status effect every tick.
+      return true;
+    }
+   
+    // This method is called when it applies the status effect. We implement custom functionality here.
+    @Override
+    public void applyUpdateEffect(LivingEntity entity, int amplifier) {
+      if (entity instanceof PlayerEntity) {
+        ((PlayerEntity) entity).addExperience(3 << amplifier); // Higher amplifier gives you EXP faster
+      }
+    }
+  }
\ No newline at end of file
diff --git a/src/main/java/net/serenas/shitmod/Lean.java b/src/main/java/net/serenas/shitmod/Lean.java
index 52d464e..d681181 100644
--- a/src/main/java/net/serenas/shitmod/Lean.java
+++ b/src/main/java/net/serenas/shitmod/Lean.java
@@ -6,7 +6,7 @@ public class Lean extends Item{
 
     public Lean(Settings settings) {
         super(settings);
-        //TODO Auto-generated constructor stub
+
     }
     
 }
diff --git a/src/main/java/net/serenas/shitmod/LeanStatusEffect.java b/src/main/java/net/serenas/shitmod/LeanStatusEffect.java
new file mode 100644
index 0000000..0474c10
--- /dev/null
+++ b/src/main/java/net/serenas/shitmod/LeanStatusEffect.java
@@ -0,0 +1,39 @@
+package net.serenas.shitmod;
+
+import net.minecraft.entity.LivingEntity;
+import net.minecraft.entity.effect.StatusEffect;
+import net.minecraft.entity.effect.StatusEffectCategory;
+import net.minecraft.entity.effect.StatusEffectInstance;
+import net.minecraft.entity.effect.StatusEffects;
+import net.minecraft.entity.player.PlayerEntity;
+
+public class LeanStatusEffect extends StatusEffect{
+    public LeanStatusEffect() {
+        super(
+          StatusEffectCategory.HARMFUL, // whether beneficial or harmful for entities
+          0x98D982); // color in RGB
+      }
+     
+      // This method is called every tick to check whether it should apply the status effect or not
+      @Override
+      public boolean canApplyUpdateEffect(int duration, int amplifier) {
+        // In our case, we just make it return true so that it applies the status effect every tick.
+        return true;
+      }
+     
+      // This method is called when it applies the status effect. We implement custom functionality here.
+      @Override
+      public void applyUpdateEffect(LivingEntity entity, int amplifier) {
+        if (entity instanceof PlayerEntity) {
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.WEAKNESS));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.POISON));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.GLOWING));
+          ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE));
+        }
+      }
+}
+
+
diff --git a/src/main/java/net/serenas/shitmod/Shitmod.java b/src/main/java/net/serenas/shitmod/Shitmod.java
index caccb73..ac18aba 100644
--- a/src/main/java/net/serenas/shitmod/Shitmod.java
+++ b/src/main/java/net/serenas/shitmod/Shitmod.java
@@ -5,11 +5,13 @@ import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
 import net.kyrptonaught.customportalapi.api.CustomPortalBuilder;
 import net.minecraft.block.Block;
 import net.minecraft.block.Blocks;
+import net.minecraft.entity.effect.StatusEffect;
 import net.minecraft.item.BlockItem;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemGroup;
 import net.minecraft.item.Items;
 import net.minecraft.util.Identifier;
+import net.minecraft.util.Rarity;
 import net.minecraft.util.registry.Registry;
 
 public class Shitmod implements ModInitializer {
@@ -19,13 +21,29 @@ public class Shitmod implements ModInitializer {
     public static final Block FABRIC_BLOCK = new FabricBlock();
 
     public static final Item HAUSBOMMER_ITEM = new Hausbommer(new Item.Settings().group(ItemGroup.MISC));
+
+    public static final Item LEAN = new Lean(new Item.Settings().group(ItemGroup.FOOD).rarity(Rarity.UNCOMMON));
+
+    public static final StatusEffect EXP = new ExpStatusEffect();
+
+    public static final StatusEffect LEAN_EFFECT = new LeanStatusEffect();
     
     @Override
     public void onInitialize() {
+
         Registry.register(Registry.ITEM, new Identifier("shitmod", "fabric_item"), FABRIC_ITEM);
+
         Registry.register(Registry.BLOCK, new Identifier("shitmod", "fabric_block"), FABRIC_BLOCK);
         Registry.register(Registry.ITEM, new Identifier("shitmod", "fabric_block"), new BlockItem(FABRIC_BLOCK, new FabricItemSettings().group(ItemGroup.MISC)));
+
         Registry.register(Registry.ITEM, new Identifier("shitmod", "hausbommer"), HAUSBOMMER_ITEM);
+
+        Registry.register(Registry.ITEM, new Identifier("shitmod", "lean"), LEAN);
+
+        Registry.register(Registry.STATUS_EFFECT, new Identifier("shitmod", "exp"), EXP);
+
+        Registry.register(Registry.STATUS_EFFECT, new Identifier("shitmod", "lean"), LEAN_EFFECT);
+
         CustomPortalBuilder.beginPortal()  
 .frameBlock(Blocks.DIAMOND_BLOCK)  
 .lightWithItem(Items.ENDER_EYE)  
diff --git a/src/main/resources/assets/shitmod/lang/en_us.json b/src/main/resources/assets/shitmod/lang/en_us.json
index b56af44..680e671 100644
--- a/src/main/resources/assets/shitmod/lang/en_us.json
+++ b/src/main/resources/assets/shitmod/lang/en_us.json
@@ -1,5 +1,7 @@
 {
     "item.shitmod.fabric_item": "Penis",
     "block.shitmod.fabric_block": "Gay Block",
-    "item.shitmod.hausbommer": "Hausbommer"
+    "item.shitmod.hausbommer": "Hausbommer",
+    "effect.shitmod.exp": "Experience",
+    "effect.shitmod.lean": "Lean"
 }
\ No newline at end of file