generated from NeoForgeMDKs/MDK-1.21-ModDevGradle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
09ade57
commit 845d58c
Showing
10 changed files
with
252 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
src/main/java/com/nateplays/my_neoforge_mod/entity/ModEntities.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.nateplays.my_neoforge_mod.entity; | ||
|
||
import com.nateplays.my_neoforge_mod.MyNeoForgeMod; | ||
import com.nateplays.my_neoforge_mod.entity.custom.MosswineEntity; | ||
import net.minecraft.core.registries.Registries; | ||
import net.minecraft.world.entity.EntityType; | ||
import net.minecraft.world.entity.MobCategory; | ||
import net.neoforged.bus.api.IEventBus; | ||
import net.neoforged.neoforge.registries.DeferredHolder; | ||
import net.neoforged.neoforge.registries.DeferredRegister; | ||
|
||
public class ModEntities { | ||
public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = | ||
DeferredRegister.create(Registries.ENTITY_TYPE, MyNeoForgeMod.MODID); | ||
|
||
public static final DeferredHolder<EntityType<?>, EntityType<MosswineEntity>> MOSSWINE = | ||
ENTITY_TYPES.register("mosswine", () -> EntityType.Builder.of(MosswineEntity::new, MobCategory.CREATURE) | ||
.sized(0.8f, 0.8f).build("mosswine") | ||
); | ||
|
||
public static void register(IEventBus eventBus) { | ||
ENTITY_TYPES.register(eventBus); | ||
} | ||
} |
4 changes: 4 additions & 0 deletions
4
src/main/java/com/nateplays/my_neoforge_mod/entity/animations/ModAnimationDefinitions.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package com.nateplays.my_neoforge_mod.entity.animations; | ||
|
||
public class ModAnimationDefinitions { | ||
} |
10 changes: 10 additions & 0 deletions
10
src/main/java/com/nateplays/my_neoforge_mod/entity/client/ModModelLayers.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package com.nateplays.my_neoforge_mod.entity.client; | ||
|
||
import com.nateplays.my_neoforge_mod.MyNeoForgeMod; | ||
import net.minecraft.client.model.geom.ModelLayerLocation; | ||
import net.minecraft.resources.ResourceLocation; | ||
|
||
public class ModModelLayers { | ||
public static final ModelLayerLocation MOSSWINE_LAYER = new ModelLayerLocation( | ||
ResourceLocation.fromNamespaceAndPath(MyNeoForgeMod.MODID, "mosswine_layer"), "main"); | ||
} |
96 changes: 96 additions & 0 deletions
96
src/main/java/com/nateplays/my_neoforge_mod/entity/client/MosswineModel.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
package com.nateplays.my_neoforge_mod.entity.client;// Made with Blockbench 4.10.4 | ||
// Exported for Minecraft version 1.17 or later with Mojang mappings | ||
// Paste this class into your mod and generate all required imports | ||
|
||
|
||
import com.mojang.blaze3d.vertex.PoseStack; | ||
import com.mojang.blaze3d.vertex.VertexConsumer; | ||
import net.minecraft.client.model.EntityModel; | ||
import net.minecraft.client.model.HierarchicalModel; | ||
import net.minecraft.client.model.geom.ModelPart; | ||
import net.minecraft.client.model.geom.PartPose; | ||
import net.minecraft.client.model.geom.builders.*; | ||
import net.minecraft.world.entity.Entity; | ||
|
||
public class MosswineModel<T extends Entity> extends HierarchicalModel<T> { | ||
// This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor | ||
// public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("modid", "mosswine"), "main"); | ||
private final ModelPart body; | ||
private final ModelPart legfrontright; | ||
private final ModelPart legfrontleft; | ||
private final ModelPart legbackleft; | ||
private final ModelPart legbackright; | ||
private final ModelPart head; | ||
private final ModelPart snout; | ||
|
||
public MosswineModel(ModelPart root) { | ||
this.body = root.getChild("body"); | ||
this.legfrontright = root.getChild("legfrontright"); | ||
this.legfrontleft = root.getChild("legfrontleft"); | ||
this.legbackleft = root.getChild("legbackleft"); | ||
this.legbackright = root.getChild("legbackright"); | ||
this.head = root.getChild("head"); | ||
this.snout = head.getChild("snout"); | ||
} | ||
|
||
public static LayerDefinition createBodyLayer() { | ||
MeshDefinition meshdefinition = new MeshDefinition(); | ||
PartDefinition partdefinition = meshdefinition.getRoot(); | ||
|
||
PartDefinition body = partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 0).addBox(-5.0F, -13.0F, -5.0F, 10.0F, 8.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); | ||
|
||
PartDefinition legfrontright = partdefinition.addOrReplaceChild("legfrontright", CubeListBuilder.create().texOffs(33, 0).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(-3.0F, 19.0F, -2.0F)); | ||
|
||
PartDefinition legfrontleft = partdefinition.addOrReplaceChild("legfrontleft", CubeListBuilder.create().texOffs(33, 0).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(3.0F, 19.0F, -2.0F)); | ||
|
||
PartDefinition legbackleft = partdefinition.addOrReplaceChild("legbackleft", CubeListBuilder.create().texOffs(33, 0).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(3.0F, 19.0F, 7.0F)); | ||
|
||
PartDefinition legbackright = partdefinition.addOrReplaceChild("legbackright", CubeListBuilder.create().texOffs(33, 0).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(-3.0F, 19.0F, 7.0F)); | ||
|
||
PartDefinition head = partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 21).addBox(-4.0F, -4.0F, -6.0F, 8.0F, 7.0F, 8.0F, new CubeDeformation(0.0F)) | ||
.texOffs(27, 31).addBox(-3.0F, -5.0F, -7.0F, 6.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)) | ||
.texOffs(0, 0).addBox(-5.0F, -3.0F, -4.0F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) | ||
.texOffs(0, 0).addBox(4.0F, -3.0F, -4.0F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0F, -5.0F)); | ||
|
||
PartDefinition snout = head.addOrReplaceChild("snout", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.1745F, 0.0F, 0.0F)); | ||
|
||
PartDefinition cube_r1 = snout.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(32, 21).addBox(-2.0F, -1.5F, -3.0F, 4.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.7467F, -5.9651F, -0.1745F, 0.0F, 0.0F)); | ||
|
||
return LayerDefinition.create(meshdefinition, 64, 64); | ||
} | ||
|
||
@Override | ||
public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { | ||
|
||
} | ||
|
||
// @Override | ||
// public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { | ||
// body.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// legfrontright.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// legfrontleft.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// legbackleft.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// legbackright.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// head.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); | ||
// } | ||
|
||
@Override | ||
public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, int color) { | ||
body.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
legfrontright.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
legfrontleft.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
legbackleft.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
legbackright.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
head.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); | ||
} | ||
|
||
@Override | ||
public ModelPart root() { | ||
return this.body; | ||
} | ||
|
||
// @Override | ||
// public ModelPart root() { | ||
// return body; | ||
// } | ||
} |
35 changes: 35 additions & 0 deletions
35
src/main/java/com/nateplays/my_neoforge_mod/entity/client/MosswineRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package com.nateplays.my_neoforge_mod.entity.client; | ||
|
||
import com.mojang.blaze3d.vertex.PoseStack; | ||
import com.nateplays.my_neoforge_mod.MyNeoForgeMod; | ||
import com.nateplays.my_neoforge_mod.entity.custom.MosswineEntity; | ||
import net.minecraft.client.renderer.MultiBufferSource; | ||
import net.minecraft.client.renderer.entity.EntityRendererProvider; | ||
import net.minecraft.client.renderer.entity.MobRenderer; | ||
import net.minecraft.resources.ResourceLocation; | ||
|
||
public class MosswineRenderer extends MobRenderer<MosswineEntity, MosswineModel<MosswineEntity>> { | ||
|
||
public MosswineRenderer(EntityRendererProvider.Context context) { | ||
super(context, new MosswineModel<>(context.bakeLayer(ModModelLayers.MOSSWINE_LAYER)), 0.8f); | ||
} | ||
|
||
/** | ||
* Returns the location of an entity's texture. | ||
* | ||
* @param entity | ||
*/ | ||
@Override | ||
public ResourceLocation getTextureLocation(MosswineEntity entity) { | ||
return ResourceLocation.fromNamespaceAndPath(MyNeoForgeMod.MODID, "textures/entity/mosswine.png"); | ||
} | ||
|
||
@Override | ||
public void render(MosswineEntity entity, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, int packedLight) { | ||
if (entity.isBaby()) { | ||
poseStack.scale(0.6f, 0.6f, 0.6f); | ||
} | ||
|
||
super.render(entity, entityYaw, partialTicks, poseStack, buffer, packedLight); | ||
} | ||
} |
54 changes: 54 additions & 0 deletions
54
src/main/java/com/nateplays/my_neoforge_mod/entity/custom/MosswineEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package com.nateplays.my_neoforge_mod.entity.custom; | ||
|
||
import com.nateplays.my_neoforge_mod.entity.ModEntities; | ||
import net.minecraft.server.level.ServerLevel; | ||
import net.minecraft.world.entity.AgeableMob; | ||
import net.minecraft.world.entity.EntityType; | ||
import net.minecraft.world.entity.Mob; | ||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier; | ||
import net.minecraft.world.entity.ai.attributes.Attributes; | ||
import net.minecraft.world.entity.ai.goal.BreedGoal; | ||
import net.minecraft.world.entity.ai.goal.FloatGoal; | ||
import net.minecraft.world.entity.ai.goal.TemptGoal; | ||
import net.minecraft.world.entity.animal.Animal; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraft.world.item.crafting.Ingredient; | ||
import net.minecraft.world.level.Level; | ||
import net.neoforged.neoforge.common.Tags; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
public class MosswineEntity extends Animal { | ||
|
||
|
||
public MosswineEntity(EntityType<? extends Animal> entityType, Level level) { | ||
super(entityType, level); | ||
} | ||
|
||
@Override | ||
protected void registerGoals() { | ||
this.goalSelector.addGoal(0, new FloatGoal(this)); | ||
|
||
this.goalSelector.addGoal(1, new BreedGoal(this, 1.2)); | ||
this.goalSelector.addGoal(1, new TemptGoal(this, 1.2, Ingredient.of(Tags.Items.MUSHROOMS), false)); | ||
} | ||
|
||
public static AttributeSupplier.Builder createAttributes() { | ||
return createMobAttributes() | ||
.add(Attributes.MAX_HEALTH, 10.0).add(Attributes.MOVEMENT_SPEED, 0.25); | ||
} | ||
|
||
/** | ||
* Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on the animal type) | ||
* | ||
* @param stack | ||
*/ | ||
@Override | ||
public boolean isFood(ItemStack stack) { | ||
return stack.is(Tags.Items.MUSHROOMS); | ||
} | ||
|
||
@Override | ||
public @Nullable AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { | ||
return ModEntities.MOSSWINE.get().create(level); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/main/java/com/nateplays/my_neoforge_mod/event/ModEventBusClientEvents.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.nateplays.my_neoforge_mod.event; | ||
|
||
import com.nateplays.my_neoforge_mod.MyNeoForgeMod; | ||
import com.nateplays.my_neoforge_mod.entity.client.ModModelLayers; | ||
import com.nateplays.my_neoforge_mod.entity.client.MosswineModel; | ||
import net.neoforged.bus.api.SubscribeEvent; | ||
import net.neoforged.fml.common.EventBusSubscriber; | ||
import net.neoforged.neoforge.client.event.EntityRenderersEvent; | ||
|
||
@EventBusSubscriber(modid = MyNeoForgeMod.MODID, bus = EventBusSubscriber.Bus.MOD) | ||
public class ModEventBusClientEvents { | ||
|
||
@SubscribeEvent | ||
public static void registerLayer(EntityRenderersEvent.RegisterLayerDefinitions event) { | ||
event.registerLayerDefinition(ModModelLayers.MOSSWINE_LAYER, MosswineModel::createBodyLayer); | ||
} | ||
} |
Binary file added
BIN
+1020 Bytes
src/main/resources/assets/my_neoforge_mod/textures/entity/mosswine.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.