Skip to content

Commit

Permalink
start setting up stuff for diving armor set model
Browse files Browse the repository at this point in the history
  • Loading branch information
Thepigcat76 committed Sep 13, 2024
1 parent 0e2ad51 commit 95288d2
Show file tree
Hide file tree
Showing 16 changed files with 193 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,55 +54,56 @@ public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packe
protected void setPartVisibility(EquipmentSlot slot) {
setAllVisible(false);
switch (slot) {
case HEAD:
case HEAD -> {
head.visible = true;
hat.visible = true;
break;
case CHEST:
}
case CHEST -> {
body.visible = true;
rightArm.visible = true;
leftArm.visible = true;
break;
case LEGS:
}
case LEGS -> {
body.visible = true;
rightLeg.visible = true;
leftLeg.visible = true;
break;
case FEET:
}
case FEET -> {
rightLeg.visible = true;
leftLeg.visible = true;
}
}
}

public record PartsDefinition(PartDefinition root) {

public PartDefinition getHat() {
return root().addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.ZERO);
}
return root().addOrReplaceChild("hat", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getHead() {
return root().addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO);
}
return root().addOrReplaceChild("head", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getBody() {
return root().addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO);
}
public PartDefinition getBody() {
return root().addOrReplaceChild("body", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getLeftArm() {
return root().addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO);
}
public PartDefinition getLeftArm() {
return root().addOrReplaceChild("left_arm", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getRightArm() {
return root().addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO);
}
return root().addOrReplaceChild("right_arm", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getLeftLeg() {
return root().addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO);
}
public PartDefinition getLeftLeg() {
return root().addOrReplaceChild("left_leg", CubeListBuilder.create(), PartPose.ZERO);
}

public PartDefinition getRightLeg() {
return root().addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO);
}

return root().addOrReplaceChild("right_leg", CubeListBuilder.create(), PartPose.ZERO);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.portingdeadmods.modjam.client.model.PrismarineCrystalModel;
import com.portingdeadmods.modjam.client.model.block.PrismarineCrystalModel;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.geom.EntityModelSet;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.portingdeadmods.modjam.client.model.armor;

import com.portingdeadmods.modjam.api.client.model.MJArmorModel;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.*;

public class DivingArmorModel {
public static LayerDefinition createBodyLayer() {
return MJArmorModel.createLayer(1, 1, parts -> {
parts.getHead().addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(-21, -14).addBox(-8.0F, -2.0F, -8.0F, 16.0F, 2.0F, 16.0F, new CubeDeformation(0.0F))
.texOffs(-12, -8).addBox(-5.0F, -4.0F, -5.0F, 10.0F, 2.0F, 10.0F, new CubeDeformation(0.0F))
.texOffs(-18, -12).addBox(-7.0F, -16.0F, -7.0F, 14.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F));
});
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.portingdeadmods.modjam.client.model;
package com.portingdeadmods.modjam.client.model.block;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.portingdeadmods.modjam.client.model;
package com.portingdeadmods.modjam.client.model.block;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.portingdeadmods.modjam.client.model;
package com.portingdeadmods.modjam.client.model.block;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis;
import com.portingdeadmods.modjam.api.multiblocks.Multiblock;
import com.portingdeadmods.modjam.client.model.DrainTopModel;
import com.portingdeadmods.modjam.client.model.block.DrainTopModel;
import com.portingdeadmods.modjam.content.blockentities.multiblock.controller.DrainBlockEntity;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.mojang.math.Axis;
import com.portingdeadmods.modjam.api.client.renderer.blockentities.LaserBlockEntityRenderer;
import com.portingdeadmods.modjam.api.utils.HorizontalDirection;
import com.portingdeadmods.modjam.client.model.WhiskModel;
import com.portingdeadmods.modjam.client.model.block.WhiskModel;
import com.portingdeadmods.modjam.content.blockentities.MixerBlockEntity;
import com.portingdeadmods.modjam.content.blocks.MixerBlock;
import net.minecraft.client.Minecraft;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.portingdeadmods.modjam.api.client.renderer.blockentities.LaserBlockEntityRenderer;
import com.portingdeadmods.modjam.client.model.PrismarineCrystalModel;
import com.portingdeadmods.modjam.client.model.block.PrismarineCrystalModel;
import com.portingdeadmods.modjam.content.blockentities.PrismarineCrystalBlockEntity;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.client.renderer.MultiBufferSource;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.portingdeadmods.modjam.content.items;

import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.EquipmentSlotGroup;
import net.minecraft.world.entity.LivingEntity;
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.*;
import net.minecraft.world.item.component.ItemAttributeModifiers;
import net.minecraft.world.item.component.Tool;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;

import java.util.List;

public class NeptunesTridentItem extends Item {
public NeptunesTridentItem(Properties properties) {
super(properties);
}

public static ItemAttributeModifiers createAttributes() {
return ItemAttributeModifiers.builder()
.add(
Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_ID, 15, AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND
)
.add(
Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_ID, -2.8F, AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND
)
.build();
}

public static Tool createToolProperties() {
return new Tool(List.of(), 1.0F, 2);
}

@Override
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand hand) {
ItemStack itemstack = player.getItemInHand(hand);
player.startUsingItem(hand);
return InteractionResultHolder.consume(itemstack);
}

@Override
public boolean canAttackBlock(BlockState state, Level level, BlockPos pos, Player player) {
return !player.isCreative();
}

@Override
public UseAnim getUseAnimation(ItemStack stack) {
return UseAnim.SPEAR;
}

@Override
public int getUseDuration(ItemStack stack, LivingEntity entity) {
return 72000;
}

@Override
public boolean canPerformAction(ItemStack stack, net.neoforged.neoforge.common.ItemAbility itemAbility) {
return net.neoforged.neoforge.common.ItemAbilities.DEFAULT_TRIDENT_ACTIONS.contains(itemAbility);
}

@Override
public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
return true;
}

@Override
public void postHurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
stack.hurtAndBreak(1, attacker, EquipmentSlot.MAINHAND);
}

