diff --git a/src/main/java/net/serenas/shitmod/Shitmod.java b/src/main/java/net/serenas/shitmod/Shitmod.java index c02a1ee..e9e6fc4 100644 --- a/src/main/java/net/serenas/shitmod/Shitmod.java +++ b/src/main/java/net/serenas/shitmod/Shitmod.java @@ -126,6 +126,10 @@ public class Shitmod implements ModInitializer { public static final PickaxeItem HAMMER = new testHammer(ToolMaterials.NETHERITE, 3, -1, new Item.Settings().group(Shitmod.TOOLS_GROUP).fireproof().maxDamage(2031)); + public static final StatusEffect BERSERK = new berserkEffect(); + + public static final Item BERSERKER_TOTEM = new berserkerTotem(new FabricItemSettings().group(Shitmod.GENERAL_GROUP).maxDamage(512).rarity(Rarity.EPIC)); + @Override public void onInitialize() { @@ -217,5 +221,9 @@ public class Shitmod implements ModInitializer { Registry.register(Registry.ENCHANTMENT, new Identifier("shitmod", "lifesteal"), LIFESTEAL); Registry.register(Registry.ITEM, new Identifier("shitmod", "hammer"), HAMMER); + + Registry.register(Registry.STATUS_EFFECT, new Identifier("shitmod", "berserk"), BERSERK); + + Registry.register(Registry.ITEM, new Identifier("shitmod", "berserker_totem"), BERSERKER_TOTEM); } } diff --git a/src/main/java/net/serenas/shitmod/berserkEffect.java b/src/main/java/net/serenas/shitmod/berserkEffect.java new file mode 100644 index 0000000..fb329a9 --- /dev/null +++ b/src/main/java/net/serenas/shitmod/berserkEffect.java @@ -0,0 +1,32 @@ +package net.serenas.shitmod; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.damage.DamageSource; +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 berserkEffect extends StatusEffect{ + + protected berserkEffect() { + super(StatusEffectCategory.BENEFICIAL, 0xa80f12); + } + + @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).damage(DamageSource.MAGIC, (0.25f)); + ((PlayerEntity) entity).addStatusEffect(new StatusEffectInstance(StatusEffects.STRENGTH, 2, amplifier*2, true, false, false)); + } + } + +} diff --git a/src/main/java/net/serenas/shitmod/berserkerTotem.java b/src/main/java/net/serenas/shitmod/berserkerTotem.java new file mode 100644 index 0000000..0753527 --- /dev/null +++ b/src/main/java/net/serenas/shitmod/berserkerTotem.java @@ -0,0 +1,34 @@ +package net.serenas.shitmod; + +import java.util.Random; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +public class berserkerTotem extends Item{ + + public berserkerTotem(Settings settings) { + super(settings); + } + + @Override + public TypedActionResult use(World world, PlayerEntity playerEntity, Hand hand) { + int rand = new Random().nextInt(5); + if (rand == 0) { + rand++; + playerEntity.addStatusEffect(new StatusEffectInstance(Shitmod.BERSERK, 400, rand)); + return new TypedActionResult(ActionResult.SUCCESS, playerEntity.getStackInHand(hand)); + } + playerEntity.addStatusEffect(new StatusEffectInstance(Shitmod.BERSERK, 400, rand)); + + + return new TypedActionResult(ActionResult.SUCCESS, playerEntity.getStackInHand(hand)); + } + +} diff --git a/src/main/resources/assets/shitmod/lang/en_us.json b/src/main/resources/assets/shitmod/lang/en_us.json index 4e6d8fc..4539e1a 100644 --- a/src/main/resources/assets/shitmod/lang/en_us.json +++ b/src/main/resources/assets/shitmod/lang/en_us.json @@ -46,5 +46,7 @@ "enchantment.shitmod.lifesteal": "Life Steal", "enchantment.shitmod.explosion_aspect": "Explosion Aspect", "enchantment.shitmod.explosive_thorns": "Explosive Thorns", - "item.shitmod.hammer": "Hammer" + "item.shitmod.hammer": "Hammer", + "item.shitmod.berserker_totem": "Berserker Totem", + "effect.shitmod.berserk": "Berserk" } \ No newline at end of file diff --git a/src/main/resources/assets/shitmod/models/item/berserker_totem.json b/src/main/resources/assets/shitmod/models/item/berserker_totem.json new file mode 100644 index 0000000..716b082 --- /dev/null +++ b/src/main/resources/assets/shitmod/models/item/berserker_totem.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "shitmod:item/berserker_totem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/shitmod/textures/item/berserker_totem.png b/src/main/resources/assets/shitmod/textures/item/berserker_totem.png new file mode 100644 index 0000000..abe8d41 Binary files /dev/null and b/src/main/resources/assets/shitmod/textures/item/berserker_totem.png differ