Skip to content

Commit

Permalink
変更
Browse files Browse the repository at this point in the history
  • Loading branch information
PTOM76 committed Jan 14, 2023
1 parent 7f28cc0 commit 1d52ed4
Show file tree
Hide file tree
Showing 12 changed files with 171 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.ptom76.tutorialfabricmod;

import com.github.ptom76.tutorialfabricmod.block.Blocks;
import com.github.ptom76.tutorialfabricmod.entity.Entities;
import com.github.ptom76.tutorialfabricmod.item.ItemGroups;
import com.github.ptom76.tutorialfabricmod.item.Items;
import net.fabricmc.api.ModInitializer;
Expand All @@ -12,6 +13,9 @@ public class TutorialFabricMod implements ModInitializer {
@Override
public void onInitialize() {

// エンティティの登録
Entities.init();

// ブロックの登録
Blocks.init();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.ptom76.tutorialfabricmod.client;

import com.github.ptom76.tutorialfabricmod.client.render.entity.EntityRenderers;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
Expand All @@ -9,6 +10,7 @@ public class TutorialFabricClientMod implements ClientModInitializer {

@Override
public void onInitializeClient() {

// EntityのRenderer関係の登録
EntityRenderers.init();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.github.ptom76.tutorialfabricmod.client.render.entity;

import com.github.ptom76.tutorialfabricmod.entity.BlueAppleEntity;
import net.minecraft.client.model.*;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.EntityModel;
import net.minecraft.client.render.entity.model.EntityModelPartNames;
import net.minecraft.client.util.math.MatrixStack;

public class BlueAppleEntityModel extends EntityModel<BlueAppleEntity> {

private final ModelPart base;

public BlueAppleEntityModel(ModelPart base) {
this.base = base;
}

@Override
public void setAngles(BlueAppleEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {

}

@Override
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
base.render(matrices, vertices, light, overlay, red, green, blue, alpha);
}

public static TexturedModelData getTexturedModelData() {
ModelData modelData = new ModelData();
ModelPartData rootPart = modelData.getRoot();

// 頭と体のパーツを追加
rootPart.addChild(EntityModelPartNames.HEAD, ModelPartBuilder.create()
.uv(0, 0)
.cuboid(-4.0f, 4.0f, -4.0f, 8.0f, 8.0f, 8.0f), ModelTransform.NONE);

rootPart.addChild(EntityModelPartNames.BODY, ModelPartBuilder.create()
.uv(0, 20)
.cuboid(-4.0f, 12.0f, -3.0f, 8.0f, 12.0f, 6.0f), ModelTransform.NONE);

return TexturedModelData.of(modelData, 32, 48);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.github.ptom76.tutorialfabricmod.client.render.entity;

import com.github.ptom76.tutorialfabricmod.TutorialFabricMod;
import com.github.ptom76.tutorialfabricmod.entity.BlueAppleEntity;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.util.Identifier;

public class BlueAppleEntityRenderer extends MobEntityRenderer<BlueAppleEntity, BlueAppleEntityModel> {
public BlueAppleEntityRenderer(EntityRendererFactory.Context context) {
super(context, new BlueAppleEntityModel(context.getPart(EntityRenderers.MODEL_BLUE_APPLE_LAYER)), 0.5f);
}

@Override
public Identifier getTexture(BlueAppleEntity entity) {
return TutorialFabricMod.id("textures/entity/blue_apple_mob/blue_apple_mob.png");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.github.ptom76.tutorialfabricmod.client.render.entity;

import com.github.ptom76.tutorialfabricmod.TutorialFabricMod;
import com.github.ptom76.tutorialfabricmod.entity.Entities;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.minecraft.client.render.entity.model.EntityModelLayer;

public class EntityRenderers {

// EntityのModelレイヤー
public static EntityModelLayer MODEL_BLUE_APPLE_LAYER = new EntityModelLayer(TutorialFabricMod.id("blue_apple_mob"), "main");

public static void init() {
// EntityのRenderer(描画システム)の登録
EntityRendererRegistry.register(Entities.BLUE_APPLE_MOB, BlueAppleEntityRenderer::new);

// Entityのモデル登録
EntityModelLayerRegistry.registerModelLayer(MODEL_BLUE_APPLE_LAYER, BlueAppleEntityModel::getTexturedModelData);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.github.ptom76.tutorialfabricmod.entity;

import com.github.ptom76.tutorialfabricmod.item.Items;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.ExperienceOrbEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.mob.PathAwareEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.World;

public class BlueAppleEntity extends PathAwareEntity {
public BlueAppleEntity(EntityType<? extends PathAwareEntity> entityType, World world) {
super(entityType, world);
}

// 死亡時呼び出される関数
@Override
public void onDeath(DamageSource damageSource) {
super.onDeath(damageSource);

// クライアントではないとき
if (!world.isClient) {
// ドロップ品 (数: 1~3個)
dropStack(new ItemStack(Items.TUTORIAL_ITEM, world.random.nextBetween(1, 3)));

// 経験値ドロップ (量:5~20)
ExperienceOrbEntity.spawn((ServerWorld) world, getPos(), world.random.nextBetween(5, 20));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.github.ptom76.tutorialfabricmod.entity;

import com.github.ptom76.tutorialfabricmod.TutorialFabricMod;
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.SpawnGroup;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;

public class Entities {
public static EntityType<BlueAppleEntity> BLUE_APPLE_MOB = FabricEntityTypeBuilder.create()
// スポーングループ
.spawnGroup(SpawnGroup.CREATURE)
.entityFactory(BlueAppleEntity::new)

// 当たり判定のサイズ
.dimensions(EntityDimensions.fixed(0.5f, 1.25f))
.build();

public static void init() {
// エンティティの登録
Registry.register(Registries.ENTITY_TYPE, TutorialFabricMod.id("blue_apple_mob"), BLUE_APPLE_MOB);

attributeRegister();
}

public static void attributeRegister() {
// 属性の登録
FabricDefaultAttributeRegistry.register(BLUE_APPLE_MOB, BlueAppleEntity.createMobAttributes()
// 体力
.add(EntityAttributes.GENERIC_MAX_HEALTH, 5.0)

// 防護力
.add(EntityAttributes.GENERIC_ARMOR, 3.0));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ public static void addItems() {
ItemGroupEvents.modifyEntriesEvent(TUTORIAL).register((entries -> entries.add(TUTORIAL_CHESTPLATE)));
ItemGroupEvents.modifyEntriesEvent(TUTORIAL).register((entries -> entries.add(TUTORIAL_LEGGINGS)));
ItemGroupEvents.modifyEntriesEvent(TUTORIAL).register((entries -> entries.add(TUTORIAL_BOOTS)));
ItemGroupEvents.modifyEntriesEvent(TUTORIAL).register((entries -> entries.add(TUTORIAL_ENTITY_SPAWN_EGG)));
ItemGroupEvents.modifyEntriesEvent(TUTORIAL).register((entries -> entries.add(BLUE_APPLE_MOB_SPAWN_EGG)));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.ptom76.tutorialfabricmod.item;

import com.github.ptom76.tutorialfabricmod.block.Blocks;
import com.github.ptom76.tutorialfabricmod.entity.Entities;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.*;
import net.minecraft.registry.Registries;
Expand Down Expand Up @@ -31,6 +32,9 @@ public class Items {
public static Item TUTORIAL_LEGGINGS = new ArmorItem(TUTORIAL_ARMOR_MATERIAL, EquipmentSlot.LEGS, new Item.Settings());
public static Item TUTORIAL_BOOTS = new ArmorItem(TUTORIAL_ARMOR_MATERIAL, EquipmentSlot.FEET, new Item.Settings());

// スポーンエッグ
public static Item BLUE_APPLE_MOB_SPAWN_EGG = new SpawnEggItem(Entities.BLUE_APPLE_MOB, 0x1276B4, 0xFFC7FF, new Item.Settings());

public static void init() {
// アイテムを登録
Registry.register(Registries.ITEM, id("tutorial_item"), TUTORIAL_ITEM);
Expand All @@ -46,5 +50,7 @@ public static void init() {
Registry.register(Registries.ITEM, id("tutorial_chestplate"), TUTORIAL_CHESTPLATE);
Registry.register(Registries.ITEM, id("tutorial_leggings"), TUTORIAL_LEGGINGS);
Registry.register(Registries.ITEM, id("tutorial_boots"), TUTORIAL_BOOTS);

Registry.register(Registries.ITEM, id("blue_apple_mob_spawn_egg"), BLUE_APPLE_MOB_SPAWN_EGG);
}
}
3 changes: 2 additions & 1 deletion src/main/resources/assets/tutorialfabricmod/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"item.tutorialfabricmod.tutorial_chestplate": "Tutorial Chestplate",
"item.tutorialfabricmod.tutorial_leggings": "Tutorial Leggings",
"item.tutorialfabricmod.tutorial_boots": "Tutorial Boots",
"item.tutorialfabricmod.blue_apple_mob_spawn_egg": "Blue Apple Mob Spawn Egg",
"block.tutorialfabricmod.tutorial_block": "Tutorial Block",

"itemgroup.tutorialfabricmod.tutorial": "Tutorial Mod"
"itemGroup.tutorialfabricmod.tutorial": "Tutorial Mod"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"parent": "minecraft:item/template_spawn_egg"
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 1d52ed4

Please sign in to comment.