Add Stalinium Axe and Shovel with custom functionalities

Signed-off-by: IM23a-cernik <cernik@bzz.ch>
This commit is contained in:
IM23a-cernik
2025-05-20 10:49:35 +02:00
parent c56c46095a
commit e466deeeda
10 changed files with 157 additions and 11 deletions
@@ -16,11 +16,8 @@ public class ModItemModelProvider extends ItemModelProvider {
basicItem(ModItems.STALINIUM_INGOT.get()); basicItem(ModItems.STALINIUM_INGOT.get());
basicItem(ModItems.SOVIET_ANTHEM_MUSIC_DISC.get()); basicItem(ModItems.SOVIET_ANTHEM_MUSIC_DISC.get());
basicItem(ModItems.STALINIUM_NUGGET.get()); basicItem(ModItems.STALINIUM_NUGGET.get());
singleTexture( handheldItem(ModItems.STALINIUM_SWORD.get());
"stalinium_sword", handheldItem(ModItems.STALINIUM_AXE.get());
mcLoc("item/handheld"), handheldItem(ModItems.STALINIUM_SHOVEL.get());
"layer0",
modLoc("item/stalinium_sword")
);
} }
} }
@@ -5,6 +5,7 @@ import net.krituximon.stalinium.Stalinium;
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.Tags;
import net.neoforged.neoforge.common.data.ExistingFileHelper; import net.neoforged.neoforge.common.data.ExistingFileHelper;
@@ -25,5 +26,11 @@ public class ModItemTagProvider extends ItemTagsProvider {
.add(ModItems.STALINIUM_INGOT.get()); .add(ModItems.STALINIUM_INGOT.get());
this.tag(Tags.Items.NUGGETS) this.tag(Tags.Items.NUGGETS)
.add(ModItems.STALINIUM_NUGGET.get()); .add(ModItems.STALINIUM_NUGGET.get());
this.tag(ItemTags.SWORDS)
.add(ModItems.STALINIUM_SWORD.get());
this.tag(ItemTags.AXES)
.add(ModItems.STALINIUM_AXE.get());
this.tag(ItemTags.SHOVELS)
.add(ModItems.STALINIUM_SHOVEL.get());
} }
} }
@@ -27,6 +27,7 @@ public class ModCreativeModeTabs {
output.accept(ModBlocks.COMPRESSED_BEDROCK.get()); output.accept(ModBlocks.COMPRESSED_BEDROCK.get());
output.accept(ModBlocks.STALINIUM_PRESS.get()); output.accept(ModBlocks.STALINIUM_PRESS.get());
output.accept(ModItems.STALINIUM_SWORD.get()); output.accept(ModItems.STALINIUM_SWORD.get());
output.accept(ModItems.STALINIUM_AXE.get());
}).build()); }).build());
public static void register(IEventBus eventBus) { public static void register(IEventBus eventBus) {
@@ -2,7 +2,9 @@ package net.krituximon.stalinium.item;
import net.krituximon.stalinium.Stalinium; import net.krituximon.stalinium.Stalinium;
import net.krituximon.stalinium.sound.ModSounds; import net.krituximon.stalinium.sound.ModSounds;
import net.minecraft.world.item.AxeItem;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ShovelItem;
import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.SwordItem;
import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredHolder;
@@ -23,7 +25,15 @@ public class ModItems {
public static final DeferredItem<SwordItem> STALINIUM_SWORD = ITEMS.register("stalinium_sword", public static final DeferredItem<SwordItem> STALINIUM_SWORD = ITEMS.register("stalinium_sword",
() -> new StaliniumSwordItem(ModTiers.STALINIUM, new Item.Properties() () -> 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) { public static void register(IEventBus eventBus) {
ITEMS.register(eventBus); ITEMS.register(eventBus);
@@ -6,5 +6,5 @@ import net.minecraft.world.item.crafting.Ingredient;
import net.neoforged.neoforge.common.SimpleTier; import net.neoforged.neoforge.common.SimpleTier;
public class ModTiers { 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 @Override
public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
boolean result = super.hurtEnemy(stack, target, attacker);
if (!attacker.getCommandSenderWorld().isClientSide) { if (!attacker.getCommandSenderWorld().isClientSide) {
MobEffectInstance strength = new MobEffectInstance(MobEffects.DAMAGE_BOOST, 100, 0, false, true); MobEffectInstance strength = new MobEffectInstance(MobEffects.DAMAGE_BOOST, 100, 0, false, true);
attacker.addEffect(strength); attacker.addEffect(strength);
@@ -30,6 +29,20 @@ public class StaliniumSwordItem extends SwordItem {
p.addEffect(strength); 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;
} }
} }
@@ -2,9 +2,11 @@
"item.stalinium.stalinium_ingot": "Stalinium Ingot", "item.stalinium.stalinium_ingot": "Stalinium Ingot",
"item.stalinium.stalinium_nugget": "Stalinium Nugget", "item.stalinium.stalinium_nugget": "Stalinium Nugget",
"item.stalinium.stalinium_sword": "Stalinium Sword", "item.stalinium.stalinium_sword": "Stalinium Sword",
"item.stalinium.stalinium_axe": "Stalinium Axe",
"item.stalinium.stalinium_shovel": "Stalinium Shovel",
"item.stalinium.soviet_anthem_music_disc": "Soviet Anthem Music Disc", "item.stalinium.soviet_anthem_music_disc": "Soviet Anthem Music Disc",
"item.stalinium.soviet_anthem_music_disc.desc": "Orchestra of the Ministry of Defense of the USSR - Soviet Union national anthem", "item.stalinium.soviet_anthem_music_disc.desc": "Ministry of Defense of the USSR - Soviet Union national anthem",
"block.stalinium.stalinium_block": "Block of Stalinium", "block.stalinium.stalinium_block": "Block of Stalinium",
"block.stalinium.stalinium_ore": "Stalinium Ore", "block.stalinium.stalinium_ore": "Stalinium Ore",
Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B