1.12.2的霰弹枪教程:Minecraft 1.12.2模组开发(二十三) 霰弹枪!
1.16.5版本的投掷物教程:Minecraft 1.16.5模组开发(三十二) 自定义投掷物品实体
本期我们来介绍一下1.18.1版本下的武器与投掷物的具体制作教程。
1.投掷物模型制作
**1.18.1的投掷物的制作与1.16.5较为类似,需要制作投掷物的模型,渲染文件,制作与之对应的投掷物物品。
**
BlockBench下载地址
首先我们用blockbench制作投掷物的模型,然后导出为.json文件:

将导出的.json文件放入resources\assets\你的模组名称\models\item中:

将贴图放入textures/entity包中。
之后是Java包的工作(四个文件):

2.在Items包中新建一个我们的物品类ItemMoSpitter:
ItemMoSpitter.java
package com.joy187.re8joymod.items;
import com.joy187.re8joymod.Main;
import com.joy187.re8joymod.entity.EntityMoSpitter;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ArrowItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
public class ItemMoSpitter extends Item{
public ItemMoSpitter(Item.Properties name) {
super(name);
}
public ItemMoSpitter() {
//放到哪个物品栏 每个槽最多放几个
super(new Properties().tab(Main.TUTORIAL_TAB).stacksTo(64));
}
public EntityMoSpitter createArrow(Level level, ItemStack stack, LivingEntity entityIn) {
//指明我们生成的投掷物实体
EntityMoSpitter arrowentity = new EntityMoSpitter(level, entityIn);
return arrowentity;
}
//如果有无限的附魔,就不消耗子弹
public boolean isInfinite(ItemStack stack, ItemStack bow, net.minecraft.world.entity.player.Player player) {
int enchant = net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY_ARROWS, bow);
return enchant <= 0 ? false : this.getClass() == ItemMoSpitter.class;
}
}
在Init包的ItemInit类中添加我们的投掷物物品声明:
ItemInit.java
public class ItemInit {
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS,
Main.MOD_ID);
//我们的投掷物品声明
public static RegistryObject<Item> MOSPITTER = ITEMS.register("mospitter",()->
{
return new ItemMoSpitter();
});
private static <T extends Item> RegistryObject<T> register(final String name, final Supplier<T> item) {
return ITEMS.register(name, item);
}
}
3.在entity包中新建我们的投掷物实体类EntityMoSpitter
EntityMoSpitter.java
package com.joy187.re8joymod.entity;
import com.joy187.re8joymod.init.EntityInit;
import com.joy187.re8joymod.init.ItemInit;
import io.netty.buffer.Unpooled;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.animal.IronGolem;
import net.minecraft.world.entity.boss.enderdragon.EnderDragon;
import net.minecraft.world.entity.boss.wither.WitherBoss;
import net.minecraft.world.entity.monster.Ravager;
import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.entity.projectile.Arrow;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import

本文详细介绍了如何在1.18.1版本的Minecraft中创建自定义投掷物和武器,包括模型制作、物品类和实体类的编写,以及纹理和渲染设置。通过实例展示如何实现投掷物效果和发射器功能,适合模组开发者参考。
最低0.47元/天 解锁文章
1340

被折叠的 条评论
为什么被折叠?



