Add custom StaliniumSwordItem with strength buff effect

This commit is contained in:
IM23a-spirgif
2025-05-19 13:21:14 +02:00
parent 6e2fa1e621
commit 5f1ac9268a
3 changed files with 36 additions and 4 deletions
@@ -22,7 +22,7 @@ public class ModItems {
() -> new Item(new Item.Properties().jukeboxPlayable(ModSounds.SOVIET_ANTHEM_KEY).stacksTo(1)));
public static final DeferredItem<SwordItem> STALINIUM_SWORD = ITEMS.register("stalinium_sword",
() -> new SwordItem(ModTiers.STALINIUM, new Item.Properties()
() -> new StaliniumSwordItem(ModTiers.STALINIUM, new Item.Properties()
.attributes(SwordItem.createAttributes(ModTiers.STALINIUM, 8, -2.75f))));
public static void register(IEventBus eventBus) {
@@ -1,11 +1,8 @@
package net.krituximon.stalinium.item;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.component.Tool;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.Block;
import net.neoforged.neoforge.common.SimpleTier;
public class ModTiers {
@@ -0,0 +1,35 @@
package net.krituximon.stalinium.item;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.level.Level;
import java.util.List;
public class StaliniumSwordItem extends SwordItem {
public StaliniumSwordItem(Tier tier, Properties props) {
super(tier, props);
}
@Override
public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
boolean result = super.hurtEnemy(stack, target, attacker);
if (!attacker.getCommandSenderWorld().isClientSide) {
MobEffectInstance strength = new MobEffectInstance(MobEffects.DAMAGE_BOOST, 100, 0, false, true);
attacker.addEffect(strength);
Level world = attacker.getCommandSenderWorld();
var box = attacker.getBoundingBox().inflate(5.0);
List<Player> nearby = world.getEntitiesOfClass(Player.class, box, p -> p instanceof ServerPlayer);
for (Player p : nearby) {
p.addEffect(strength);
}
}
return result;
}
}