From e12825cccc4ba694e4bfcd8daffce04bcbacd3e2 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Tue, 9 Oct 2012 16:27:10 -0400 Subject: [PATCH] v4.2.2 Beta #1 *Fixed redstone advanced machine container bug. *Removed unused methods from IEnergizedItem. *Added 'IPeripheral' CC support to IElectricMachine. *Removed tile entity-based texture system. *Fixed advanced electric machine active update. *Moved to TextureFX for machine animations. *Removed old textures from terrain.png and added new pictures for all animations. *Added CC support for machines and power units. *Removed texture preloads for non-existant textures. *Bumped version to 4.2.2! --- bin/minecraft/obsidian/CombinerFront.png | Bin 0 -> 2371 bytes bin/minecraft/obsidian/CompressorFront.png | Bin 0 -> 2079 bytes bin/minecraft/obsidian/ElementizerBack.png | Bin 0 -> 2785 bytes bin/minecraft/obsidian/ElementizerFront.png | Bin 0 -> 3396 bytes bin/minecraft/obsidian/ElementizerSide.png | Bin 0 -> 3137 bytes bin/minecraft/obsidian/terrain.png | Bin 15320 -> 9594 bytes .../obsidian/api/IElectricMachine.java | 4 +- .../uberkat/obsidian/api/IEnergizedItem.java | 6 -- .../uberkat/obsidian/common/BlockMachine.java | 12 ++-- .../ContainerAdvancedElectricMachine.java | 4 +- .../obsidian/common/ObsidianHooks.java | 2 +- .../obsidian/common/ObsidianIngots.java | 4 +- .../TileEntityAdvancedElectricMachine.java | 50 ++++++++++++- .../common/TileEntityBasicMachine.java | 22 ------ .../common/TileEntityElectricMachine.java | 41 +++++++++++ .../obsidian/common/TileEntityPowerUnit.java | 66 ++++++++++-------- .../uberkat/obsidian/client/ClientProxy.java | 21 +++++- .../obsidian/client/TextureAnimatedFX.java | 33 +++++++++ 18 files changed, 195 insertions(+), 70 deletions(-) create mode 100644 bin/minecraft/obsidian/CombinerFront.png create mode 100644 bin/minecraft/obsidian/CompressorFront.png create mode 100644 bin/minecraft/obsidian/ElementizerBack.png create mode 100644 bin/minecraft/obsidian/ElementizerFront.png create mode 100644 bin/minecraft/obsidian/ElementizerSide.png create mode 100644 src/minecraft/net/uberkat/obsidian/client/TextureAnimatedFX.java diff --git a/bin/minecraft/obsidian/CombinerFront.png b/bin/minecraft/obsidian/CombinerFront.png new file mode 100644 index 0000000000000000000000000000000000000000..b55eb106b9df48c685e63811a23fb15dea9b6a07 GIT binary patch literal 2371 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 JPDHLkV1kSl>DT}O literal 0 HcmV?d00001 diff --git a/bin/minecraft/obsidian/ElementizerBack.png b/bin/minecraft/obsidian/ElementizerBack.png new file mode 100644 index 0000000000000000000000000000000000000000..1561788e0b16ec3d6e2d96cd4c9ead732e146986 GIT binary patch literal 2785 zcmV<73Lf=|P)EK|000CeX+uL$Nkc;* zP;zf(X>4Tx05}naRo`#hR1`jmZ&IWdKOk5~hl<6oRa0BJ8yc;~21%2p?MfD<>DVeH z9(p*dx19w`~g7O0}n_%Aq@s%d)fBDv`JHkDym6Hd+5XuAtvnwRpGmK zVkc9?T=n|PIo~X-eVh__(Z?q}P9Z-Dj?gOW6|D%o20XmjW-qs4UjrD(li^iv8@eK9k+ZFm zVRFymFOPAzG5-%Pn|1W;U4vNroTa&AxDScmEA~{ri9gr1^c?U@uwSpaNnw8l_>cP1 zd;)kMQS_;jeRSUEM_*s96y65j1$)tOrwdK{YIQMt92l|D^(E_=$Rjw{b!QT@q!)ni zR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX8PF3UX~a6)MwxDE0HaPjyrlI!;jX{6Kvuh*8ej?;85ekN$?5uuCiS zBTvvVG+XTxAO{m@bvM#Jr)z6J><&E22D|vq?Y?Vkbo_DijopiF$2PET#mZ8eu=y$(ArYkv7@Ex`GL?QCc!_*KFrd&;n1r7 zqW-CFs9&fT)ZaU5gc&=gBz-DaCw(vdOp0__x+47~U6sC(E(JNe@4cTT*n6*E zVH4eoU1-&7pEV~_PRe`a7v+@vy!^5}8?Y3)UmlaER000JfNkl=kG}29B(8^ZfqK&kZDB3hMjU{cQk({W_Bk?tgA_^mp zozL%{-@WI)cdJQfpvC#YefQ6~=bZcR_dVa=_jg`tXlUp}obB%J%HiRmbai#GWl zxHQny-rk<{_V#M!v9U2}YHHG}(F5)$+@G79v%`A)9DDSDO-xMadV70Y8{kq|Y@b3p z;A*(aqobqb7C6AAS%sygCB4jpg9B}ltJ~PvklEQ;J%8gvkrSE`>$&qHrWgPwF!(ba`N z-jdGFCf$BzZC$R(ZFxjW(&?6uyE|p~=FP0l+t>9O=tGoJSqpyseP6b=l6M?dW*fVF z{|D0a%R9O)_dPF-jg9^aj=$D}k3QTYG=kmedt7elmj7|LK;xWa##<=$_xJ0USo;v? z=jZkN;ED5whKGl(p04d7>MihbP=SLiya8TaYip}k=9MikFYAXx`NG12EG{nUThK4j zK2Q7NW@ct`z1a@sEEtWlojgQ$fOkDLHKm30VkfhYim13Z`Ep5uZ(TnTYZ5YGkk$d981%L{AQTsS)*qs2@cAKs0@j>4|s95B^iW(f9%0S%?QYe&7LxWTnyh+T4P< zdAfGte})HMfC&A)C|-boq@d$Ejd&38AmTwS9-M|BLK)?xVG2!p|fkz3O{lIRhCtAKS1rs(RKZx-{j2F};^6`S_2cLX&Q3uZ#U;eRh z{sHq7aJVO){Z=Zue4~%vLvOQq!O{fGKcKQj_ngbrXP?lOy?)&^hDon2qqyv&|-%N*0}CRJu&iw$Pd&N^8Db;@q+ipP%pIk$`lbZ zzz@Q58=Z6cM&FLE01+(Y2Vem)gIZC(F-%bWD?fv)EMD;aB&%G0!Rv{P|Hcsv4>;TOgPZ{2jz>K)>WNWL zJf)t<`~$3BKk(VUaQwIV%0~Oq6R|XUciWkM-~|ZW)#8B=2aGEiR%lDPc)=$uLxCZT z7Yq+V!7|Q2i1U%+d?aaP7MJiMf2E2b6F+amWea3d~2UwMx{J`fI ns9b~x#t%Zgi2UIH#1H-gAff2ERBRj400000NkvXXu0mjfTX}3f literal 0 HcmV?d00001 diff --git a/bin/minecraft/obsidian/ElementizerFront.png b/bin/minecraft/obsidian/ElementizerFront.png new file mode 100644 index 0000000000000000000000000000000000000000..0334baa45afe8d9bdf0a4ab3d9a818a35ad7be35 GIT binary patch literal 3396 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 aOn(Cs*V%FXE?&m~0000EK|000CeX+uL$Nkc;* zP;zf(X>4Tx05}naRo`#hR1`jmZ&IWdKOk5~hl<6oRa0BJ8yc;~21%2p?MfD<>DVeH z9(p*dx19w`~g7O0}n_%Aq@s%d)fBDv`JHkDym6Hd+5XuAtvnwRpGmK zVkc9?T=n|PIo~X-eVh__(Z?q}P9Z-Dj?gOW6|D%o20XmjW-qs4UjrD(li^iv8@eK9k+ZFm zVRFymFOPAzG5-%Pn|1W;U4vNroTa&AxDScmEA~{ri9gr1^c?U@uwSpaNnw8l_>cP1 zd;)kMQS_;jeRSUEM_*s96y65j1$)tOrwdK{YIQMt92l|D^(E_=$Rjw{b!QT@q!)ni zR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX8PF3UX~a6)MwxDE0HaPjyrlI!;jX{6Kvuh*8ej?;85ekN$?5uuCiS zBTvvVG+XTxAO{m@bvM#Jr)z6J><&E22D|vq?Y?Vkbo_DijopiF$2PET#mZ8eu=y$(ArYkv7@Ex`GL?QCc!_*KFrd&;n1r7 zqW-CFs9&fT)ZaU5gc&=gBz-DaCw(vdOp0__x+47~U6sC(E(JNe@4cTT*n6*E zVH4eoU1-&7pEV~_PRe`a7v+@vy!^5}8?Y3)UmlaER000NrNkl&s6vt=V^w3ZeTN+7?7AdV# zBsGv8dlcg8RcJ2WL?lJTlL$TZCI*T~tK{xU5RaZjsAmJl9*XuH8=BOb(k6!x*uksH5Sf{wUa_=?1ifP*PRd!oeyVEzZ=IOh+&{`D-VzxU%v3F+Wv9>erg0` zgfY-TRKvrsMFsgTjlce7AtYloHouo2E)9wtIdUZa1Z_Q5rIShT%2(^g&*97S%VFlu zNC?k78%}Y{nTI1v6Iuj{CR#sNRy-$A%;ZNzZ7-<@Bg;Srr(R&bQXJ_^QNAKLZ zb75-gqM0-k{zmRInfTk=?RFSoCUW70OdJ%MolGDvXO3X(vy?Q=MA~5nqRb@0m|4g* zlgwu!DV3s&9$?a;qc&zBJ;4BDT0=0PLIfRj9Xk&nJ`AmiiHR*>>Pq}IjIO5`lBc!h z_zVluJ zROSPC06s97md0It02)m%^8p3iFhXg6yP}O^3?EG2+6puGUWpx{Aw<&52ap7WA{97+ zVl=(*yTDn{UcwqZ^rblZ-g%6@vKsQv+?Tm6Imw_jk*H=*va}~Y;J*6^=10(D?SbwWI{gDTz(457$Gt@?uKR_tP~!(7 zM{y29Jh6xg^z9!A9GZLpK75&%tdmI>9{_vf1kf1$12A3~J0D=|kWTRf^lXXGd;p=8 z`vrk9UWpqw;s^8;kxI7b11AsPFZi|C)%Zb;Co+Es)Vido?m^&#y*^)H5CoNZzW_wR zIEWMh&LtmEmi7y-+lU_k=OQkEK_h-ZK^Tet0gae$<^xrbFX@H)2L|H?AGnUEJNgHX z|B?^LiK|19fI0EM<^v!t2*y7cU@&xP2c~hc*P`|hav_oZ(&bloA7jNF{rmy?1sCigo>-qRFuMFjqzL(X{^039kL2+K0aahm z8}-jE`M_fWc7vpIzu*ynj~%eQXFdSVEZOcK6wZa8KM4N3(YZr7A@czQ0mkK~@_{Yy zjs1cz`OY1pt3B8@p2+WTE^uQhs{TRs511MU+CMOm^!9Gbe<0@%fHdMMd3qq^llh?Y zJd*PO$}YwUeeyx|4;bC*AMC&L2fhaoko+?~09^{x==SfrUnuw>!WkmLH=q&|914HF z&>$0Z2^UBu*+0PWaKQ%#XWcJIenvWoqzDECr2B>0c+j=Pc+dC&)oIx3oHYxdlqU0aI z2Z-oqK5&S}Ta93(zu%b7D;t?~?-yVsxv6}h4GLt b_nrR+$kMqNHl(A?00000NkvXXu0mjf^N8Z| literal 0 HcmV?d00001 diff --git a/bin/minecraft/obsidian/terrain.png b/bin/minecraft/obsidian/terrain.png index 6da867b24f7101085b3fafb32ff7943623feccac..136841d07f97cb2da1ed8f0c11b9559b6c3efe6a 100755 GIT binary patch literal 9594 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 x@ZZ(-~+mGX9`BmuHsIdmC5v6W)cNkk(NY56n2 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 0) @@ -264,6 +266,11 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { return false; } + + if(secondaryEnergyStored < SECONDARY_ENERGY_PER_TICK) + { + return false; + } ItemStack itemstack = RecipeHandler.getOutput(inventory[0], false, getRecipes()); @@ -483,4 +490,45 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM { return operatingTicks*i / TICKS_REQUIRED; } + + public String getType() + { + return "Advanced Electric Machine"; + } + + public String[] getMethodNames() + { + return new String[] {"getStored", "getSecondaryStored", "getProgress", "isActive", "facing", "canOperate"}; + } + + public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception + { + switch(method) + { + case 0: + return new Object[] {energyStored}; + case 1: + return new Object[] {secondaryEnergyStored}; + case 2: + return new Object[] {operatingTicks}; + case 3: + return new Object[] {isActive}; + case 4: + return new Object[] {facing}; + case 5: + return new Object[] {canOperate()}; + default: + System.err.println("[ObsidianIngots] Attempted to call unknown method with computer ID " + computer.getID()); + return null; + } + } + + public boolean canAttachToSide(int side) + { + return true; + } + + public void attach(IComputerAccess computer, String computerSide) {} + + public void detach(IComputerAccess computer) {} } diff --git a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java index bb7ed2262..31c7ac17f 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityBasicMachine.java @@ -17,12 +17,6 @@ public abstract class TileEntityBasicMachine extends TileEntity implements IElec /** The direction this block is facing. */ public int facing; - /** A timer used to update the block's texture. */ - public int textureTick = 0; - - /** An integer that cycles between 0-15, used to update the block's texture. */ - public int textureIndex = 0; - /** A timer used to send packets to clients. */ public int packetTick = 0; @@ -57,11 +51,6 @@ public abstract class TileEntityBasicMachine extends TileEntity implements IElec onUpdate(); - if(worldObj.isRemote) - { - updateTexture(); - } - if(!worldObj.isRemote) { if(packetTick == 5) @@ -76,17 +65,6 @@ public abstract class TileEntityBasicMachine extends TileEntity implements IElec packetTick++; } } - - @SideOnly(Side.CLIENT) - public void updateTexture() - { - if(textureTick % 5 == 0) - { - textureIndex = (++textureIndex)%15; - worldObj.markBlockNeedsUpdate(xCoord, yCoord, zCoord); - } - textureTick++; - } public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { diff --git a/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java b/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java index 9ca460469..6311c9953 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityElectricMachine.java @@ -7,6 +7,8 @@ import universalelectricity.implement.IItemElectric; import com.google.common.io.ByteArrayDataInput; +import dan200.computer.api.IComputerAccess; + import ic2.api.ElectricItem; import ic2.api.EnergyNet; import ic2.api.IElectricItem; @@ -417,4 +419,43 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine { return operatingTicks*i / TICKS_REQUIRED; } + + public String getType() + { + return "Electric Machine"; + } + + public String[] getMethodNames() + { + return new String[] {"getStored", "getProgress", "isActive", "facing", "canOperate"}; + } + + public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception + { + switch(method) + { + case 0: + return new Object[] {energyStored}; + case 1: + return new Object[] {operatingTicks}; + case 2: + return new Object[] {isActive}; + case 3: + return new Object[] {facing}; + case 4: + return new Object[] {canOperate()}; + default: + System.err.println("[ObsidianIngots] Attempted to call unknown method with computer ID " + computer.getID()); + return null; + } + } + + public boolean canAttachToSide(int side) + { + return true; + } + + public void attach(IComputerAccess computer, String computerSide) {} + + public void detach(IComputerAccess computer) {} } diff --git a/src/common/net/uberkat/obsidian/common/TileEntityPowerUnit.java b/src/common/net/uberkat/obsidian/common/TileEntityPowerUnit.java index c4a1fe80d..780466540 100644 --- a/src/common/net/uberkat/obsidian/common/TileEntityPowerUnit.java +++ b/src/common/net/uberkat/obsidian/common/TileEntityPowerUnit.java @@ -26,6 +26,9 @@ import buildcraft.api.core.Orientations; import com.google.common.io.ByteArrayDataInput; +import dan200.computer.api.IComputerAccess; +import dan200.computer.api.IPeripheral; + import ic2.api.Direction; import ic2.api.ElectricItem; import ic2.api.EnergyNet; @@ -40,7 +43,7 @@ import net.minecraftforge.common.ISidedInventory; import net.uberkat.obsidian.api.IEnergizedItem; import net.uberkat.obsidian.api.INetworkedMachine; -public class TileEntityPowerUnit extends TileEntityDisableable implements IInventory, ISidedInventory, INetworkedMachine, IWrenchable, IEnergySink, IEnergySource, IEnergyStorage, IPowerReceptor, IElectricityStorage, IElectricityReceiver +public class TileEntityPowerUnit extends TileEntityDisableable implements IInventory, ISidedInventory, INetworkedMachine, IWrenchable, IEnergySink, IEnergySource, IEnergyStorage, IPowerReceptor, IElectricityStorage, IElectricityReceiver, IPeripheral { public ItemStack[] inventory = new ItemStack[2]; @@ -90,32 +93,6 @@ public class TileEntityPowerUnit extends TileEntityDisableable implements IInven } } - public Packet getDescriptionPacket() - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream output = new DataOutputStream(bytes); - - try { - output.writeInt(EnumPacketType.TILE_ENTITY.id); - output.writeInt(xCoord); - output.writeInt(yCoord); - output.writeInt(zCoord); - output.writeInt(facing); - output.writeInt(energyStored); - } catch (IOException e) - { - System.err.println("[ObsidianIngots] Error while writing tile entity packet."); - e.printStackTrace(); - } - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = "ObsidianIngots"; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - return packet; - } - public void updateEntity() { if(!worldObj.isRemote) @@ -230,7 +207,7 @@ public class TileEntityPowerUnit extends TileEntityDisableable implements IInven if(connector != null && connector instanceof TileEntityConductor) { double wattsNeeded = ElectricityManager.instance.getElectricityRequired(((IConductor)connector).getConnectionID()); - double transferAmps = Math.max(Math.min(Math.min(ElectricInfo.getAmps(wattsNeeded, getVoltage()), ElectricInfo.getAmpsFromWattHours(energyStored*UniversalElectricity.IC2_RATIO, getVoltage()) ), 15), 0); + double transferAmps = Math.max(Math.min(Math.min(ElectricInfo.getAmps(wattsNeeded, getVoltage()), ElectricInfo.getAmpsFromWattHours(energyStored*UniversalElectricity.IC2_RATIO, getVoltage())), 15), 0); ElectricityManager.instance.produceElectricity(this, (IConductor)connector, transferAmps, getVoltage()); setEnergy(energyStored - (int)(ElectricInfo.getWattHours(transferAmps, getVoltage())*UniversalElectricity.Wh_IC2_RATIO)); } @@ -560,4 +537,37 @@ public class TileEntityPowerUnit extends TileEntityDisableable implements IInven { return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : var1.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D; } + + public String getType() + { + return getInvName(); + } + + public String[] getMethodNames() + { + return new String[] {"getStored", "getOutput"}; + } + + public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception + { + switch(method) + { + case 0: + return new Object[] {energyStored}; + case 1: + return new Object[] {output}; + default: + System.err.println("[ObsidianIngots] Attempted to call unknown method with computer ID " + computer.getID()); + return null; + } + } + + public boolean canAttachToSide(int side) + { + return true; + } + + public void attach(IComputerAccess computer, String computerSide) {} + + public void detach(IComputerAccess computer) {} } diff --git a/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java b/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java index da5b95b9d..a3c0436fa 100644 --- a/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java +++ b/src/minecraft/net/uberkat/obsidian/client/ClientProxy.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.Properties; import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.TextureFXManager; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.Side; @@ -49,12 +50,26 @@ public class ClientProxy extends CommonProxy public void registerRenderInformation() { System.out.println("[ObsidianIngots] Beginning render initiative..."); + //Preload block/item textures MinecraftForgeClient.preloadTexture("/obsidian/items.png"); MinecraftForgeClient.preloadTexture("/obsidian/terrain.png"); - MinecraftForgeClient.preloadTexture("/obsidian/Compressor.png"); - MinecraftForgeClient.preloadTexture("/obsidian/Combiner.png"); - MinecraftForgeClient.preloadTexture("/obsidian/Elementizer.png"); + MinecraftForgeClient.preloadTexture("/obsidian/CompressorFront.png"); + MinecraftForgeClient.preloadTexture("/obsidian/CombinerFront.png"); + MinecraftForgeClient.preloadTexture("/obsidian/ElementizerFront.png"); + MinecraftForgeClient.preloadTexture("/obsidian/ElementizerBack.png"); + MinecraftForgeClient.preloadTexture("/obsidian/ElementizerSide.png"); + + //Register animated TextureFX for machines + try { + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/obsidian/CompressorFront.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX)); + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/obsidian/CombinerFront.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX+1)); + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/obsidian/ElementizerFront.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX+2)); + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/obsidian/ElementizerBack.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX+3)); + TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/obsidian/ElementizerSide.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX+4)); + } catch (IOException e) { + System.err.println("[ObsidianIngots] Error registering animation with FML: " + e.getMessage()); + } //Register entity rendering handlers RenderingRegistry.registerEntityRenderingHandler(EntityObsidianTNT.class, new RenderObsidianTNT()); diff --git a/src/minecraft/net/uberkat/obsidian/client/TextureAnimatedFX.java b/src/minecraft/net/uberkat/obsidian/client/TextureAnimatedFX.java new file mode 100644 index 000000000..c893e9699 --- /dev/null +++ b/src/minecraft/net/uberkat/obsidian/client/TextureAnimatedFX.java @@ -0,0 +1,33 @@ +package net.uberkat.obsidian.client; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; + +import javax.imageio.ImageIO; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.TextureFXManager; +import cpw.mods.fml.client.registry.RenderingRegistry; + +import net.minecraft.client.Minecraft; +import net.minecraft.src.ModLoader; +import net.minecraft.src.ModTextureAnimation; +import net.minecraft.src.RenderEngine; + +public class TextureAnimatedFX extends ModTextureAnimation +{ + public TextureAnimatedFX(String texture, int index) throws IOException + { + super(index, 1, texture, TextureFXManager.instance().loadImageFromTexturePack(FMLClientHandler.instance().getClient().renderEngine, texture), 5); + } + + public void bindImage(RenderEngine renderengine) + { + //Binds texture with GL11 to use specific icon index. + GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, renderengine.getTexture("/obsidian/terrain.png")); + } +}