@Override
public int getEnchantmentValue() {
return 1;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import com.portingdeadmods.modjam.api.client.renderer.items.PrismarineCrystalItemRenderer;
import com.portingdeadmods.modjam.api.fluids.BaseFluidType;
import com.portingdeadmods.modjam.client.hud.PrismMonocleOverlay;
import com.portingdeadmods.modjam.client.model.DrainTopModel;
import com.portingdeadmods.modjam.client.model.PrismarineCrystalModel;
import com.portingdeadmods.modjam.client.model.WhiskModel;
import com.portingdeadmods.modjam.client.model.block.DrainTopModel;
import com.portingdeadmods.modjam.client.model.block.PrismarineCrystalModel;
import com.portingdeadmods.modjam.client.model.block.WhiskModel;
import com.portingdeadmods.modjam.client.renderer.blockentities.DrainBERenderer;
import com.portingdeadmods.modjam.client.renderer.blockentities.MixerBERenderer;
import com.portingdeadmods.modjam.client.renderer.blockentities.PrismarineCrystalBERenderer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.portingdeadmods.modjam.exampleCustom3DArmor;

import com.portingdeadmods.modjam.ModJam;
import com.portingdeadmods.modjam.registries.MJItems;
import com.portingdeadmods.modjam.utils.ArmorModelsHandler;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.world.entity.EquipmentSlot;
Expand All @@ -11,28 +12,28 @@
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
import org.jetbrains.annotations.NotNull;

@EventBusSubscriber(modid = ModJam.MODID,value = Dist.CLIENT,bus = EventBusSubscriber.Bus.MOD)
public class ExampleClientEvents {

@SubscribeEvent
public static void registerClientExtensions(RegisterClientExtensionsEvent event) {
event.registerItem(new IClientItemExtensions() {

@Override
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack
public @NotNull HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack
itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
return ArmorModelsHandler.armorModel(ArmorModelsHandler.test, equipmentSlot);
}
}, ExampleItems.TEST);
}, ExampleItems.TEST, ExampleItems.TEST_CHEST);

event.registerItem(new IClientItemExtensions() {

@Override
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack
public @NotNull HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack
itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
return ArmorModelsHandler.armorModel(ArmorModelsHandler.test, equipmentSlot);
return ArmorModelsHandler.armorModel(ArmorModelsHandler.divingSuit, equipmentSlot);
}
}, ExampleItems.TEST_CHEST);
}, MJItems.DIVING_HELMET, MJItems.DIVING_CHESTPLATE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import com.portingdeadmods.modjam.ModJam;
import com.portingdeadmods.modjam.content.items.AquarineWrenchItem;
import com.portingdeadmods.modjam.content.items.DivingSuitArmorItem;
import com.portingdeadmods.modjam.content.items.NeptunesTridentItem;
import com.portingdeadmods.modjam.content.items.PrismMonocleItem;
import com.portingdeadmods.modjam.data.MJDataComponents;
import net.minecraft.core.component.DataComponents;
import net.minecraft.world.item.*;
import net.minecraft.world.level.ItemLike;
import net.neoforged.neoforge.registries.DeferredItem;
Expand Down Expand Up @@ -61,8 +63,10 @@ public final class MJItems {
public static final DeferredItem<DivingSuitArmorItem> DIVING_BOOTS = registerItem("diving_boots",() -> new DivingSuitArmorItem(ArmorMaterials.LEATHER, ArmorItem.Type.BOOTS, new Item.Properties()));

// TOOLS 'N WEAPONS
public static final DeferredItem<Item> NEPTUNES_TRIDENT = registerItem("neptunes_trident",
Item::new, new Item.Properties());
public static final DeferredItem<NeptunesTridentItem> NEPTUNES_TRIDENT = registerItem("neptunes_trident",
NeptunesTridentItem::new, new Item.Properties()
.attributes(NeptunesTridentItem.createAttributes())
.component(DataComponents.TOOL, NeptunesTridentItem.createToolProperties()));

// BUCKETS
public static final DeferredItem<BucketItem> SALT_WATER_BUCKET = registerItemBucket("salt_water_bucket",
Expand Down
Loading

0 comments on commit 95288d2

Please sign in to comment.