栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Minecraft 1.18.1、1.18.2模组开发 17.自定义盾牌(shield)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Minecraft 1.18.1、1.18.2模组开发 17.自定义盾牌(shield)

Minecraft 1.12.2 自定义盾牌(Shield) 今天我们在1.18的版本中实现一个3D盾牌。 1.在新建一个我们的盾牌类ItemShield,继承原版的盾牌:

ItemShield.java

package com.joy187.re8joymod.items;

import java.util.UUID;

import javax.annotation.Nullable;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.joy187.re8joymod.Main;

import net.minecraft.tags.ItemTags;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ShieldItem;
import net.minecraft.world.item.UseAnim;
import net.minecraft.world.level.Level;

public class ItemShield extends ShieldItem{
    protected static final UUID OFF_HAND_MODIFIER = UUID.fromString("9271eeea-5f74-4e12-97b6-7cf3c60ef7a0");
    protected static final UUID MAIN_HAND_MODIFIER = UUID.fromString("7d766720-0695-46c6-b320-44529f3da63f");

    public ItemShield() {
        super(new Properties().tab(Main.TUTORIAL_TAB).stacksTo(1));

    }
    
    public boolean isShield(ItemStack stack, @Nullable LivingEntity entity) {
        return true;
    }

    
    public UseAnim getUseAnimation(ItemStack p_40678_) {
        return UseAnim.BLOCK;
     }
    
    public int getMaxItemUseDuration(ItemStack stack) {
        return 72000;
    }

    @Override
    public InteractionResultHolder use(Level p_77659_1_, Player playerIn, InteractionHand handIn) {
        ItemStack itemstack = playerIn.getItemInHand(handIn);
        playerIn.startUsingItem(handIn);
        return InteractionResultHolder.consume(itemstack);
    }
    
    //我们盾牌的耐久值
    @Override
    public int getMaxDamage(ItemStack stack) {
        return 768;
    }

    //能用什么修理
    public boolean isValidRepairItem(ItemStack p_43091_, ItemStack p_43092_) {
        return p_43092_.is(ItemTags.PLANKS) || super.isValidRepairItem(p_43091_, p_43092_);
     }
    
    //盾牌装备的属性
    public Multimap getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack)
    {
        Multimap multimap = HashMultimap.create();
        //当装备在主手时,就增加6点护甲值和30%抗击退
        if (equipmentSlot == EquipmentSlot.OFFHAND )
        {
            multimap.put(Attributes.KNOCKBACK_RESISTANCE, new AttributeModifier(OFF_HAND_MODIFIER, "Weapon modifier", (double)0.3, AttributeModifier.Operation.fromValue(0)));
            multimap.put(Attributes.ARMOR, new AttributeModifier(MAIN_HAND_MODIFIER, "Weapon modifier", (double)6, AttributeModifier.Operation.fromValue(0)));
        }
        
        //当装备在主手时,就给予玩家6点护甲值
        if (equipmentSlot == EquipmentSlot.MAINHAND)
        {
            multimap.put(Attributes.ARMOR, new AttributeModifier(MAIN_HAND_MODIFIER, "Weapon modifier", (double)6, AttributeModifier.Operation.fromValue(0)));
            //multimap.put(GlobalEntityTypeAttributes.ATTACK_DAMAGE, new AttributeModifier(MAIN_HAND_MODIFIER, "Weapon modifier", (double)6 / 2f, AttributeModifier.Operation.fromValue(0)));
        }
        return multimap;
    }
}
在ItemInit中声明我们的盾牌:
    public static RegistryObject RESHIELD = ITEMS.register("reshield",()->
    {
        return new ItemShield();
    });
2.代码部分结束,我们可以在Blockbench中制作一个3D盾牌并导出为.json文件,将其放入resourcesassets你的modidmodelsitem中:

在en_us.json中添加我们的物品英文名称
  "item.re8joymod.reshield":"Ferocious Totem Shield",
3.保存所有文件 -> 启动游戏测试

各种盾牌随你制作~
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号