From 805f041a4a3a67abf49b8dec8290330f068eab02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= Date: Tue, 5 Jul 2016 11:07:04 +0200 Subject: [PATCH] Throne - Textures and models for oak variant --- graphics/throne.xcf | Bin 0 -> 8282 bytes src/java/mmm/deco/DThroneBlock.java | 56 +++++++ .../mmm/blockstates/deco/throne/oak.json | 53 +++++++ .../mmm/models/block/deco/throne/bottom.json | 145 ++++++++++++++++++ .../mmm/models/block/deco/throne/top.json | 77 ++++++++++ .../blocks/deco/throne/oak/bottom.png | Bin 0 -> 637 bytes .../blocks/deco/throne/oak/front-bottom.png | Bin 0 -> 621 bytes .../blocks/deco/throne/oak/front-top.png | Bin 0 -> 656 bytes .../textures/blocks/deco/throne/oak/wood.png | Bin 0 -> 595 bytes 9 files changed, 331 insertions(+) create mode 100644 graphics/throne.xcf create mode 100644 src/resources/assets/mmm/blockstates/deco/throne/oak.json create mode 100644 src/resources/assets/mmm/models/block/deco/throne/bottom.json create mode 100644 src/resources/assets/mmm/models/block/deco/throne/top.json create mode 100644 src/resources/assets/mmm/textures/blocks/deco/throne/oak/bottom.png create mode 100644 src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-bottom.png create mode 100644 src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-top.png create mode 100644 src/resources/assets/mmm/textures/blocks/deco/throne/oak/wood.png diff --git a/graphics/throne.xcf b/graphics/throne.xcf new file mode 100644 index 0000000000000000000000000000000000000000..2e9ddac0e4739dd25ddcf649e179a82e2a747c2c GIT binary patch literal 8282 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 bKRE0y^cJ|d=`C<^(_7&3-)?{Wk2C%bwx@3G literal 0 HcmV?d00001 diff --git a/src/java/mmm/deco/DThroneBlock.java b/src/java/mmm/deco/DThroneBlock.java index dfa1dea..4616dcd 100644 --- a/src/java/mmm/deco/DThroneBlock.java +++ b/src/java/mmm/deco/DThroneBlock.java @@ -7,6 +7,7 @@ import mmm.utils.I_UBlockSeat; import mmm.utils.I_UColoredBlock; import mmm.utils.I_URecipeRegistrar; import mmm.utils.I_USupportBlock; +import mmm.utils.UMaths; import mmm.utils.URegistry; import mmm.utils.USeat; import net.minecraft.block.Block; @@ -29,8 +30,10 @@ import net.minecraft.item.EnumDyeColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockAccess; @@ -49,6 +52,11 @@ public class DThroneBlock public static final PropertyDirection FACING; public static final PropertyBool IS_TOP; public static final PropertyEnum< EnumDyeColor > COLOR; + + private static final AxisAlignedBB COLLISION_TOP_NORTH = UMaths.makeBlockAABB( 0 , 0 , 0 , 16 , 13 , 3 ); + private static final AxisAlignedBB COLLISION_TOP_EAST = UMaths.makeBlockAABB( 13 , 0 , 0 , 16 , 13 , 16 ); + private static final AxisAlignedBB COLLISION_TOP_SOUTH = UMaths.makeBlockAABB( 0 , 0 , 13 , 16 , 13 , 16 ); + private static final AxisAlignedBB COLLISION_TOP_WEST = UMaths.makeBlockAABB( 0 , 0 , 0 , 3 , 13 , 16 ); private static boolean dropping = false; @@ -85,6 +93,54 @@ public class DThroneBlock this.setHarvestLevel( "axe" , 0 ); } + // ************************************************************************************************* + // RENDERING AND SHAPE + // ************************************************************************************************* + + + @Override + @SideOnly( Side.CLIENT ) + public BlockRenderLayer getBlockLayer( ) + { + return BlockRenderLayer.CUTOUT_MIPPED; + } + + + @Override + public boolean isOpaqueCube( final IBlockState state ) + { + return false; + } + + + @Override + public boolean isFullCube( final IBlockState state ) + { + return false; + } + + + @Override + public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos ) + { + if ( state.getValue( IS_TOP )) { + switch ( state.getValue( DChair.FACING ) ) { + case EAST: + return COLLISION_TOP_EAST; + case NORTH: + return COLLISION_TOP_NORTH; + case SOUTH: + return COLLISION_TOP_SOUTH; + case WEST: + return COLLISION_TOP_WEST; + default: + // TODO log problem + return FULL_BLOCK_AABB; + } + } + return FULL_BLOCK_AABB; + } + // ************************************************************************************************* // BLOCK STATE diff --git a/src/resources/assets/mmm/blockstates/deco/throne/oak.json b/src/resources/assets/mmm/blockstates/deco/throne/oak.json new file mode 100644 index 0000000..3bc3a4b --- /dev/null +++ b/src/resources/assets/mmm/blockstates/deco/throne/oak.json @@ -0,0 +1,53 @@ +{ + "forge_marker": 1 , + "defaults" : { + "textures": { + "wood": "mmm:blocks/deco/throne/oak/wood" + } + } , + "variants" : { + + "is_top" : { + "true" : { + "model": "mmm:deco/throne/top" , + "textures" : { + "front" : "mmm:blocks/deco/throne/oak/front-top" + } + } , + "false" : { + "model": "mmm:deco/throne/bottom" , + "textures" : { + "front" : "mmm:blocks/deco/throne/oak/front-bottom" , + "top" : "mmm:blocks/deco/throne/oak/bottom" + } + } + } , + + "facing" : { + "north" : { "y": 0 } , + "east" : { "y": 90 } , + "south" : { "y": 180 } , + "west" : { "y": 270 } + } , + + "color" : { + "black" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_black" } } , + "blue" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_blue" } } , + "brown" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_brown" } } , + "cyan" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_cyan" } } , + "gray" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_gray" } } , + "green" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_green" } } , + "light_blue" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_light_blue" } } , + "lime" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_lime" } } , + "magenta" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_magenta" } } , + "orange" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_orange" } } , + "pink" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_pink" } } , + "purple" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_purple" } } , + "red" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_red" } } , + "silver" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_silver" } } , + "white" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_white" } } , + "yellow" : { "textures" : { "wool" : "minecraft:blocks/wool_colored_yellow" } } + } + + } +} \ No newline at end of file diff --git a/src/resources/assets/mmm/models/block/deco/throne/bottom.json b/src/resources/assets/mmm/models/block/deco/throne/bottom.json new file mode 100644 index 0000000..b5ef56c --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/throne/bottom.json @@ -0,0 +1,145 @@ +{ + "textures" : { + "particle" : "#wood" , + "front" : "#front" , + "wool" : "#wool" + }, + + "elements": + [ + { + "from": [ 0, 5, 0 ] , + "to": [ 16 , 16, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + + { + "from": [ 0, 9, 2 ] , + "to": [ 3 , 11, 16 ] , + "faces": { + "south": { "texture": "#front" , "cullface": "south" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#top" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + { + "from": [ 13, 9, 2 ] , + "to": [ 16 , 11, 16 ] , + "faces": { + "south": { "texture": "#front" , "cullface": "south" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#top" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" } + } + } , + { + "from": [ 3, 3, 2 ] , + "to": [ 13 , 5, 15 ] , + "faces": { + "south": { "texture": "#wood" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#top" } + } + } , + { + "from": [ 0, 3, 2 ] , + "to": [ 3 , 5, 16 ] , + "faces": { + "south": { "texture": "#wood" , "cullface": "south" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + { + "from": [ 13, 3, 2 ] , + "to": [ 16 , 5, 16 ] , + "faces": { + "south": { "texture": "#wood" , "cullface": "south" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" } + } + } , + { + "from": [ 3, 3 , 15 ] , + "to": [ 13 , 4 , 16 ] , + "faces": { + "south": { "texture": "#wood" , "cullface": "south" } , + "down": { "texture": "#wood" } , + "up": { "texture": "#wood" } + } + } , + { + "from": [ 0, 0 , 0 ] , + "to": [ 16 , 5 , 3 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#wood" } , + "down": { "texture": "#wood" , "cullface": "down" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + { + "from": [ 0, 0 , 13 ] , + "to": [ 2 , 9 , 15 ] , + "faces": { + "north": { "texture": "#wood" } , + "south": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + { + "from": [ 14, 0 , 13 ] , + "to": [ 16 , 9 , 15 ] , + "faces": { + "north": { "texture": "#wood" } , + "south": { "texture": "#wood" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" } + } + } , + + { + "from": [ 5, 5, 2 ] , + "to": [ 11 , 16 , 3 ] , + "faces" : { + "south": { "texture": "#wool" } , + "east": { "texture": "#wool" } , + "west": { "texture": "#wool" } + } + } , + { + "from": [ 5, 5, 3 ] , + "to": [ 11 , 6 , 11 ] , + "faces" : { + "up": { "texture": "#wool" } , + "south": { "texture": "#wool" } , + "east": { "texture": "#wool" } , + "west": { "texture": "#wool" } + } + } , + { + "from": [ 6, 5, 11 ] , + "to": [ 10 , 6 , 12 ] , + "faces" : { + "up": { "texture": "#wool" } , + "south": { "texture": "#wool" } , + "east": { "texture": "#wool" } , + "west": { "texture": "#wool" } + } + } + ] +} \ No newline at end of file diff --git a/src/resources/assets/mmm/models/block/deco/throne/top.json b/src/resources/assets/mmm/models/block/deco/throne/top.json new file mode 100644 index 0000000..73d5ffb --- /dev/null +++ b/src/resources/assets/mmm/models/block/deco/throne/top.json @@ -0,0 +1,77 @@ +{ + "textures" : { + "particle" : "#wood" , + "front" : "#front" , + "wool" : "#wool" + }, + + "elements": + [ + { + "from": [ 0, 0, 0 ] , + "to": [ 16 , 8, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" , "cullface": "east" } , + "west": { "texture": "#wood" , "cullface": "west" } + } + } , + { + "from": [ 1, 8, 0 ] , + "to": [ 15 , 10, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" } + } + } , + { + "from": [ 2, 10, 0 ] , + "to": [ 14 , 11, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" } + } + } , + { + "from": [ 3, 11, 0 ] , + "to": [ 13 , 12, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" } + } + } , + { + "from": [ 5, 12, 0 ] , + "to": [ 11 , 13, 2 ] , + "faces": { + "north": { "texture": "#wood" , "cullface": "north" } , + "south": { "texture": "#front" } , + "up": { "texture": "#wood" } , + "east": { "texture": "#wood" } , + "west": { "texture": "#wood" } + } + } , + + { + "from": [ 5, 0, 2 ] , + "to": [ 11 , 6 , 3 ] , + "faces" : { + "south": { "texture": "#wool" } , + "up": { "texture": "#wool" } , + "east": { "texture": "#wool" } , + "west": { "texture": "#wool" } + } + } + ] +} diff --git a/src/resources/assets/mmm/textures/blocks/deco/throne/oak/bottom.png b/src/resources/assets/mmm/textures/blocks/deco/throne/oak/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..6a443ffa773fcb58449b2a0853057b9d62027fde GIT binary patch literal 637 zcmV-@0)qXCP)adQ5b;X_k43^W@mS@*-H{Og$g$Q z6dOS>ww891Utwb*D3%t%MhlA|M6mOp2&OS^$aQw-cFvqn(~48&c?_W3f^bXr@YNoV z_bne^p0hFA;?aIV6d&JDJlVH=JID|Px;UUB__jvMnm%e1Hn$d}*#M%N zdR-tJlQ~fo5CiLC1%re>UK~wXpg} zbP3**jdDZ;@(1*>WkgU=0%{YQszeNbsS=4`PzViubUdf6Yh2Uf#o^l)=~SU{ROi#hv@yFcKkA1SX|d<5=w8MZ{vuh|SqHc71(@4tEi07*A)Q z9ewobilPv@PSNokBOt!@5alFUMn2o&`-c_{&-s`8^^n7Z6dNZv=P;UbxjexliZKJc zyQC^EF~HGVhn7!44Fp9)$EVjNonJBC-eEe=pmD@;g56r&0|ISTV?v->6=dTHU*Bi6 zb;&T#v2jYA{swA{7?LDGuTGG7ia75;*PI+5Q(T-A6qJB>HBD7=ak|8{j%<`8BCLvQ zy!V89MKa7WTJI^rfEqr(X{d`8qsfGPI%oOw2XT@x+MEzYmh1CVs@0ljFCwT)+NR|X XL{|FcmuueA00000NkvXXu0mjf4Os@4 literal 0 HcmV?d00001 diff --git a/src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-bottom.png b/src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..1de2a203ea3887b6bf710e6f51aa7a293e592eba GIT binary patch literal 621 zcmV-z0+RiSP)TcBq}=S=nw_s4@iMTMLq^3$^gld-K^L4yzUIN$ee@6ukSp5X-?jX5d8fY zM(JbtSIN&$-YuEa-J`vauf9^B~4Sqza7{)=NuoB=>-Nxy%b5;EsBn_nTwFjamj zYot<{zw4@|cCmmM5rxzWa)60~LYoFlp}|Er(qi{|PVD<`?6&|3COCs1wlR1x8VKq3 zlW&yry{8w$<`SHP2|}~_dHUeUgA0$I4f50bx~f`EA?FnU!USa`rN4Zbb4r`_im(7; zsf<-h<@Op(6&=0zqciPJUC+oiGr%(TU5p8+hAFBUvQW}>mqG{v#2C_F0D!Dv3f2D2 zTT&>gH3^i_IYO{atF$UP!xYB#`b?0jYFi56=Qj_f(#`xT2?Zth-D(WXwxYgPGikSRtI0!l#=!TA)=0nm?wABWu=2aCP^6x?RD zEIAVir7Nk8fl^Y6%qcjBlB7^61f?}|0)*(D5CWCbx?<)((Fg+lbj;!n00000NkvXX Hu0mjfIlBe* literal 0 HcmV?d00001 diff --git a/src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-top.png b/src/resources/assets/mmm/textures/blocks/deco/throne/oak/front-top.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ceb2034abdc7afe964248605444b88fd2b9c44 GIT binary patch literal 656 zcmV;B0&o3^P)E`|8}9%B03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00Hz#L_t(I%iWSoYZGA< zhUW*lw%|g7G}ugSqSKg8rY6-kDk@m86pHt@TH8ufwepVo-9fxsfMPn<6!2|6zOYM}_lt`tOHpWQwpV#itvsL!VC%c6L3H|uZP^rE$ZA|*@d)l5pI zS_-(Iwo07+tVpEpyEc8HM)T@ol+tlIT?ls0^P+37fX& qJNRa|6!5;JbmS$$Ro@+o68kR`e8M`hL3EP<0000{XE z)7O>#0Xr*)j9&JgIa)v=+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g zoq>Vzq^FBxh=qS^&`m!kM}ax@Ms~9#L_Z#24iGuWt#2cg{HQr_kEp1t%Rz0q!axV5 z<4jEpG9L9$-TIjQjB|dP(cY_9Lsh>_t_#Um`%r7%{UgmucS& z?#|hh-p8>m@!00`Jv!&FuJ+`c*JPk~D@%CZb)O5(eoMaTc;u89?dr9!o@g)IQ1`~6 zFO-O!M9 zqm?E6G}{}2`R12hq^5t_5-PlWM~dops|nAq_#AL^6I=Iiib85wqjqZl??9_^=NgyZ z*yR&%y`QLXbi?f5l?x_keLT||pWCUlOLLZJ>jQ?M+pNpZ+9eDhvOO%cJ z_g#UDW^Dak8IqqKp!`&vOZ?+C#dpSkjk$T1+`sqKO?+}(V0nq%nd4?Qdgcl{FL!!f zQC1JtJFf9e$4<{S|>AE&tDFTZBJJ}mvv4F FO#r-T@{0ff literal 0 HcmV?d00001