diff --git a/src/main/java/blue/endless/scarves/ScarfStaplerBlock.java b/src/main/java/blue/endless/scarves/ScarfStaplerBlock.java index 8fa7ada..6a6abb0 100644 --- a/src/main/java/blue/endless/scarves/ScarfStaplerBlock.java +++ b/src/main/java/blue/endless/scarves/ScarfStaplerBlock.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; +import net.minecraft.item.Wearable; import net.minecraft.screen.ScreenHandler; import net.minecraft.state.StateManager.Builder; import net.minecraft.state.property.DirectionProperty; @@ -30,7 +31,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class ScarfStaplerBlock extends BlockWithEntity { +public class ScarfStaplerBlock extends BlockWithEntity implements Wearable { public static final String ID = "scarf_stapler"; public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; private static final float PX = 1/16f; @@ -111,4 +112,6 @@ protected void appendProperties(Builder builder) { public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { return SHAPE; } + + } diff --git a/src/main/java/blue/endless/scarves/api/ScarfLogic.java b/src/main/java/blue/endless/scarves/api/ScarfLogic.java new file mode 100644 index 0000000..414178c --- /dev/null +++ b/src/main/java/blue/endless/scarves/api/ScarfLogic.java @@ -0,0 +1,62 @@ +package blue.endless.scarves.api; + +import java.util.List; + +import blue.endless.scarves.client.ScarfAttachment; +import blue.endless.scarves.client.ScarfNode; +import blue.endless.scarves.client.ScarvesClient; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NbtList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class ScarfLogic { + + /** + * Updates the ScarfAttachment with new scarf data and applies gravity. Should be called each tick by an IScarfHaver. + */ + public static void updateScarfAttachment(ScarfAttachment attachment, World world, Entity entity, Vec3d anchorPosition, NbtList data) { + List nodes = attachment.nodes(); + while(nodes.size()>data.size()) nodes.remove(nodes.size()-1); + + Vec3d lastPos = anchorPosition; + for(int i=0; i nodes = attachment.nodes(); + + for(int i=0; i nodes = attachment.nodes(); - while(nodes.size()>data.size()) nodes.remove(nodes.size()-1); - - Vec3d lastPos = this.getPos(); - for(int i=0; i ci) { + if (stack.isOf(ScarvesItems.SCARF_STAPLER)) ci.setReturnValue(EquipmentSlot.HEAD); + + return null; + } +} diff --git a/src/main/resources/assets/scarves/models/block/scarf_stapler.json b/src/main/resources/assets/scarves/models/block/scarf_stapler.json index 0c9d2fa..c480c14 100644 --- a/src/main/resources/assets/scarves/models/block/scarf_stapler.json +++ b/src/main/resources/assets/scarves/models/block/scarf_stapler.json @@ -1,6 +1,7 @@ { "textures": { - "1": "scarves:block/scarf_stapler_body" + "1": "scarves:block/scarf_stapler_body", + "particle": "scarves:block/scarf_stapler_body" }, "elements": [ { @@ -78,6 +79,42 @@ } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 1.75, 0], + "scale": [1.37, 1.37, 1.37] + }, + "fixed": { + "translation": [0, 0, -2], + "scale": [0.75, 0.75, 0.75] + } + }, "groups": [ 0, 1, diff --git a/src/main/resources/scarves.mixins.json b/src/main/resources/scarves.mixins.json index ad62714..aa2747a 100644 --- a/src/main/resources/scarves.mixins.json +++ b/src/main/resources/scarves.mixins.json @@ -4,6 +4,7 @@ "package": "blue.endless.scarves.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "EntityEquipmentMixin" ], "client": [ "ClientPlayerEntityMixin"