From 330b68fb3a44bb35ee9d0c8729802ab2ddc349d1 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 10 Dec 2015 00:47:40 +0100 Subject: [PATCH] textures for the controller + basic code for directional blocks --- .../storagecraft/block/BlockController.java | 35 ++++++++++++++ .../java/storagecraft/block/BlockGrid.java | 33 ++++++++++++++ src/main/java/storagecraft/block/BlockSC.java | 37 ++++++++++++++- .../java/storagecraft/gui/GuiController.java | 2 +- .../storagecraft/tile/TileController.java | 2 + src/main/java/storagecraft/tile/TileSC.java | 43 ++++++++++++++++++ .../storagecraft/textures/blocks/cable.png | Bin 222 -> 169 bytes .../textures/blocks/controller0.png | Bin 0 -> 293 bytes .../textures/blocks/controller1.png | Bin 0 -> 302 bytes .../textures/blocks/controller2.png | Bin 0 -> 312 bytes .../textures/blocks/controller3.png | Bin 0 -> 312 bytes .../textures/blocks/controller4.png | Bin 0 -> 301 bytes .../textures/blocks/controller5.png | Bin 0 -> 290 bytes .../storagecraft/textures/blocks/generic.png | Bin 0 -> 202 bytes .../storagecraft/textures/blocks/grid.png | Bin 0 -> 302 bytes .../storagecraft/textures/gui/controller.png | Bin 2136 -> 1899 bytes 16 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller0.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller1.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller2.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller3.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller4.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/controller5.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/generic.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/grid.png diff --git a/src/main/java/storagecraft/block/BlockController.java b/src/main/java/storagecraft/block/BlockController.java index 56933fa0c..2bec9c71c 100644 --- a/src/main/java/storagecraft/block/BlockController.java +++ b/src/main/java/storagecraft/block/BlockController.java @@ -1,13 +1,19 @@ package storagecraft.block; import net.minecraft.block.ITileEntityProvider; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import storagecraft.SC; import storagecraft.tile.TileController; public class BlockController extends BlockSC implements ITileEntityProvider { + private IIcon sideIcon; + private IIcon[] icons = new IIcon[6]; + public BlockController() { super("controller"); } @@ -32,4 +38,33 @@ public class BlockController extends BlockSC implements ITileEntityProvider { super.onBlockPreDestroy(world, x, y, z, meta); } + + @Override + public void registerBlockIcons(IIconRegister register) { + for (int i = 0; i <= 5; ++i) { + icons[i] = register.registerIcon("storagecraft:controller" + i); + } + + sideIcon = register.registerIcon("storagecraft:generic"); + } + + @Override + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + if (side == 0 || side == 1) { + return sideIcon; + } + + TileController controller = (TileController) world.getTileEntity(x, y, z); + + return icons[(int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * 5f)]; + } + + @Override + public IIcon getIcon(int side, int meta) { + if (side == 0 || side == 1) { + return sideIcon; + } + + return icons[0]; + } } diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index d82fcb38a..ba482f378 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -1,11 +1,18 @@ package storagecraft.block; import net.minecraft.block.ITileEntityProvider; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import storagecraft.tile.TileGrid; +import storagecraft.tile.TileSC; public class BlockGrid extends BlockSC implements ITileEntityProvider { + private IIcon sideIcon; + private IIcon icon; + public BlockGrid() { super("grid"); } @@ -14,4 +21,30 @@ public class BlockGrid extends BlockSC implements ITileEntityProvider { public TileEntity createNewTileEntity(World world, int meta) { return new TileGrid(); } + + @Override + public void registerBlockIcons(IIconRegister register) { + icon = register.registerIcon("storagecraft:grid"); + sideIcon = register.registerIcon("storagecraft:generic"); + } + + @Override + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + TileSC tile = (TileSC) world.getTileEntity(x, y, z); + + if (side == tile.getDirection().getOpposite().ordinal()) { + return icon; + } + + return sideIcon; + } + + @Override + public IIcon getIcon(int side, int meta) { + if (side == 3) { + return icon; + } + + return sideIcon; + } } diff --git a/src/main/java/storagecraft/block/BlockSC.java b/src/main/java/storagecraft/block/BlockSC.java index 5d36b0110..d26f4eab4 100644 --- a/src/main/java/storagecraft/block/BlockSC.java +++ b/src/main/java/storagecraft/block/BlockSC.java @@ -2,7 +2,13 @@ package storagecraft.block; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import storagecraft.SC; +import storagecraft.tile.TileSC; public class BlockSC extends Block { private String name; @@ -12,11 +18,40 @@ public class BlockSC extends Block { this.name = name; - this.setCreativeTab(SC.TAB); + setCreativeTab(SC.TAB); + setBlockTextureName("storagecraft:" + name); } @Override public String getUnlocalizedName() { return "block." + SC.ID + ":" + name; } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack itemStack) { + super.onBlockPlacedBy(world, x, y, z, entityLiving, itemStack); + + if (world.getTileEntity(x, y, z) instanceof TileSC) { + ForgeDirection direction = ForgeDirection.UNKNOWN; + + int facing = MathHelper.floor_double(entityLiving.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + switch (facing) { + case 0: + direction = ForgeDirection.SOUTH; + break; + case 1: + direction = ForgeDirection.WEST; + break; + case 2: + direction = ForgeDirection.NORTH; + break; + case 3: + direction = ForgeDirection.EAST; + break; + } + + ((TileSC) world.getTileEntity(x, y, z)).setDirection(direction); + } + } } diff --git a/src/main/java/storagecraft/gui/GuiController.java b/src/main/java/storagecraft/gui/GuiController.java index baa8e11a7..7808be884 100644 --- a/src/main/java/storagecraft/gui/GuiController.java +++ b/src/main/java/storagecraft/gui/GuiController.java @@ -34,7 +34,7 @@ public class GuiController extends GuiContainer { drawTexturedModalRect(x, y, 0, 0, xSize, ySize); int barWidth = 16; - int barHeight = 59; + int barHeight = 58; int barX = x + 17; int barY = y + 25; diff --git a/src/main/java/storagecraft/tile/TileController.java b/src/main/java/storagecraft/tile/TileController.java index 6dc8390ad..b03890b9e 100644 --- a/src/main/java/storagecraft/tile/TileController.java +++ b/src/main/java/storagecraft/tile/TileController.java @@ -61,6 +61,8 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi } storage.extractEnergy(energyUsage, false); + } else { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } } diff --git a/src/main/java/storagecraft/tile/TileSC.java b/src/main/java/storagecraft/tile/TileSC.java index 459f8ae09..3cf137bef 100644 --- a/src/main/java/storagecraft/tile/TileSC.java +++ b/src/main/java/storagecraft/tile/TileSC.java @@ -1,13 +1,20 @@ package storagecraft.tile; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; import storagecraft.SC; import storagecraft.network.MessageTileUpdate; public class TileSC extends TileEntity { public static final int UPDATE_RANGE = 64; + private ForgeDirection direction; + @Override public void updateEntity() { super.updateEntity(); @@ -20,4 +27,40 @@ public class TileSC extends TileEntity { } } } + + public void setDirection(ForgeDirection direction) { + this.direction = direction; + } + + public ForgeDirection getDirection() { + return direction; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + direction = ForgeDirection.getOrientation(nbt.getInteger("Direction")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("Direction", direction.ordinal()); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + + nbt.setInteger("Direction", direction.ordinal()); + + return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { + direction = ForgeDirection.getOrientation(packet.func_148857_g().getInteger("Direction")); + } } diff --git a/src/main/resources/assets/storagecraft/textures/blocks/cable.png b/src/main/resources/assets/storagecraft/textures/blocks/cable.png index b9411ce0656453fa44ac102e2a6f21324cf40c7e..eb2fc313a0bae172667dc81446ea0a2b4d435a06 100644 GIT binary patch delta 152 zcmcb|xRP;#WIYoD1H*)g8D>C=u{g-xiDBJ2nU_EgOS+@4BLl<6e(pbstUx|zfk$L9 z0|Vb-5N14{zaj-FC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`94sMl&6bh uh=qT$$H~*GoV{5JY#_{Q#ap?Pp>Kt~pup=Xm(_vF7(8A5T-G@yGywqH3oPaU delta 205 zcmV;;05bon0p0FDDonolMsy{i7bMZ_h@D{i19hJ02QvQ{aXaK zTfxPHP^d*!(cFlN^Nuj*+(oD`u?`zA6mL1*VAXLbqnmn#Jw}6S$}T@5K0cC8ob9XX zErPy)v+rt2o`^s1|M`({xyp&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1#hxyX zAs*guCpvO9CgTe~DWM4f;J0g9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/storagecraft/textures/blocks/controller1.png b/src/main/resources/assets/storagecraft/textures/blocks/controller1.png new file mode 100644 index 0000000000000000000000000000000000000000..8460387bef922e7fbbe5fef97830ac929dd2cf96 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WSkfJR9T^xl_H+M9WCij$3p^r= z85sBufiR<}hF1enP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1HJ&bx zAs*guCpvO98wj}G^=NHa{(|++7nXI!ZF;+M`5&H?{qc)^nMI(N%92CTwg1jHdm0~` zF?BP``t#PD=Iy_xA7DJ&#d_j<@-wDS^#XTx^YJJOw5^%BvtbXzL1h+$Z?+c;)&hAo zf)+2L*CljsX}JEue~T+4)81qH>PG*SH!RHG$z&`(VL9vhZH$+F6Hm;V$$f%b;LVXU ttWQL__c?yf_%CF!AhK6MekQBoxkqI$iXPav8vxzS;OXk;vd$@?2>||?a*zN3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/storagecraft/textures/blocks/controller2.png b/src/main/resources/assets/storagecraft/textures/blocks/controller2.png new file mode 100644 index 0000000000000000000000000000000000000000..52bcff594b97bf64213cc3e03d2dd4ac2b6b5226 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WSkfJR9T^xl_H+M9WCij$3p^r= z85sBufiR<}hF1enP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1ZJsWU zAs*guCvN0CY#`!tRpK^>jjNc)WX_oEHj&K9ikqCuKGys!ILEo~+N|`6L^5mU>|H>Nd8E~xA4JTH;GNl zo-uu5Vv!CkW~@Bgq?+;W?R+L?lhuMxls7B1=nEOW7rK&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1ZJsWU zAs*guCvN0CY#`!tmBpIF##PK?GG|P7n@Hwk#Z67+Cu@Edoa5YgVtT9w$ITC`9>24n za7V%^@Skdh&v~6YIj`iIm`$X`6yp15ai93Eu;YvEjw*kNP0OA!ed1y+Ey$kPf>Rc6P-x+A@A#Zopz>E5=mQ2%S3j3^P6&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1)t)Yn zAs*guCm!T%H4tzq7W{jojrYc3`{ix*A6B{EXxbYwpPN}YqHwW?og&wJlQT~a9;@B! ze`-I=VH3B9&w~DoN-T)n!0@y3N{qul7RT!*3-Y56O)xbTpOCH)k;Q(^zd@T??gqKSKG=lr}8XdVkX4K=vK0iNE9&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG11)eUB zAs*guCm!T%Fc4t*EVxns{>p>x@w$h^-W>g96LI5!r(Tzf6VI9Kn`aLk?Y)=&RQuo_ zJ@?KJi~+h86oZy8{zUO~ogOE8M7N?^A?u+TD2erE(`Nk>1l* zyGVkSqoOxlJ?OvkhJ)L48i5)wGsPXYn+RlZ3*2!z%lbr=d)k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)XXJ5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66 zdS-umlJ5i6SbMrShIn|tJ-bklK|z4Uu**4KG~z}4qWHBB1FePU8%_?}-&FdonC%3E qqylqF1J49TBL}t>EVZ+mpD;x~UaWifzfLaD7zR&QKbLh*2~7azt2~(i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/storagecraft/textures/blocks/grid.png b/src/main/resources/assets/storagecraft/textures/blocks/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..12a2b38d150c0a8ecef90ab17eae5c2d8920eea0 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)XXJ5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66 zdS-umlJ5i6%=dJ04Ds-OJK-Q#i-Cai-gott@50}N{{Nq$AdoCOGj*d}%7eg5CAZk; zKD*ZTY087$dfSTybS^*VX%qRUAW$M)R5A0=@+1FTZ~T}uYu$6xN4=Yv;`><7M09?? zRmE}IL7^t<_UfJok%|Hzd^Q|>bzMeZ@`k~Gtq%ol?m#6w5A3uG?SEi=V(){vHf{&b sAg>8QO;d!HOi_56+EmCRwq+Zm@vD>|7pCuTflg)cboFyt=akR{0G}^*b^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/storagecraft/textures/gui/controller.png b/src/main/resources/assets/storagecraft/textures/gui/controller.png index 85b4b9ac73ab476cec0e9bea025b8c9342fc04a1..96810b8fea716d8ffa5c2304548c968563722b09 100644 GIT binary patch literal 1899 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP+WzB!;qWXjGNos+}wqaFM*XIG&Hn{onbON!!}Na?(Xhm$BzB~{~xGw6pV(z zFbe^x&2P4WGD=C1UobF{k7U3Q{GDAD7`>bY9+AZi419Y*n9=?Bgtb6H_7YEDSN3}> z5<(hAd{5h|fkF}`t`Q}{`DrEPiAAXl1&Nt?C3<S?#N>-X^)vF_7nF5K`;s^!x{RRynQmGh2e#{J&; zMSJc1?T44oe)iJHZ?=Qs0T28CPm4u=MEsh2?fiB5CpXO+&Iek}6>F?&h^cKbYxpI4 z;wrlbL%0J7{o#7R_(8jY{lIz#IfngA6-WXO#s_}aKCdZkiQCBZ{{FOm%fEh}C?~)O z{3_nB#{oV z^Vf3j|C;eK3&R;?tQc7Y6u!q!V_@P?a9C&O0HWUQ)&Yt-fcy%g?vzIYMGvq|*gt<~ z`MEp4A5G3{_#8WZ@mvmt29UM}hMn&>0TnWUG%+y#`~QEUyLBepiR$TlkCj``tmdCv z!u-T@_thT;_T@@Y9ZXO5ofd-WV0lqJIk@x^&xG%K)xGb_jK0fRy<|Hvxoq{v#JYDb zP-9t6)J|80>E^ibU2XZRC6Wm}PzTmCetK8B{^Q@gXZM`d?=t+%EnfXm{8q6#*m+2P z0vpz_Z~M+r^|K7gDh&)d4Z++8w#1dsc*Quae&;t1Us;CN!3JK}XRllHa8k0WgPIwm z(MHY*oxTk|IZP=@!V1E(8D`#KIdMdd+EQ%nGoITY$YR-F%i1>snA#aUUHx3vIVCg! E06&sV@c;k- literal 2136 zcmeHH{ZCU@7=A9T>jzQ@%)rcWuprEBp#;cfGpi{djdaoqmNKeQhHD{&7V7Arv&>$Z z$`IWYVgRvA{DF`K#zcnGA=+gNgorvO$za1;#j!vJ6w!fv?%Z4V@fY~ZJjp%Jc~0K* zywCgQo>P^s-s&e_F9zVJOikGVP-IC#$RkkLnw?32pP#5o1lm9IUCLbp@Q|LCsUZ6a z2?-h?3(x_(fxUnMC;&{rKA;r%5GV(Jl4(I{;fa|~jFbE6-w}HFB7%&b@0uO*kz++$qsIIQ=>FHTrT_vubjb|Nr3LVJl z?G0xyie-mdLw>yf^MGbfu#vP}WKPwU0Fo>0M@=NPJISWNqEsmaE`CVhE3uN_j@Zan zh((cY(G=%d%5vW~z?@r9WQi^^Si<6?W1{J$WAEJ|Z%m6aB{9>wXL97D;!JG-Go#3O z-js17xbx`I%bU(UT(n>8>{_%+9V@reZVWj3XXUYd!}rJfrH%2IP85}PsT`$?TMkJo z$LX%?28YCFI=NEzlj+q-`{R95r)yiU;(RE!WQ{K^z3txpiK=FjvhF`9fxU7lLYK%~ zO)}P`G5b-RY^-Swb2bJvM!Y8SEbQc1%R5FjSwuJ=kys^D_w(Lb{Tgb>R;8+0$Dfb; zA+k^Gb6MD~JYNC(p`nNd@tvDB$L`i z>Hh8vg6sI!5YForVkefGpvr?ex`DXVeZX`G^0{0(E_9ye#LI(7h?biA>c1JwL%lL$ zugr+oK+X}aI_Z<%m3gaUizUuGI6E;k#Sf6<^8;!4b59`SuMQ`ivH5QUi_I?uG2L~1 z_s5!4!riX#1LZ7^_g?6|b9-J{ZWb>GBgz3Ep|iVkBg5h?-w1-{>0D75LC-@U7DsH^ zK0-6!J(u5RYA9Tt?K5KK1^xJgK{cD4b1)@)okMnF8dqhWL3Je0<1(1;b%l=o@})YD z=TYrCJ#V<-5VFGT#Hs#GW?lD>ZEjfWwAFQ1O_$aeezUp3&zWE4;sZgi1CB0km7kTZ^&j0`b