├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE.md └── logo.png ├── .gitignore ├── Jenkinsfile ├── LICENSE ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── project.gradle ├── settings.gradle ├── src └── main │ ├── java │ └── com │ │ └── tridevmc │ │ └── architecture │ │ ├── client │ │ ├── debug │ │ │ ├── ArchitectureDebugEventListeners.java │ │ │ └── ArchitectureDebugRenderTypes.java │ │ ├── extensions │ │ │ └── IArchitectureClientItemExtensions.java │ │ ├── package-info.java │ │ ├── proxy │ │ │ └── ClientProxy.java │ │ ├── render │ │ │ ├── model │ │ │ │ ├── baked │ │ │ │ │ ├── BakedQuadContainer.java │ │ │ │ │ ├── BakedQuadContainerProvider.java │ │ │ │ │ ├── BakedQuadContainerProviderCached.java │ │ │ │ │ ├── BakedQuadContainerProviderMesh.java │ │ │ │ │ ├── BakedQuadContainerProviderMeshCached.java │ │ │ │ │ ├── IArchitectureBakedModel.java │ │ │ │ │ ├── IBakedQuadContainer.java │ │ │ │ │ ├── IBakedQuadContainerProvider.java │ │ │ │ │ ├── IModelResolverBaked.java │ │ │ │ │ └── IMultipartBakedQuadContainerProvider.java │ │ │ │ ├── builder │ │ │ │ │ └── QuadPointDumper.java │ │ │ │ ├── geometry │ │ │ │ │ ├── ArchitectureShapeUnbakedModelLoader.java │ │ │ │ │ ├── ArchitectureUnbakedModel.java │ │ │ │ │ ├── ArchitectureUnbakedModelLoader.java │ │ │ │ │ └── IArchitectureBakedModelSupplier.java │ │ │ │ ├── impl │ │ │ │ │ ├── BakedModelSawbench.java │ │ │ │ │ ├── BakedModelShapeGeneric.java │ │ │ │ │ ├── ModelResolverSawbench.java │ │ │ │ │ ├── ModelResolverShapeGeneric.java │ │ │ │ │ ├── SpecialSawbenchModelRenderer.java │ │ │ │ │ └── SpecialShapeModelRenderer.java │ │ │ │ ├── piped │ │ │ │ │ ├── IPipedBakedQuad.java │ │ │ │ │ ├── IPipedVertex.java │ │ │ │ │ ├── ITransformable.java │ │ │ │ │ ├── PipedBakedQuad.java │ │ │ │ │ ├── PipedBakedQuadTransformable.java │ │ │ │ │ ├── PipedVertex.java │ │ │ │ │ └── PipedVertexTransformable.java │ │ │ │ └── resolver │ │ │ │ │ ├── IModelResolver.java │ │ │ │ │ ├── IQuadMetadataResolver.java │ │ │ │ │ └── functional │ │ │ │ │ ├── FunctionalQuadMetadataResolver.java │ │ │ │ │ ├── IQuadMetadataTextureResolver.java │ │ │ │ │ ├── IQuadMetadataTextureResolverWithBlockContext.java │ │ │ │ │ ├── IQuadMetadataTextureResolverWithItemStackContext.java │ │ │ │ │ ├── IQuadMetadataTintIndexResolver.java │ │ │ │ │ ├── IQuadMetadataTintIndexResolverWithBlockContext.java │ │ │ │ │ └── IQuadMetadataTintIndexResolverWithItemStackContext.java │ │ │ ├── shape │ │ │ │ ├── RenderCladding.java │ │ │ │ ├── RenderRoof.java │ │ │ │ └── RenderWindow.java │ │ │ └── texture │ │ │ │ ├── ITexture.java │ │ │ │ ├── ITiledTexture.java │ │ │ │ └── TextureBase.java │ │ └── ui │ │ │ └── UISawbench.java │ │ ├── common │ │ ├── ArchitectureContent.java │ │ ├── ArchitectureMod.java │ │ ├── block │ │ │ ├── BlockArchitecture.java │ │ │ ├── BlockSawbench.java │ │ │ ├── BlockShape.java │ │ │ ├── container │ │ │ │ └── ContainerSawbench.java │ │ │ ├── entity │ │ │ │ ├── AdvancedItemStackHandler.java │ │ │ │ ├── BlockEntityArchitecture.java │ │ │ │ └── BlockEntityShape.java │ │ │ └── state │ │ │ │ ├── BlockStateArchitecture.java │ │ │ │ └── BlockStateShape.java │ │ ├── helpers │ │ │ ├── Profile.java │ │ │ └── Utils.java │ │ ├── item │ │ │ ├── ItemArchitecture.java │ │ │ ├── ItemBlockArchitecture.java │ │ │ ├── ItemChisel.java │ │ │ ├── ItemCladding.java │ │ │ ├── ItemHammer.java │ │ │ ├── ItemShape.java │ │ │ └── component │ │ │ │ └── ComponentMaterial.java │ │ ├── model │ │ │ └── ModelProperties.java │ │ ├── package-info.java │ │ ├── proxy │ │ │ └── CommonProxy.java │ │ ├── shape │ │ │ ├── EnumShape.java │ │ │ ├── ShapeMeshes.java │ │ │ ├── orientation │ │ │ │ ├── EnumConnectionState.java │ │ │ │ ├── EnumFlip.java │ │ │ │ ├── EnumPlacementOffset.java │ │ │ │ ├── EnumRelativeDirection.java │ │ │ │ ├── EnumSpin.java │ │ │ │ ├── EnumTurn.java │ │ │ │ ├── ShapeOrientation.java │ │ │ │ ├── ShapeOrientationProperty.java │ │ │ │ ├── ShapeOrientationPropertyAxis.java │ │ │ │ ├── ShapeOrientationPropertyConnection.java │ │ │ │ ├── ShapeOrientationPropertyFacing.java │ │ │ │ ├── ShapeOrientationPropertyFlip.java │ │ │ │ ├── ShapeOrientationPropertyOffset.java │ │ │ │ ├── ShapeOrientationPropertyRelativeConnection.java │ │ │ │ ├── ShapeOrientationPropertySpin.java │ │ │ │ └── ShapeOrientationPropertyTurn.java │ │ │ ├── placement │ │ │ │ ├── EnumBlockFaceSection.java │ │ │ │ ├── IShapePlacementLogic.java │ │ │ │ ├── ShapePlacementLogicFacingWithFlip.java │ │ │ │ ├── ShapePlacementLogicFacingWithFlipAndTurn.java │ │ │ │ ├── ShapePlacementLogicOnAxis.java │ │ │ │ ├── ShapePlacementLogicPointedByNearestFacing.java │ │ │ │ ├── ShapePlacementLogicPointedByPlacedFace.java │ │ │ │ ├── ShapePlacementLogicSlab.java │ │ │ │ ├── ShapePlacementLogicStairLike.java │ │ │ │ ├── ShapePlacementLogicStairLikeWithFlip.java │ │ │ │ ├── ShapePlacementLogicStatic.java │ │ │ │ ├── ShapePlacementLogicWindow.java │ │ │ │ ├── ShapePlacementLogicWindowCorner.java │ │ │ │ └── ShapePlacementLogicWindowFrame.java │ │ │ ├── rule │ │ │ │ └── INeighbourConnectionRule.java │ │ │ └── transformation │ │ │ │ ├── IShapeTransformationResolver.java │ │ │ │ ├── ShapeOrientationResolverIdentity.java │ │ │ │ ├── ShapeTransformationResolverFacingWithFlip.java │ │ │ │ ├── ShapeTransformationResolverFacingWithFlipAndTurn.java │ │ │ │ ├── ShapeTransformationResolverOnAxis.java │ │ │ │ ├── ShapeTransformationResolverPointed.java │ │ │ │ ├── ShapeTransformationResolverPointedWithSpin.java │ │ │ │ └── ShapeTransformationResolverSlab.java │ │ ├── ui │ │ │ ├── ArchitectureUIHooks.java │ │ │ ├── CreateMenuContext.java │ │ │ └── IElementProvider.java │ │ └── utils │ │ │ ├── DumbBlockReader.java │ │ │ ├── IModHolder.java │ │ │ └── MiscUtils.java │ │ ├── core │ │ ├── ArchitectureLog.java │ │ ├── math │ │ │ ├── IMatrix4.java │ │ │ ├── IMatrix4Immutable.java │ │ │ ├── IMatrix4Mutable.java │ │ │ ├── ITrans3.java │ │ │ ├── ITrans3Immutable.java │ │ │ ├── ITrans3Mutable.java │ │ │ ├── IVector2.java │ │ │ ├── IVector2Immutable.java │ │ │ ├── IVector2Mutable.java │ │ │ ├── IVector3.java │ │ │ ├── IVector3Immutable.java │ │ │ ├── IVector3Mutable.java │ │ │ ├── Matrix4.java │ │ │ ├── Trans3.java │ │ │ ├── Vector2.java │ │ │ ├── Vector3.java │ │ │ ├── floating │ │ │ │ ├── IVector2F.java │ │ │ │ ├── IVector2FImmutable.java │ │ │ │ ├── IVector2FMutable.java │ │ │ │ ├── IVector3F.java │ │ │ │ ├── IVector3FImmutable.java │ │ │ │ ├── IVector3FMutable.java │ │ │ │ ├── Vector2F.java │ │ │ │ └── Vector3F.java │ │ │ └── integer │ │ │ │ ├── IVector3i.java │ │ │ │ ├── IVector3iImmutable.java │ │ │ │ ├── IVector3iMutable.java │ │ │ │ └── Vector3i.java │ │ ├── model │ │ │ ├── mesh │ │ │ │ ├── CullFace.java │ │ │ │ ├── Face.java │ │ │ │ ├── FaceDirection.java │ │ │ │ ├── IFace.java │ │ │ │ ├── IMesh.java │ │ │ │ ├── IPart.java │ │ │ │ ├── IPolygon.java │ │ │ │ ├── IPolygonData.java │ │ │ │ ├── IPolygonProvider.java │ │ │ │ ├── IRawPolygonPayload.java │ │ │ │ ├── IVertex.java │ │ │ │ ├── Mesh.java │ │ │ │ ├── MeshHelper.java │ │ │ │ ├── Part.java │ │ │ │ ├── PolygonData.java │ │ │ │ ├── Quad.java │ │ │ │ ├── RawPolygonPayload.java │ │ │ │ ├── Tri.java │ │ │ │ └── Vertex.java │ │ │ ├── objson │ │ │ │ ├── OBJSON.java │ │ │ │ └── OBJSONData.java │ │ │ └── voxelize │ │ │ │ ├── IVoxelizer.java │ │ │ │ ├── Voxelizer.java │ │ │ │ ├── VoxelizerRecord.java │ │ │ │ └── Voxelizers.java │ │ ├── package-info.java │ │ ├── physics │ │ │ ├── AABB.java │ │ │ ├── AABBTree.java │ │ │ ├── IAABBTree.java │ │ │ ├── PhysicsHelper.java │ │ │ └── Ray.java │ │ └── utils │ │ │ └── ExtremeUtils.java │ │ └── legacy │ │ ├── client │ │ └── render │ │ │ └── model │ │ │ ├── LegacyIArchitectureModel.java │ │ │ ├── baked │ │ │ └── LegacyTexturableBakedQuad.java │ │ │ ├── data │ │ │ ├── LegacyArchitectureModelData.java │ │ │ ├── LegacyArchitectureModelDataQuads.java │ │ │ ├── LegacyArchitectureQuad.java │ │ │ ├── LegacyArchitectureTri.java │ │ │ ├── LegacyArchitectureVertex.java │ │ │ ├── LegacyAutoUVArchitectureVertex.java │ │ │ └── LegacyBakedQuadProvider.java │ │ │ └── objson │ │ │ ├── LegacyOBJSON.java │ │ │ ├── LegacyOBJSONModel.java │ │ │ ├── LegacyOBJSONQuadMetadata.java │ │ │ ├── LegacyOBJSONQuadMetadataResolver.java │ │ │ └── LegacyOBJSONVoxelizer.java │ │ ├── common │ │ ├── block │ │ │ └── LegacyBlockHelper.java │ │ ├── shape │ │ │ ├── LegacyEnumShape.java │ │ │ ├── LegacyEnumShapeCategory.java │ │ │ ├── LegacyShapeFlags.java │ │ │ ├── LegacyShapeGroup.java │ │ │ ├── LegacyShapePage.java │ │ │ ├── LegacyShapeSymmetry.java │ │ │ └── behaviour │ │ │ │ ├── LegacyShapeBehaviour.java │ │ │ │ ├── LegacyShapeBehaviourBanister.java │ │ │ │ ├── LegacyShapeBehaviourCornerWindow.java │ │ │ │ ├── LegacyShapeBehaviourModel.java │ │ │ │ ├── LegacyShapeBehaviourMullionWindow.java │ │ │ │ ├── LegacyShapeBehaviourPlainWindow.java │ │ │ │ ├── LegacyShapeBehaviourRoof.java │ │ │ │ └── LegacyShapeBehaviourWindow.java │ │ └── utils │ │ │ └── LegacyAABBTree.java │ │ ├── math │ │ ├── LegacyMatrix3.java │ │ ├── LegacyTrans3.java │ │ ├── LegacyVector3.java │ │ └── LegacyVector3i.java │ │ └── package-info.java │ └── resources │ ├── META-INF │ └── neoforge.mods.toml │ ├── assets │ └── architecturecraft │ │ ├── blockstates │ │ ├── sawbench.json │ │ ├── shape_anticylinder_large_quarter.json │ │ ├── shape_arch_d1.json │ │ ├── shape_arch_d2.json │ │ ├── shape_arch_d3a.json │ │ ├── shape_arch_d3b.json │ │ ├── shape_arch_d3c.json │ │ ├── shape_arch_d4a.json │ │ ├── shape_arch_d4b.json │ │ ├── shape_arch_d4c.json │ │ ├── shape_architrave.json │ │ ├── shape_architrave_corner.json │ │ ├── shape_balustrade_fancy.json │ │ ├── shape_balustrade_fancy_corner.json │ │ ├── shape_balustrade_fancy_newel.json │ │ ├── shape_balustrade_fancy_with_newel.json │ │ ├── shape_balustrade_plain.json │ │ ├── shape_balustrade_plain_end.json │ │ ├── shape_balustrade_plain_inner_corner.json │ │ ├── shape_balustrade_plain_outer_corner.json │ │ ├── shape_balustrade_plain_with_newel.json │ │ ├── shape_balustrade_stair_plain.json │ │ ├── shape_balustrade_stair_plain_bottom.json │ │ ├── shape_balustrade_stair_plain_end.json │ │ ├── shape_balustrade_stair_plain_top.json │ │ ├── shape_banister_fancy_bottom.json │ │ ├── shape_banister_fancy_end.json │ │ ├── shape_banister_fancy_newel_tall.json │ │ ├── shape_banister_fancy_top.json │ │ ├── shape_banister_plain.json │ │ ├── shape_banister_plain_bottom.json │ │ ├── shape_banister_plain_end.json │ │ ├── shape_banister_plain_inner_corner.json │ │ ├── shape_banister_plain_top.json │ │ ├── shape_bevelled_inner_corner.json │ │ ├── shape_bevelled_outer_corner.json │ │ ├── shape_cladding_sheet.json │ │ ├── shape_corinthian_capital.json │ │ ├── shape_cornice_bottom.json │ │ ├── shape_cornice_end_lh.json │ │ ├── shape_cornice_end_rh.json │ │ ├── shape_cornice_lh.json │ │ ├── shape_cornice_rh.json │ │ ├── shape_cornice_ridge.json │ │ ├── shape_cornice_valley.json │ │ ├── shape_cylinder.json │ │ ├── shape_cylinder_full_r8h16.json │ │ ├── shape_cylinder_half.json │ │ ├── shape_cylinder_half_r8h16.json │ │ ├── shape_cylinder_large_quarter.json │ │ ├── shape_cylinder_quarter.json │ │ ├── shape_cylinder_quarter_r16h16.json │ │ ├── shape_cylinder_quarter_r8h16.json │ │ ├── shape_cylinder_r2h16.json │ │ ├── shape_cylinder_r4h16.json │ │ ├── shape_cylinder_r6h16.json │ │ ├── shape_doric_capital.json │ │ ├── shape_doric_metope.json │ │ ├── shape_doric_triglyph.json │ │ ├── shape_doric_triglyph_corner.json │ │ ├── shape_ionic_capital.json │ │ ├── shape_pillar.json │ │ ├── shape_pillar_base.json │ │ ├── shape_pole.json │ │ ├── shape_post.json │ │ ├── shape_roof_inner_corner.json │ │ ├── shape_roof_outer_corner.json │ │ ├── shape_roof_overhang.json │ │ ├── shape_roof_overhang_gable_end_lh.json │ │ ├── shape_roof_overhang_gable_end_rh.json │ │ ├── shape_roof_overhang_gable_lh.json │ │ ├── shape_roof_overhang_gable_rh.json │ │ ├── shape_roof_overhang_gable_ridge.json │ │ ├── shape_roof_overhang_gable_valley.json │ │ ├── shape_roof_overhang_inner_corner.json │ │ ├── shape_roof_overhang_outer_corner.json │ │ ├── shape_roof_overhang_ridge.json │ │ ├── shape_roof_overhang_valley.json │ │ ├── shape_roof_ridge.json │ │ ├── shape_roof_smart_ridge.json │ │ ├── shape_roof_smart_valley.json │ │ ├── shape_roof_tile.json │ │ ├── shape_roof_valley.json │ │ ├── shape_round_inner_corner.json │ │ ├── shape_slab.json │ │ ├── shape_sphere_eighth.json │ │ ├── shape_sphere_eighth_large.json │ │ ├── shape_sphere_eighth_large_rev.json │ │ ├── shape_sphere_eighth_r16.json │ │ ├── shape_sphere_eighth_r16_rev.json │ │ ├── shape_sphere_eighth_r8.json │ │ ├── shape_sphere_full.json │ │ ├── shape_sphere_full_r8.json │ │ ├── shape_sphere_half.json │ │ ├── shape_sphere_half_r8.json │ │ ├── shape_sphere_quarter.json │ │ ├── shape_sphere_quarter_r8.json │ │ ├── shape_stairs.json │ │ ├── shape_stairs_inner_corner.json │ │ ├── shape_stairs_outer_corner.json │ │ ├── shape_stairs_smart.json │ │ ├── shape_window_corner.json │ │ ├── shape_window_frame.json │ │ └── shape_window_mullion.json │ │ ├── gen_items.py │ │ ├── items │ │ ├── sawbench.json │ │ ├── shape_anticylinder_large_quarter.json │ │ ├── shape_arch_d1.json │ │ ├── shape_arch_d2.json │ │ ├── shape_arch_d3a.json │ │ ├── shape_arch_d3b.json │ │ ├── shape_arch_d3c.json │ │ ├── shape_arch_d4a.json │ │ ├── shape_arch_d4b.json │ │ ├── shape_arch_d4c.json │ │ ├── shape_architrave.json │ │ ├── shape_architrave_corner.json │ │ ├── shape_balustrade_fancy.json │ │ ├── shape_balustrade_fancy_corner.json │ │ ├── shape_balustrade_fancy_newel.json │ │ ├── shape_balustrade_fancy_with_newel.json │ │ ├── shape_balustrade_plain.json │ │ ├── shape_balustrade_plain_end.json │ │ ├── shape_balustrade_plain_inner_corner.json │ │ ├── shape_balustrade_plain_outer_corner.json │ │ ├── shape_balustrade_plain_with_newel.json │ │ ├── shape_banister_fancy.json │ │ ├── shape_banister_fancy_bottom.json │ │ ├── shape_banister_fancy_end.json │ │ ├── shape_banister_fancy_newel_tall.json │ │ ├── shape_banister_fancy_top.json │ │ ├── shape_banister_plain.json │ │ ├── shape_banister_plain_bottom.json │ │ ├── shape_banister_plain_end.json │ │ ├── shape_banister_plain_inner_corner.json │ │ ├── shape_banister_plain_top.json │ │ ├── shape_bevelled_inner_corner.json │ │ ├── shape_bevelled_outer_corner.json │ │ ├── shape_cladding_sheet.json │ │ ├── shape_corinthian_capital.json │ │ ├── shape_cornice_bottom.json │ │ ├── shape_cornice_end_lh.json │ │ ├── shape_cornice_end_rh.json │ │ ├── shape_cornice_lh.json │ │ ├── shape_cornice_rh.json │ │ ├── shape_cornice_ridge.json │ │ ├── shape_cornice_valley.json │ │ ├── shape_cylinder.json │ │ ├── shape_cylinder_half.json │ │ ├── shape_cylinder_large_quarter.json │ │ ├── shape_cylinder_quarter.json │ │ ├── shape_doric_capital.json │ │ ├── shape_doric_metope.json │ │ ├── shape_doric_triglyph.json │ │ ├── shape_doric_triglyph_corner.json │ │ ├── shape_ionic_capital.json │ │ ├── shape_pillar.json │ │ ├── shape_pillar_base.json │ │ ├── shape_pole.json │ │ ├── shape_post.json │ │ ├── shape_roof_inner_corner.json │ │ ├── shape_roof_outer_corner.json │ │ ├── shape_roof_overhang.json │ │ ├── shape_roof_overhang_gable_end_lh.json │ │ ├── shape_roof_overhang_gable_end_rh.json │ │ ├── shape_roof_overhang_gable_lh.json │ │ ├── shape_roof_overhang_gable_rh.json │ │ ├── shape_roof_overhang_inner_corner.json │ │ ├── shape_roof_overhang_outer_corner.json │ │ ├── shape_roof_overhang_ridge.json │ │ ├── shape_roof_overhang_valley.json │ │ ├── shape_roof_ridge.json │ │ ├── shape_roof_smart_ridge.json │ │ ├── shape_roof_smart_valley.json │ │ ├── shape_roof_tile.json │ │ ├── shape_roof_valley.json │ │ ├── shape_slab.json │ │ ├── shape_sphere_eighth.json │ │ ├── shape_sphere_eighth_large.json │ │ ├── shape_sphere_eighth_large_rev.json │ │ ├── shape_sphere_full.json │ │ ├── shape_sphere_half.json │ │ ├── shape_sphere_quarter.json │ │ ├── shape_stairs.json │ │ ├── shape_stairs_inner_corner.json │ │ ├── shape_stairs_outer_corner.json │ │ ├── shape_stairs_smart.json │ │ ├── shape_window_corner.json │ │ ├── shape_window_frame.json │ │ ├── shape_window_mullion.json │ │ ├── shape_window_mullion_smart.json │ │ └── shape_window_smart.json │ │ ├── lang │ │ ├── en_US.json │ │ ├── fr_FR.json │ │ ├── ko_kr.json │ │ └── ru_RU.json │ │ ├── models │ │ ├── block │ │ │ ├── cladding.json │ │ │ ├── sawbench.json │ │ │ ├── shape_anticylinder_large_quarter.json │ │ │ ├── shape_arch_d1.json │ │ │ ├── shape_arch_d2.json │ │ │ ├── shape_arch_d3a.json │ │ │ ├── shape_arch_d3b.json │ │ │ ├── shape_arch_d3c.json │ │ │ ├── shape_arch_d4a.json │ │ │ ├── shape_arch_d4b.json │ │ │ ├── shape_arch_d4c.json │ │ │ ├── shape_architrave.json │ │ │ ├── shape_architrave_corner.json │ │ │ ├── shape_balustrade_fancy.json │ │ │ ├── shape_balustrade_fancy_corner.json │ │ │ ├── shape_balustrade_fancy_newel.json │ │ │ ├── shape_balustrade_fancy_with_newel.json │ │ │ ├── shape_balustrade_plain.json │ │ │ ├── shape_balustrade_plain_end.json │ │ │ ├── shape_balustrade_plain_inner_corner.json │ │ │ ├── shape_balustrade_plain_outer_corner.json │ │ │ ├── shape_balustrade_plain_with_newel.json │ │ │ ├── shape_banister_fancy.json │ │ │ ├── shape_banister_fancy_bottom.json │ │ │ ├── shape_banister_fancy_end.json │ │ │ ├── shape_banister_fancy_newel_tall.json │ │ │ ├── shape_banister_fancy_top.json │ │ │ ├── shape_banister_plain.json │ │ │ ├── shape_banister_plain_bottom.json │ │ │ ├── shape_banister_plain_end.json │ │ │ ├── shape_banister_plain_inner_corner.json │ │ │ ├── shape_banister_plain_top.json │ │ │ ├── shape_bevelled_inner_corner.json │ │ │ ├── shape_bevelled_outer_corner.json │ │ │ ├── shape_cladding_sheet.json │ │ │ ├── shape_corinthian_capital.json │ │ │ ├── shape_cornice_bottom.json │ │ │ ├── shape_cornice_end_lh.json │ │ │ ├── shape_cornice_end_rh.json │ │ │ ├── shape_cornice_lh.json │ │ │ ├── shape_cornice_rh.json │ │ │ ├── shape_cornice_ridge.json │ │ │ ├── shape_cornice_valley.json │ │ │ ├── shape_cylinder.json │ │ │ ├── shape_cylinder_half.json │ │ │ ├── shape_cylinder_large_quarter.json │ │ │ ├── shape_cylinder_quarter.json │ │ │ ├── shape_doric_capital.json │ │ │ ├── shape_doric_metope.json │ │ │ ├── shape_doric_triglyph.json │ │ │ ├── shape_doric_triglyph_corner.json │ │ │ ├── shape_ionic_capital.json │ │ │ ├── shape_pillar.json │ │ │ ├── shape_pillar_base.json │ │ │ ├── shape_pole.json │ │ │ ├── shape_post.json │ │ │ ├── shape_roof_inner_corner.json │ │ │ ├── shape_roof_outer_corner.json │ │ │ ├── shape_roof_overhang.json │ │ │ ├── shape_roof_overhang_gable_end_lh.json │ │ │ ├── shape_roof_overhang_gable_end_rh.json │ │ │ ├── shape_roof_overhang_gable_lh.json │ │ │ ├── shape_roof_overhang_gable_rh.json │ │ │ ├── shape_roof_overhang_inner_corner.json │ │ │ ├── shape_roof_overhang_outer_corner.json │ │ │ ├── shape_roof_overhang_ridge.json │ │ │ ├── shape_roof_overhang_valley.json │ │ │ ├── shape_roof_ridge.json │ │ │ ├── shape_roof_smart_ridge.json │ │ │ ├── shape_roof_smart_valley.json │ │ │ ├── shape_roof_tile.json │ │ │ ├── shape_roof_valley.json │ │ │ ├── shape_slab.json │ │ │ ├── shape_sphere_eighth.json │ │ │ ├── shape_sphere_eighth_large.json │ │ │ ├── shape_sphere_eighth_large_rev.json │ │ │ ├── shape_sphere_full.json │ │ │ ├── shape_sphere_half.json │ │ │ ├── shape_sphere_quarter.json │ │ │ ├── shape_stairs.json │ │ │ ├── shape_stairs_inner_corner.json │ │ │ ├── shape_stairs_outer_corner.json │ │ │ ├── shape_stairs_smart.json │ │ │ ├── shape_window_corner.json │ │ │ ├── shape_window_frame.json │ │ │ ├── shape_window_mullion.json │ │ │ ├── shape_window_mullion_smart.json │ │ │ └── shape_window_smart.json │ │ └── item │ │ │ ├── chisel.json │ │ │ ├── cladding.json │ │ │ ├── hammer.json │ │ │ ├── large_pulley.json │ │ │ ├── sawbench.json │ │ │ ├── sawblade.json │ │ │ ├── shape_anticylinder_large_quarter.json │ │ │ ├── shape_arch_d1.json │ │ │ ├── shape_arch_d2.json │ │ │ ├── shape_arch_d3a.json │ │ │ ├── shape_arch_d3b.json │ │ │ ├── shape_arch_d3c.json │ │ │ ├── shape_arch_d4a.json │ │ │ ├── shape_arch_d4b.json │ │ │ ├── shape_arch_d4c.json │ │ │ ├── shape_architrave.json │ │ │ ├── shape_architrave_corner.json │ │ │ ├── shape_balustrade_fancy.json │ │ │ ├── shape_balustrade_fancy_corner.json │ │ │ ├── shape_balustrade_fancy_newel.json │ │ │ ├── shape_balustrade_fancy_with_newel.json │ │ │ ├── shape_balustrade_plain.json │ │ │ ├── shape_balustrade_plain_end.json │ │ │ ├── shape_balustrade_plain_inner_corner.json │ │ │ ├── shape_balustrade_plain_outer_corner.json │ │ │ ├── shape_balustrade_plain_with_newel.json │ │ │ ├── shape_banister_fancy.json │ │ │ ├── shape_banister_fancy_bottom.json │ │ │ ├── shape_banister_fancy_end.json │ │ │ ├── shape_banister_fancy_newel_tall.json │ │ │ ├── shape_banister_fancy_top.json │ │ │ ├── shape_banister_plain.json │ │ │ ├── shape_banister_plain_bottom.json │ │ │ ├── shape_banister_plain_end.json │ │ │ ├── shape_banister_plain_inner_corner.json │ │ │ ├── shape_banister_plain_top.json │ │ │ ├── shape_bevelled_inner_corner.json │ │ │ ├── shape_bevelled_outer_corner.json │ │ │ ├── shape_cladding_sheet.json │ │ │ ├── shape_corinthian_capital.json │ │ │ ├── shape_cornice_bottom.json │ │ │ ├── shape_cornice_end_lh.json │ │ │ ├── shape_cornice_end_rh.json │ │ │ ├── shape_cornice_lh.json │ │ │ ├── shape_cornice_rh.json │ │ │ ├── shape_cornice_ridge.json │ │ │ ├── shape_cornice_valley.json │ │ │ ├── shape_cylinder.json │ │ │ ├── shape_cylinder_half.json │ │ │ ├── shape_cylinder_large_quarter.json │ │ │ ├── shape_cylinder_quarter.json │ │ │ ├── shape_doric_capital.json │ │ │ ├── shape_doric_metope.json │ │ │ ├── shape_doric_triglyph.json │ │ │ ├── shape_doric_triglyph_corner.json │ │ │ ├── shape_ionic_capital.json │ │ │ ├── shape_pillar.json │ │ │ ├── shape_pillar_base.json │ │ │ ├── shape_pole.json │ │ │ ├── shape_post.json │ │ │ ├── shape_roof_inner_corner.json │ │ │ ├── shape_roof_outer_corner.json │ │ │ ├── shape_roof_overhang.json │ │ │ ├── shape_roof_overhang_gable_end_lh.json │ │ │ ├── shape_roof_overhang_gable_end_rh.json │ │ │ ├── shape_roof_overhang_gable_lh.json │ │ │ ├── shape_roof_overhang_gable_rh.json │ │ │ ├── shape_roof_overhang_inner_corner.json │ │ │ ├── shape_roof_overhang_outer_corner.json │ │ │ ├── shape_roof_overhang_ridge.json │ │ │ ├── shape_roof_overhang_valley.json │ │ │ ├── shape_roof_ridge.json │ │ │ ├── shape_roof_smart_ridge.json │ │ │ ├── shape_roof_smart_valley.json │ │ │ ├── shape_roof_tile.json │ │ │ ├── shape_roof_valley.json │ │ │ ├── shape_slab.json │ │ │ ├── shape_sphere_eighth.json │ │ │ ├── shape_sphere_eighth_large.json │ │ │ ├── shape_sphere_eighth_large_rev.json │ │ │ ├── shape_sphere_full.json │ │ │ ├── shape_sphere_half.json │ │ │ ├── shape_sphere_quarter.json │ │ │ ├── shape_stairs.json │ │ │ ├── shape_stairs_inner_corner.json │ │ │ ├── shape_stairs_outer_corner.json │ │ │ ├── shape_stairs_smart.json │ │ │ ├── shape_window_corner.json │ │ │ ├── shape_window_frame.json │ │ │ ├── shape_window_mullion.json │ │ │ ├── shape_window_mullion_smart.json │ │ │ └── shape_window_smart.json │ │ └── textures │ │ ├── block │ │ └── __custitem__.png │ │ ├── gui │ │ ├── gui_sawbench.png │ │ ├── shapemenu_bg.png │ │ ├── shapemenu_items.png │ │ └── shapes.png │ │ └── item │ │ ├── chisel.png │ │ ├── hammer.png │ │ ├── largepulley.png │ │ └── sawblade.png │ ├── data │ └── architecturecraft │ │ ├── objson │ │ ├── block │ │ │ ├── sawbench.objson │ │ │ └── sawbench_all.objson │ │ └── shape │ │ │ ├── anticylinder_large_quarter.objson │ │ │ ├── arch_d1.objson │ │ │ ├── arch_d2.objson │ │ │ ├── arch_d3a.objson │ │ │ ├── arch_d3b.objson │ │ │ ├── arch_d3c.objson │ │ │ ├── arch_d4a.objson │ │ │ ├── arch_d4b.objson │ │ │ ├── arch_d4c.objson │ │ │ ├── architrave.objson │ │ │ ├── architrave_corner.objson │ │ │ ├── balustrade_fancy.objson │ │ │ ├── balustrade_fancy_corner.objson │ │ │ ├── balustrade_fancy_newel.objson │ │ │ ├── balustrade_fancy_newel_tall.objson │ │ │ ├── balustrade_fancy_with_newel.objson │ │ │ ├── balustrade_plain.objson │ │ │ ├── balustrade_plain_end.objson │ │ │ ├── balustrade_plain_end_lh.objson │ │ │ ├── balustrade_plain_end_rh.objson │ │ │ ├── balustrade_plain_inner_corner.objson │ │ │ ├── balustrade_plain_outer_corner.objson │ │ │ ├── balustrade_plain_with_newel.objson │ │ │ ├── balustrade_stair_fancy.objson │ │ │ ├── balustrade_stair_fancy_bottom.objson │ │ │ ├── balustrade_stair_fancy_end.objson │ │ │ ├── balustrade_stair_fancy_top.objson │ │ │ ├── banister_plain.objson │ │ │ ├── banister_plain_bottom.objson │ │ │ ├── banister_plain_end.objson │ │ │ ├── banister_plain_inner_corner.objson │ │ │ ├── banister_plain_top.objson │ │ │ ├── bevelled_inner_corner.objson │ │ │ ├── bevelled_outer_corner.objson │ │ │ ├── cladding.objson │ │ │ ├── corinthian_capital.objson │ │ │ ├── cornice_bottom.objson │ │ │ ├── cornice_end_lh.objson │ │ │ ├── cornice_end_rh.objson │ │ │ ├── cornice_lh.objson │ │ │ ├── cornice_rh.objson │ │ │ ├── cornice_ridge.objson │ │ │ ├── cornice_valley.objson │ │ │ ├── cylinder.objson │ │ │ ├── cylinder_half.objson │ │ │ ├── cylinder_large_quarter.objson │ │ │ ├── cylinder_quarter.objson │ │ │ ├── doric_capital.objson │ │ │ ├── doric_metope.objson │ │ │ ├── doric_triglyph.objson │ │ │ ├── doric_triglyph_corner.objson │ │ │ ├── ionic_capital.objson │ │ │ ├── mullion_glass_edge.objson │ │ │ ├── pillar.objson │ │ │ ├── pillar_base.objson │ │ │ ├── pole.objson │ │ │ ├── post.objson │ │ │ ├── railing.objson │ │ │ ├── railing_end.objson │ │ │ ├── railing_end_lh.objson │ │ │ ├── railing_end_rh.objson │ │ │ ├── railing_inner_corner.objson │ │ │ ├── railing_outer_corner.objson │ │ │ ├── railing_stair.objson │ │ │ ├── railing_stair_bottom.objson │ │ │ ├── railing_stair_top.objson │ │ │ ├── roof_overhang.objson │ │ │ ├── roof_overhang_gable_end_lh.objson │ │ │ ├── roof_overhang_gable_end_rh.objson │ │ │ ├── roof_overhang_gable_lh.objson │ │ │ ├── roof_overhang_gable_rh.objson │ │ │ ├── roof_overhang_gable_ridge.objson │ │ │ ├── roof_overhang_gable_valley.objson │ │ │ ├── roof_overhang_inner_corner.objson │ │ │ ├── roof_overhang_outer_corner.objson │ │ │ ├── slab.objson │ │ │ ├── sphere_eighth.objson │ │ │ ├── sphere_eighth_large.objson │ │ │ ├── sphere_eighth_large_rev.objson │ │ │ ├── sphere_full.objson │ │ │ ├── sphere_half.objson │ │ │ ├── sphere_quarter.objson │ │ │ ├── stairs.objson │ │ │ ├── stairs_inner_corner.objson │ │ │ ├── stairs_outer_corner.objson │ │ │ ├── window_corner.objson │ │ │ └── window_frame.objson │ │ └── recipes │ │ ├── chisel.json │ │ ├── hammer.json │ │ ├── large_pully.json │ │ ├── sawbench.json │ │ └── sawblade.json │ └── pack.mcmeta └── tooling ├── .vscode └── settings.json └── blender ├── .python-version └── addons ├── __init__.py ├── auto_uv └── __init__.py └── objson ├── __init__.py ├── common_types.py ├── deserializer.py ├── objson_types.py └── serializer.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: darkevilmac 2 | ko_fi: darkevilmac 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Thanks for reporting an issue to a Trident project! 2 | 3 | When reporting an issue to a Trident project, please make sure to include: 4 | 5 | - The version of the mod you are using (e.g. 2.0.0a4) 6 | - Your Minecraft version (e.g. 1.11.2) 7 | - Your Forge version (e.g. 13.20.0.2252) 8 | - The crash report or log, uploaded to gist.github.com 9 | (e.g. https://gist.github.com/unascribed/09ec875df0cc830df1116559f4adb333) 10 | 11 | Do not say latest! Saying you are on the latest version of 12 | something does not help us! 13 | 14 | Never include crash reports in the issue body itself! They 15 | are extremely long and it makes it difficult to read your issue. 16 | 17 | Don't cherry pick parts of the log or crash report; send the 18 | whole thing! 19 | 20 | Avoid putting tags like [Bug] or [Feature Request] in your title; 21 | that's what labels are for, and the maintainer will decide what 22 | category your issue fits in. 23 | 24 | Pastebin is acceptable for crash reports or logs, but Gist is 25 | greatly preferred. 26 | 27 | *Please remove this help text after reading it and before posting 28 | your issue. Thanks!* 29 | -------------------------------------------------------------------------------- /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/.github/logo.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled nonsense that does not belong in *source* control 2 | /build 3 | /bin 4 | /.gradle 5 | /minecraft 6 | /out 7 | /run 8 | /runs 9 | /logs 10 | 11 | # IDE nonsense that could go in source control but really shouldn't 12 | .classpath 13 | .project 14 | .metadata 15 | .settings 16 | *.launch 17 | *.iml 18 | .idea 19 | *.ipr 20 | *.iws 21 | .fleet 22 | 23 | # Sekrit files 24 | private.properties 25 | 26 | # Files from bad operating systems :^) 27 | Thumbs.db 28 | .DS_Store 29 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | pipeline { 2 | agent any 3 | stages { 4 | stage('Build') { 5 | steps { 6 | sh 'rm -f private.gradle' 7 | sh './gradlew clean build' 8 | } 9 | } 10 | stage('Deploy') { 11 | steps { 12 | archive 'build/libs/*jar' 13 | } 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Benjamin K 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Architecture Craft - TridentMC 4 | [>> Downloads <<](https://github.com/TridentMC/ArchitectureCraft/releases) 5 | 6 | *Distinguished architectural features for your Minecraft buildings.* 7 | 8 | **This mod is open source and under a permissive license.** And as such, 9 | can be included in any modpack on any platform without prior permission. 10 | We appreciate hearing about people using our mods, but you do not need 11 | to ask to use them. See the [LICENSE file](LICENSE) for more details. 12 | 13 | ArchitectureCraft provides a wide variety of good-looking architectural features including sloped roofs, glazable window frames, arches and other rounded blocks, classical pillars and entablatures, and railings for balconies and stairways. 14 | ArchitectureCraft blocks may be made from almost any vanilla material and many materials added by mods as well. 15 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Sets default memory used for gradle commands. Can be overridden by user or command line properties. 2 | # This is required to provide enough memory for the Minecraft decompilation process. 3 | org.gradle.jvmargs=-Xmx3G 4 | org.gradle.daemon=false -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists -------------------------------------------------------------------------------- /project.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | group = 'com.tridevmc' 3 | projectPackage = 'com.tridevmc.architecture' 4 | projectName = 'architecturecraft' 5 | 6 | useElytraVersionFormat = true 7 | version = '4' 8 | 9 | compoundVersion = '1.16.0-SNAPSHOT' 10 | compoundModules = ['all'] 11 | 12 | minecraftVersion = "1.21.4" 13 | minecraftVersionRange = "[1.21.4,1.22)" 14 | 15 | mappingsChannel = "parchment" 16 | mappingsMinecraftVersion = "1.21.4" 17 | mappingsVersion = "2024.12.22" 18 | 19 | neoForgeVersion = "21.4.38-beta" 20 | neoForgeVersionRange = "[21.4,)" 21 | loaderVersionRange = "[2,)" 22 | } 23 | 24 | if (!ext.early) { 25 | repositories { 26 | } 27 | 28 | dependencies { 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | maven { url = 'https://maven.neoforged.net/releases/' } 5 | maven { url = 'https://maven.parchmentmc.org' } 6 | } 7 | } 8 | 9 | plugins { 10 | id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' 11 | } -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/extensions/IArchitectureClientItemExtensions.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.extensions; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import net.minecraft.client.renderer.MultiBufferSource; 5 | import net.minecraft.world.item.ItemDisplayContext; 6 | import net.minecraft.world.item.ItemStack; 7 | import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | public interface IArchitectureClientItemExtensions extends IClientItemExtensions { 11 | 12 | /** 13 | * Renders the given item stack. 14 | * 15 | * @param stack the item stack to render 16 | * @param displayContext the display context to render in 17 | * @param poseStack the pose stack to render with 18 | * @param buffer the buffer to render to 19 | * @param packedLight the packed light value 20 | * @param packedOverlay the packed overlay value 21 | */ 22 | void renderByItem(@NotNull ItemStack stack, @NotNull ItemDisplayContext displayContext, @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, int packedLight, int packedOverlay); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains any code for ArchitectureCraft that directly interfaces with the Minecraft client. 3 | */ 4 | package com.tridevmc.architecture.client; -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/geometry/ArchitectureShapeUnbakedModelLoader.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.geometry; 2 | 3 | import com.google.common.collect.Maps; 4 | import com.google.gson.JsonDeserializationContext; 5 | import com.google.gson.JsonObject; 6 | import com.tridevmc.architecture.client.render.model.impl.BakedModelShapeGeneric; 7 | import com.tridevmc.architecture.common.shape.EnumShape; 8 | import net.minecraft.server.packs.resources.ResourceManager; 9 | import net.minecraft.server.packs.resources.ResourceManagerReloadListener; 10 | import net.neoforged.neoforge.client.model.UnbakedModelLoader; 11 | 12 | import java.util.Map; 13 | 14 | public class ArchitectureShapeUnbakedModelLoader implements UnbakedModelLoader, ResourceManagerReloadListener { 15 | 16 | private final Map models = Maps.newConcurrentMap(); 17 | 18 | @Override 19 | public void onResourceManagerReload(ResourceManager resourceManager) { 20 | this.models.clear(); 21 | } 22 | 23 | @Override 24 | public ArchitectureUnbakedModel read(JsonObject modelContents, JsonDeserializationContext deserializationContext) { 25 | var shapeName = modelContents.get("shapeName").getAsString(); 26 | var shape = EnumShape.byName(shapeName); 27 | if (shape == null) { 28 | throw new IllegalArgumentException("Unknown shape: " + shapeName); 29 | } 30 | 31 | // TODO: I hate this. 32 | return this.models.computeIfAbsent(shape, s -> new ArchitectureUnbakedModelLoader((textures, baker, modelState, useAmbientOcclusion, usesBlockLight, itemTransforms, additionalProperties) -> new BakedModelShapeGeneric(shape, itemTransforms))).read(modelContents, deserializationContext); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/geometry/IArchitectureBakedModelSupplier.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.geometry; 2 | 3 | import net.minecraft.client.renderer.block.model.ItemTransforms; 4 | import net.minecraft.client.renderer.block.model.TextureSlots; 5 | import net.minecraft.client.resources.model.BakedModel; 6 | import net.minecraft.client.resources.model.ModelBaker; 7 | import net.minecraft.client.resources.model.ModelState; 8 | import net.minecraft.util.context.ContextMap; 9 | 10 | /** 11 | * Small extraction off of {@link net.neoforged.neoforge.client.model.ExtendedUnbakedModel} to allow creating 12 | * very simple resolvers that we can still use with shared base logic for things like parents and transforms. 13 | */ 14 | @FunctionalInterface 15 | public interface IArchitectureBakedModelSupplier { 16 | 17 | BakedModel bake(TextureSlots textures, ModelBaker baker, ModelState modelState, boolean useAmbientOcclusion, boolean usesBlockLight, ItemTransforms itemTransforms, ContextMap additionalProperties); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/impl/BakedModelSawbench.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.impl; 2 | 3 | import com.tridevmc.architecture.client.render.model.baked.IModelResolverBaked; 4 | import com.tridevmc.architecture.client.render.model.resolver.IModelResolver; 5 | import com.tridevmc.architecture.core.model.mesh.PolygonData; 6 | import net.minecraft.client.renderer.block.model.ItemTransforms; 7 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 8 | 9 | public class BakedModelSawbench implements IModelResolverBaked { 10 | 11 | private static ModelResolverSawbench RESOLVER; 12 | private final ItemTransforms itemTransforms; 13 | 14 | public BakedModelSawbench() { 15 | this(ItemTransforms.NO_TRANSFORMS); 16 | } 17 | 18 | public BakedModelSawbench(ItemTransforms itemTransforms) { 19 | if (RESOLVER == null) { 20 | RESOLVER = new ModelResolverSawbench(); 21 | } 22 | this.itemTransforms = itemTransforms; 23 | } 24 | 25 | @Override 26 | public ItemTransforms getTransforms() { 27 | return this.itemTransforms; 28 | } 29 | 30 | @Override 31 | public IModelResolver getModelResolver() { 32 | return RESOLVER; 33 | } 34 | 35 | @Override 36 | public boolean useAmbientOcclusion() { 37 | return true; 38 | } 39 | 40 | @Override 41 | public boolean isGui3d() { 42 | return true; 43 | } 44 | 45 | @Override 46 | public boolean usesBlockLight() { 47 | return true; 48 | } 49 | 50 | @Override 51 | public TextureAtlasSprite getParticleIcon() { 52 | return RESOLVER.getDefaultSprite(); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/impl/BakedModelShapeGeneric.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.impl; 2 | 3 | import com.tridevmc.architecture.client.render.model.baked.IModelResolverBaked; 4 | import com.tridevmc.architecture.client.render.model.resolver.IModelResolver; 5 | import com.tridevmc.architecture.common.shape.EnumShape; 6 | import com.tridevmc.architecture.core.model.mesh.PolygonData; 7 | import net.minecraft.client.renderer.block.model.ItemTransforms; 8 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class BakedModelShapeGeneric implements IModelResolverBaked { 12 | 13 | private final ModelResolverShapeGeneric resolver; 14 | private final EnumShape shape; 15 | private final ItemTransforms transforms; 16 | 17 | public BakedModelShapeGeneric(EnumShape shape, ItemTransforms transforms) { 18 | this.shape = shape; 19 | this.resolver = new ModelResolverShapeGeneric(shape); 20 | this.transforms = transforms; 21 | } 22 | 23 | @Override 24 | @NotNull 25 | public ItemTransforms getTransforms() { 26 | return this.transforms; 27 | } 28 | 29 | @Override 30 | public IModelResolver getModelResolver() { 31 | return this.resolver; 32 | } 33 | 34 | @Override 35 | public boolean useAmbientOcclusion() { 36 | return true; 37 | } 38 | 39 | @Override 40 | public boolean isGui3d() { 41 | return true; 42 | } 43 | 44 | @Override 45 | public boolean usesBlockLight() { 46 | return true; 47 | } 48 | 49 | @Override 50 | @NotNull 51 | public TextureAtlasSprite getParticleIcon() { 52 | return this.resolver.getDefaultSprite(); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/impl/SpecialShapeModelRenderer.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.impl; 2 | 3 | public class SpecialShapeModelRenderer { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/piped/PipedVertexTransformable.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.piped; 2 | 3 | import com.tridevmc.architecture.core.math.ITrans3; 4 | import net.minecraft.core.Direction; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | public class PipedVertexTransformable extends PipedVertex, PipedBakedQuadTransformable, D> implements ITransformable> { 8 | 9 | public PipedVertexTransformable(double x, double y, double z, float nX, float nY, float nZ, float u, float v) { 10 | super(x, y, z, nX, nY, nZ, u, v); 11 | } 12 | 13 | @Override 14 | public PipedVertexTransformable transform(ITrans3 trans, @Nullable Direction fromFace, @Nullable Direction toFace, boolean transformUVs) { 15 | if (trans.isIdentity()) { 16 | return this; 17 | } else { 18 | var canTransformUVs = transformUVs && fromFace != null && toFace != null; 19 | var pos = this.pos(trans); 20 | var normal = this.normal(trans); 21 | var uvs = canTransformUVs ? this.uvs(trans, fromFace, toFace) : this.uvs(); 22 | return new PipedVertexTransformable<>((float) pos.x(), (float) pos.y(), (float) pos.z(), normal.x(), normal.y(), normal.z(), (float) uvs.u(), (float) uvs.v()); 23 | } 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTextureResolver.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 4 | 5 | /** 6 | * A functional interface that resolves a quad's metadata to a texture. 7 | * 8 | * @param The type of metadata to resolve. 9 | */ 10 | @FunctionalInterface 11 | public interface IQuadMetadataTextureResolver { 12 | 13 | /** 14 | * Resolves the quad's metadata to a texture. 15 | * 16 | * @param metadata The metadata to resolve. 17 | * @return The texture to use. 18 | */ 19 | TextureAtlasSprite getTexture(D metadata); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTextureResolverWithBlockContext.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.world.level.LevelAccessor; 6 | import net.minecraft.world.level.block.state.BlockState; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | /** 10 | * A functional interface that resolves a quad's metadata to a texture, with additional context from the block. 11 | * 12 | * @param The type of metadata to resolve. 13 | */ 14 | @FunctionalInterface 15 | public interface IQuadMetadataTextureResolverWithBlockContext { 16 | 17 | /** 18 | * Resolves the quad's metadata to a texture. 19 | * 20 | * @param level The level the block is in. 21 | * @param pos The position of the block. 22 | * @param state The state of the block. 23 | * @param metadata The metadata to resolve. 24 | * @return The texture to use. 25 | */ 26 | TextureAtlasSprite getTexture(@NotNull LevelAccessor level, @NotNull BlockPos pos, @NotNull BlockState state, D metadata); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTextureResolverWithItemStackContext.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 4 | import net.minecraft.world.item.ItemStack; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * A functional interface that resolves a quad's metadata to a texture, with the context of an item stack to resolve. 9 | * 10 | * @param The type of metadata to resolve. 11 | */ 12 | @FunctionalInterface 13 | public interface IQuadMetadataTextureResolverWithItemStackContext { 14 | 15 | /** 16 | * Resolves the quad's metadata to a texture. 17 | * 18 | * @param stack The stack to resolve the texture for. 19 | * @param metadata The metadata to resolve. 20 | * @return The texture to use. 21 | */ 22 | TextureAtlasSprite getTexture(@NotNull ItemStack stack, D metadata); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTintIndexResolver.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | /** 4 | * A functional interface that resolves a quad's metadata to a colour. 5 | * 6 | * @param The type of metadata to resolve. 7 | */ 8 | @FunctionalInterface 9 | public interface IQuadMetadataTintIndexResolver { 10 | 11 | /** 12 | * Resolves the quad's metadata to a colour. 13 | * 14 | * @param metadata The metadata to resolve. 15 | * @return The colour to use. 16 | */ 17 | int getTintIndex(D metadata); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTintIndexResolverWithBlockContext.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.world.level.LevelAccessor; 5 | import net.minecraft.world.level.block.state.BlockState; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | /** 9 | * A functional interface that resolves a quad's metadata to a colour, with additional context from the block. 10 | * 11 | * @param The type of metadata to resolve. 12 | */ 13 | @FunctionalInterface 14 | public interface IQuadMetadataTintIndexResolverWithBlockContext { 15 | 16 | /** 17 | * Resolves the quad's metadata to a colour. 18 | * 19 | * @param level The level the block is in. 20 | * @param pos The position of the block. 21 | * @param state The state of the block. 22 | * @param metadata The metadata to resolve. 23 | * @return The colour to use. 24 | */ 25 | int getTintIndex(@NotNull LevelAccessor level, @NotNull BlockPos pos, @NotNull BlockState state, D metadata); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/model/resolver/functional/IQuadMetadataTintIndexResolverWithItemStackContext.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.render.model.resolver.functional; 2 | 3 | import net.minecraft.world.item.ItemStack; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * A functional interface that resolves a quad's metadata to a colour, with the context of an item stack to resolve. 8 | * 9 | * @param The type of metadata to resolve. 10 | */ 11 | @FunctionalInterface 12 | public interface IQuadMetadataTintIndexResolverWithItemStackContext { 13 | 14 | /** 15 | * Resolves the quad's metadata to a colour. 16 | * 17 | * @param stack The stack to resolve the texture for. 18 | * @param metadata The metadata to resolve. 19 | * @return The colour to use. 20 | */ 21 | int getTintIndex(@NotNull ItemStack stack, D metadata); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/render/texture/ITiledTexture.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2017 Benjamin K 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | package com.tridevmc.architecture.client.render.texture; 26 | 27 | public interface ITiledTexture extends ITexture { 28 | 29 | ITexture tile(int row, int col); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/client/ui/UISawbench.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.client.ui; 2 | 3 | import com.tridevmc.architecture.common.block.container.ContainerSawbench; 4 | import com.tridevmc.compound.ui.Rect2F; 5 | import com.tridevmc.compound.ui.container.CompoundUIContainer; 6 | import com.tridevmc.compound.ui.element.ElementBox; 7 | import com.tridevmc.compound.ui.layout.*; 8 | import net.minecraft.world.entity.player.Player; 9 | 10 | public class UISawbench extends CompoundUIContainer { 11 | private final Player player; 12 | 13 | public UISawbench(ContainerSawbench container, Player player) { 14 | super(container); 15 | this.player = player; 16 | } 17 | 18 | @Override 19 | public void initElements() { 20 | // TODO: The size seems about right - no real elements in quite yet. 21 | LayoutCentered boxLayout = new LayoutCentered(true, true); 22 | ElementBox bg = new ElementBox(new Rect2F(0, 0, 256, 288), boxLayout); 23 | this.addElement(bg); 24 | 25 | LayoutGrid playerGrid = new LayoutGrid(new Rect2F(47, 204, 18 * 9, 18 * 3)); 26 | ILayout playerLayout = new LayoutMulti(playerGrid, new LayoutRelative(bg)); 27 | 28 | LayoutGrid hotbarGrid = new LayoutGrid(new Rect2F(47, 262, 18 * 9, 18)); 29 | ILayout hotbarLayout = new LayoutMulti(hotbarGrid, new LayoutRelative(bg)); 30 | 31 | for (int i = 0; i < this.getMenu().slots.size(); i++) { 32 | if (i < 27) { 33 | playerGrid.registerElement(this.addSlotElement(playerLayout, i)); 34 | } else { 35 | hotbarGrid.registerElement(this.addSlotElement(hotbarLayout, i)); 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/block/container/ContainerSawbench.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.block.container; 2 | 3 | import com.tridevmc.architecture.common.ArchitectureMod; 4 | import com.tridevmc.compound.ui.container.CompoundContainerMenu; 5 | import net.minecraft.world.entity.player.Inventory; 6 | import net.minecraft.world.entity.player.Player; 7 | import net.minecraft.world.inventory.Slot; 8 | import net.minecraft.world.item.ItemStack; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class ContainerSawbench extends CompoundContainerMenu { 12 | 13 | public final Inventory playerInventory; 14 | 15 | public ContainerSawbench(Inventory playerInv, int id) { 16 | super(ArchitectureMod.CONTENT.universalMenuType, id); 17 | this.playerInventory = playerInv; 18 | 19 | // Player inventory 20 | for (int i1 = 0; i1 < 3; ++i1) { 21 | for (int k1 = 0; k1 < 9; ++k1) { 22 | this.addSlot(new Slot(playerInv, k1 + i1 * 9 + 9, this.playerInventory.getContainerSize(), 0)); 23 | } 24 | } 25 | // Hotbar 26 | for (int j1 = 0; j1 < 9; ++j1) { 27 | this.addSlot(new Slot(playerInv, j1, this.playerInventory.getContainerSize(), 0)); 28 | } 29 | } 30 | 31 | @Override 32 | @NotNull 33 | public ItemStack quickMoveStack(@NotNull Player player, int slot) { 34 | return ItemStack.EMPTY; 35 | } 36 | 37 | @Override 38 | public boolean stillValid(@NotNull Player player) { 39 | return true; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/block/entity/BlockEntityArchitecture.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.block.entity; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.world.level.block.entity.BlockEntity; 5 | import net.minecraft.world.level.block.entity.BlockEntityType; 6 | import net.minecraft.world.level.block.state.BlockState; 7 | 8 | public class BlockEntityArchitecture extends BlockEntity { 9 | 10 | public BlockEntityArchitecture(BlockEntityType type, BlockPos pos, BlockState state) { 11 | super(type, pos, state); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/item/ItemArchitecture.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2017 Benjamin K 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | package com.tridevmc.architecture.common.item; 26 | 27 | import net.minecraft.world.item.Item; 28 | 29 | public class ItemArchitecture extends Item { 30 | 31 | public ItemArchitecture(Item.Properties properties) { 32 | super(properties); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/item/ItemBlockArchitecture.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.item; 2 | 3 | import com.mojang.blaze3d.vertex.PoseStack; 4 | import com.tridevmc.architecture.client.extensions.IArchitectureClientItemExtensions; 5 | import com.tridevmc.architecture.client.render.model.baked.IArchitectureBakedModel; 6 | import com.tridevmc.architecture.common.block.BlockArchitecture; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.renderer.MultiBufferSource; 9 | import net.minecraft.world.item.BlockItem; 10 | import net.minecraft.world.item.ItemDisplayContext; 11 | import net.minecraft.world.item.ItemStack; 12 | import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class ItemBlockArchitecture extends BlockItem { 16 | 17 | public ItemBlockArchitecture(BlockArchitecture pBlock, Properties pProperties) { 18 | super(pBlock, pProperties); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/model/ModelProperties.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.model; 2 | 3 | 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.world.level.Level; 6 | import net.minecraft.world.level.block.entity.BlockEntity; 7 | import net.neoforged.neoforge.client.model.data.ModelProperty; 8 | 9 | import java.util.Objects; 10 | 11 | public class ModelProperties { 12 | public static final ModelProperty LEVEL = new ModelProperty(Objects::nonNull); 13 | public static final ModelProperty POS = new ModelProperty(Objects::nonNull); 14 | public static final ModelProperty TILE = new ModelProperty(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains any code for ArchitectureCraft that interfaces with both the Minecraft client and server. 3 | */ 4 | package com.tridevmc.architecture.common; -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/EnumFlip.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | import com.google.common.collect.ImmutableCollection; 4 | import com.google.common.collect.ImmutableSet; 5 | import net.minecraft.util.StringRepresentable; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import java.util.Collection; 9 | 10 | public enum EnumFlip implements StringRepresentable { 11 | STANDARD("standard"), 12 | FLIPPED("flipped"); 13 | 14 | private static final EnumFlip[] VALUES = new EnumFlip[]{ 15 | STANDARD, FLIPPED 16 | }; 17 | 18 | private static final ImmutableCollection VALUES_COLLECTION = ImmutableSet.copyOf( 19 | VALUES 20 | ); 21 | 22 | /** 23 | * Gets the EnumFlip with the given index. 24 | * 25 | * @param index the index of the EnumFlip to get. 26 | * @return the EnumFlip with the given index. 27 | */ 28 | public static EnumFlip byIndex(int index) { 29 | return VALUES[index % VALUES.length]; 30 | } 31 | 32 | /** 33 | * Gets an immutable collection of all EnumFlips. 34 | * 35 | * @return an immutable collection of all EnumFlips. 36 | */ 37 | public static Collection getValues() { 38 | return VALUES_COLLECTION; 39 | } 40 | 41 | private final String name; 42 | 43 | EnumFlip(String name) { 44 | this.name = name; 45 | } 46 | 47 | @Override 48 | @NotNull 49 | public String getSerializedName() { 50 | return this.name; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertyAxis.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | import net.minecraft.core.Direction; 4 | 5 | import java.util.Arrays; 6 | 7 | public class ShapeOrientationPropertyAxis extends ShapeOrientationProperty { 8 | 9 | public static final ShapeOrientationPropertyAxis INSTANCE = new ShapeOrientationPropertyAxis(); 10 | 11 | 12 | protected ShapeOrientationPropertyAxis() { 13 | super("axis", Direction.Axis.class, Arrays.asList(Direction.Axis.values())); 14 | } 15 | 16 | public static Value of(Direction.Axis value) { 17 | return INSTANCE.findValue(value); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertyFacing.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | import net.minecraft.core.Direction; 4 | 5 | import java.util.Arrays; 6 | 7 | public class ShapeOrientationPropertyFacing extends ShapeOrientationProperty { 8 | 9 | public static final ShapeOrientationPropertyFacing INSTANCE = new ShapeOrientationPropertyFacing(); 10 | 11 | 12 | protected ShapeOrientationPropertyFacing() { 13 | super("facing", Direction.class, Arrays.asList(Direction.values())); 14 | } 15 | 16 | public static Value of(Direction value) { 17 | return INSTANCE.findValue(value); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertyFlip.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | public class ShapeOrientationPropertyFlip extends ShapeOrientationProperty { 4 | public final static ShapeOrientationPropertyFlip INSTANCE = new ShapeOrientationPropertyFlip(); 5 | 6 | protected ShapeOrientationPropertyFlip() { 7 | super("flip", EnumFlip.class, EnumFlip.getValues()); 8 | } 9 | 10 | public static Value of(EnumFlip value) { 11 | return INSTANCE.findValue(value); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertyOffset.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | public class ShapeOrientationPropertyOffset extends ShapeOrientationProperty { 4 | 5 | public final static ShapeOrientationPropertyOffset INSTANCE = new ShapeOrientationPropertyOffset(); 6 | 7 | protected ShapeOrientationPropertyOffset() { 8 | super("offset", EnumPlacementOffset.class, EnumPlacementOffset.getValues()); 9 | } 10 | 11 | public static Value of(EnumPlacementOffset value) { 12 | return INSTANCE.findValue(value); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertySpin.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | public class ShapeOrientationPropertySpin extends ShapeOrientationProperty { 4 | 5 | public final static ShapeOrientationPropertySpin INSTANCE = new ShapeOrientationPropertySpin(); 6 | 7 | protected ShapeOrientationPropertySpin() { 8 | super("spin", EnumSpin.class, EnumSpin.getValues()); 9 | } 10 | 11 | public static Value of(EnumSpin value) { 12 | return INSTANCE.findValue(value); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/orientation/ShapeOrientationPropertyTurn.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.orientation; 2 | 3 | public class ShapeOrientationPropertyTurn extends ShapeOrientationProperty { 4 | 5 | public final static ShapeOrientationPropertyTurn INSTANCE = new ShapeOrientationPropertyTurn(); 6 | 7 | protected ShapeOrientationPropertyTurn() { 8 | super("turn", EnumTurn.class, EnumTurn.getValues()); 9 | } 10 | 11 | public static Value of(EnumTurn value) { 12 | return INSTANCE.findValue(value); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/placement/ShapePlacementLogicFacingWithFlip.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.placement; 2 | 3 | import com.google.common.collect.ImmutableCollection; 4 | import com.google.common.collect.ImmutableList; 5 | import com.tridevmc.architecture.common.block.BlockArchitecture; 6 | import com.tridevmc.architecture.common.shape.orientation.*; 7 | import net.minecraft.core.BlockPos; 8 | import net.minecraft.world.entity.player.Player; 9 | import net.minecraft.world.level.Level; 10 | import net.minecraft.world.phys.BlockHitResult; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class ShapePlacementLogicFacingWithFlip implements IShapePlacementLogic { 14 | 15 | public static final ShapePlacementLogicFacingWithFlip INSTANCE = new ShapePlacementLogicFacingWithFlip(); 16 | private final ImmutableCollection> properties = ImmutableList.of( 17 | ShapeOrientationPropertyFlip.INSTANCE, 18 | ShapeOrientationPropertyFacing.INSTANCE 19 | ); 20 | 21 | @Override 22 | public @NotNull ShapeOrientation getShapeOrientationForPlacement(@NotNull BlockArchitecture beingPlaced, @NotNull Level level, @NotNull BlockPos placementPos, @NotNull Player placer, @NotNull BlockHitResult hitResult) { 23 | var faceClicked = hitResult.getDirection(); 24 | return ShapeOrientation.forProperties( 25 | ShapeOrientationPropertyFacing.of(faceClicked.getOpposite()), 26 | ShapeOrientationPropertyFlip.of(placer.isCrouching() ? EnumFlip.FLIPPED : EnumFlip.STANDARD) 27 | ); 28 | } 29 | 30 | @Override 31 | public @NotNull ImmutableCollection> getProperties() { 32 | return this.properties; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/placement/ShapePlacementLogicStairLikeWithFlip.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.placement; 2 | 3 | import com.google.common.collect.ImmutableCollection; 4 | import com.google.common.collect.ImmutableList; 5 | import com.tridevmc.architecture.common.block.BlockArchitecture; 6 | import com.tridevmc.architecture.common.shape.orientation.*; 7 | import net.minecraft.core.BlockPos; 8 | import net.minecraft.world.entity.player.Player; 9 | import net.minecraft.world.level.Level; 10 | import net.minecraft.world.phys.BlockHitResult; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class ShapePlacementLogicStairLikeWithFlip implements IShapePlacementLogic { 14 | 15 | public static final ShapePlacementLogicStairLikeWithFlip INSTANCE = new ShapePlacementLogicStairLikeWithFlip(); 16 | private final ImmutableCollection> properties = ImmutableList.of( 17 | ShapeOrientationPropertyFlip.INSTANCE, 18 | ShapeOrientationPropertyFacing.INSTANCE 19 | ); 20 | 21 | @Override 22 | public @NotNull ShapeOrientation getShapeOrientationForPlacement(@NotNull BlockArchitecture beingPlaced, @NotNull Level level, @NotNull BlockPos placementPos, @NotNull Player placer, @NotNull BlockHitResult hitResult) { 23 | var faceClicked = hitResult.getDirection(); 24 | return ShapeOrientation.forProperties( 25 | ShapeOrientationPropertyFacing.of(faceClicked.getOpposite()), 26 | ShapeOrientationPropertyFlip.of(placer.isCrouching() ? EnumFlip.FLIPPED : EnumFlip.STANDARD) 27 | ); 28 | } 29 | 30 | @Override 31 | public @NotNull ImmutableCollection> getProperties() { 32 | return this.properties; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/placement/ShapePlacementLogicStatic.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.placement; 2 | 3 | import com.google.common.collect.ImmutableCollection; 4 | import com.google.common.collect.ImmutableList; 5 | import com.tridevmc.architecture.common.block.BlockArchitecture; 6 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientation; 7 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientationProperty; 8 | import net.minecraft.core.BlockPos; 9 | import net.minecraft.world.entity.player.Player; 10 | import net.minecraft.world.level.Level; 11 | import net.minecraft.world.phys.BlockHitResult; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | /** 15 | * Simple implementation of {@link IShapePlacementLogic} that always returns {@link ShapeOrientation#IDENTITY}. 16 | *

17 | * Useful for shapes that wouldn't be impacted by rotation like a sphere. 18 | */ 19 | public class ShapePlacementLogicStatic implements IShapePlacementLogic { 20 | 21 | public static final ShapePlacementLogicStatic INSTANCE = new ShapePlacementLogicStatic(); 22 | 23 | @Override 24 | @NotNull 25 | public ShapeOrientation getShapeOrientationForPlacement( 26 | @NotNull BlockArchitecture beingPlaced, 27 | @NotNull Level level, 28 | @NotNull BlockPos placementPos, 29 | @NotNull Player placer, 30 | @NotNull BlockHitResult hitResult) { 31 | return ShapeOrientation.IDENTITY; 32 | } 33 | 34 | @Override 35 | @NotNull 36 | public ImmutableCollection> getProperties() { 37 | return ImmutableList.of(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/rule/INeighbourConnectionRule.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.rule; 2 | 3 | import net.minecraft.core.Direction; 4 | import net.minecraft.world.level.block.state.BlockState; 5 | 6 | /** 7 | * A rule that determines whether a block can connect to another block on a given side. 8 | */ 9 | @FunctionalInterface 10 | public interface INeighbourConnectionRule { 11 | 12 | /** 13 | * Determines whether a block can connect to another block on a given side. 14 | * 15 | * @param other the block that is being connected to. 16 | * @param side the side of the block that is being connected to, 17 | * relative to the block that is trying to connect. 18 | * @return true if the block can connect, false otherwise. 19 | */ 20 | boolean connectsToOnSide(BlockState other, 21 | Direction side); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/transformation/IShapeTransformationResolver.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.transformation; 2 | 3 | import com.tridevmc.architecture.common.block.state.BlockStateShape; 4 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientation; 5 | import com.tridevmc.architecture.core.math.ITrans3; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | /** 9 | * Used for resolving a set of ShapeOrientationProperties into a Trans3 that can be used to transform a shape for collision or rendering. 10 | *

11 | * The results of this resolver are not cached, and ideally the results should be stored on the state that the shape is being rendered for. 12 | */ 13 | @FunctionalInterface 14 | public interface IShapeTransformationResolver { 15 | 16 | /** 17 | * Resolves the given ShapeOrientation into a Trans3 that can be used to transform a shape for collision or rendering. 18 | * 19 | * @param orientation the orientation to resolve. 20 | * @return the resolved transformation. 21 | */ 22 | @NotNull 23 | ITrans3 resolve(@NotNull ShapeOrientation orientation); 24 | 25 | 26 | /** 27 | * Resolves the given BlockStateShape into a Trans3 that can be used to transform a shape for collision or rendering. 28 | * 29 | * @param state the state to resolve. 30 | * @return the resolved transformation. 31 | */ 32 | @NotNull 33 | default ITrans3 resolve(@NotNull BlockStateShape state) { 34 | return this.resolve(state.getOrientation()); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/transformation/ShapeOrientationResolverIdentity.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.transformation; 2 | 3 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientation; 4 | import com.tridevmc.architecture.core.math.ITrans3; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | /** 8 | * Simple implementation of {@link IShapeTransformationResolver} that always returns the identity transformation. 9 | *

10 | * Useful for shapes that wouldn't be impacted by rotation like a sphere. 11 | */ 12 | public class ShapeOrientationResolverIdentity implements IShapeTransformationResolver { 13 | @Override 14 | public @NotNull ITrans3 resolve(@NotNull ShapeOrientation orientation) { 15 | return ITrans3.ofIdentity(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/shape/transformation/ShapeTransformationResolverOnAxis.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.shape.transformation; 2 | 3 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientation; 4 | import com.tridevmc.architecture.common.shape.orientation.ShapeOrientationPropertyAxis; 5 | import com.tridevmc.architecture.core.math.IMatrix4Immutable; 6 | import com.tridevmc.architecture.core.math.ITrans3; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | /** 10 | * An implementation of {@link IShapeTransformationResolver} that creates a transformation matrix for an orientation 11 | * with an axis property. Assumes that the model is on the Y axis by default. 12 | */ 13 | public class ShapeTransformationResolverOnAxis implements IShapeTransformationResolver { 14 | public static final ShapeTransformationResolverOnAxis INSTANCE = new ShapeTransformationResolverOnAxis(); 15 | 16 | @Override 17 | public @NotNull ITrans3 resolve(@NotNull ShapeOrientation orientation) { 18 | var axis = orientation.getValue(ShapeOrientationPropertyAxis.INSTANCE).value(); 19 | return switch (axis) { 20 | case X -> ITrans3.ofImmutable(IMatrix4Immutable.ofRotationXYZ(0.5, 0.5, 0.5, 0, 0, -90)); 21 | case Y -> ITrans3.ofIdentity(); 22 | case Z -> ITrans3.ofImmutable(IMatrix4Immutable.ofRotationXYZ(0.5, 0.5, 0.5, 90, 0, 0)); 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/ui/IElementProvider.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.ui; 2 | 3 | 4 | import net.minecraft.client.gui.screens.Screen; 5 | import net.minecraft.network.chat.Component; 6 | import net.minecraft.world.MenuProvider; 7 | import net.minecraft.world.entity.player.Inventory; 8 | import net.minecraft.world.entity.player.Player; 9 | import net.minecraft.world.inventory.AbstractContainerMenu; 10 | import net.neoforged.api.distmarker.Dist; 11 | import net.neoforged.api.distmarker.OnlyIn; 12 | 13 | import javax.annotation.Nullable; 14 | 15 | public interface IElementProvider extends MenuProvider { 16 | 17 | @OnlyIn(Dist.CLIENT) 18 | Screen createScreen(T container, Player player); 19 | 20 | @Nullable 21 | @Override 22 | default AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, Player player) { 23 | return this.createMenu(new CreateMenuContext(windowId, player, playerInventory)); 24 | } 25 | 26 | @Nullable 27 | AbstractContainerMenu createMenu(CreateMenuContext context); 28 | 29 | @Override 30 | default Component getDisplayName() { 31 | return Component.empty(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/utils/DumbBlockReader.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.common.utils; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.world.level.BlockGetter; 5 | import net.minecraft.world.level.block.Blocks; 6 | import net.minecraft.world.level.block.entity.BlockEntity; 7 | import net.minecraft.world.level.block.state.BlockState; 8 | import net.minecraft.world.level.material.FluidState; 9 | import org.jetbrains.annotations.Nullable; 10 | 11 | public class DumbBlockReader implements BlockGetter { 12 | 13 | private BlockState state = Blocks.AIR.defaultBlockState(); 14 | 15 | public DumbBlockReader(BlockState state) { 16 | this.state = state; 17 | } 18 | 19 | @Override 20 | public BlockState getBlockState(BlockPos pos) { 21 | return this.state; 22 | } 23 | 24 | @Override 25 | public FluidState getFluidState(BlockPos pos) { 26 | return this.state.getFluidState(); 27 | } 28 | 29 | @Nullable 30 | @Override 31 | public BlockEntity getBlockEntity(BlockPos p_45570_) { 32 | return null; 33 | } 34 | 35 | @Override 36 | public int getHeight() { 37 | return 0; 38 | } 39 | 40 | @Override 41 | public int getMinY() { 42 | return 0; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/common/utils/IModHolder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2017 Benjamin K 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | package com.tridevmc.architecture.common.utils; 26 | 27 | import com.tridevmc.architecture.common.ArchitectureMod; 28 | 29 | public interface IModHolder { 30 | void setMod(ArchitectureMod mod); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/math/IVector2Immutable.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.math; 2 | 3 | /** 4 | * An extension of {@link IVector2} that is expected to be immutable. 5 | *

6 | * Construct using {@link IVector2Immutable#of(double, double)}. 7 | *

8 | * See also {@link IVector2}, and {@link IVector2Mutable}. 9 | */ 10 | public interface IVector2Immutable extends IVector2 { 11 | 12 | /** 13 | * Creates a new immutable vector from the given coordinates. 14 | * 15 | * @param x The X coordinate of the vector. 16 | * @param y The Y coordinate of the vector. 17 | * @return The new vector. 18 | */ 19 | static IVector2Immutable of(double x, double y) { 20 | return new Vector2(x, y); 21 | } 22 | 23 | /** 24 | * Creates a new immutable vector from the given vector. 25 | *

26 | * Please note that this method will always return a new instance, even if the given vector is already immutable. 27 | * This has performance implications, it's recommended to use {@link IVector2#asImmutable()} instead. 28 | * 29 | * @param vec The vector to copy. 30 | * @return The new vector. 31 | */ 32 | static IVector2Immutable of(IVector2 vec) { 33 | return of(vec.x(), vec.y()); 34 | } 35 | 36 | @Override 37 | default boolean isImmutable() { 38 | // We are immutable, so just return ourselves. It's not like we can be any more immutable. 39 | return true; 40 | } 41 | 42 | @Override 43 | default boolean isMutable() { 44 | return false; 45 | } 46 | 47 | @Override 48 | default IVector2Immutable asImmutable() { 49 | return this; 50 | } 51 | 52 | @Override 53 | default IVector2Mutable asMutable() { 54 | return IVector2Mutable.of(this); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/math/Trans3.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.math; 2 | 3 | record Trans3(IMatrix4Immutable matrix) implements ITrans3Immutable { 4 | 5 | record Mutable(IMatrix4Mutable matrix) implements ITrans3Mutable { 6 | 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/model/mesh/FaceDirection.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.model.mesh; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | import net.minecraft.core.Direction; 5 | import org.jetbrains.annotations.NotNull; 6 | import org.jetbrains.annotations.Nullable; 7 | 8 | /** 9 | * Used to represent the cull face of a polygon, used instead of Minecraft's Direction enum to allow for null-safe values. 10 | */ 11 | public enum FaceDirection { 12 | @SerializedName("0") 13 | DOWN(0), 14 | @SerializedName("1") 15 | UP(1), 16 | @SerializedName("2") 17 | NORTH(2), 18 | @SerializedName("3") 19 | SOUTH(3), 20 | @SerializedName("4") 21 | WEST(4), 22 | @SerializedName("5") 23 | EAST(5); 24 | 25 | private static final FaceDirection[] FACES_BY_INDEX = new FaceDirection[6]; 26 | 27 | static { 28 | for (FaceDirection face : values()) { 29 | FACES_BY_INDEX[face.getIndex()] = face; 30 | } 31 | } 32 | 33 | private final int index; 34 | 35 | FaceDirection(int index) { 36 | this.index = index; 37 | } 38 | 39 | /** 40 | * Gets the cull face from the index of the given direction. 41 | * 42 | * @param direction The direction to get the cull face for. 43 | * @return The cull face for the given direction. 44 | */ 45 | @Nullable 46 | public static FaceDirection fromDirection(@Nullable Direction direction) { 47 | if (direction == null) return null; 48 | return FACES_BY_INDEX[direction.ordinal()]; 49 | } 50 | 51 | public int getIndex() { 52 | return this.index; 53 | } 54 | 55 | @NotNull 56 | public Direction toDirection() { 57 | return Direction.from3DDataValue(this.index); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/model/mesh/IPolygonData.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.model.mesh; 2 | 3 | import com.tridevmc.architecture.core.math.ITrans3; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Stores additional data shared across the vertices of a polygon. 8 | *

9 | * Includes the texture index, tint index, and cull face. 10 | *

11 | * Additional data can be added by other implementations. 12 | */ 13 | public interface IPolygonData> { 14 | 15 | /** 16 | * Gets the texture index for this polygon. 17 | * 18 | * @return The texture index. 19 | */ 20 | int textureIndex(); 21 | 22 | /** 23 | * Gets the tint index for this polygon. 24 | * 25 | * @return The tint index. 26 | */ 27 | int tintIndex(); 28 | 29 | /** 30 | * Gets the cull face for this polygon. 31 | * 32 | * @return The cull face. 33 | */ 34 | @NotNull 35 | CullFace cullFace(); 36 | 37 | /** 38 | * Gets the face direction for this polygon. 39 | * 40 | * @return The face direction. 41 | */ 42 | @NotNull 43 | FaceDirection face(); 44 | 45 | /** 46 | * Transforms this polygon data by the given transformation. 47 | *

48 | * Primarily used for transforming the cull face. 49 | * 50 | * @param trans The transformation to apply. 51 | * @return The transformed polygon data. 52 | */ 53 | S transform(@NotNull ITrans3 trans); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/model/mesh/IPolygonProvider.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.model.mesh; 2 | 3 | 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Creates a polygon from the given face, data, and vertex indices. 8 | * 9 | * @param the type of polygon to create. 10 | * @param the type of data that is stored on the polygon. 11 | */ 12 | @FunctionalInterface 13 | public interface IPolygonProvider, D extends IPolygonData> { 14 | 15 | /** 16 | * Creates a polygon from the given face, data, and vertex indices. 17 | * 18 | * @param face the face associated with the polygon. 19 | * @param data the data to associate with the polygon. 20 | * @param vertexIndices the vertex indices to create the polygon from. 21 | * @return the created polygon. 22 | */ 23 | T createPolygon(@NotNull IFace face, @NotNull D data, int @NotNull ... vertexIndices); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/model/mesh/PolygonData.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.model.mesh; 2 | 3 | import com.tridevmc.architecture.core.math.ITrans3; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | /** 7 | * Default implementation of {@link IPolygonData}. 8 | * 9 | * @param cullFace The cull face of this polygon. 10 | * @param textureIndex The texture index of the polygon. 11 | * @param tintIndex The tint index of the polygon. 12 | */ 13 | public record PolygonData(@NotNull CullFace cullFace, @NotNull FaceDirection face, int textureIndex, 14 | int tintIndex) implements IPolygonData { 15 | 16 | @Override 17 | public PolygonData transform(@NotNull ITrans3 trans) { 18 | if (this.cullFace() == CullFace.NONE) return this; 19 | // We're just going to transform the cull face then copy the rest of the data to a new instance. 20 | return new PolygonData(trans.transformCullFace(this.cullFace()), 21 | trans.transformFaceDirection(this.face()), 22 | this.textureIndex(), 23 | this.tintIndex()); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/model/mesh/RawPolygonPayload.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.model.mesh; 2 | 3 | import com.google.common.collect.ImmutableList; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public record RawPolygonPayload

, D extends IPolygonData>( 7 | @NotNull IPolygonProvider provider, 8 | @NotNull D data, 9 | @NotNull ImmutableList vertices 10 | ) implements IRawPolygonPayload { 11 | 12 | @Override 13 | @NotNull 14 | public IPolygonProvider getProvider() { 15 | return this.provider(); 16 | } 17 | 18 | @Override 19 | @NotNull 20 | public D getData() { 21 | return this.data(); 22 | } 23 | 24 | @Override 25 | @NotNull 26 | public ImmutableList getVertices() { 27 | return this.vertices(); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This package contains the core interfaces and classes for ArchitectureCraft. 3 | *

4 | * The main differentiator between this and the common/client packages is that the code within 5 | * is not directly dependent on Minecraft or Forge. 6 | *

7 | * There may be helper methods that provide ways to convert our internal data structures 8 | * to Minecraft/Forge classes, but the core logic should be independent of Minecraft/Forge. 9 | */ 10 | package com.tridevmc.architecture.core; -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/core/physics/IAABBTree.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.core.physics; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.util.List; 6 | import java.util.stream.Stream; 7 | 8 | /** 9 | * An interface for an AABB tree, provides read only access to the tree. 10 | * 11 | * @param The type of data stored in the tree. 12 | */ 13 | public interface IAABBTree { 14 | 15 | /** 16 | * Searches the tree for all elements that intersect with the given box, uses a stream to avoid calculating all intersections at once. 17 | * 18 | * @param box The AABB to search for. 19 | * @return A stream of all elements that intersect the given AABB. 20 | */ 21 | @NotNull 22 | Stream searchStream(@NotNull AABB box); 23 | 24 | /** 25 | * Gets the bounds of the tree. 26 | * 27 | * @return The bounds of the tree. 28 | */ 29 | @NotNull 30 | AABB getBounds(); 31 | 32 | /** 33 | * Searches the tree for all elements that intersect the given AABB. 34 | * 35 | * @param box The AABB to search for. 36 | * @return A list of all elements that intersect the given AABB. 37 | */ 38 | @NotNull 39 | default List search(@NotNull AABB box) { 40 | return this.searchStream(box).toList(); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/client/render/model/LegacyIArchitectureModel.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.client.render.model; 2 | 3 | import com.mojang.math.Transformation; 4 | import com.tridevmc.architecture.client.render.model.resolver.IQuadMetadataResolver; 5 | import com.tridevmc.architecture.legacy.client.render.model.data.LegacyArchitectureModelDataQuads; 6 | import net.minecraft.client.renderer.block.model.BakedQuad; 7 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 8 | import net.minecraft.core.BlockPos; 9 | import net.minecraft.world.level.LevelAccessor; 10 | import net.minecraft.world.level.block.state.BlockState; 11 | 12 | import java.util.List; 13 | 14 | @Deprecated 15 | public interface LegacyIArchitectureModel { 16 | 17 | default LegacyArchitectureModelDataQuads getQuads(LevelAccessor level, BlockPos pos, BlockState state) { 18 | return this.getQuads(level, pos, state, Transformation.identity()); 19 | } 20 | 21 | LegacyArchitectureModelDataQuads getQuads(LevelAccessor level, BlockPos pos, BlockState state, Transformation transform); 22 | 23 | IQuadMetadataResolver getMetadataResolver(LevelAccessor level, BlockPos pos, BlockState state); 24 | 25 | TextureAtlasSprite getDefaultSprite(); 26 | 27 | List getDefaultModel(); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/client/render/model/data/LegacyBakedQuadProvider.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.client.render.model.data; 2 | 3 | import com.tridevmc.architecture.client.render.model.piped.IPipedBakedQuad; 4 | 5 | /** 6 | * Default implementation of {@link IPipedBakedQuad}. 7 | * 8 | * @param The type of metadata this provider uses. 9 | */ 10 | @Deprecated 11 | public abstract class LegacyBakedQuadProvider implements IPipedBakedQuad { 12 | 13 | private final T metadata; 14 | 15 | protected LegacyBakedQuadProvider(T metadata) { 16 | this.metadata = metadata; 17 | } 18 | 19 | @Override 20 | public T metadata() { 21 | return this.metadata; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/client/render/model/objson/LegacyOBJSONQuadMetadata.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.client.render.model.objson; 2 | 3 | @Deprecated 4 | public record LegacyOBJSONQuadMetadata(int texture, int tintIndex) { 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/client/render/model/objson/LegacyOBJSONQuadMetadataResolver.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.client.render.model.objson; 2 | 3 | import com.tridevmc.architecture.client.render.model.resolver.IQuadMetadataResolver; 4 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 5 | 6 | @Deprecated 7 | public class LegacyOBJSONQuadMetadataResolver implements IQuadMetadataResolver { 8 | 9 | private final TextureAtlasSprite[] textures; 10 | private final int[] colours; 11 | 12 | public LegacyOBJSONQuadMetadataResolver(TextureAtlasSprite[] textures, int[] colours) { 13 | this.textures = textures; 14 | this.colours = colours; 15 | } 16 | 17 | @Override 18 | public TextureAtlasSprite getTexture(LegacyOBJSONQuadMetadata metadata) { 19 | return this.textures[Math.min(metadata.texture(), this.textures.length - 1)]; 20 | } 21 | 22 | @Override 23 | public int getTintIndex(LegacyOBJSONQuadMetadata metadata) { 24 | return this.colours[metadata.tintIndex()]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/LegacyEnumShapeCategory.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.common.shape; 2 | 3 | @Deprecated 4 | public enum LegacyEnumShapeCategory { 5 | ROOFING("architecturecraft.shape.category.roofing"), 6 | ROUNDED("architecturecraft.shape.category.rounded"), 7 | CLASSICAL("architecturecraft.shape.category.classical"), 8 | WINDOW("architecturecraft.shape.category.window"), 9 | ARCHES("architecturecraft.shape.category.arches"), 10 | RAILINGS("architecturecraft.shape.category.railings"), 11 | OTHER("architecturecraft.shape.category.other"); 12 | 13 | private final String translationKey; 14 | 15 | LegacyEnumShapeCategory(String translationKey) { 16 | this.translationKey = translationKey; 17 | } 18 | 19 | public String getTranslationKey() { 20 | return this.translationKey; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/LegacyShapeFlags.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2017 Benjamin K 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | package com.tridevmc.architecture.legacy.common.shape; 26 | 27 | @Deprecated 28 | public class LegacyShapeFlags { 29 | 30 | // Shape.flags values 31 | public final static int PLACE_UNDERNEATH = 1; // Reverses the upside down placement option 32 | public final static int PLACE_OFFSET = 2; // Offset to left or right side along X axis 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/LegacyShapeSymmetry.java: -------------------------------------------------------------------------------- 1 | /* 2 | * MIT License 3 | * 4 | * Copyright (c) 2017 Benjamin K 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | package com.tridevmc.architecture.legacy.common.shape; 26 | 27 | @Deprecated 28 | public enum LegacyShapeSymmetry { 29 | UNILATERAL, 30 | BILATERAL, 31 | QUADRILATERAL 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/behaviour/LegacyShapeBehaviourBanister.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.common.shape.behaviour; 2 | 3 | import com.tridevmc.architecture.common.helpers.Profile; 4 | import com.tridevmc.architecture.common.utils.MiscUtils; 5 | import com.tridevmc.architecture.legacy.math.LegacyTrans3; 6 | import com.tridevmc.architecture.legacy.math.LegacyVector3; 7 | import net.minecraft.core.BlockPos; 8 | import net.minecraft.core.Direction; 9 | import net.minecraft.world.entity.player.Player; 10 | import net.minecraft.world.level.block.StairBlock; 11 | import net.minecraft.world.level.block.entity.BlockEntity; 12 | import net.minecraft.world.level.block.state.BlockState; 13 | import net.minecraft.world.level.block.state.properties.Half; 14 | 15 | import static net.minecraft.core.Direction.*; 16 | 17 | @Deprecated 18 | public class LegacyShapeBehaviourBanister extends LegacyShapeBehaviourModel { 19 | 20 | public LegacyShapeBehaviourBanister(String modelName) { 21 | super(modelName, Profile.Generic.tbOffset); 22 | } 23 | 24 | private static Direction stairsFacing(BlockState state) { 25 | return state.getValue(StairBlock.FACING); 26 | } 27 | 28 | private static int stairsSide(BlockState state) { 29 | if (state.getValue(StairBlock.HALF) == Half.TOP) 30 | return 1; 31 | else 32 | return 0; 33 | } 34 | 35 | 36 | @Override 37 | public double placementOffsetX() { 38 | return 6 / 16d; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/behaviour/LegacyShapeBehaviourMullionWindow.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.common.shape.behaviour; 2 | 3 | import com.tridevmc.architecture.legacy.math.LegacyTrans3; 4 | import net.minecraft.world.phys.shapes.VoxelShape; 5 | 6 | @Deprecated 7 | public class LegacyShapeBehaviourMullionWindow extends LegacyShapeBehaviourPlainWindow { 8 | 9 | @Override 10 | protected VoxelShape addCentreBoxesToList(double r, double s, LegacyTrans3 t, VoxelShape shape) { 11 | return t.addBox(-r, -0.5, -s, r, 0.5, s, shape); 12 | } 13 | 14 | @Override 15 | protected VoxelShape addGlassBoxesToList(double r, double s, double w, double[] e, LegacyTrans3 t, VoxelShape shape) { 16 | shape = t.addBox(-e[3], -e[0], -w, -r, e[2], w, shape); 17 | shape = t.addBox(r, -e[0], -w, e[1], e[2], w, shape); 18 | return shape; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/common/shape/behaviour/LegacyShapeBehaviourPlainWindow.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.common.shape.behaviour; 2 | 3 | import com.tridevmc.architecture.legacy.math.LegacyTrans3; 4 | import net.minecraft.core.Direction; 5 | 6 | import static net.minecraft.core.Direction.*; 7 | 8 | @Deprecated 9 | public class LegacyShapeBehaviourPlainWindow extends LegacyShapeBehaviourWindow { 10 | 11 | public LegacyShapeBehaviourPlainWindow() { 12 | this.frameSides = new Direction[]{DOWN, EAST, UP, WEST}; 13 | this.frameAlways = new boolean[]{false, false, false, false}; 14 | this.frameTypes = new LegacyShapeBehaviourWindow.FrameType[]{LegacyShapeBehaviourWindow.FrameType.PLAIN, LegacyShapeBehaviourWindow.FrameType.PLAIN, LegacyShapeBehaviourWindow.FrameType.NONE, FrameType.NONE, LegacyShapeBehaviourWindow.FrameType.PLAIN, LegacyShapeBehaviourWindow.FrameType.PLAIN}; 15 | this.frameOrientations = new Direction[]{EAST, EAST, null, null, UP, UP}; 16 | this.frameTrans = new LegacyTrans3[]{ 17 | LegacyTrans3.ident, 18 | LegacyTrans3.ident.rotZ(90), 19 | LegacyTrans3.ident.rotZ(180), 20 | LegacyTrans3.ident.rotZ(270), 21 | }; 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/math/LegacyVector3i.java: -------------------------------------------------------------------------------- 1 | package com.tridevmc.architecture.legacy.math; 2 | 3 | @Deprecated 4 | public record LegacyVector3i(int x, int y, int z) { 5 | 6 | public LegacyVector3i add(LegacyVector3i other) { 7 | return new LegacyVector3i(this.x + other.x, this.y + other.y, this.z + other.z); 8 | } 9 | 10 | public LegacyVector3i sub(LegacyVector3i other) { 11 | return new LegacyVector3i(this.x - other.x, this.y - other.y, this.z - other.z); 12 | } 13 | 14 | public LegacyVector3i cross(LegacyVector3i other) { 15 | return new LegacyVector3i(this.x * other.x, this.y * other.y, this.z * other.z); 16 | } 17 | 18 | public LegacyVector3i mul(int scalar) { 19 | return new LegacyVector3i(this.x * scalar, this.y * scalar, this.z * scalar); 20 | } 21 | 22 | public LegacyVector3i div(int scalar) { 23 | return new LegacyVector3i(this.x / scalar, this.y / scalar, this.z / scalar); 24 | } 25 | 26 | public LegacyVector3i negate() { 27 | return new LegacyVector3i(-this.x, -this.y, -this.z); 28 | } 29 | 30 | public LegacyVector3i abs() { 31 | return new LegacyVector3i(Math.abs(this.x), Math.abs(this.y), Math.abs(this.z)); 32 | } 33 | 34 | public LegacyVector3 toVector3() { 35 | return new LegacyVector3(this.x, this.y, this.z); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/tridevmc/architecture/legacy/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains legacy code from the original ArchitectureCraft mod by gcewing. 3 | *

4 | * This code is intended to be removed before the next major release and is only present to allow for a smoother rewrite. 5 | */ 6 | package com.tridevmc.architecture.legacy; -------------------------------------------------------------------------------- /src/main/resources/META-INF/neoforge.mods.toml: -------------------------------------------------------------------------------- 1 | modLoader = "javafml" 2 | loaderVersion = "[2,)" 3 | issueTrackerURL = "https://github.com/TridentMC/ArchitectureCraft/issues" 4 | authors = "gcewing (Original Developer), darkevilmac (Maintainer)" 5 | license = "MIT License - Copyright (c) 2020 Benjamin K" 6 | 7 | [[mods]] 8 | modId = "architecturecraft" 9 | version = "${mod_version}" 10 | displayName = "Architecture Craft" 11 | description = "Distinguished architectural features for your Minecraft buildings." -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/sawbench.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/sawbench" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_anticylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_anticylinder_large_quarter" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d1.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d1" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d2.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d2" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d3a.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d3a" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d3b" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d3c" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d4a.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d4a" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d4b.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d4b" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_arch_d4c.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_arch_d4c" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_architrave.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_architrave" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_architrave_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_architrave_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_fancy" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_fancy_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_fancy_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_fancy_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_fancy_newel" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_fancy_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_fancy_with_newel" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_plain" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_plain_end" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_plain_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_plain_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_plain_outer_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_plain_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_balustrade_plain_with_newel" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_stair_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_stair_plain_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_bottom" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_stair_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_end" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_balustrade_stair_plain_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_top" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_fancy_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_fancy_bottom" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_fancy_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_fancy_end" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_fancy_newel_tall.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_fancy_newel_tall" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_fancy_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_fancy_top" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_plain_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_bottom" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_end" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_banister_plain_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_banister_plain_top" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_bevelled_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_bevelled_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_bevelled_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_bevelled_outer_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cladding_sheet.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cladding_sheet" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_corinthian_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_corinthian_capital" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_bottom" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_end_lh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_end_rh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_lh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_rh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_ridge" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cornice_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cornice_valley" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_full_r8h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_full_r8h16" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_half" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_half_r8h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_half" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_large_quarter" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_quarter" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_quarter_r16h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_quarter_r16h16" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_quarter_r8h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_quarter" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_r2h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_r2h16" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_r4h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_cylinder_r4h16" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_cylinder_r6h16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_pillar" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_doric_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_doric_capital" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_doric_metope.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_doric_metope" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_doric_triglyph.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_doric_triglyph" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_doric_triglyph_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_doric_triglyph_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_ionic_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_ionic_capital" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_pillar.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_pillar" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_pillar_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_pillar_base" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_pole.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_pole" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_post.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_post" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_outer_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_end_lh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_end_rh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_lh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_rh" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_ridge" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_gable_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_valley" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_outer_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_ridge" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_overhang_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_overhang_valley" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_ridge" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_smart_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_smart_ridge" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_smart_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_smart_valley" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_tile.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_tile" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_roof_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_roof_valley" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_round_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_round_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_slab.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_slab" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth_large.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth_large" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth_large_rev.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth_large_rev" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth_r16.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth_r16" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth_r16_rev.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth_r16_rev" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_eighth_r8.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_eighth_r8" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_full" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_full_r8.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_full_r8" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_half" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_half_r8.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_half_r8" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_quarter" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_sphere_quarter_r8.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_sphere_quarter_r8" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_stairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_stairs" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_stairs_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_stairs_inner_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_stairs_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_stairs_outer_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_stairs_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_stairs" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_window_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_window_corner" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_window_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_window_frame" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/blockstates/shape_window_mullion.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "": { 4 | "model": "architecturecraft:block/shape_window_mullion" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/gen_items.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import json 3 | 4 | def main(): 5 | # Get all the .json files in the models/item directory then filter for ones that are prefixed with "shape_" 6 | item_models = list(Path("models/item").glob("*.json")) 7 | item_models = [p for p in item_models if p.stem.startswith("shape_")] 8 | 9 | for model in item_models: 10 | print(f"Processing {model.stem}") 11 | item_path = Path("items") / f"{model.stem}.json" 12 | name = model.stem 13 | file_contents = { 14 | "model": { 15 | "type": "minecraft:model", 16 | "model": "architecturecraft:block/" + name 17 | } 18 | } 19 | item_path.write_text(json.dumps(file_contents, indent=4)) 20 | 21 | 22 | 23 | if __name__ == "__main__": 24 | main() -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/sawbench.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/sawbench" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_anticylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_anticylinder_large_quarter" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d1.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d1" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d2.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d2" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d3a.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d3a" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d3b" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d3c" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d4a.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d4a" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d4b.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d4b" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_arch_d4c.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_arch_d4c" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_architrave.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_architrave" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_architrave_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_architrave_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_fancy" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_fancy_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_fancy_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_fancy_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_fancy_newel" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_fancy_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_fancy_with_newel" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_plain" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_plain_end" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_plain_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_plain_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_plain_outer_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_balustrade_plain_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_balustrade_plain_with_newel" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_fancy" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_fancy_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_fancy_bottom" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_fancy_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_fancy_end" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_fancy_newel_tall.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_fancy_newel_tall" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_fancy_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_fancy_top" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_plain" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_plain_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_plain_bottom" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_plain_end" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_plain_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_banister_plain_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_banister_plain_top" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_bevelled_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_bevelled_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_bevelled_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_bevelled_outer_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cladding_sheet.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cladding_sheet" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_corinthian_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_corinthian_capital" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_bottom" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_end_lh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_end_rh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_lh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_rh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_ridge" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cornice_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cornice_valley" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cylinder.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cylinder" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cylinder_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cylinder_half" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cylinder_large_quarter" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_cylinder_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_cylinder_quarter" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_doric_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_doric_capital" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_doric_metope.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_doric_metope" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_doric_triglyph.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_doric_triglyph" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_doric_triglyph_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_doric_triglyph_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_ionic_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_ionic_capital" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_pillar.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_pillar" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_pillar_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_pillar_base" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_pole.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_pole" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_post.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_post" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_outer_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_gable_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_end_lh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_gable_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_end_rh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_gable_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_lh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_gable_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_gable_rh" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_outer_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_ridge" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_overhang_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_overhang_valley" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_ridge" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_smart_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_smart_ridge" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_smart_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_smart_valley" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_tile.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_tile" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_roof_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_roof_valley" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_slab.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_slab" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_eighth.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_eighth" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_eighth_large.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_eighth_large" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_eighth_large_rev.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_eighth_large_rev" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_full" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_half" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_sphere_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_sphere_quarter" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_stairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_stairs" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_stairs_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_stairs_inner_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_stairs_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_stairs_outer_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_stairs_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_stairs_smart" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_window_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_window_corner" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_window_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_window_frame" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_window_mullion.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_window_mullion" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_window_mullion_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_window_mullion_smart" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/items/shape_window_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "minecraft:model", 4 | "model": "architecturecraft:block/shape_window_smart" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/lang/fr_FR.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.architecturecraft.sawbench": "Table de sciage de l'architeque", 3 | "block.architecturecraft.shape": "Bloc architectural", 4 | "item.architecturecraft.large_pulley": "Grande poulie", 5 | "item.architecturecraft.sawblade": "Lame de scie circulaire", 6 | "item.architecturecraft.chisel": "Ciseau d'architecte", 7 | "item.architecturecraft.hammer": "Marteau d'architecte", 8 | "item.architecturecraft.cladding": "Revêtement" 9 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/lang/ko_kr.json: -------------------------------------------------------------------------------- 1 | { 2 | "block.architecturecraft.sawbench": "건축가의 톱대", 3 | "block.architecturecraft.shape": "건축적인 블럭", 4 | "item.architecturecraft.large_pulley": "큰 도르래", 5 | "item.architecturecraft.sawblade": "원형 톱날", 6 | "item.architecturecraft.chisel": "건축가의 끌", 7 | "item.architecturecraft.hammer": "건축가의 망치", 8 | "item.architecturecraft.cladding": "피복", 9 | "item_group.architecture.tool": "Architecture Craft Tools", 10 | "item_group.architecture.shape": "Architecture Craft Shapes", 11 | "tooltip.architecturecraft.base_material": "재료: %s", 12 | "tooltip.architecturecraft.secondary_material": "부재료: %s" 13 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/cladding.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "ng" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/sawbench.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:block/block", 3 | "loader": "architecturecraft:sawbench_loader" 4 | } 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_anticylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "anticylinder_large_quarter" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d1.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d1" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d2.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d2" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d3a.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d3a" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d3b" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d3c" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d4a.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d4a" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d4b.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d4b" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_arch_d4c.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "arch_d4c" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_architrave.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "architrave" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_architrave_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "architrave_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_fancy" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_fancy_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_fancy_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_fancy_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_fancy_newel" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_fancy_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_fancy_with_newel" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_plain" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_plain_end" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_plain_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_plain_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_plain_outer_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_balustrade_plain_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "balustrade_plain_with_newel" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_fancy" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_fancy_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_fancy_bottom" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_fancy_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_fancy_end" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_fancy_newel_tall.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_fancy_newel_tall" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_fancy_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_fancy_top" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_plain" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_plain_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_plain_bottom" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_plain_end" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_plain_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_banister_plain_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "banister_plain_top" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_bevelled_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "bevelled_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_bevelled_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "bevelled_outer_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cladding_sheet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cladding_sheet" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_corinthian_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "corinthian_capital" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_bottom" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_end_lh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_end_rh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_lh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_rh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_ridge" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cornice_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cornice_valley" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cylinder.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cylinder" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cylinder_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cylinder_half" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cylinder_large_quarter" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_cylinder_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "cylinder_quarter" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_doric_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "doric_capital" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_doric_metope.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "doric_metope" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_doric_triglyph.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "doric_triglyph" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_doric_triglyph_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "doric_triglyph_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_ionic_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "ionic_capital" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_pillar.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "pillar" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_pillar_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "pillar_base" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_pole.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "pole" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_post.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "post" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_outer_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_gable_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_gable_end_lh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_gable_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_gable_end_rh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_gable_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_gable_lh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_gable_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_gable_rh" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_outer_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_ridge" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_overhang_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_overhang_valley" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_ridge" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_smart_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_smart_ridge" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_smart_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_smart_valley" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_tile.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_tile" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_roof_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "roof_valley" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_slab.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "slab" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_eighth.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_eighth" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_eighth_large.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_eighth_large" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_eighth_large_rev.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_eighth_large_rev" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_full" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_half" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_sphere_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "sphere_quarter" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_stairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "stairs" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_stairs_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "stairs_inner_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_stairs_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "stairs_outer_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_stairs_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "stairs_smart" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_window_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "window_corner" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_window_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "window_frame" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_window_mullion.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "window_mullion" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_window_mullion_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "window_mullion_smart" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/block/shape_window_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/block", 3 | "loader": "architecturecraft:shape_loader", 4 | "shapeName": "window_smart" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/chisel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "architecturecraft:item/chisel" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/cladding.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/cladding" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/hammer.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "architecturecraft:item/hammer" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/large_pulley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "architecturecraft:item/largepulley" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/sawbench.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/sawbench" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/sawblade.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "minecraft:item/generated", 3 | "textures": { 4 | "layer0": "architecturecraft:item/sawblade" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_anticylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_anticylinder_large_quarter" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d1.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d1" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d2.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d2" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d3a.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d3a" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d3b" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d3c" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d4a.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d4a" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d4b.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d4b" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_arch_d4c.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_arch_d4c" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_architrave.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_architrave" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_architrave_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_architrave_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_fancy" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_fancy_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_fancy_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_fancy_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_fancy_newel" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_fancy_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_fancy_with_newel" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_plain" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_plain_end" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_plain_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_plain_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_plain_outer_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_balustrade_plain_with_newel.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_balustrade_plain_with_newel" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_fancy.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_fancy" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_fancy_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_fancy_bottom" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_fancy_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_fancy_end" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_fancy_newel_tall.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_fancy_newel_tall" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_fancy_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_fancy_top" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_plain.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_plain" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_plain_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_plain_bottom" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_plain_end.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_plain_end" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_plain_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_plain_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_banister_plain_top.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_banister_plain_top" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_bevelled_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_bevelled_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_bevelled_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_bevelled_outer_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cladding_sheet.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cladding_sheet" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_corinthian_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_corinthian_capital" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_bottom.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_bottom" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_end_lh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_end_rh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_lh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_rh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_ridge" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cornice_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cornice_valley" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cylinder.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cylinder" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cylinder_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cylinder_half" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cylinder_large_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cylinder_large_quarter" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_cylinder_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_cylinder_quarter" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_doric_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_doric_capital" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_doric_metope.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_doric_metope" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_doric_triglyph.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_doric_triglyph" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_doric_triglyph_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_doric_triglyph_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_ionic_capital.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_ionic_capital" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_pillar.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_pillar" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_pillar_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_pillar_base" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_pole.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_pole" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_post.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_post" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_outer_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_gable_end_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_gable_end_lh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_gable_end_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_gable_end_rh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_gable_lh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_gable_lh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_gable_rh.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_gable_rh" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_outer_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_ridge" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_overhang_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_overhang_valley" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_ridge" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_smart_ridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_smart_ridge" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_smart_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_smart_valley" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_tile.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_tile" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_roof_valley.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_roof_valley" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_slab.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_slab" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_eighth.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_eighth" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_eighth_large.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_eighth_large" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_eighth_large_rev.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_eighth_large_rev" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_full.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_full" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_half.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_half" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_sphere_quarter.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_sphere_quarter" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_stairs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_stairs" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_stairs_inner_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_stairs_inner_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_stairs_outer_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_stairs_outer_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_stairs_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_stairs_smart" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_window_corner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_window_corner" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_window_frame.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_window_frame" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_window_mullion.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_window_mullion" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_window_mullion_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_window_mullion_smart" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/models/item/shape_window_smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "architecturecraft:block/shape_window_smart" 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/block/__custitem__.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/block/__custitem__.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/gui/gui_sawbench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/gui/gui_sawbench.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/gui/shapemenu_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/gui/shapemenu_bg.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/gui/shapemenu_items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/gui/shapemenu_items.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/gui/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/gui/shapes.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/item/chisel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/item/chisel.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/item/hammer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/item/hammer.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/item/largepulley.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/item/largepulley.png -------------------------------------------------------------------------------- /src/main/resources/assets/architecturecraft/textures/item/sawblade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/src/main/resources/assets/architecturecraft/textures/item/sawblade.png -------------------------------------------------------------------------------- /src/main/resources/data/architecturecraft/recipes/chisel.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "crafting_shaped", 3 | "pattern": [ 4 | "I ", 5 | "d/" 6 | ], 7 | "key": { 8 | "I": { 9 | "tag": "forge:ingots/iron" 10 | }, 11 | "/": { 12 | "tag": "forge:rods/wooden" 13 | }, 14 | "d": { 15 | "tag": "forge:dyes/orange" 16 | } 17 | }, 18 | "result": { 19 | "item": "architecturecraft:chisel" 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/resources/data/architecturecraft/recipes/hammer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "crafting_shaped", 3 | "pattern": [ 4 | "II ", 5 | "d/I", 6 | "d/ " 7 | ], 8 | "key": { 9 | "I": { 10 | "tag": "forge:ingots/iron" 11 | }, 12 | "/": { 13 | "tag": "forge:rods/wooden" 14 | }, 15 | "d": { 16 | "tag": "forge:dyes/orange" 17 | } 18 | }, 19 | "result": { 20 | "item": "architecturecraft:hammer" 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/resources/data/architecturecraft/recipes/large_pully.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "crafting_shaped", 3 | "pattern": [ 4 | " W ", 5 | "W/W", 6 | " W " 7 | ], 8 | "key": { 9 | "W": { 10 | "tag": "minecraft:planks" 11 | }, 12 | "/": { 13 | "tag": "forge:rods/wooden" 14 | } 15 | }, 16 | "result": { 17 | "item": "architecturecraft:large_pulley" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/data/architecturecraft/recipes/sawbench.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "crafting_shaped", 3 | "pattern": [ 4 | "I*I", 5 | "/0/", 6 | "/_/" 7 | ], 8 | "key": { 9 | "I": { 10 | "tag": "forge:ingots/iron" 11 | }, 12 | "*": { 13 | "item": "architecturecraft:sawblade" 14 | }, 15 | "/": { 16 | "tag": "forge:rods/wooden" 17 | }, 18 | "_": { 19 | "tag": "minecraft:wooden_pressure_plates" 20 | }, 21 | "0": { 22 | "item": "architecturecraft:large_pulley" 23 | } 24 | }, 25 | "result": { 26 | "item": "architecturecraft:sawbench" 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/resources/data/architecturecraft/recipes/sawblade.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "crafting_shaped", 3 | "pattern": [ 4 | " I ", 5 | "I/I", 6 | " I " 7 | ], 8 | "key": { 9 | "I": { 10 | "tag": "forge:ingots/iron" 11 | }, 12 | "/": { 13 | "tag": "forge:rods/wooden" 14 | } 15 | }, 16 | "result": { 17 | "item": "architecturecraft:sawblade" 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "ArchitectureCraft Resources", 4 | "pack_format": 4 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tooling/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.formatting.provider": "yapf" 3 | } -------------------------------------------------------------------------------- /tooling/blender/.python-version: -------------------------------------------------------------------------------- 1 | 3.9.6 2 | -------------------------------------------------------------------------------- /tooling/blender/addons/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TridentMC/ArchitectureCraft/b00e1fd50362dae7b2c3d06954f3f83bc50d2afa/tooling/blender/addons/__init__.py -------------------------------------------------------------------------------- /tooling/blender/addons/objson/common_types.py: -------------------------------------------------------------------------------- 1 | from typing import List, NamedTuple 2 | from numpy import double 3 | 4 | 5 | class Vec3(NamedTuple): 6 | x: double 7 | y: double 8 | z: double 9 | 10 | 11 | class UV(NamedTuple): 12 | u: double 13 | v: double 14 | 15 | 16 | class Vertex(NamedTuple): 17 | pos: Vec3 18 | normal: Vec3 19 | uv: UV 20 | 21 | 22 | class Triangle(NamedTuple): 23 | v0: int 24 | v1: int 25 | v2: int 26 | texture: int 27 | 28 | class Quad(NamedTuple): 29 | v0: int 30 | v1: int 31 | v2: int 32 | v3: int 33 | texture: int 34 | 35 | 36 | class Face(NamedTuple): 37 | vertices: List[Vertex] 38 | triangles: List[Triangle] 39 | quads: List[Quad] 40 | normal: Vec3 41 | 42 | 43 | class Part(NamedTuple): 44 | name: str 45 | bounds: List[double] 46 | faces: List[Face] 47 | 48 | 49 | class ModelData(NamedTuple): 50 | name: str 51 | bounds: List[double] 52 | parts: List[Part] 53 | -------------------------------------------------------------------------------- /tooling/blender/addons/objson/objson_types.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | from dataclasses import dataclass 3 | from enum import Enum, IntEnum 4 | 5 | from objson.common_types import Vec3 6 | 7 | 8 | class CullFace(IntEnum): 9 | NONE = -1 10 | DOWN = 0 11 | UP = 1 12 | NORTH = 2 13 | SOUTH = 3 14 | WEST = 4 15 | EAST = 5 16 | 17 | 18 | class Direction(Enum): 19 | NORTH = Vec3(0, 0, -1) 20 | SOUTH = Vec3(0, 0, 1) 21 | WEST = Vec3(-1, 0, 0) 22 | EAST = Vec3(1, 0, 0) 23 | UP = Vec3(0, 1, 0) 24 | DOWN = Vec3(0, -1, 0) 25 | 26 | 27 | class IntDirection(IntEnum): 28 | DOWN = 0 29 | UP = 1 30 | NORTH = 2 31 | SOUTH = 3 32 | WEST = 4 33 | EAST = 5 34 | 35 | 36 | @dataclass 37 | class OBJSONTriangle: 38 | face: int 39 | cull_face: CullFace 40 | texture: int 41 | vertices: List[int] 42 | 43 | 44 | @dataclass 45 | class OBJSONQuad: 46 | face: int 47 | cull_face: CullFace 48 | texture: int 49 | vertices: List[int] 50 | 51 | 52 | @dataclass 53 | class OBJSONVertex: 54 | pos: List[float] 55 | normal: List[float] 56 | uv: List[float] 57 | 58 | 59 | @dataclass 60 | class OBJSONFace: 61 | normal: List[float] 62 | vertices: List[OBJSONVertex] 63 | face: IntDirection 64 | 65 | 66 | @dataclass 67 | class OBJSONPart: 68 | name: str 69 | bounds: List[float] 70 | triangles: List[OBJSONTriangle] 71 | quads: List[OBJSONQuad] 72 | 73 | 74 | @dataclass 75 | class OBJSON: 76 | name: str 77 | bounds: List[float] 78 | faces: List[OBJSONFace] 79 | parts: List[OBJSONPart] --------------------------------------------------------------------------------