Add Stalinium Axe and Shovel with custom functionalities
Signed-off-by: IM23a-cernik <cernik@bzz.ch>
This commit is contained in:
@@ -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 |
Reference in New Issue
Block a user