diff --git a/src/main/java/net/krituximon/stalinium/effect/StaliniumChargeEffect.java b/src/main/java/net/krituximon/stalinium/effect/StaliniumChargeEffect.java index 02a6fc4..7991c0a 100644 --- a/src/main/java/net/krituximon/stalinium/effect/StaliniumChargeEffect.java +++ b/src/main/java/net/krituximon/stalinium/effect/StaliniumChargeEffect.java @@ -13,14 +13,20 @@ public class StaliniumChargeEffect extends MobEffect { this.addAttributeModifier( Attributes.MOVEMENT_SPEED, ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, "stalinium_charge_speed"), - 0.2, + 0.25, AttributeModifier.Operation.ADD_MULTIPLIED_BASE ); this.addAttributeModifier( Attributes.KNOCKBACK_RESISTANCE, ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, "stalinium_charge_knockback"), - 0.5, + 0.75, AttributeModifier.Operation.ADD_VALUE ); + this.addAttributeModifier( + Attributes.ATTACK_SPEED, + ResourceLocation.fromNamespaceAndPath(Stalinium.MODID, "stalinium_charge_toughness"), + 0.1, + AttributeModifier.Operation.ADD_MULTIPLIED_BASE + ); } } diff --git a/src/main/java/net/krituximon/stalinium/item/StaliniumAxeItem.java b/src/main/java/net/krituximon/stalinium/item/StaliniumAxeItem.java index c40c73e..ee7591e 100644 --- a/src/main/java/net/krituximon/stalinium/item/StaliniumAxeItem.java +++ b/src/main/java/net/krituximon/stalinium/item/StaliniumAxeItem.java @@ -36,8 +36,12 @@ public class StaliniumAxeItem extends AxeItem { return true; } + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + return true; + } + private void cutDownTree(Level level, BlockPos start, Player player, ItemStack stack) { - // 1) Gather all logs to break Set toBreak = new HashSet<>(); Deque queue = new ArrayDeque<>(); queue.add(start); @@ -99,23 +103,12 @@ public class StaliniumAxeItem extends AxeItem { if (id == null) return null; String path = id.getPath(); if (!path.endsWith("_log")) return null; - String plankPath = path.substring(0, path.length() - 4) + "_planks"; ResourceLocation plankId = ResourceLocation.fromNamespaceAndPath(id.getNamespace(), plankPath); - - // fall back to oak planks if the specific one isn't registered return BuiltInRegistries.BLOCK.getOptional(plankId) .orElse(Blocks.OAK_PLANKS); } - - - - @Override - public int getMaxDamage(ItemStack stack) { - return 2; - } - @Override public boolean isDamageable(ItemStack stack) { return false; diff --git a/src/main/java/net/krituximon/stalinium/item/StaliniumHoeItem.java b/src/main/java/net/krituximon/stalinium/item/StaliniumHoeItem.java index 13ac0ef..072a3b4 100644 --- a/src/main/java/net/krituximon/stalinium/item/StaliniumHoeItem.java +++ b/src/main/java/net/krituximon/stalinium/item/StaliniumHoeItem.java @@ -1,5 +1,6 @@ package net.krituximon.stalinium.item; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.HoeItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -11,8 +12,8 @@ public class StaliniumHoeItem extends HoeItem { } @Override - public int getMaxDamage(ItemStack stack) { - return 2; + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + return true; } @Override diff --git a/src/main/java/net/krituximon/stalinium/item/StaliniumShovelItem.java b/src/main/java/net/krituximon/stalinium/item/StaliniumShovelItem.java index c0c8ee2..450f9c7 100644 --- a/src/main/java/net/krituximon/stalinium/item/StaliniumShovelItem.java +++ b/src/main/java/net/krituximon/stalinium/item/StaliniumShovelItem.java @@ -38,7 +38,6 @@ public class StaliniumShovelItem extends ShovelItem { } } } - if (anyBroken && miningEntity instanceof Player player) { MobEffectInstance selfHaste = new MobEffectInstance(MobEffects.DIG_SPEED, 100, 1, false, true, true); player.addEffect(selfHaste); @@ -57,6 +56,11 @@ public class StaliniumShovelItem extends ShovelItem { return true; } + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + return true; + } + @Override public boolean isDamageable(ItemStack stack) { return false; @@ -67,11 +71,6 @@ public class StaliniumShovelItem extends ShovelItem { return false; } - @Override - public int getMaxDamage(ItemStack stack) { - return 2; - } - @Override public InteractionResult useOn(UseOnContext ctx) { ItemStack stack = ctx.getItemInHand(); diff --git a/src/main/java/net/krituximon/stalinium/item/StaliniumSwordItem.java b/src/main/java/net/krituximon/stalinium/item/StaliniumSwordItem.java index 53cb0b0..99b8da6 100644 --- a/src/main/java/net/krituximon/stalinium/item/StaliniumSwordItem.java +++ b/src/main/java/net/krituximon/stalinium/item/StaliniumSwordItem.java @@ -8,6 +8,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.item.ItemStack; @@ -22,26 +24,40 @@ import net.minecraft.server.level.ServerPlayer; import java.util.List; public class StaliniumSwordItem extends SwordItem { - private static final double RANGE = 6.0; - private static final double HALF_ANGLE = Math.toRadians(30); + private static final double RANGE = 6.0; + private static final double HALF_ANGLE = Math.toRadians(30); private static final double COS_HALF_ANG = Math.cos(HALF_ANGLE); - private static final int DURATION = 5 * 20; - private static final int AMP = 0; - private static final int COOLDOWN = 20 * 20; // 20s + private static final int DURATION = 5 * 20; + private static final int AMP = 0; + private static final int COOLDOWN = 30 * 20; public StaliniumSwordItem(Tier tier, Properties props) { super(tier, props); } + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + Level world = attacker.getCommandSenderWorld(); + if (!world.isClientSide && attacker instanceof Player player) { + AABB box = player.getBoundingBox().inflate(5.0); + List allies = world.getEntitiesOfClass( + Player.class, box, + p -> p instanceof ServerPlayer && player.isAlliedTo(p) + ); + MobEffectInstance allyBuff = new MobEffectInstance(MobEffects.DAMAGE_BOOST, 100, 0, false, true); + for (Player ally : allies) { + ally.addEffect(allyBuff); + } + } + return true; + } + @Override public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); - - // 1) if still on cooldown, fail if (player.getCooldowns().isOnCooldown(this)) { return InteractionResultHolder.fail(stack); } - if (!world.isClientSide) { Holder chargeHolder = world .registryAccess() @@ -76,9 +92,14 @@ public class StaliniumSwordItem extends SwordItem { public UseAnim getUseAnimation(ItemStack stack) { return UseAnim.BOW; } + + @Override + public boolean isDamageable(ItemStack stack) { + return false; + } - // keep it unbreakable - @Override public boolean isDamageable(ItemStack stack) { return false; } - @Override public boolean isDamaged(ItemStack stack) { return false; } - @Override public int getMaxDamage(ItemStack stack) { return 2; } + @Override + public boolean isDamaged(ItemStack stack) { + return false; + } }