2024/11/02
Add New Entity
This commit is contained in:
parent
3cb1cc3ccc
commit
6471f956fa
|
|
@ -1,9 +1,10 @@
|
|||
// 1.21 2024-11-01T00:08:54.8327658 Item Models: leashedplayer
|
||||
// 1.21 2024-11-03T11:56:02.1200385 Item Models: leashedplayer
|
||||
766c487fbf0c59e9045eeaf81daf583eb679b0e1 assets/leashedplayer/models/item/amethyst_shears.json
|
||||
5846df9d85726428905701120ef34c9324c20faf assets/leashedplayer/models/item/bow_lra_pulling_0.json
|
||||
845a7316b86e26f88c6932d4ef2656126503727a assets/leashedplayer/models/item/bow_lra_pulling_1.json
|
||||
5bd1f9f28b91005c587f1c38fb77cd19b59495e3 assets/leashedplayer/models/item/bow_lra_pulling_2.json
|
||||
83946f4d60d0fb1758d6553c36330506c8e48ada assets/leashedplayer/models/item/crossbow_leash_rope_arrow.json
|
||||
bb0d76077719c83c8a8bd4346a24ea1766175125 assets/leashedplayer/models/item/fabric.json
|
||||
63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/leashedplayer/models/item/kid_spawn_egg.json
|
||||
114d3cc5832ef047403114504483c6f3ea07e77c assets/leashedplayer/models/item/leash_rope_arrow.json
|
||||
c4748995a5fe190d20e3bd16f4b2244164ec0f83 assets/leashedplayer/models/item/spectral_leash_rope_arrow.json
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
// 1.21 2024-11-02T23:21:56.3625648 Languages: en_us for mod: leashedplayer
|
||||
dad5064bbdf42ff624b9a0b7f24b17274fa247c2 assets/leashedplayer/lang/en_us.json
|
||||
// 1.21 2024-11-03T11:56:02.1210394 Languages: en_us for mod: leashedplayer
|
||||
e37115e9e6433f0d2a2748efc9749b10204119c7 assets/leashedplayer/lang/en_us.json
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
// 1.21 2024-11-02T23:04:02.4438077 Languages: lzh for mod: leashedplayer
|
||||
b13bfd7bcb371f7da65fe06086a3db47da2de9cd assets/leashedplayer/lang/lzh.json
|
||||
// 1.21 2024-11-03T11:56:02.1150382 Languages: lzh for mod: leashedplayer
|
||||
a9b5a3116c6381872e174909553b8dac080dede8 assets/leashedplayer/lang/lzh.json
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
// 1.21 2024-11-02T23:21:56.3615582 Languages: zh_cn for mod: leashedplayer
|
||||
2e3e8d720e46344cc2069590242ef2ab9fbdb435 assets/leashedplayer/lang/zh_cn.json
|
||||
// 1.21 2024-11-03T11:56:02.119039 Languages: zh_cn for mod: leashedplayer
|
||||
bc7e4095ad9239d38aff0e14e4eb8be3903980ec assets/leashedplayer/lang/zh_cn.json
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
// 1.21 2024-11-02T23:21:56.3599006 Languages: zh_tw for mod: leashedplayer
|
||||
a3d780ceee5ee80b007fd0ed01c91c256f82b5a4 assets/leashedplayer/lang/zh_tw.json
|
||||
// 1.21 2024-11-03T11:56:02.1180379 Languages: zh_tw for mod: leashedplayer
|
||||
a4e3c3350a1a38b98fa7d7c0c2305a2c79440a50 assets/leashedplayer/lang/zh_tw.json
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
"advancement.leashedplayer.no_leash.desc": "You cannot be leashed by ANY",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "Leashed Player",
|
||||
"effect.leashedplayer.no_leash": "No Leash",
|
||||
"entity.leashedplayer.kid_player": "Kid",
|
||||
"entity.leashedplayer.leash_rope_arrow": "Leash Rope Arrow",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "Create Leash Fence Knot Entity if absent",
|
||||
|
|
@ -32,6 +33,7 @@
|
|||
"item.leash_rope_arrow.description": "Arrows with ropes attached?",
|
||||
"item.leashedplayer.amethyst_shears": "Amethyst Shears",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.kid_spawn_egg": "Kid Spawn Egg",
|
||||
"item.leashedplayer.leash_rope_arrow": "Leash Rope Arrow",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "Splash No Leash Potion",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"entity.leashedplayer.kid_player": "幼",
|
||||
"gamerule.LP.DefaultTalkArea.description": "阖局初置非负数,则限一顾之日下,若立聊城小在直则用其常,若用玩义直上跻之地",
|
||||
"leashedplayer.chat.none_heard_you": "无人受子问",
|
||||
"leashedplayer.command.chat.message.talkarea.current_config": "%s§6今聊城可知半径置§e %d§6格§f(§a默§7:§e%d格§f)§r",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
"advancement.leashedplayer.no_leash.desc": "你不会被任何东西拴住",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "可拴玩家",
|
||||
"effect.leashedplayer.no_leash": "禁拴",
|
||||
"entity.leashedplayer.kid_player": "小孩",
|
||||
"entity.leashedplayer.leash_rope_arrow": "拴绳箭",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "如果缺失则创建拴绳结",
|
||||
|
|
@ -32,6 +33,7 @@
|
|||
"item.leash_rope_arrow.description": "带有拴绳的箭矢?",
|
||||
"item.leashedplayer.amethyst_shears": "紫水晶剪刀",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.kid_spawn_egg": "小孩生成蛋",
|
||||
"item.leashedplayer.leash_rope_arrow": "拴绳箭",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "滞留型禁拴药水",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
"advancement.leashedplayer.no_leash.desc": "恁不會被任何拴住",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "可拴玩家",
|
||||
"effect.leashedplayer.no_leash": "禁拴",
|
||||
"entity.leashedplayer.kid_player": "小孩",
|
||||
"entity.leashedplayer.leash_rope_arrow": "拴繩箭",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "如果缺失則創建拴繩結",
|
||||
|
|
@ -32,6 +33,7 @@
|
|||
"item.leash_rope_arrow.description": "帶有拴繩的箭矢?",
|
||||
"item.leashedplayer.amethyst_shears": "紫水晶剪刀",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.kid_spawn_egg": "小孩生成蛋",
|
||||
"item.leashedplayer.leash_rope_arrow": "拴繩箭",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "滯留型禁拴藥水",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "minecraft:item/template_spawn_egg"
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.r3944realms.leashedplayer;
|
||||
|
||||
import com.r3944realms.leashedplayer.client.renders.entities.KidPlayerRenderer;
|
||||
import com.r3944realms.leashedplayer.client.renders.entities.LeashRopeArrowRenderer;
|
||||
import com.r3944realms.leashedplayer.client.renders.entities.SpectralLeashRopeArrowRenderer;
|
||||
import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
|
||||
|
|
@ -37,6 +38,7 @@ public class ClientEventHandler {
|
|||
public static void RegisterRenderer(EntityRenderersEvent.RegisterRenderers event) {
|
||||
event.registerEntityRenderer(ModEntityRegister.LEASH_ROPE_ARROW.get(), LeashRopeArrowRenderer::new);
|
||||
event.registerEntityRenderer(ModEntityRegister.SPECTRAL_LEASH_ROPE_ARROW.get(), SpectralLeashRopeArrowRenderer::new);
|
||||
event.registerEntityRenderer(ModEntityRegister.KID.get(), KidPlayerRenderer::create);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import com.r3944realms.leashedplayer.content.commands.TickCommand;
|
|||
import com.r3944realms.leashedplayer.content.effects.ModEffectRegister;
|
||||
import com.r3944realms.leashedplayer.content.effects.ModPotionRegister;
|
||||
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
|
||||
import com.r3944realms.leashedplayer.content.entities.LittlePlayer;
|
||||
import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
|
||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||
import com.r3944realms.leashedplayer.content.misc.LeadBreakItemBehavior;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
|
|
@ -25,6 +27,7 @@ import net.neoforged.fml.common.EventBusSubscriber;
|
|||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
||||
import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent;
|
||||
import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent;
|
||||
import net.neoforged.neoforge.event.tick.EntityTickEvent;
|
||||
|
||||
|
||||
|
|
@ -78,6 +81,10 @@ public class CommonEventHandler {
|
|||
DispenserBlock.registerProjectileBehavior(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW.get());
|
||||
DispenserBlock.registerBehavior(ModItemRegister.AMETHYST_SHEARS.get(), new LeadBreakItemBehavior());
|
||||
}
|
||||
@SubscribeEvent
|
||||
public static void onEntityAttributeEvent(EntityAttributeCreationEvent event) {
|
||||
event.put(ModEntityRegister.KID.get(), LittlePlayer.createAttributes().build());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,106 @@
|
|||
package com.r3944realms.leashedplayer.client.renders.entities;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.r3944realms.leashedplayer.content.entities.LittlePlayer;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.model.PlayerModel;
|
||||
import net.minecraft.client.model.geom.ModelLayers;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.entity.*;
|
||||
import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.HumanoidArm;
|
||||
import net.minecraft.world.item.CrossbowItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.UseAnim;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class KidPlayerRenderer extends HumanoidMobRenderer<LittlePlayer, PlayerModel<LittlePlayer>> {
|
||||
|
||||
|
||||
public static @NotNull KidPlayerRenderer create(@NotNull EntityRendererProvider.Context pContext) {
|
||||
if (pContext instanceof PlayerContext pc) {
|
||||
return new KidPlayerRenderer(pc);
|
||||
}
|
||||
return new KidPlayerRenderer(new PlayerContext(pContext, true));
|
||||
}
|
||||
|
||||
public static class PlayerContext extends EntityRendererProvider.Context {
|
||||
boolean isUseSlimModel;
|
||||
public PlayerContext(EntityRendererProvider.Context pContext, boolean pIsSlimModel) {
|
||||
super(pContext.getEntityRenderDispatcher(), pContext.getItemRenderer(), pContext.getBlockRenderDispatcher(), pContext.getItemInHandRenderer(), pContext.getResourceManager(), pContext.getModelSet(), pContext.getFont());
|
||||
this.isUseSlimModel = pIsSlimModel;
|
||||
}
|
||||
|
||||
public boolean isUseSlimModel() {
|
||||
return isUseSlimModel;
|
||||
}
|
||||
|
||||
}
|
||||
public KidPlayerRenderer(PlayerContext pContext) {
|
||||
super(pContext, new PlayerModel<>(pContext.bakeLayer(pContext.isUseSlimModel() ? ModelLayers.PLAYER_SLIM : ModelLayers.PLAYER), pContext.isUseSlimModel()), 0.5F);
|
||||
this.addLayer(new HumanoidArmorLayer<>(this,
|
||||
new HumanoidModel<>(pContext.bakeLayer(ModelLayers.PLAYER_INNER_ARMOR)),
|
||||
new HumanoidModel<>(pContext.bakeLayer(ModelLayers.PLAYER_OUTER_ARMOR)),
|
||||
pContext.getModelManager()
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public @NotNull ResourceLocation getTextureLocation(@NotNull LittlePlayer pEntity) {
|
||||
return pEntity.getSkin().texture();
|
||||
}
|
||||
public void render(@NotNull LittlePlayer companion, float companionYaw, float pPartialTicks, @NotNull PoseStack pMatrixStack,
|
||||
@NotNull MultiBufferSource pBuffer, int pPackedLight) {
|
||||
this.setModelProperties(companion);
|
||||
|
||||
super.render(companion, companionYaw, pPartialTicks, pMatrixStack, pBuffer, pPackedLight);
|
||||
}
|
||||
private void setModelProperties(LittlePlayer companion) {
|
||||
PlayerModel<LittlePlayer> companionModel = this.getModel();
|
||||
|
||||
HumanoidModel.ArmPose humanoidmodel$armpose = getArmPose(companion, InteractionHand.MAIN_HAND);
|
||||
HumanoidModel.ArmPose humanoidmodel$armpose1 = getArmPose(companion, InteractionHand.OFF_HAND);
|
||||
|
||||
if (companion.getMainArm() == HumanoidArm.RIGHT) {
|
||||
companionModel.rightArmPose = humanoidmodel$armpose;
|
||||
companionModel.leftArmPose = humanoidmodel$armpose1;
|
||||
} else {
|
||||
companionModel.rightArmPose = humanoidmodel$armpose1;
|
||||
companionModel.leftArmPose = humanoidmodel$armpose;
|
||||
}
|
||||
}
|
||||
private static HumanoidModel.ArmPose getArmPose(LittlePlayer companion, InteractionHand hand) {
|
||||
ItemStack itemstack = companion.getItemInHand(hand);
|
||||
if (itemstack.isEmpty()) {
|
||||
return HumanoidModel.ArmPose.EMPTY;
|
||||
} else {
|
||||
if (companion.getUsedItemHand() == hand && companion.getUseItemRemainingTicks() > 0) {
|
||||
UseAnim useanim = itemstack.getUseAnimation();
|
||||
|
||||
if (useanim == UseAnim.BOW) {
|
||||
return HumanoidModel.ArmPose.BOW_AND_ARROW;
|
||||
}
|
||||
|
||||
if (useanim == UseAnim.CROSSBOW && hand == companion.getUsedItemHand()) {
|
||||
return HumanoidModel.ArmPose.CROSSBOW_CHARGE;
|
||||
}
|
||||
} else if (!companion.swinging && itemstack.is(Items.CROSSBOW) && CrossbowItem.isCharged(itemstack)) {
|
||||
return HumanoidModel.ArmPose.CROSSBOW_HOLD;
|
||||
}
|
||||
|
||||
return HumanoidModel.ArmPose.ITEM;
|
||||
}
|
||||
}
|
||||
protected void scale(@NotNull LittlePlayer player, PoseStack pPoseStack, float pPartialTickTime) {
|
||||
float f = 0.9375F;
|
||||
pPoseStack.scale(f, f, f);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
package com.r3944realms.leashedplayer.content.entities;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.multiplayer.PlayerInfo;
|
||||
import net.minecraft.client.resources.DefaultPlayerSkin;
|
||||
import net.minecraft.client.resources.PlayerSkin;
|
||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.network.syncher.SynchedEntityData;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.AgeableMob;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.level.Level;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Objects;
|
||||
|
||||
import static net.minecraft.world.entity.EquipmentSlot.*;
|
||||
|
||||
public class LittlePlayer extends AgeableMob {
|
||||
private static final EntityDataAccessor<Integer> DATA_TYPE_ID = SynchedEntityData.defineId(LittlePlayer.class, EntityDataSerializers.INT);
|
||||
private static final EntityDataAccessor<Integer> BASE_HEALTH = SynchedEntityData.defineId(LittlePlayer.class,EntityDataSerializers.INT);
|
||||
public EquipmentSlot[] armorTypes = new EquipmentSlot[]{FEET, LEGS,
|
||||
CHEST, EquipmentSlot.HEAD};
|
||||
@Nullable
|
||||
private PlayerInfo playerInfo;
|
||||
protected LittlePlayer(EntityType<? extends AgeableMob> pEntityType, Level pLevel) {
|
||||
super(pEntityType, pLevel);
|
||||
|
||||
}
|
||||
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
return AgeableMob.createMobAttributes()
|
||||
.add(Attributes.MAX_HEALTH, 20.0D)
|
||||
.add(Attributes.MOVEMENT_SPEED, 0.32D);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PlayerInfo getPlayerInfo() {
|
||||
if (this.playerInfo == null) {
|
||||
try {
|
||||
this.playerInfo = Objects.requireNonNull(Minecraft.getInstance().getConnection()).getPlayerInfo(this.getUUID());
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return this.playerInfo;
|
||||
}
|
||||
public PlayerSkin getSkin() {
|
||||
PlayerInfo playerinfo = this.getPlayerInfo();
|
||||
return playerinfo == null ? DefaultPlayerSkin.get(this.getUUID()) : playerinfo.getSkin();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AgeableMob getBreedOffspring(@NotNull ServerLevel pLevel, @NotNull AgeableMob pOtherParent) {
|
||||
return ModEntityRegister.KID.get().create(pLevel);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void defineSynchedData(SynchedEntityData.@NotNull Builder pBuilder) {
|
||||
super.defineSynchedData(pBuilder);
|
||||
pBuilder.define(DATA_TYPE_ID, 1);
|
||||
pBuilder.define(BASE_HEALTH, 20);
|
||||
}
|
||||
public void setBaseHealth(int health) {
|
||||
this.entityData.set(BASE_HEALTH, health);
|
||||
}
|
||||
public float getBaseHealth() {
|
||||
return this.entityData.get(BASE_HEALTH);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isBaby() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -28,6 +28,11 @@ public class ModEntityRegister {
|
|||
.updateInterval(20)
|
||||
.build("spectral_leash_rope_arrow")
|
||||
);
|
||||
public static final DeferredHolder<EntityType<?>, EntityType<LittlePlayer>> KID = ENTITY_TYPE.register("kid_player",
|
||||
() -> EntityType.Builder.of(LittlePlayer::new, MobCategory.MISC)
|
||||
.sized(0.6f,1.08f)
|
||||
.build("kid_player")
|
||||
);
|
||||
// public static final DeferredHolder<EntityType<?>, EntityType<ChainTieEntity>> CHAIN_TIE = ENTITY_TYPE.register(
|
||||
// "chain_tie",
|
||||
// () -> EntityType.Builder.<ChainTieEntity>of(ChainTieEntity::new, MobCategory.MISC)
|
||||
|
|
|
|||
|
|
@ -1,18 +1,16 @@
|
|||
package com.r3944realms.leashedplayer.content.items;
|
||||
|
||||
import com.r3944realms.leashedplayer.LeashedPlayer;
|
||||
import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
|
||||
import com.r3944realms.leashedplayer.content.items.type.LeadBreakerItem;
|
||||
import com.r3944realms.leashedplayer.content.items.type.LeashRopeArrowItem;
|
||||
import com.r3944realms.leashedplayer.content.items.type.SpectralLeashRopeArrowItem;
|
||||
import com.r3944realms.leashedplayer.content.items.type.TestItem;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ShearsItem;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.neoforge.common.DeferredSpawnEggItem;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -35,7 +33,8 @@ public class ModItemRegister {
|
|||
public static final Supplier<Item> AMETHYST_SHEARS = ModItemRegister.register("amethyst_shears",
|
||||
() -> new LeadBreakerItem(new Item.Properties().durability(100).component(DataComponents.TOOL, LeadBreakerItem.createToolProperties())
|
||||
.stacksTo(1)));
|
||||
|
||||
public static final Supplier<Item> KID_SPAWN_EGG = ModItemRegister.register("kid_spawn_egg",
|
||||
() -> new DeferredSpawnEggItem(ModEntityRegister.KID, 0x3F4F1F, 0x3D0D4D, new Item.Properties()));
|
||||
public static Supplier<Item> register(String name, Supplier<Item> supplier) {
|
||||
return register(name, supplier, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public enum ModLangKeyValue {
|
|||
ITEM_SPECTRAL_LEASH_ROPE_ARROW(ModItemRegister.SPECTRAL_LEASH_ROPE_ARROW, ModPartEnum.ITEM, "Spectral Leash Rope Arrow", "拴绳光灵箭", "拴繩光靈箭", true),
|
||||
TEST_FABRIC_ITEM(ModItemRegister.FABRIC, ModPartEnum.ITEM, "Fabric", "Fabric", "Fabric", true),
|
||||
AMETHYST_SHEARS(ModItemRegister.AMETHYST_SHEARS, ModPartEnum.ITEM, "Amethyst Shears", "紫水晶剪刀", "紫水晶剪刀", true),
|
||||
|
||||
KID_SPAWN_EGG(ModItemRegister.KID_SPAWN_EGG, ModPartEnum.ITEM, "Kid Spawn Egg", "小孩生成蛋", "小孩生成蛋", false),
|
||||
//ITEM_DESC
|
||||
DESC_ITEM_LEASH_ROPE_ARROW(LeashRopeArrowItem.descKey, ModPartEnum.DESCRIPTION, "Arrows with ropes attached?","带有拴绳的箭矢?", "帶有拴繩的箭矢?", false),
|
||||
//PAINTING
|
||||
|
|
@ -40,6 +40,7 @@ public enum ModLangKeyValue {
|
|||
//ENTITY
|
||||
LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("leash_rope_arrow"), ModPartEnum.ENTITY, "Leash Rope Arrow", "拴绳箭", "拴繩箭", false),
|
||||
SPECTRAL_LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("spectral_leash_rope_arrow"), ModPartEnum.ENTITY, "Spectral Leash Rope Arrow", "拴绳光灵箭", "拴繩光靈箭", false),
|
||||
kID(ModEntityRegister.getEntityNameKey("kid_player"), ModPartEnum.ENTITY, "Kid", "小孩", "小孩", "幼", false),
|
||||
//CREATIVE_TAB
|
||||
CREATIVE_TAB_NAME(ModCreativeTab.getCreativeMod(LEASHED_PLAYER_ITEM), ModPartEnum.CREATIVE_TAB, "Leashed Player","可拴玩家", "可拴玩家", false),
|
||||
//COMMAND_MESSAGE
|
||||
|
|
|
|||
|
|
@ -2,10 +2,13 @@ package com.r3944realms.leashedplayer.datagen.provider;
|
|||
|
||||
|
||||
import com.r3944realms.leashedplayer.LeashedPlayer;
|
||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||
import com.r3944realms.leashedplayer.datagen.LanguageAndOtherData.ModLangKeyValue;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.neoforged.neoforge.client.model.generators.ItemModelBuilder;
|
||||
import net.neoforged.neoforge.client.model.generators.ItemModelProvider;
|
||||
import net.neoforged.neoforge.client.model.generators.ModelFile;
|
||||
import net.neoforged.neoforge.common.data.ExistingFileHelper;
|
||||
|
|
@ -46,6 +49,7 @@ public class ModItemModelProvider extends ItemModelProvider {
|
|||
getBuilder("bow_lra_pulling_2")
|
||||
.parent(new ModelFile.UncheckedModelFile("item/bow"))
|
||||
.texture("layer0", ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "item/bow_lra_pulling_2"));
|
||||
spawnEgg(ModItemRegister.KID_SPAWN_EGG.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -55,4 +59,7 @@ public class ModItemModelProvider extends ItemModelProvider {
|
|||
// 注册进阶材质物品模型(非模板大量需要,可以用BlockBench生成的就行了)
|
||||
AdvancedModItemModelRegister();
|
||||
}
|
||||
public ItemModelBuilder spawnEgg(Item item) {
|
||||
return withExistingParent(BuiltInRegistries.ITEM.getKey(item).getPath(), mcLoc("item/template_spawn_egg"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user