From 5f65c0caf5426fcd523c3cd25fea3418310ce8e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Lindstr=C3=B6m?= Date: Sat, 9 Mar 2024 23:28:25 +0100 Subject: [PATCH 1/3] Various minor improvements to ChromatiCraft rendering --- .../renderdata/ChromatiCraft-models.txt | 2 ++ .../renderdata/ChromatiCraft-texture.txt | 28 +++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/resources/renderdata/ChromatiCraft-models.txt b/src/main/resources/renderdata/ChromatiCraft-models.txt index 3c56fa83..54e0c221 100644 --- a/src/main/resources/renderdata/ChromatiCraft-models.txt +++ b/src/main/resources/renderdata/ChromatiCraft-models.txt @@ -225,3 +225,5 @@ boxblock:id=%chromaticraft_block_fertiledyevine,xmin=0.09999999403953552,xmax=0. # %chromaticraft_block_mud:* (chromaticraft_block_mud), render=(STANDARD), opaque=false,cls=Reika.ChromatiCraft.Block.Worldgen.BlockChromaMud boxblock:id=%chromaticraft_block_mud,xmin=0.0,xmax=1.0,ymin=0.0,ymax=0.9375,zmin=0.0,zmax=1.0,data=* + +customblock:id=%chromaticraft_block_lamp,class=org.dynmap.hdmap.renderer.SimpleMultiBoxRenderer,data=*,box0=i:0-16:0-2:0-16:b6,box1=i:6-10:0-14:6-10:b0,box2=i:7-9:14-15:7-9:b0,box3=i:1-5:0-8:6-10:b0,box4=i:6-10:0-8:1-5:b0,box5=i:11-15:0-8:6-10:b0,box6=i:6-10:0-8:11-15:b0 diff --git a/src/main/resources/renderdata/ChromatiCraft-texture.txt b/src/main/resources/renderdata/ChromatiCraft-texture.txt index c8d88a98..2311cae8 100644 --- a/src/main/resources/renderdata/ChromatiCraft-texture.txt +++ b/src/main/resources/renderdata/ChromatiCraft-texture.txt @@ -142,7 +142,7 @@ texture:id=chromaticraft/icons/repeater,filename=assets/chromaticraft/textures/b texture:id=chromaticraft/icons/transparent,filename=assets/chromaticraft/textures/blocks/icons/transparent.png texture:id=chromaticraft/icons/weakrepeater,filename=assets/chromaticraft/textures/blocks/icons/weakrepeater.png texture:id=chromaticraft/lamp,filename=assets/chromaticraft/textures/blocks/lamp.png -texture:id=chromaticraft/mud,filename=assets/chromaticraft/textures/blocks/mud.png +texture:id=chromaticraft/mud,filename=assets/chromaticraft/textures/blocks/mud.png,ycount=128 texture:id=chromaticraft/ore/tier_0_underlay,filename=assets/chromaticraft/textures/blocks/ore/tier_0_underlay.png texture:id=chromaticraft/ore/tier_10_geode,filename=assets/chromaticraft/textures/blocks/ore/tier_10_geode.png texture:id=chromaticraft/ore/tier_11_underlay,filename=assets/chromaticraft/textures/blocks/ore/tier_11_underlay.png @@ -343,6 +343,8 @@ texture:id=minecraft/planks_oak,filename=assets/minecraft/textures/blocks/planks texture:id=minecraft/sand,filename=assets/minecraft/textures/blocks/sand.png texture:id=minecraft/stone,filename=assets/minecraft/textures/blocks/stone.png texture:id=minecraft/stonebrick,filename=assets/minecraft/textures/blocks/stonebrick.png +texture:id=minecraft/stone_slab_side,filename=assets/minecraft/textures/blocks/stone_slab_side.png +texture:id=minecraft/stone_slab_top,filename=assets/minecraft/textures/blocks/stone_slab_top.png texture:id=minecraft/water_still,filename=assets/minecraft/textures/blocks/water_still.png texture:id=thermalfoundation/fluid/Fluid_Redstone_Still,filename=assets/thermalfoundation/textures/blocks/fluid/Fluid_Redstone_Still.png @@ -398,7 +400,23 @@ block:id=%chromaticraft_block_crystal,data=*,stdrot=true,face0-5=12000:ChromatiC block:id=%chromaticraft_block_rainbowcrystal,data=*,stdrot=true,face0-5=12000:chromaticraft/crystal/chroma # %chromaticraft_block_lamp:* (chromaticraft_block_lamp), render=Reika.ChromatiCraft.Render.ISBRH.CrystalRenderer(CUSTOM), opaque=false,cls=Reika.ChromatiCraft.Block.Crystal.BlockCrystalLamp -block:id=%chromaticraft_block_lamp,data=*,stdrot=true,face0-5=12000:ChromatiCraft/crystal/crystal_outline +# block:id=%chromaticraft_block_lamp,data=*,stdrot=true,face0-5=12000:ChromatiCraft/crystal/crystal_outline +block:id=%chromaticraft_block_lamp,data=0,stdrot=true,colorMult=FF191919,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=1,stdrot=true,colorMult=FFFF4D4D,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=2,stdrot=true,colorMult=FF267F30,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=3,stdrot=true,colorMult=FF72523E,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=4,stdrot=true,colorMult=FF4D67FF,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=5,stdrot=true,colorMult=FFA846EA,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=6,stdrot=true,colorMult=FF39A9BF,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=7,stdrot=true,colorMult=FF979797,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=8,stdrot=true,colorMult=FF404040,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=9,stdrot=true,colorMult=FFFFCFE4,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=10,stdrot=true,colorMult=FF4DFF4D,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=11,stdrot=true,colorMult=FFFFFF4D,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=12,stdrot=true,colorMult=FFA5E1FF,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=13,stdrot=true,colorMult=FFFF4DE7,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=14,stdrot=true,colorMult=FFFF974D,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone +block:id=%chromaticraft_block_lamp,data=15,stdrot=true,colorMult=FFFFFFFF,patch0-5=17000:ChromatiCraft/crystal/crystal_outline,patch6-11=0:minecraft/stone # %chromaticraft_block_super:* (chromaticraft_block_super), render=Reika.ChromatiCraft.Render.ISBRH.CrystalRenderer(CUSTOM), opaque=false,cls=Reika.ChromatiCraft.Block.Crystal.BlockSuperCrystal block:id=%chromaticraft_block_super,data=*,stdrot=true,face0-5=12000:ChromatiCraft/crystal/crystal_outline @@ -570,7 +588,7 @@ block:id=%chromaticraft_block_pylon,data=8,stdrot=true,face0-5=12000:chromaticra block:id=%chromaticraft_block_pylon,data=9,stdrot=true,face0-5=12000:chromaticraft/icons/weakrepeater block:id=%chromaticraft_block_pylon,data=10,stdrot=true,face0-5=12000:minecraft/stone block:id=%chromaticraft_block_pylon,data=11,stdrot=true,face0-5=12000:chromaticraft/icons/transparent -block:id=%chromaticraft_block_pylon,data=12,data=13,data=14,data=15,stdrot=true,face0-5=12000:minecraft/stoneblock:id=%chromaticraft_block_pylon,data=0,stdrot=true,face0-5=12000:chromaticraft/icons/transparent +block:id=%chromaticraft_block_pylon,data=12,data=13,data=14,data=15,stdrot=true,face0-5=12000:minecraft/stone # %chromaticraft_block_tank:* (chromaticraft_block_tank), render=Reika.ChromatiCraft.Render.ISBRH.TankBlockRenderer(CUSTOM), opaque=false,cls=Reika.ChromatiCraft.Block.BlockCrystalTank @@ -647,7 +665,7 @@ block:id=%chromaticraft_block_lampblock,data=11,stdrot=true,colorMult=FFFFFF4D,f block:id=%chromaticraft_block_lampblock,data=12,stdrot=true,colorMult=FFA5E1FF,face0-5=17000:chromaticraft/lamp block:id=%chromaticraft_block_lampblock,data=13,stdrot=true,colorMult=FFFF4DE7,face0-5=17000:chromaticraft/lamp block:id=%chromaticraft_block_lampblock,data=14,stdrot=true,colorMult=FFFF974D,face0-5=17000:chromaticraft/lamp -block:id=%chromaticraft_block_lampblock,data=15,stdrot=true,face0-5=12000:chromaticraft/lamp +block:id=%chromaticraft_block_lampblock,data=15,stdrot=true,colorMult=FFFFFFFF,face0-5=17000:chromaticraft/lamp # %chromaticraft_block_tnt:* (chromaticraft_block_tnt), render=(STANDARD), opaque=true,cls=Reika.ChromatiCraft.Block.BlockEnderTNT block:id=%chromaticraft_block_tnt,data=0,stdrot=true,face0=0:chromaticraft/basic/enderbomb_bottom,face1=0:chromaticraft/basic/enderbomb_top,face2-5=0:chromaticraft/basic/enderbomb_side @@ -1088,4 +1106,4 @@ block:id=%chromaticraft_block_fertiledyevine,data=15,stdrot=true,transparency=TR block:id=%chromaticraft_block_voidcave,data=*,stdrot=true,face0-5=0:chromaticraft/dimgen/voidcave # %chromaticraft_block_mud:* (chromaticraft_block_mud), render=(STANDARD), opaque=false,cls=Reika.ChromatiCraft.Block.Worldgen.BlockChromaMud -block:id=%chromaticraft_block_mud,data=*,stdrot=true,transparency=TRANSPARENT,face0=0:minecraft/dirt,face1=0:chromaticraft/mud,face2-5=0:minecraft/dirt +block:id=%chromaticraft_block_mud,data=*,stdrot=true,transparency=SEMITRANSPARENT,face0=0:minecraft/dirt,face1=0:chromaticraft/mud,face2-5=0:minecraft/dirt From 619810e55a75d7c3ca9adb0d9a14cc708752eb0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Lindstr=C3=B6m?= Date: Sat, 9 Mar 2024 23:29:43 +0100 Subject: [PATCH 2/3] Improve Carpenters support - allow plates to be placed on walls and ceilings, and support more (all?) slope types --- .../renderer/CarpentersBlocksRenderer.java | 115 ++++++++++++++---- 1 file changed, 91 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/dynmap/hdmap/renderer/CarpentersBlocksRenderer.java b/src/main/java/org/dynmap/hdmap/renderer/CarpentersBlocksRenderer.java index 35943021..f6a1d2a5 100644 --- a/src/main/java/org/dynmap/hdmap/renderer/CarpentersBlocksRenderer.java +++ b/src/main/java/org/dynmap/hdmap/renderer/CarpentersBlocksRenderer.java @@ -102,11 +102,16 @@ private void initBlockShapes(RenderPatchFactory rpf) { shapes[6] = CustomRenderer.getBoxSingleTexture(rpf, 0.0, 1.0, 0.0, 1.0, 0.5, 1.0,0, false); } private void initPlateShapes(RenderPatchFactory rpf) { - shapes[0] = fullBlock; - shapes[1] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 0, 1, 1, 15,0, false); - shapes[33] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 0, 1, 1, 15,0, false); - shapes[65] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 0, 1, 1, 15,0, false); - shapes[97] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 0, 1, 1, 15,0, false); + shapes[0] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 15, 16, 1, 15, 0, false); + shapes[1] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 0, 1, 1, 15, 0, false); + shapes[2] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 1, 15, 15, 16, 0, false); + shapes[3] = CustomRenderer.getBoxSingleTextureInt(rpf, 1, 15, 1, 15, 0, 1, 0, false); + shapes[4] = CustomRenderer.getBoxSingleTextureInt(rpf, 15, 16, 1, 15, 1, 15, 0, false); + shapes[5] = CustomRenderer.getBoxSingleTextureInt(rpf, 0, 1, 1, 15, 1, 15, 0, false); + + for (int i = 0; i < 6; i++) { + shapes[32 + i] = shapes[64 + i] = shapes[96 + i] = shapes[i]; + } } private void initHatchShapes(RenderPatchFactory rpf) { shapes[0] = getBoxSingleTextureInt(rpf, 0,16,0,2,0,16,0,false); @@ -210,21 +215,31 @@ private void initStairsShapes(RenderPatchFactory rpf) { } private void initSlopeShapes(RenderPatchFactory rpf) { - shapes[8] = ArchitectureCraftShapeRenderer.makeRoofPatches(rpf); - shapes[9] = getRotatedSet(rpf, shapes[8], 0, 180, 0); - shapes[10] = getRotatedSet(rpf, shapes[8], 0, 270, 0); - shapes[11] = getRotatedSet(rpf, shapes[8], 0, 90, 0); + RenderPatch[] halfHeightRoofPartToSlope = combineMultiple( + rpf.getPatch(0, 0, 0, 0.5, 0.5, 0, 1, 0, 0, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 0, 0.5, 0.5, 0, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 1, RenderPatchFactory.SideVisible.TOP, 0) + ); + RenderPatch[] halfHeightRoofPartSlopeToStraight = combineMultiple( + rpf.getPatch(1, 0, 1, 0.5, 0.5, 0.5, 0, 0, 1, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0.5, 0, 0, 1, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 1, 0, 0.5, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0) + ); + RenderPatch[] halfHeightRoofPartStraight = combineMultiple( + rpf.getPatch(0, 0, 0, 0.5, 0.5, 0, 1, 0, 0, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0.5, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 1, 0, 0, 0, 1, 1, 0.5, 1, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0) + ); + RenderPatch[] bottom = new RenderPatch[]{rpf.getPatch(0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, RenderPatchFactory.SideVisible.TOP, 0)}; - shapes[16] = getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofInnerCornerPatches(rpf), 0, 90, 0); - shapes[17] = getRotatedSet(rpf, shapes[16], 0, 180, 0); - shapes[18] = getRotatedSet(rpf, shapes[16], 0, 270, 0); - shapes[19] = getRotatedSet(rpf, shapes[16], 0, 90, 0); + shapes[0] = getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofPatches(rpf), 0, 180, 90); + shapes[4] = getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofPatches(rpf), 0, 0, 180); + shapes[8] = ArchitectureCraftShapeRenderer.makeRoofPatches(rpf); + shapes[12] = getRotatedSet(rpf, getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofInnerCornerPatches(rpf), 0, 0, 180), 0, 180, 0); + shapes[16] = getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofInnerCornerPatches(rpf), 0, 90, 0); + shapes[20] = getRotatedSet(rpf,getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofOuterCornerPatches(rpf), 0, 0, 180), 0, 180, 0); shapes[24] = getRotatedSet(rpf, ArchitectureCraftShapeRenderer.makeRoofOuterCornerPatches(rpf), 0, 90, 0); - shapes[25] = getRotatedSet(rpf, shapes[24], 0, 180, 0); - shapes[26] = getRotatedSet(rpf, shapes[24], 0, 270, 0); - shapes[27] = getRotatedSet(rpf, shapes[24], 0, 90, 0); - shapes[32] = combineMultiple( rpf.getPatch(0,0,1,0,0,0,1,0,1,0,1,0,1, RenderPatchFactory.SideVisible.TOP, 0), rpf.getPatch(0,0,0,0,0,1,0,1,0,0,1,0,1, RenderPatchFactory.SideVisible.TOP, 0), @@ -234,11 +249,7 @@ private void initSlopeShapes(RenderPatchFactory rpf) { rpf.getPatch(1,0,1,1,0,0,1,1,0,1, RenderPatchFactory.SideVisible.TOP, 0), rpf.getPatch(0,1,0,0,1,1,1,1,0,1, RenderPatchFactory.SideVisible.TOP, 0), rpf.getPatch(1,0,1,1,1,0,0,1,1,1, RenderPatchFactory.SideVisible.TOP, 0) - ); - shapes[33] = getRotatedSet(rpf, shapes[32], 0, 180, 0); - shapes[34] = getRotatedSet(rpf, shapes[32], 0, 270, 0); - shapes[35] = getRotatedSet(rpf, shapes[32], 0, 90, 0); shapes[40] = combineMultiple( rpf.getPatch(0,0,1,0,0,0,1,0,0,1, RenderPatchFactory.SideVisible.TOP, 0), @@ -246,11 +257,67 @@ private void initSlopeShapes(RenderPatchFactory rpf) { rpf.getPatch(1,0,0,0,0,0,0,1,0,1, RenderPatchFactory.SideVisible.TOP, 0), rpf.getPatch(0,0,1,1,0,0,0,1,0,1, RenderPatchFactory.SideVisible.TOP, 0) ); - shapes[41] = getRotatedSet(rpf, shapes[40], 0, 180, 0); - shapes[42] = getRotatedSet(rpf, shapes[40], 0, 270, 0); - shapes[43] = getRotatedSet(rpf, shapes[40], 0, 90, 0); + shapes[28] = getRotatedSet(rpf, getRotatedSet(rpf, shapes[32], 0, 0, 180), 0, 270, 0); + shapes[36] = getRotatedSet(rpf, getRotatedSet(rpf, shapes[40], 0, 0, 180), 0, 270, 0); + + for(int i =0 ; i < 44; i+=4){ + if(shapes[i] != null){ + shapes[i+1] = getRotatedSet(rpf, shapes[i], 0, 180, 0); + shapes[i+2] = getRotatedSet(rpf, shapes[i], 0, 270, 0); + shapes[i+3] = getRotatedSet(rpf, shapes[i], 0, 90, 0); + } + } + + shapes[44] = getRotatedSet(rpf, getSpikeTop(rpf), 180, 0, 0); shapes[45] = getSpikeTop(rpf); + shapes[46] = combineMultiple( + bottom, + halfHeightRoofPartStraight, + halfHeightRoofPartSlopeToStraight + ); + shapes[47] = getRotatedSet(rpf, shapes[46], 0, 180, 0); + shapes[48] = getRotatedSet(rpf, shapes[46], 0, 270, 0); + shapes[49] = getRotatedSet(rpf, shapes[46], 0, 90, 0); + + shapes[50] = combineMultiple( + bottom[0], + rpf.getPatch(0, 0, 0, 0.5, 0.5, 0, 1, 0, 0, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 0.5, 0.5, 1, 0, 0, 1, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0) + ); + shapes[51] = getRotatedSet(rpf, shapes[50], 0, 90, 0); + + shapes[52] = combineMultiple( + bottom[0], + rpf.getPatch(0, 0, 1, 1, 0, 1, 0.5, 0.5, 1, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 1, 0, 0, 1, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0), + + rpf.getPatch(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0.5, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0, 0, 0, 1, 1, 1, 0, 0.5, 1, 0, 0.5, RenderPatchFactory.SideVisible.TOP, 0), + + rpf.getPatch(1, 0, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(1, 0, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0), + + rpf.getPatch(0.5, 0, 0, 0, 0, 0, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0), + rpf.getPatch(0, 0, 0, 0, 0, 0.5, 0.5, 0.5, 0.5, 1, RenderPatchFactory.SideVisible.TOP, 0) + ); + shapes[53] = getRotatedSet(rpf, shapes[52], 0, 180, 0); + shapes[54] = getRotatedSet(rpf, shapes[52], 0, 270, 0); + shapes[55] = getRotatedSet(rpf, shapes[52], 0, 90, 0); + + shapes[56] = combineMultiple(bottom, halfHeightRoofPartToSlope, shapes[51]); + shapes[57] = getRotatedSet(rpf, shapes[56], 0, 180, 0); + shapes[58] = getRotatedSet(rpf, shapes[56], 0, 270, 0); + shapes[59] = getRotatedSet(rpf, shapes[56], 0, 90, 0); + + shapes[60] = combineMultiple(bottom, halfHeightRoofPartToSlope, getRotatedSet(rpf, halfHeightRoofPartToSlope,0,90,0), getRotatedSet(rpf, halfHeightRoofPartToSlope,0,180,0), getRotatedSet(rpf, halfHeightRoofPartToSlope,0,270,0)); + + shapes[61] = combineMultiple(shapes[8], halfHeightRoofPartToSlope); + shapes[62] = getRotatedSet(rpf, shapes[61], 0, 180, 0); + shapes[63] = getRotatedSet(rpf, shapes[61], 0, 270, 0); + shapes[64] = getRotatedSet(rpf, shapes[61], 0, 90, 0); } private RenderPatch[] getSpikeTop(RenderPatchFactory rpf) { From a3283e216594360cf3f4c9338ecd2f23f161ea33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Lindstr=C3=B6m?= Date: Sat, 9 Mar 2024 23:33:32 +0100 Subject: [PATCH 3/3] Rewrite ArchitectureCraft support to not depend on code from the mod, as the mod was majorly refactored recently to improve Angelica compat. Should fix #8. --- dependencies.gradle | 3 - .../renderer/ArchitectureCraftModel.java | 21 +- .../ArchitectureCraftShapeRenderer.java | 348 +++++++++--------- 3 files changed, 185 insertions(+), 187 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index cc2ccaba..0cd7be65 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -72,9 +72,6 @@ dependencies { compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.42.33:dev"){ transitive = false } - compileOnly("com.github.GTNewHorizons:ArchitectureCraft:1.7.6:dev"){ - transitive = false - } runtimeOnlyNonPublishable("com.github.GTNewHorizons:GT5-Unofficial:5.09.43.46:dev") runtimeOnlyNonPublishable("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev") runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.3.40-GTNH:dev") diff --git a/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftModel.java b/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftModel.java index f2e78d86..12b9c3d6 100644 --- a/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftModel.java +++ b/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftModel.java @@ -26,11 +26,7 @@ package org.dynmap.hdmap.renderer; import com.google.gson.Gson; -import gcewing.architecture.ArchitectureCraft; -import gcewing.architecture.BaseModel; -import gcewing.architecture.Vector3; import net.minecraft.util.ResourceLocation; - import java.io.InputStream; import java.io.InputStreamReader; @@ -46,13 +42,26 @@ public static class Face { Vector3 normal; } + public class Vector3 { + double x; + double y; + double z; + public Vector3(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + public String toString() { + return String.format("(%.3f,%.3f,%.3f)", this.x, this.y, this.z); + } + } static Gson gson = new Gson(); public static ArchitectureCraftModel fromResource(ResourceLocation location) { // Can't use resource manager because this needs to work on the server String path = String.format("/assets/%s/%s", location.getResourceDomain(), location.getResourcePath()); - InputStream in = BaseModel.class.getResourceAsStream(path); + InputStream in = ArchitectureCraftModel.class.getResourceAsStream(path); if (in == null) throw new RuntimeException(String.format("Cannot find resource %s", path)); ArchitectureCraftModel model = gson.fromJson(new InputStreamReader(in), ArchitectureCraftModel.class); @@ -61,7 +70,7 @@ public static ArchitectureCraftModel fromResource(ResourceLocation location) { public static ResourceLocation resourceLocation(String path) { if (path.contains(":")) return new ResourceLocation(path); - else return new ResourceLocation(ArchitectureCraft.mod.modID.toLowerCase(), path); + else return new ResourceLocation("architecturecraft", path); } public static ResourceLocation modelLocation(String path) { return resourceLocation("models/" + path); diff --git a/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftShapeRenderer.java b/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftShapeRenderer.java index c4b9ddaa..1abfe09c 100644 --- a/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftShapeRenderer.java +++ b/src/main/java/org/dynmap/hdmap/renderer/ArchitectureCraftShapeRenderer.java @@ -1,6 +1,5 @@ package org.dynmap.hdmap.renderer; -import gcewing.architecture.*; import net.minecraftforge.common.util.ForgeDirection; import org.dynmap.hdmap.TexturePack; import org.dynmap.modsupport.GWM_Util; @@ -25,190 +24,182 @@ public boolean initializeRenderer(RenderPatchFactory rpf, int blkid, int blockda renderPatchesPerShape = new RenderPatch[256][6][4][]; - for(Shape s : Shape.values()){ - renderPatchesPerShape[s.id][0][0] = getRenderPatchForShape(rpf, s.id); + for(int i = 0; i < 256; i++){ + renderPatchesPerShape[i][0][0] = getRenderPatchForShape(rpf, i); } return true; } RenderPatch[] getRenderPatchForShape(RenderPatchFactory rpf, int id){ - Shape s = Shape.forId(id); - if(s.id == id) { - - switch (s) { - case RoofTile: - return makeRoofPatches(rpf); - case RoofOuterCorner: - return makeRoofOuterCornerPatches(rpf); - case RoofInnerCorner: - return makeRoofInnerCornerPatches(rpf); - case RoofRidge: - break; - case RoofSmartRidge: - break; - case RoofValley: - break; - case RoofSmartValley: - break; - case RoofOverhang: - return makePatchesFromModel(rpf, "roof_overhang"); - case RoofOverhangOuterCorner: - return makePatchesFromModel(rpf, "roof_overhang_outer_corner"); - case RoofOverhangInnerCorner: - return makePatchesFromModel(rpf, "roof_overhang_inner_corner"); - case Cylinder: - return makePatchesFromModel(rpf, "cylinder_full_r8h16"); - case CylinderHalf: - return makePatchesFromModel(rpf, "cylinder_half_r8h16"); - case CylinderQuarter: - return makePatchesFromModel(rpf, "cylinder_quarter_r8h16"); - case CylinderLargeQuarter: - return makePatchesFromModel(rpf, "cylinder_quarter_r16h16"); - case AnticylinderLargeQuarter: - return makePatchesFromModel(rpf, "round_inner_corner"); - case Pillar: - return makePatchesFromModel(rpf, "cylinder_r6h16"); - case Post: - return makePatchesFromModel(rpf, "cylinder_r4h16"); - case Pole: - return makePatchesFromModel(rpf, "cylinder_r2h16"); - case BevelledOuterCorner: - return makePatchesFromModel(rpf, "bevelled_outer_corner"); - case BevelledInnerCorner: - return makePatchesFromModel(rpf, "bevelled_inner_corner"); - case PillarBase: - return makePatchesFromModel(rpf, "pillar_base"); - case DoricCapital: - return makePatchesFromModel(rpf, "doric_capital"); - case IonicCapital: - return makePatchesFromModel(rpf, "ionic_capital"); - case CorinthianCapital: - return makePatchesFromModel(rpf, "corinthian_capital"); - case DoricTriglyph: - return makePatchesFromModel(rpf, "doric_triglyph"); - case DoricTriglyphCorner: - return makePatchesFromModel(rpf, "doric_triglyph_corner"); - case DoricMetope: - return makePatchesFromModel(rpf, "doric_metope"); - case Architrave: - return makePatchesFromModel(rpf, "architrave"); - case ArchitraveCorner: - return makePatchesFromModel(rpf, "architrave_corner"); - case WindowFrame: - return getBoxSingleTextureInt(rpf,0,16,0,16,7,9,6, false); - case WindowCorner: - return combineMultiple(getBoxSingleTextureInt(rpf,6,10,0,16,6,10,0, false),getBoxSingleTextureInt(rpf,0,9,0,16,7,9,6, false), getBoxSingleTextureInt(rpf,7,9,0,16,9,16,6, false) ); - case WindowMullion: - return combineMultiple(getBoxSingleTextureInt(rpf,6,10,0,16,6,10,0, false),getBoxSingleTextureInt(rpf,0,16,0,16,7,9,6, false)); - case SphereFull: - return makePatchesFromModel(rpf, "sphere_full_r8"); - case SphereHalf: - return makePatchesFromModel(rpf, "sphere_half_r8"); - case SphereQuarter: - return makePatchesFromModel(rpf, "sphere_quarter_r8"); - case SphereEighth: - return makePatchesFromModel(rpf, "sphere_eighth_r8"); - case SphereEighthLarge: - return makePatchesFromModel(rpf, "sphere_eighth_r16"); - case SphereEighthLargeRev: - return makePatchesFromModel(rpf, "sphere_eighth_r16_rev"); - case RoofOverhangGableLH: - return makePatchesFromModel(rpf, "roof_overhang_gable_lh"); - case RoofOverhangGableRH: - return makePatchesFromModel(rpf, "roof_overhang_gable_rh"); - case RoofOverhangGableEndLH: - return makePatchesFromModel(rpf, "roof_overhang_gable_end_lh"); - case RoofOverhangGableEndRH: - return makePatchesFromModel(rpf, "roof_overhang_gable_end_rh"); - case RoofOverhangRidge: - return makePatchesFromModel(rpf, "roof_overhang_gable_ridge"); - case RoofOverhangValley: - return makePatchesFromModel(rpf, "roof_overhang_gable_valley"); - case CorniceLH: - return makePatchesFromModel(rpf, "cornice_lh"); - case CorniceRH: - return makePatchesFromModel(rpf, "cornice_rh"); - case CorniceEndLH: - return makePatchesFromModel(rpf, "cornice_end_lh"); - case CorniceEndRH: - return makePatchesFromModel(rpf, "cornice_end_rh"); - case CorniceRidge: - return makePatchesFromModel(rpf, "cornice_ridge"); - case CorniceValley: - return makePatchesFromModel(rpf, "cornice_valley"); - case CorniceBottom: - return makePatchesFromModel(rpf, "cornice_bottom"); - case CladdingSheet: - break; - case ArchD1: - return makePatchesFromModel(rpf, "arch_d1"); - case ArchD2: - return makePatchesFromModel(rpf, "arch_d2"); - case ArchD3A: - return makePatchesFromModel(rpf, "arch_d3a"); - case ArchD3B: - return makePatchesFromModel(rpf, "arch_d3b"); - case ArchD3C: - return makePatchesFromModel(rpf, "arch_d3c"); - case ArchD4A: - return makePatchesFromModel(rpf, "arch_d4a"); - case ArchD4B: - return makePatchesFromModel(rpf, "arch_d4b"); - case ArchD4C: - return makePatchesFromModel(rpf, "arch_d4c"); - case BanisterPlainBottom: - return makePatchesFromModel(rpf, "balustrade_stair_plain_bottom"); - case BanisterPlain: - return makePatchesFromModel(rpf, "balustrade_stair_plain"); - case BanisterPlainTop: - return makePatchesFromModel(rpf, "balustrade_stair_plain_top"); - case BalustradeFancy: - return makePatchesFromModel(rpf, "balustrade_fancy"); - case BalustradeFancyCorner: - return makePatchesFromModel(rpf, "balustrade_fancy_corner"); - case BalustradeFancyWithNewel: - return makePatchesFromModel(rpf, "balustrade_fancy_with_newel"); - case BalustradeFancyNewel: - return makePatchesFromModel(rpf, "balustrade_fancy_newel"); - case BalustradePlain: - return makePatchesFromModel(rpf, "balustrade_plain"); - case BalustradePlainOuterCorner: - return makePatchesFromModel(rpf, "balustrade_plain_outer_corner"); - case BalustradePlainWithNewel: - return makePatchesFromModel(rpf, "balustrade_plain_with_newel"); - case BanisterPlainEnd: - return makePatchesFromModel(rpf, "balustrade_stair_plain_end"); - case BanisterFancyNewelTall: - return makePatchesFromModel(rpf, "balustrade_fancy_newel_tall"); - case BalustradePlainInnerCorner: - return makePatchesFromModel(rpf, "balustrade_plain_inner_corner"); - case BalustradePlainEnd: - return makePatchesFromModel(rpf, "balustrade_plain_end"); - case BanisterFancyBottom: - return makePatchesFromModel(rpf, "balustrade_stair_fancy_bottom"); - case BanisterFancy: - return makePatchesFromModel(rpf, "balustrade_stair_fancy"); - case BanisterFancyTop: - return makePatchesFromModel(rpf, "balustrade_stair_fancy_top"); - case BanisterFancyEnd: - return makePatchesFromModel(rpf, "balustrade_stair_fancy_end"); - case BanisterPlainInnerCorner: - return makePatchesFromModel(rpf, "balustrade_stair_plain_inner_corner"); - case Slab: - return makeSlab(rpf); - case Stairs: - return makeStairs(rpf); - case StairsOuterCorner: - return makePatchesFromModel(rpf, "stairs_outer_corner"); - case StairsInnerCorner: - return makePatchesFromModel(rpf, "stairs_inner_corner"); - } - } - - switch (id) - { + switch (id) { + case 0: //RoofTile: + return makeRoofPatches(rpf); + case 1: //RoofOuterCorner: + return makeRoofOuterCornerPatches(rpf); + case 2: //RoofInnerCorner: + return makeRoofInnerCornerPatches(rpf); + case 3: //RoofRidge: + break; + case 4: //RoofSmartRidge: + break; + case 5: //RoofValley: + break; + case 6: //RoofSmartValley: + break; + case 7: //RoofOverhang: + return makePatchesFromModel(rpf, "roof_overhang"); + case 8: //RoofOverhangOuterCorner: + return makePatchesFromModel(rpf, "roof_overhang_outer_corner"); + case 9: //RoofOverhangInnerCorner: + return makePatchesFromModel(rpf, "roof_overhang_inner_corner"); + case 10: //Cylinder: + return makePatchesFromModel(rpf, "cylinder_full_r8h16"); + case 11: //CylinderHalf: + return makePatchesFromModel(rpf, "cylinder_half_r8h16"); + case 12: //CylinderQuarter: + return makePatchesFromModel(rpf, "cylinder_quarter_r8h16"); + case 13: //CylinderLargeQuarter: + return makePatchesFromModel(rpf, "cylinder_quarter_r16h16"); + case 14: //AnticylinderLargeQuarter: + return makePatchesFromModel(rpf, "round_inner_corner"); + case 15: //Pillar: + return makePatchesFromModel(rpf, "cylinder_r6h16"); + case 16: //Post: + return makePatchesFromModel(rpf, "cylinder_r4h16"); + case 17: //Pole: + return makePatchesFromModel(rpf, "cylinder_r2h16"); + case 18: //BevelledOuterCorner: + return makePatchesFromModel(rpf, "bevelled_outer_corner"); + case 19: //BevelledInnerCorner: + return makePatchesFromModel(rpf, "bevelled_inner_corner"); + case 20: //PillarBase: + return makePatchesFromModel(rpf, "pillar_base"); + case 21: //DoricCapital: + return makePatchesFromModel(rpf, "doric_capital"); + case 22: //IonicCapital: + return makePatchesFromModel(rpf, "ionic_capital"); + case 23: //CorinthianCapital: + return makePatchesFromModel(rpf, "corinthian_capital"); + case 24: //DoricTriglyph: + return makePatchesFromModel(rpf, "doric_triglyph"); + case 25: //DoricTriglyphCorner: + return makePatchesFromModel(rpf, "doric_triglyph_corner"); + case 26: //DoricMetope: + return makePatchesFromModel(rpf, "doric_metope"); + case 27: //Architrave: + return makePatchesFromModel(rpf, "architrave"); + case 28: //ArchitraveCorner: + return makePatchesFromModel(rpf, "architrave_corner"); + case 30: //WindowFrame: + return getBoxSingleTextureInt(rpf,0,16,0,16,7,9,6, false); + case 31: //WindowCorner: + return combineMultiple(getBoxSingleTextureInt(rpf,6,10,0,16,6,10,0, false),getBoxSingleTextureInt(rpf,0,9,0,16,7,9,6, false), getBoxSingleTextureInt(rpf,7,9,0,16,9,16,6, false) ); + case 32: //WindowMullion: + return combineMultiple(getBoxSingleTextureInt(rpf,6,10,0,16,6,10,0, false),getBoxSingleTextureInt(rpf,0,16,0,16,7,9,6, false)); + case 33: //SphereFull: + return makePatchesFromModel(rpf, "sphere_full_r8"); + case 34: //SphereHalf: + return makePatchesFromModel(rpf, "sphere_half_r8"); + case 35: //SphereQuarter: + return makePatchesFromModel(rpf, "sphere_quarter_r8"); + case 36: //SphereEighth: + return makePatchesFromModel(rpf, "sphere_eighth_r8"); + case 37: //SphereEighthLarge: + return makePatchesFromModel(rpf, "sphere_eighth_r16"); + case 38: //SphereEighthLargeRev: + return makePatchesFromModel(rpf, "sphere_eighth_r16_rev"); + case 40: //RoofOverhangGableLH: + return makePatchesFromModel(rpf, "roof_overhang_gable_lh"); + case 41: //RoofOverhangGableRH: + return makePatchesFromModel(rpf, "roof_overhang_gable_rh"); + case 42: //RoofOverhangGableEndLH: + return makePatchesFromModel(rpf, "roof_overhang_gable_end_lh"); + case 43: //RoofOverhangGableEndRH: + return makePatchesFromModel(rpf, "roof_overhang_gable_end_rh"); + case 44: //RoofOverhangRidge: + return makePatchesFromModel(rpf, "roof_overhang_gable_ridge"); + case 45: //RoofOverhangValley: + return makePatchesFromModel(rpf, "roof_overhang_gable_valley"); + case 50: //CorniceLH: + return makePatchesFromModel(rpf, "cornice_lh"); + case 51: //CorniceRH: + return makePatchesFromModel(rpf, "cornice_rh"); + case 52: //CorniceEndLH: + return makePatchesFromModel(rpf, "cornice_end_lh"); + case 53: //CorniceEndRH: + return makePatchesFromModel(rpf, "cornice_end_rh"); + case 54: //CorniceRidge: + return makePatchesFromModel(rpf, "cornice_ridge"); + case 55: //CorniceValley: + return makePatchesFromModel(rpf, "cornice_valley"); + case 56: //CorniceBottom: + return makePatchesFromModel(rpf, "cornice_bottom"); + case 60: //CladdingSheet: + break; + case 61: //ArchD1: + return makePatchesFromModel(rpf, "arch_d1"); + case 62: //ArchD2: + return makePatchesFromModel(rpf, "arch_d2"); + case 63: //ArchD3A: + return makePatchesFromModel(rpf, "arch_d3a"); + case 64: //ArchD3B: + return makePatchesFromModel(rpf, "arch_d3b"); + case 65: //ArchD3C: + return makePatchesFromModel(rpf, "arch_d3c"); + case 66: //ArchD4A: + return makePatchesFromModel(rpf, "arch_d4a"); + case 67: //ArchD4B: + return makePatchesFromModel(rpf, "arch_d4b"); + case 68: //ArchD4C: + return makePatchesFromModel(rpf, "arch_d4c"); + case 70: //BanisterPlainBottom: + return makePatchesFromModel(rpf, "balustrade_stair_plain_bottom"); + case 71: //BanisterPlain: + return makePatchesFromModel(rpf, "balustrade_stair_plain"); + case 72: //BanisterPlainTop: + return makePatchesFromModel(rpf, "balustrade_stair_plain_top"); + case 73: //BalustradeFancy: + return makePatchesFromModel(rpf, "balustrade_fancy"); + case 74: //BalustradeFancyCorner: + return makePatchesFromModel(rpf, "balustrade_fancy_corner"); + case 75: //BalustradeFancyWithNewel: + return makePatchesFromModel(rpf, "balustrade_fancy_with_newel"); + case 76: //BalustradeFancyNewel: + return makePatchesFromModel(rpf, "balustrade_fancy_newel"); + case 77: //BalustradePlain: + return makePatchesFromModel(rpf, "balustrade_plain"); + case 78: //BalustradePlainOuterCorner: + return makePatchesFromModel(rpf, "balustrade_plain_outer_corner"); + case 79: //BalustradePlainWithNewel: + return makePatchesFromModel(rpf, "balustrade_plain_with_newel"); + case 80: //BanisterPlainEnd: + return makePatchesFromModel(rpf, "balustrade_stair_plain_end"); + case 81: //BanisterFancyNewelTall: + return makePatchesFromModel(rpf, "balustrade_fancy_newel_tall"); + case 82: //BalustradePlainInnerCorner: + return makePatchesFromModel(rpf, "balustrade_plain_inner_corner"); + case 83: //BalustradePlainEnd: + return makePatchesFromModel(rpf, "balustrade_plain_end"); + case 84: //BanisterFancyBottom: + return makePatchesFromModel(rpf, "balustrade_stair_fancy_bottom"); + case 85: //BanisterFancy: + return makePatchesFromModel(rpf, "balustrade_stair_fancy"); + case 86: //BanisterFancyTop: + return makePatchesFromModel(rpf, "balustrade_stair_fancy_top"); + case 87: //BanisterFancyEnd: + return makePatchesFromModel(rpf, "balustrade_stair_fancy_end"); + case 88: //BanisterPlainInnerCorner: + return makePatchesFromModel(rpf, "balustrade_stair_plain_inner_corner"); + case 90: //Slab: + return makeSlab(rpf); + case 91: //Stairs: + return makeStairs(rpf); + case 92: //StairsOuterCorner: + return makePatchesFromModel(rpf, "stairs_outer_corner"); + case 93: //StairsInnerCorner: + return makePatchesFromModel(rpf, "stairs_inner_corner"); case 94: // SlopeTileA1: return makeSimpleSlopePatches(rpf, 0.5, 1); case 95: // SlopeTileA2: @@ -228,6 +219,7 @@ RenderPatch[] getRenderPatchForShape(RenderPatchFactory rpf, int id){ case 102: // SlopeTileC4: return makeSimpleSlopePatches(rpf, 0, 0.25); } + return null; }