Add Stalinium Axe and Shovel with custom functionalities
Signed-off-by: IM23a-cernik <cernik@bzz.ch>
This commit is contained in:
@@ -27,6 +27,7 @@ public class ModCreativeModeTabs {
|
||||
output.accept(ModBlocks.COMPRESSED_BEDROCK.get());
|
||||
output.accept(ModBlocks.STALINIUM_PRESS.get());
|
||||
output.accept(ModItems.STALINIUM_SWORD.get());
|
||||
output.accept(ModItems.STALINIUM_AXE.get());
|
||||
}).build());
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
|
||||
@@ -2,7 +2,9 @@ package net.krituximon.stalinium.item;
|
||||
|
||||
import net.krituximon.stalinium.Stalinium;
|
||||
import net.krituximon.stalinium.sound.ModSounds;
|
||||
import net.minecraft.world.item.AxeItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ShovelItem;
|
||||
import net.minecraft.world.item.SwordItem;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
@@ -23,7 +25,15 @@ public class ModItems {
|
||||
|
||||
public static final DeferredItem<SwordItem> STALINIUM_SWORD = ITEMS.register("stalinium_sword",
|
||||
() -> new StaliniumSwordItem(ModTiers.STALINIUM, new Item.Properties()
|
||||
.attributes(SwordItem.createAttributes(ModTiers.STALINIUM, 8, -2.75f))));
|
||||
.attributes(SwordItem.createAttributes(ModTiers.STALINIUM, 3, -2.4f))));
|
||||
|
||||
public static final DeferredItem<AxeItem> STALINIUM_AXE = ITEMS.register("stalinium_axe",
|
||||
() -> new StaliniumAxeItem(ModTiers.STALINIUM, new Item.Properties()
|
||||
.attributes(AxeItem.createAttributes(ModTiers.STALINIUM, 5, -3.0f))));
|
||||
|
||||
public static final DeferredItem<ShovelItem> STALINIUM_SHOVEL = ITEMS.register("stalinium_shovel",
|
||||
() -> new StaliniumShovelItem(ModTiers.STALINIUM, new Item.Properties()
|
||||
.attributes(AxeItem.createAttributes(ModTiers.STALINIUM, 1.5f, -3.0f))));
|
||||
|
||||
public static void register(IEventBus eventBus) {
|
||||
ITEMS.register(eventBus);
|
||||
|
||||
@@ -6,5 +6,5 @@ import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.neoforged.neoforge.common.SimpleTier;
|
||||
|
||||
public class ModTiers {
|
||||
public static final Tier STALINIUM = new SimpleTier(BlockTags.INCORRECT_FOR_NETHERITE_TOOL, 4096, 1f, 1f, 25, () -> Ingredient.of(ModItems.STALINIUM_INGOT.get(), ModItems.STALINIUM_NUGGET.get()));
|
||||
public static final Tier STALINIUM = new SimpleTier(BlockTags.INCORRECT_FOR_NETHERITE_TOOL, 4096, 11f, 6f, 25, () -> Ingredient.of(ModItems.STALINIUM_INGOT.get(), ModItems.STALINIUM_NUGGET.get()));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package net.krituximon.stalinium.item;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
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.AxeItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class StaliniumAxeItem extends AxeItem {
|
||||
public StaliniumAxeItem(Tier tier, Properties properties) {
|
||||
super(tier, properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) {
|
||||
if (!level.isClientSide) {
|
||||
MobEffectInstance haste = new MobEffectInstance(MobEffects.DIG_SPEED, 100, 0, false, true);
|
||||
miningEntity.addEffect(haste);
|
||||
Level world = miningEntity.getCommandSenderWorld();
|
||||
var box = miningEntity.getBoundingBox().inflate(10.0);
|
||||
world.getEntitiesOfClass(LivingEntity.class, box, p -> p instanceof LivingEntity).forEach(
|
||||
p -> p.addEffect(haste)
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity 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 true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStack stack) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamageable(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamaged(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package net.krituximon.stalinium.item;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
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.AxeItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.ShovelItem;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class StaliniumShovelItem extends ShovelItem {
|
||||
public StaliniumShovelItem(Tier tier, Properties properties) {
|
||||
super(tier, properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity miningEntity) {
|
||||
if (!level.isClientSide) {
|
||||
MobEffectInstance haste = new MobEffectInstance(MobEffects.DIG_SPEED, 100, 0, false, true);
|
||||
miningEntity.addEffect(haste);
|
||||
Level world = miningEntity.getCommandSenderWorld();
|
||||
var box = miningEntity.getBoundingBox().inflate(10.0);
|
||||
world.getEntitiesOfClass(LivingEntity.class, box, p -> p instanceof LivingEntity).forEach(
|
||||
p -> p.addEffect(haste)
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamageable(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamaged(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStack stack) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,6 @@ public class StaliniumSwordItem extends SwordItem {
|
||||
|
||||
@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);
|
||||
@@ -30,6 +29,20 @@ public class StaliniumSwordItem extends SwordItem {
|
||||
p.addEffect(strength);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean isDamageable(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamaged(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStack stack) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user