From a69d98a4b659dcef9ae96f7ed8ca9151effa90e5 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 14 Aug 2020 23:52:26 +0200 Subject: [PATCH] fusion reactor work, balls-o-tron progress --- .../{energy => entity}/IRadarDetectable.java | 2 +- src/main/java/assets/hbm/lang/de_DE.lang | 8 +- src/main/java/assets/hbm/lang/en_US.lang | 6 + .../java/assets/hbm/textures/blocks/iter.png | Bin 0 -> 272 bytes .../java/assets/hbm/textures/gui/fluids1.png | Bin 12562 -> 12737 bytes .../java/assets/hbm/textures/gui/fluids2.png | Bin 14948 -> 15634 bytes .../gui/reactors/gui_fusion_multiblock.png | Bin 4166 -> 2821 bytes .../hbm/textures/items/chernobylsign.png | Bin 0 -> 203 bytes .../items/fusion_shield_chlorophyte.png | Bin 0 -> 272 bytes .../hbm/textures/items/fusion_shield_desh.png | Bin 0 -> 254 bytes .../textures/items/fusion_shield_tungsten.png | Bin 0 -> 239 bytes .../hbm/textures/items/powder_chlorophyte.png | Bin 0 -> 420 bytes .../hbm/textures/models/iter/plasma.png | Bin 364 -> 3484 bytes src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../com/hbm/blocks/machine/MachineITER.java | 189 +++++++++++++++++- .../missile/EntityMissileAntiBallistic.java | 2 +- .../missile/EntityMissileBaseAdvanced.java | 2 +- .../entity/missile/EntityMissileBurst.java | 2 +- .../missile/EntityMissileBusterStrong.java | 2 +- .../entity/missile/EntityMissileCluster.java | 2 +- .../missile/EntityMissileClusterStrong.java | 2 +- .../entity/missile/EntityMissileDoomsday.java | 2 +- .../entity/missile/EntityMissileDrill.java | 2 +- .../hbm/entity/missile/EntityMissileEMP.java | 2 +- .../missile/EntityMissileEMPStrong.java | 2 +- .../hbm/entity/missile/EntityMissileEndo.java | 2 +- .../hbm/entity/missile/EntityMissileExo.java | 2 +- .../entity/missile/EntityMissileGeneric.java | 2 +- .../missile/EntityMissileIncendiary.java | 2 +- .../EntityMissileIncendiaryStrong.java | 2 +- .../entity/missile/EntityMissileInferno.java | 2 +- .../entity/missile/EntityMissileMicro.java | 2 +- .../hbm/entity/missile/EntityMissileMirv.java | 2 +- .../entity/missile/EntityMissileNuclear.java | 2 +- .../hbm/entity/missile/EntityMissileRain.java | 2 +- .../missile/EntityMissileSchrabidium.java | 2 +- .../entity/missile/EntityMissileStrong.java | 2 +- .../entity/missile/EntityMissileTaint.java | 2 +- .../EntityBallsOTronBase.java | 58 ++++-- .../EntityBallsOTronHead.java | 6 + .../EntityBallsOTronSegment.java | 8 + .../mob/sodtekhnologiyah/EntityWormBase.java | 2 +- .../sodtekhnologiyah/WormMovementBody.java | 63 +++++- .../com/hbm/handler/FluidTypeHandler.java | 1 + src/main/java/com/hbm/handler/GUIHandler.java | 18 ++ .../java/com/hbm/handler/ToolAbility.java | 77 ++++++- .../inventory/container/ContainerITER.java | 82 ++++++++ .../java/com/hbm/inventory/gui/GUIITER.java | 79 ++++++++ src/main/java/com/hbm/items/ModItems.java | 28 ++- .../com/hbm/items/tool/ItemToolAbility.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../java/com/hbm/main/CraftingManager.java | 2 + .../render/item/weapon/ItemRenderShim.java | 2 +- .../com/hbm/render/tileentity/RenderITER.java | 71 +++++++ .../tileentity/RenderITERMultiblock.java | 26 --- .../tileentity/machine/TileEntityITER.java | 160 ++++++++++----- .../machine/TileEntityITERStruct.java | 97 ++++++++- .../machine/TileEntityMachineOilWell.java | 4 +- .../machine/TileEntityMachinePumpjack.java | 4 +- .../machine/TileEntityMachineRadar.java | 4 +- 60 files changed, 908 insertions(+), 141 deletions(-) rename src/main/java/api/hbm/{energy => entity}/IRadarDetectable.java (96%) create mode 100644 src/main/java/assets/hbm/textures/blocks/iter.png create mode 100644 src/main/java/assets/hbm/textures/items/chernobylsign.png create mode 100644 src/main/java/assets/hbm/textures/items/fusion_shield_chlorophyte.png create mode 100644 src/main/java/assets/hbm/textures/items/fusion_shield_desh.png create mode 100644 src/main/java/assets/hbm/textures/items/fusion_shield_tungsten.png create mode 100644 src/main/java/assets/hbm/textures/items/powder_chlorophyte.png create mode 100644 src/main/java/com/hbm/inventory/container/ContainerITER.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIITER.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderITER.java diff --git a/src/main/java/api/hbm/energy/IRadarDetectable.java b/src/main/java/api/hbm/entity/IRadarDetectable.java similarity index 96% rename from src/main/java/api/hbm/energy/IRadarDetectable.java rename to src/main/java/api/hbm/entity/IRadarDetectable.java index 18d6cda22..295be47a6 100644 --- a/src/main/java/api/hbm/energy/IRadarDetectable.java +++ b/src/main/java/api/hbm/entity/IRadarDetectable.java @@ -1,4 +1,4 @@ -package api.hbm.energy; +package api.hbm.entity; public interface IRadarDetectable { diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index 288988896..94fa96fd0 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -296,9 +296,10 @@ hbmfluid.reclaimed=Wiederaufbetreitetes Industrieöl hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.smear=Industrieöl hbmfluid.steam=Dampf -hbmfluid.superhotsteam=Superverdichteter Steam +hbmfluid.superhotsteam=Superverdichteter Dampf hbmfluid.tritium=Tritium hbmfluid.uf6=Uranhexafluorid +hbmfluid.ultrahotsteam=Ultraverdichteter Dampf hbmfluid.water=Wasser hbmfluid.watz=Giftiger Schlamm hbmfluid.xenon=Xenongas @@ -792,6 +793,9 @@ item.detonator_multi.name=Mehrfach-Fernzünder item.door_bunker.name=Bunkertür item.door_metal.name=Metalltür item.door_office.name=Bürotür +item.drax.name=Terra-Bohrer +item.drax_mk2.name=Gehärteter Terra-Bohrer +item.drax_mk3.name=Schrabidischer Terra-Bohrer item.drill_titanium.name=Titanbohrer item.ducttape.name=Klebeband item.dust.name=Staub @@ -2317,6 +2321,7 @@ tile.steel_poles.name=Stahlmasten tile.steel_roof.name=Flaches Stachldach tile.steel_scaffold.name=Stahlgerüst tile.steel_wall.name=Stahlwand +tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente tile.struct_launcher.name=Startrampe-Komponentenblock tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente tile.struct_launcher_core_large.name=Startrampe-Kernkomponente @@ -2363,6 +2368,7 @@ tile.watz_hatch.name=Watzreaktorzugriffsluke tile.yellow_barrel.name=Radioaktives Fass tool.ability.cnetrifuge=Auto-Zentrifuge +tool.ability.crystallizer=Auto-Kristallisierer tool.ability.hammer=AoE tool.ability.luck=Glück tool.ability.recursion=Erzadern-Miner diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index dd654875b..cf862323c 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -299,6 +299,7 @@ hbmfluid.steam=Steam hbmfluid.superhotsteam=Super Dense Steam hbmfluid.tritium=Tritium hbmfluid.uf6=Uranium Hexafluoride +hbmfluid.ultrahotsteam=Ultra Dense Steam hbmfluid.water=Water hbmfluid.watz=Poisonous Mud hbmfluid.xenon=Xenon Gas @@ -793,6 +794,9 @@ item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door item.drill_titanium.name=Titanium Drill +item.drax.name=Terra Drill +item.drax_mk2.name=Hardened Terra Drill +item.drax_mk3.name=Schrabidic Terra Drill item.ducttape.name=Duct Tape item.dust.name=Dust item.dynosphere_base.name=Blank Dynosphere @@ -2317,6 +2321,7 @@ tile.steel_poles.name=Steel Pole tile.steel_roof.name=Flat Steel Roof tile.steel_scaffold.name=Steel Scaffold tile.steel_wall.name=Steel Wall +tile.struct_iter_core.name=Fusion Reactor Core Component tile.struct_launcher.name=Launch Pad Component Block tile.struct_launcher_core.name=Compact Launcher Core Component tile.struct_launcher_core_large.name=Launch Table Core Component @@ -2363,6 +2368,7 @@ tile.watz_hatch.name=Watz Reactor Access Hatch tile.yellow_barrel.name=Radioactive Barrel tool.ability.centrifuge=Auto-Centrifuge +tool.ability.crystallizer=Auto-Crystallizer tool.ability.hammer=AoE tool.ability.luck=Fortune tool.ability.recursion=Vein Miner diff --git a/src/main/java/assets/hbm/textures/blocks/iter.png b/src/main/java/assets/hbm/textures/blocks/iter.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfe68db1c4f55dc3e6804f4b54fac0cf1c57536 GIT binary patch literal 272 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 literal 12562 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 YK6&lswTtG!KRJMm^v(3Db)Dk>4-Kn`Jpcdz diff --git a/src/main/java/assets/hbm/textures/gui/fluids2.png b/src/main/java/assets/hbm/textures/gui/fluids2.png index 2220a20a186d0d0a32eecb4fdd9406cc8a401ca0..003cb4d837ed4a93bfee694e377834637054326c 100755 GIT binary patch literal 15634 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

BO#0>t$!YzZbyLc36C(%Sw65=a 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 diff --git a/src/main/java/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png b/src/main/java/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png index 90c0d7b57597c44d48c5ee212b569b55f1132495..5fa4185a92f7268900987b571964e866a9931362 100644 GIT binary patch literal 2821 zcmb7Gc~nzp7XK0gq#zKi1MJTJ}XmTnHkRrGb#(QgFheVBJ_n zS)9mDh)5D}5TQ_-XxIcHC}rP-kO)CYAHz83w4FKA`Tn{0e(&AiJ@=y6rs$zo4M1bnJ-$Vl1i-AROPRY#wVujT7eV@D~M ztJk&dl`w)}b7XM4{k7iUR9TGW-3NP?^aYlS{0+1)zx@3kCV{l5b*#!@IoBVk8MKi$ zH^!_9&5>G6!X7R0hbwuETOAXECxU@Vb|G(dZFTkW(m*jo&&41^T4SIhNZifO6Dp_~ zn2(;BvXoho}^C zY`aqPI-AbsJ#o#AZ_t8&aXcN6vyCa_-Z3iL2)+*v)O7)9zYPcaXgFLRA6Pa1g=iEey7y~<+J!icK-v~56noxgE>B&TcK zqZX|;m5%xfZu7A6K43GO(>f-#l4*S6riiB?WSx)jN3@)!sfIZosK;j{_CK`yl*-OZ z>v;9bXADp6oe_!0+utA2?1FOi!^6X~^`2mQHSXp*wk%U@sV7#03Z%T$zFUeJt|59S zBn!WmqZco=jv|AHWMdEHn`(wulu=C=j5C;S_6@=hX>(%Jg7*c@s9t1I#gd=b$~#wU z3E~|!SiQjAHHP)}eIJ2NbOP&^PE@vnh;kO;UY@9Zj&z~FdzzZTWEi8OH!;QHwWrvh zGJr5-z6~eD@&@^rqWlqL{SjV&`(q@~7y69qqB+X2BBY#ZC?#4EWn*?f9lSL8S`hNt z&t>@y{HIX{I@yzJz5S2;#Du63wlKu1kdoGMq6XDSkPCG?0^8wTar{`o8zc@1TK2+0 zR65um{KxQciu5zTcuwZlfOW}=QDHjuClJ8g2>|Gd9Qs1qW+;A`J}i}h66gfKXbG=- zC2&5}^x9yj(1?KwtGSk@?Vtg|#=jq-P4>T>dRzePug1x^<9`_sWSuc_FD+T3OdU{u z7Is6?Cap2s8|Cf^Jo)S=agO${}(vZ;H0fmaarUe;pq;rs2M$qBB!c^HIXEcn3ZJes<8 zf%Q*(f>a7b0NGo2W0K~2e&e3C6TG2Zjy#iB>z3s~FLy*<{;ZaT)uh2twY%@ICo9g& z7F!dNb9)6S?!1i*s}U7qFNU`nB(SfVzlIO z&8}x9idynsD$R5$31Bwt6S9IZ${+|ndIoZG20_v8n(c&Lw><~#h_8yRz?4tKJyygq zHSm)m9&$X?z=~djdywfvIWj!vuYTnizaD9TqZswvGCC_kwkUxds7Uamf|E4g#*H1e z9qmWi=W|4hlB?sJ8}!6mEtaGur>S-;C!)4GO_vPUO?k6-=exsrVA5@vI#)qUB~P^f ztV)J3M%{5&g(ww|!Yu^uX;?Kra9{=gmN?#8#7c5s@3tW>(lJ%c=8o?6$PyMOYtYb! zo44;<2_rU@W|rKYmA@ZA3;~=t!Ok*no2`&^3;hgh^=-E7-=j@7t5rT3C^iM#?LIIC zQ!ZQWLS0_5?>6L`{E!|P5&j4^01+YITX&?)^HqeY^xDwP-|@@I8GzV=(q*<;f@ZOT zhFF4z2)biBjkR(slH;1^S5>SoK5Arfj^M%Rd6x!!=Y?#&TA!+TRyP58x&l-0sRkq~ zVmhCE(UFYn&(XX7b%|}B-j9OjLZ{c>^?k}S4|%&*hWRmHF%LI}gqLVvSQGCxOIGv~ zNVe$$YD}jan_Z=rbo{#=&@ELko<9gUBb55?ezRGD;9B#CrqaY`)kcj%ksXc(bKjmh zMFcp5b@hV5-h0i5K2S)K6@n{-vl1=Pmlyf8ieZ2{hxD$%EcQr|+X^0>p*26js)QoF zA7S>$lP~sJgbnKi*R0ZgsvN)cyu6I>O?+OB^yc^mm6ut8dI6d{T~B*z8Zb?tH|_cc zcJmAsQ?I5EP7DQ<9S$8Xu|0S0Lrt&p-He?ebfJ>pw8)wbcut|n-qFyIG|$DpH2GmX z`tt{Qm2cW24_TEL!so`?+8nFa#j~ke4w+f{u3Ve&9=Drewf@G5g^)FgcwMwv2f+8A zjw6d)V!f?N{0W=zoyTJdMPa|dH~iDVDQ9O|jHs07=aH{^*%w1rfP~_fROEid-9AYq z?A!6PGVU77e)!ceN92u5-LlhLk4mGp1~8F~UR-Yc!F z;vfmY*^(#90niCy(_yojl8h*t6sq;_)+mo2U2r`TcaUk#_?s1Qs8mhh4v}xFk+?%d zZ7XwxmcJ_uZ6-8u?T3MY$1-H^7o#;*Q}EHYwzl5MwZxYVf5~j%+p2Gg<#)z9|2UKrl3&yK;IZ@sc zzug;uB;>!aw+#_&UU3i(Q?1c;H$MXVH_MM=6|V)P7;d!_kfJEx1ozAoMSJII%6tCj zW%WOchJF*=c`Qi&`_{@9Y-&JCYlzIpRfa85+0;$<)7f|Dh`}0xIq{=po}m-S(Q}a} x=(HGngB|xphzV&6+2DASWa!WI|2)`hVhOB*rnc#(e(+YRi{nv;O1t2TzXC%F<5U0u literal 4166 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

1l>@tjqfZkFxH{nZ?sJ zF@_~Gr6K9S?(+8%=iXPlPB@myU|47V)Y!$aLGoF>prBw=-Ty!HXC92aFZixrL|ou; zd90c57mwtG#DoSFF7IOuY;37O#L+m}jlE|>#*rz9coWXa%P=q;yV=^A#_Mhb^b&)o LtDnm{r-UW|*6C-^ literal 0 HcmV?d00001 diff --git a/src/main/java/assets/hbm/textures/items/fusion_shield_desh.png b/src/main/java/assets/hbm/textures/items/fusion_shield_desh.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4e7f4aa69da556684b7f85e0228f08f5c9f947 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfC3J({j=h!K~o1*l(Y2L=46Q8#qom$M$aQfN;Q?-+&mvi(5u01+dImvd@g}Q7W zH?P2~y{E$!3*^~Kye6JFIB|aK)`^c-Y<+H$xJ1OGKsIAv*@T~erWT)kv-FzAl9_x$~TfJsSvMwO$$=6^sBFnGH9xvXoFJiS2IKWhr<^_;mCbMI z1_{X?oI1aAh4MS5thFaB{r?&~;5>Ng+4U&@^yxu|qIRFXFL>u}-R0eP??rJl7#y4P mYrBi};|)~{+WyP`Vo*Gu;gC7?>1bT7EDGjSpZL6{#qrdLrnheq%Ea9#Hu9{B%}Qd%jcZFleP z1S_RTBoYWAT1xz#;KSM$HTSh`$+rbkN-Ko0N+~j#4CP}@Hk)N^A=q+-|0}$_yU5j! zA(>3Fez*iXQyAxkzI#7#+j&85{~XtK0oYvICKih!rNoq82m}J(R=f+Ols3LH$-(9k zgR?%;=`^vCIH^>Mdbohr8l@ET8`Ga8J`avWBINUV=4R#zhljYxl_-l-^qIkNhH2b2 zX*Qb_3q|y0okpXv3ee@5Jgeh4M59q$*QN4YAlx%bwOR$hPTWx5dmt1Fp|!>s)AcU+ zD)M9=_;@nFU2lb_>mC4%F&}Jjyuam>2qCNx!Uo6tZM#SMbAA;5rtJ;(A&g!i4)VJI O00005|jP5`~YX(&8p)f{A(mhv9*UW*FMmR=PjT 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 SGOYv#AA_f>pUXO@geCw<5vYy; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index be7c56f91..53b1e8afc 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -495,7 +495,7 @@ public class ModBlocks { public static final int guiID_fusion_multiblock = 27; public static Block iter; - public static final int guiID_iter = 27; + public static final int guiID_iter = 98; public static Block plasma_heater; public static final int guiID_plasma_heater = 27; diff --git a/src/main/java/com/hbm/blocks/machine/MachineITER.java b/src/main/java/com/hbm/blocks/machine/MachineITER.java index 70e41bc59..5afd92670 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineITER.java +++ b/src/main/java/com/hbm/blocks/machine/MachineITER.java @@ -1,11 +1,21 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityITER; +import com.hbm.tileentity.machine.TileEntityITERStruct; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class MachineITER extends BlockDummyable { @@ -15,17 +25,190 @@ public class MachineITER extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityITER(); + + if(meta >= 12) + return new TileEntityITER(); + return null; } @Override public int[] getDimensions() { - return new int[] {4, 0, 7, 7, 7, 7}; + //because we'll implement our own gnarly behavior here + return new int[] { 0, 0, 0, 0, 0, 0 }; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) + { + return true; + } else if(!player.isSneaking()) + { + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + TileEntityITER entity = (TileEntityITER) world.getTileEntity(pos[0], pos[1], pos[2]); + if(entity != null) + { + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_iter, world, pos[0], pos[1], pos[2]); + } + return true; + } else { + return false; + } + } + + public static final int height = 2; + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + + if(!(player instanceof EntityPlayer)) + return; + + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + EntityPlayer pl = (EntityPlayer) player; + + int o = getOffset(); + + ForgeDirection dir = ForgeDirection.NORTH; + + if(i == 0) + { + dir = ForgeDirection.getOrientation(2); + } + if(i == 1) + { + dir = ForgeDirection.getOrientation(5); + } + if(i == 2) + { + dir = ForgeDirection.getOrientation(3); + } + if(i == 3) + { + dir = ForgeDirection.getOrientation(4); + } + + dir = dir.getOpposite(); + + world.setBlockToAir(x, y, z); + + if(!checkRequirement(world, x, y, z, dir, o)) { + + if(!pl.capabilities.isCreativeMode) { + ItemStack stack = pl.inventory.mainInventory[pl.inventory.currentItem]; + Item item = Item.getItemFromBlock(this); + + if(stack == null) { + pl.inventory.mainInventory[pl.inventory.currentItem] = new ItemStack(this); + } else { + if(stack.getItem() != item || stack.stackSize == stack.getMaxStackSize()) { + pl.inventory.addItemStackToInventory(new ItemStack(this)); + } else { + pl.getHeldItem().stackSize++; + } + } + } + + return; + } + + pl.getHeldItem().stackSize--; + + world.setBlock(x + dir.offsetX * o , y + dir.offsetY * o + height, z + dir.offsetZ * o, this, dir.ordinal() + offset, 3); + this.safeRem = true; + fillSpace(world, x, y, z, dir, o); + this.safeRem = false; + world.scheduleBlockUpdate(x, y, z, this, 1); + world.scheduleBlockUpdate(x, y, z, this, 2); + + super.onBlockPlacedBy(world, x, y, z, player, itemStack); + } + + @Override + public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + int[][][] layout = TileEntityITERStruct.collisionMask; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer.length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + if(ex == 0 && y == 2 && ez == 0) + continue; + + if(!world.getBlock(x + ex, y + iy, z + ez).canPlaceBlockAt(world, x + ex, y + iy, z + ez)) { + return false; + } + } + } + } + + return true; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + int[][][] layout = TileEntityITERStruct.collisionMask; + + for(int iy = 0; iy < 5; iy++) { + + int l = iy > 2 ? 4 - iy : iy; + int[][] layer = layout[l]; + + for(int ix = 0; ix < layer.length; ix++) { + + for(int iz = 0; iz < layer[0].length; iz++) { + + int ex = ix - layer.length / 2; + int ez = iz - layer.length / 2; + + int meta = 0; + + if(iy < 2) { + meta = ForgeDirection.DOWN.ordinal(); + } else if(iy > 2) { + meta = ForgeDirection.UP.ordinal(); + } else if(ex < 0) { + meta = ForgeDirection.WEST.ordinal(); + } else if(ex > 0) { + meta = ForgeDirection.EAST.ordinal(); + } else if(ez < 0) { + meta = ForgeDirection.NORTH.ordinal(); + } else if(ez > 0) { + meta = ForgeDirection.SOUTH.ordinal(); + } else { + continue; + } + + if(layout[l][ix][iz] > 0) + world.setBlock(x + ex, y + iy, z + ez, this, meta, 3); + } + } + } } @Override public int getOffset() { - return 8; + return 7; } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 8896b2972..8090eae78 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; -import api.hbm.energy.IRadarDetectable; +import api.hbm.entity.IRadarDetectable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java index d43763571..582330105 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java @@ -10,7 +10,7 @@ import com.hbm.packet.AuxParticlePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineRadar; -import api.hbm.energy.IRadarDetectable; +import api.hbm.entity.IRadarDetectable; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java b/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java index 332d1d1c4..f46c77711 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBurst.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java index b8c45e154..296764f9f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBusterStrong.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java b/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java index dd6813dc8..c0b63f1b7 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCluster.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionChaos; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java index fc7db53f2..fed38c906 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileClusterStrong.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionChaos; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java index 26a26fc00..8360c3c7e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDoomsday.java @@ -4,7 +4,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java b/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java index 70204e9b4..32dd3fcdc 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileDrill.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java index d3a0da460..00dd94a01 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileEMP.java @@ -8,7 +8,7 @@ import com.hbm.entity.effect.EntityEMPBlast; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java index 11961763d..6a4a9dac3 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileEMPStrong.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.entity.logic.EntityEMP; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java b/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java index c898017b7..21b10d43c 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileEndo.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionThermo; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java b/src/main/java/com/hbm/entity/missile/EntityMissileExo.java index 701f33d81..fad570547 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileExo.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileExo.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionThermo; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java b/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java index 55fef40fb..34d936656 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileGeneric.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java index b8df6830e..3601d4b5f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiary.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java index 843e9abdc..a5a5fb765 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileIncendiaryStrong.java @@ -7,7 +7,7 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java b/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java index af3b354a0..d2610382d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileInferno.java @@ -7,7 +7,7 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java index 69d1c9e6b..01ab31d1e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileMicro.java @@ -9,7 +9,7 @@ import com.hbm.explosion.ExplosionParticleB; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java b/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java index e38c52416..7aac58b7d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileMirv.java @@ -8,7 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java b/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java index c41da84b0..37c6e67bb 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileNuclear.java @@ -8,7 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java b/src/main/java/com/hbm/entity/missile/EntityMissileRain.java index 313ba1669..25728f3a5 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileRain.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileRain.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionChaos; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java b/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java index 0cd842e5d..3d32c7f7d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileSchrabidium.java @@ -8,7 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java b/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java index 0729f7478..8521ce6f2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileStrong.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java b/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java index 61b0e69ad..32e7e50b4 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTaint.java @@ -7,7 +7,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockTaint; import com.hbm.items.ModItems; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronBase.java b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronBase.java index 1106a634c..4354b0534 100644 --- a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronBase.java +++ b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronBase.java @@ -1,36 +1,54 @@ package com.hbm.entity.mob.sodtekhnologiyah; +import net.minecraft.command.IEntitySelector; +import net.minecraft.entity.Entity; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -public class EntityBallsOTronBase extends EntityWormBase { +public abstract class EntityBallsOTronBase extends EntityWormBase { + + public int attackCounter = 0; + + protected final IEntitySelector selector = new IEntitySelector() { + + @Override + public boolean isEntityApplicable(Entity ent) { + + if(ent instanceof EntityWormBase && ((EntityWormBase)ent).getUniqueWormID() == EntityBallsOTronBase.this.getUniqueWormID()) + return false; + + return true; + } + + }; public EntityBallsOTronBase(World world) { super(world); + this.setSize(2.0F, 2.0F); + this.isImmuneToFire = true; + this.isAirBorne = true; + this.noClip = true; + this.renderDistanceWeight = 15.0D; + this.dragInAir = 0.995F; + this.dragInGround = 0.98F; + this.knockbackDivider = 1.0D; } @Override - public int getHeadID() { - return 0; + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(5000.0D); } @Override - public int getPartID() { - return 0; - } + protected boolean isAIEnabled() { + return true; + } @Override - public boolean getIsHead() { - return false; - } - - @Override - public void setPartID(int id) { - - } - - @Override - public void setHeadID(int id) { - - } - + protected boolean canDespawn() { + return false; + } } diff --git a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronHead.java b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronHead.java index b4070d575..a8ff1eb56 100644 --- a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronHead.java +++ b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronHead.java @@ -1,5 +1,6 @@ package com.hbm.entity.mob.sodtekhnologiyah; +import net.minecraft.entity.Entity; import net.minecraft.entity.boss.IBossDisplayData; import net.minecraft.util.IChatComponent; import net.minecraft.world.World; @@ -21,4 +22,9 @@ public class EntityBallsOTronHead extends EntityBallsOTronBase implements IBossD return null; } + @Override + public float getAttackStrength(Entity target) { + return 0; + } + } diff --git a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronSegment.java b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronSegment.java index e03bcf376..46f861e8b 100644 --- a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronSegment.java +++ b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityBallsOTronSegment.java @@ -1,11 +1,19 @@ package com.hbm.entity.mob.sodtekhnologiyah; +import net.minecraft.entity.Entity; import net.minecraft.world.World; public class EntityBallsOTronSegment extends EntityBallsOTronBase { + + private WormMovementBody movement = new WormMovementBody(this); public EntityBallsOTronSegment(World world) { super(world); } + @Override + public float getAttackStrength(Entity target) { + return 0; + } + } diff --git a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityWormBase.java b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityWormBase.java index 0d49c6d64..b602c89cc 100644 --- a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityWormBase.java +++ b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/EntityWormBase.java @@ -28,7 +28,7 @@ public abstract class EntityWormBase extends EntityBurrowing { protected double maxSpeed; protected double fallSpeed; protected double rangeForParts; - protected EntityWormBase followed; + protected EntityLivingBase followed; protected int surfaceY; private int uniqueWormID; private int partID; diff --git a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/WormMovementBody.java b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/WormMovementBody.java index 1e5bab335..ef60a13aa 100644 --- a/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/WormMovementBody.java +++ b/src/main/java/com/hbm/entity/mob/sodtekhnologiyah/WormMovementBody.java @@ -1,5 +1,66 @@ package com.hbm.entity.mob.sodtekhnologiyah; -public class WormMovementBody { +import java.util.List; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +public class WormMovementBody { + private EntityWormBase user; + + public WormMovementBody(EntityWormBase par1) { + this.user = par1; + } + + protected void updateMovement() { + double var9 = 128.0D; + if((this.user.targetedEntity != null) && (this.user.targetedEntity.getDistanceSqToEntity(this.user) < var9 * var9)) { + this.user.waypointX = this.user.targetedEntity.posX; + this.user.waypointY = this.user.targetedEntity.posY; + this.user.waypointZ = this.user.targetedEntity.posZ; + } + if(((this.user.ticksExisted % 60 == 0) || (this.user.ticksExisted == 1)) + && ((this.user.targetedEntity == null) || (this.user.followed == null))) { + findEntityToFollow(this.user.worldObj.selectEntitiesWithinAABB(EntityLiving.class, + this.user.boundingBox.expand(this.user.rangeForParts, this.user.rangeForParts, this.user.rangeForParts), + EntityWormBase.wormSelector)); + } + double var1 = this.user.waypointX - this.user.posX; + double var3 = this.user.waypointY - this.user.posY; + double var5 = this.user.waypointZ - this.user.posZ; + double var7 = var1 * var1 + var3 * var3 + var5 * var5; + + var7 = MathHelper.sqrt_double(var7); + if(this.user.targetedEntity != null) { + this.user.faceEntity(this.user.targetedEntity, 180.0F, 180.0F); + } + this.user.bodySpeed = Math.max(0.0D, Math.min(var7 - this.user.segmentDistance, this.user.maxBodySpeed)); + if(var7 < this.user.segmentDistance * 0.895D) { + this.user.motionX *= 0.8D; + this.user.motionY *= 0.8D; + this.user.motionZ *= 0.8D; + } else { + this.user.motionX = (var1 / var7 * this.user.bodySpeed); + this.user.motionY = (var3 / var7 * this.user.bodySpeed); + this.user.motionZ = (var5 / var7 * this.user.bodySpeed); + } + } + + protected void findEntityToFollow(List par1List) { + for(EntityWormBase var3 : par1List) { + if(var3.getUniqueWormID() == this.user.getUniqueWormID()) { + if(var3.getIsHead()) { + if(this.user.getPartID() == 0) { + this.user.targetedEntity = ((Entity) var3); + } + this.user.followed = ((EntityLivingBase) var3); + } else if(var3.getPartID() == this.user.getPartID() - 1) { + this.user.targetedEntity = ((Entity) var3); + } + } + } + this.user.didCheck = true; + } } diff --git a/src/main/java/com/hbm/handler/FluidTypeHandler.java b/src/main/java/com/hbm/handler/FluidTypeHandler.java index fd71aeb94..1278e9e1a 100644 --- a/src/main/java/com/hbm/handler/FluidTypeHandler.java +++ b/src/main/java/com/hbm/handler/FluidTypeHandler.java @@ -13,6 +13,7 @@ public class FluidTypeHandler { STEAM (0xe5e5e5, 9, 2, 1, 3, 0, 0, EnumSymbol.NONE, "hbmfluid.steam", true, false, false), HOTSTEAM (0xE7D6D6, 1, 1, 2, 4, 0, 0, EnumSymbol.NONE, "hbmfluid.hotsteam", true, false, false), SUPERHOTSTEAM (0xE7B7B7, 2, 1, 2, 4, 0, 0, EnumSymbol.NONE, "hbmfluid.superhotsteam", true, false, false), + ULTRAHOTSTEAM (0xE39393, 13, 1, 2, 4, 0, 0, EnumSymbol.NONE, "hbmfluid.ultrahotsteam", true, false, false), COOLANT (0xd8fcff, 2, 1, 1, 1, 0, 0, EnumSymbol.NONE, "hbmfluid.coolant"), LAVA (0xFF3300, 3, 1, 1, 4, 0, 0, EnumSymbol.NOWATER, "hbmfluid.lava", true, false, false), diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index fd0bac5da..04db0351f 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -878,6 +878,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_iter: + { + if(entity instanceof TileEntityITER) + { + return new ContainerITER(player.inventory, (TileEntityITER) entity); + } + return null; + } } } else { //NON-TE CONTAINERS @@ -1755,6 +1764,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_iter: + { + if(entity instanceof TileEntityITER) + { + return new GUIITER(player.inventory, (TileEntityITER) entity); + } + return null; + } } } else { //ITEM GUIS diff --git a/src/main/java/com/hbm/handler/ToolAbility.java b/src/main/java/com/hbm/handler/ToolAbility.java index 15edc40dd..22c942277 100644 --- a/src/main/java/com/hbm/handler/ToolAbility.java +++ b/src/main/java/com/hbm/handler/ToolAbility.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Set; import com.hbm.inventory.CentrifugeRecipes; +import com.hbm.inventory.CrystallizerRecipes; import com.hbm.inventory.ShredderRecipes; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; @@ -30,6 +31,7 @@ public abstract class ToolAbility { public abstract void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool); public abstract String getName(); public abstract String getFullName(); + public abstract String getExtension(); public static class RecursionAbility extends ToolAbility { @@ -125,7 +127,12 @@ public abstract class ToolAbility { @Override public String getFullName() { - return I18n.format(getName()) + " (" + radius + ")"; + return I18n.format(getName()) + getExtension(); + } + + @Override + public String getExtension() { + return " (" + radius + ")"; } } @@ -161,7 +168,12 @@ public abstract class ToolAbility { @Override public String getFullName() { - return I18n.format(getName()) + " (" + range + ")"; + return I18n.format(getName()) + getExtension(); + } + + @Override + public String getExtension() { + return " (" + range + ")"; } } @@ -193,6 +205,11 @@ public abstract class ToolAbility { public String getFullName() { return I18n.format(getName()); } + + @Override + public String getExtension() { + return ""; + } } public static class LuckAbility extends ToolAbility { @@ -227,7 +244,12 @@ public abstract class ToolAbility { @Override public String getFullName() { - return I18n.format(getName()) + " (" + luck + ")"; + return I18n.format(getName()) + getExtension(); + } + + @Override + public String getExtension() { + return " (" + luck + ")"; } } @@ -258,6 +280,11 @@ public abstract class ToolAbility { public String getFullName() { return I18n.format(getName()); } + + @Override + public String getExtension() { + return ""; + } } public static class ShredderAbility extends ToolAbility { @@ -287,6 +314,11 @@ public abstract class ToolAbility { public String getFullName() { return I18n.format(getName()); } + + @Override + public String getExtension() { + return ""; + } } public static class CentrifugeAbility extends ToolAbility { @@ -311,6 +343,11 @@ public abstract class ToolAbility { } } + @Override + public String getExtension() { + return ""; + } + @Override public String getName() { return "tool.ability.centrifuge"; @@ -321,4 +358,38 @@ public abstract class ToolAbility { return I18n.format(getName()); } } + + public static class CrystallizerAbility extends ToolAbility { + + @Override + public void onDig(World world, int x, int y, int z, EntityPlayer player, Block block, int meta, IItemAbility tool) { + + //a band-aid on a gaping wound + if(block == Blocks.lit_redstone_ore) + block = Blocks.redstone_ore; + + ItemStack stack = new ItemStack(block, 1, meta); + ItemStack result = CrystallizerRecipes.getOutput(stack); + + if(result != null) { + world.setBlockToAir(x, y, z); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.copy())); + } + } + + @Override + public String getExtension() { + return ""; + } + + @Override + public String getName() { + return "tool.ability.crystallizer"; + } + + @Override + public String getFullName() { + return I18n.format(getName()); + } + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerITER.java b/src/main/java/com/hbm/inventory/container/ContainerITER.java new file mode 100644 index 000000000..e6d30122d --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerITER.java @@ -0,0 +1,82 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.TileEntityITER; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerITER extends Container { + +private TileEntityITER iter; + + public ContainerITER(InventoryPlayer invPlayer, TileEntityITER tedf) { + + iter = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 107, 108)); + //Breeder In + this.addSlotToContainer(new Slot(tedf, 1, 26, 18)); + //Breeder Out + this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 62, 18)); + //Plasma Shield + this.addSlotToContainer(new Slot(tedf, 3, 98, 18)); + //Byproduct + this.addSlotToContainer(new SlotMachineOutput(tedf, 4, 134, 18)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 2) { + if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) + { + return null; + } + } else { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return iter.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIITER.java b/src/main/java/com/hbm/inventory/gui/GUIITER.java new file mode 100644 index 000000000..11ccaff32 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIITER.java @@ -0,0 +1,79 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerITER; +import com.hbm.lib.RefStrings; +import com.hbm.packet.AuxButtonPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityITER; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIITER extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_fusion_multiblock.png"); + private TileEntityITER iter; + + public GUIITER(InventoryPlayer invPlayer, TileEntityITER laser) { + super(new ContainerITER(invPlayer, laser)); + this.iter = laser; + + this.xSize = 176; + this.ySize = 222; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 71, guiTop + 108, 34, 16, iter.power, iter.maxPower); + + iter.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 54, 16, 52); //Water + iter.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 54, 16, 52); //Steam + iter.plasma.renderTankInfo(this, mouseX, mouseY, guiLeft + 71, guiTop + 54, 52, 52); //Plasma + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 52 <= x && guiLeft + 52 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { + + //toggle the magnets + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(iter.xCoord, iter.yCoord, iter.zCoord, 0, 0)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.iter.hasCustomInventoryName() ? this.iter.getInventoryName() : I18n.format(this.iter.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + //TODO: progress bars and button + + for(int t = 0; t < 2; t++) { + Minecraft.getMinecraft().getTextureManager().bindTexture(iter.tanks[t].getSheet()); + iter.tanks[t].renderTank(this, guiLeft + 26 + 108 * t, guiTop + 106, iter.tanks[t].getTankType().textureX() * FluidTank.x, iter.tanks[t].getTankType().textureY() * FluidTank.y, 16, 52); + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(iter.plasma.getSheet()); + iter.plasma.renderTank(this, guiLeft + 71, guiTop + 88, iter.plasma.getTankType().textureX() * FluidTank.x, iter.plasma.getTankType().textureY() * FluidTank.y, 16, 52); + iter.plasma.renderTank(this, guiLeft + 71 + 16, guiTop + 88, iter.plasma.getTankType().textureX() * FluidTank.x, iter.plasma.getTankType().textureY() * FluidTank.y, 16, 52); + iter.plasma.renderTank(this, guiLeft + 71 + 32, guiTop + 88, iter.plasma.getTankType().textureX() * FluidTank.x, iter.plasma.getTankType().textureY() * FluidTank.y, 2, 52); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 3956bd6c4..9e7371990 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1642,6 +1642,8 @@ public class ModItems { public static Item smashing_hammer; public static Item centri_stick; public static Item drax; + public static Item drax_mk2; + public static Item drax_mk3; public static Item matchstick; public static Item balefire_and_steel; @@ -3727,11 +3729,33 @@ public class ModItems { smashing_hammer = new ItemToolAbility(12F, -0.1, MainRegistry.tMatSteel, EnumToolType.MINER) .addBreakAbility(new ToolAbility.ShredderAbility()).setMaxDamage(2500).setUnlocalizedName("smashing_hammer").setTextureName(RefStrings.MODID + ":smashing_hammer"); drax = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) + .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) + .addBreakAbility(new ToolAbility.LuckAbility(2)) + .addBreakAbility(new ToolAbility.HammerAbility(1)) + .addBreakAbility(new ToolAbility.HammerAbility(2)) + .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); + drax_mk2 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) + .addBreakAbility(new ToolAbility.SmelterAbility()) + .addBreakAbility(new ToolAbility.ShredderAbility()) + .addBreakAbility(new ToolAbility.CentrifugeAbility()) + .addBreakAbility(new ToolAbility.LuckAbility(3)) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(3)) - .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); + .addBreakAbility(new ToolAbility.RecursionAbility(7)).setUnlocalizedName("drax_mk2").setTextureName(RefStrings.MODID + ":drax_mk2"); + drax_mk3 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 2500000000L, 500000, 10000) + .addBreakAbility(new ToolAbility.SmelterAbility()) + .addBreakAbility(new ToolAbility.ShredderAbility()) + .addBreakAbility(new ToolAbility.CentrifugeAbility()) + .addBreakAbility(new ToolAbility.CrystallizerAbility()) + .addBreakAbility(new ToolAbility.SilkAbility()) + .addBreakAbility(new ToolAbility.LuckAbility(4)) + .addBreakAbility(new ToolAbility.HammerAbility(1)) + .addBreakAbility(new ToolAbility.HammerAbility(2)) + .addBreakAbility(new ToolAbility.HammerAbility(3)) + .addBreakAbility(new ToolAbility.HammerAbility(4)) + .addBreakAbility(new ToolAbility.RecursionAbility(9)).setUnlocalizedName("drax_mk3").setTextureName(RefStrings.MODID + ":drax_mk3"); mask_of_infamy = new MaskOfInfamy(ArmorMaterial.IRON, 8, 0).setUnlocalizedName("mask_of_infamy").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_of_infamy"); @@ -5422,6 +5446,8 @@ public class ModItems { GameRegistry.registerItem(smashing_hammer, smashing_hammer.getUnlocalizedName()); GameRegistry.registerItem(centri_stick, centri_stick.getUnlocalizedName()); GameRegistry.registerItem(drax, drax.getUnlocalizedName()); + GameRegistry.registerItem(drax_mk2, drax_mk2.getUnlocalizedName()); + GameRegistry.registerItem(drax_mk3, drax_mk3.getUnlocalizedName()); GameRegistry.registerItem(matchstick, matchstick.getUnlocalizedName()); GameRegistry.registerItem(balefire_and_steel, balefire_and_steel.getUnlocalizedName()); GameRegistry.registerItem(crowbar, crowbar.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 9220092c7..3677d76ba 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -294,7 +294,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility { player.addChatComponentMessage( new ChatComponentText("[Enabled ") .appendSibling(new ChatComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new ChatComponentText("]"))); + .appendSibling(new ChatComponentText(getCurrentAbility(stack).getExtension() + "]"))); } else { player.addChatComponentMessage(new ChatComponentText("[Tool ability deactivated]")); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 07ba36307..6b00858d2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -170,6 +170,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); + //ITER + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); //doors ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index bbcce9936..4e1de5b1d 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1210,6 +1210,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_plate, 1), new Object[] { "ECE", "EEE", "EEE", 'E', ModItems.ingot_starmetal, 'C', ModItems.cobalt_plate }); GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_legs, 1), new Object[] { "EEE", "ECE", "E E", 'E', ModItems.ingot_starmetal, 'C', ModItems.cobalt_legs }); GameRegistry.addRecipe(new ItemStack(ModItems.starmetal_boots, 1), new Object[] { "E E", "ECE", 'E', ModItems.ingot_starmetal, 'C', ModItems.cobalt_boots }); + + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.drax, 1), new Object[] { "BCF", "DDM", "BCC", 'B', ModItems.blades_advanced_alloy, 'C', "ingotCobalt", 'F', ItemBattery.getFullBattery(ModItems.fusion_core), 'D', "ingotDesh", 'M', ModItems.motor })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.jetpack_boost, 1), new Object[] { "PTP", "SLS", "W W", 'P', "plateSteel", 'T', ModItems.tank_steel, 'S', ModItems.pipes_steel, 'L', Items.leather, 'W', ModItems.thruster_small })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.jetpack_fly, 1), new Object[] { "PTP", "SLS", "W W", 'P', "plateSteel", 'T', ModItems.cap_aluminium, 'S', ModItems.pipes_steel, 'L', ModItems.jetpack_boost, 'W', ModItems.thruster_small })); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderShim.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderShim.java index e38066e3a..039f14f5e 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderShim.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderShim.java @@ -60,7 +60,7 @@ public class ItemRenderShim implements IItemRenderer { GL11.glTranslatef(0.45F, -0.3F, 0.0F); } - if(item.getItem() == ModItems.stopsign || item.getItem() == ModItems.sopsign) { + if(item.getItem() == ModItems.stopsign || item.getItem() == ModItems.sopsign || item.getItem() == ModItems.chernobylsign) { GL11.glRotatef(45.0F, 0.0F, 0.0F, 1.0F); GL11.glScalef(0.35F, 0.35F, 0.35F); GL11.glTranslatef(2.0F, -2.0F, 0.0F); diff --git a/src/main/java/com/hbm/render/tileentity/RenderITER.java b/src/main/java/com/hbm/render/tileentity/RenderITER.java new file mode 100644 index 000000000..8d5ac86c2 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderITER.java @@ -0,0 +1,71 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.TileEntityITER; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderITER extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + + GL11.glTranslatef((float)x + 0.5F, (float)y - 2, (float)z + 0.5F); + + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.iter_glass); + ResourceManager.iter.renderPart("Windows"); + bindTexture(ResourceManager.iter_motor); + ResourceManager.iter.renderPart("Motors"); + bindTexture(ResourceManager.iter_rails); + ResourceManager.iter.renderPart("Rails"); + bindTexture(ResourceManager.iter_toroidal); + ResourceManager.iter.renderPart("Toroidal"); + bindTexture(ResourceManager.iter_torus); + ResourceManager.iter.renderPart("Torus"); + + GL11.glPushMatrix(); + GL11.glRotated(System.currentTimeMillis() / 5D % 360, 0, 1, 0); + bindTexture(ResourceManager.iter_solenoid); + ResourceManager.iter.renderPart("Solenoid"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(System.currentTimeMillis() / 50D % 360, 0, 1, 0); + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glDepthMask(false); + + int color = ((TileEntityITER)te).plasma.getTankType().getColor(); + + int r = ((color & 0xFF0000) >> 16) / 2; + int g = ((color & 0xFF00) >> 8) / 2; + int b = (color & 0xFF) / 2; + + GL11.glColor3b((byte) r, (byte) g, (byte) b); + + bindTexture(ResourceManager.iter_plasma); + ResourceManager.iter.renderPart("Plasma"); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthMask(true); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java index fe2780bfc..225cddd2c 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java @@ -27,32 +27,6 @@ public class RenderITERMultiblock extends TileEntitySpecialRenderer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDepthMask(false); - - /*GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.iter_glass); - ResourceManager.iter.renderPart("Windows"); - bindTexture(ResourceManager.iter_motor); - ResourceManager.iter.renderPart("Motors"); - bindTexture(ResourceManager.iter_rails); - ResourceManager.iter.renderPart("Rails"); - bindTexture(ResourceManager.iter_toroidal); - ResourceManager.iter.renderPart("Toroidal"); - bindTexture(ResourceManager.iter_torus); - ResourceManager.iter.renderPart("Torus"); - - GL11.glPushMatrix(); - GL11.glRotated(System.currentTimeMillis() / 5D % 360, 0, 1, 0); - bindTexture(ResourceManager.iter_solenoid); - ResourceManager.iter.renderPart("Solenoid"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotated(System.currentTimeMillis() / 50D % 360, 0, 1, 0); - GL11.glDisable(GL11.GL_LIGHTING); - bindTexture(ResourceManager.iter_plasma); - ResourceManager.iter.renderPart("Plasma"); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix();*/ ResourceLocation magnet = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_conductor, 2); ResourceLocation solenoid = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_center, 2); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 65d94d95a..e5437c245 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import java.util.ArrayList; import java.util.List; import com.hbm.handler.FluidTypeHandler.FluidType; @@ -7,109 +8,166 @@ import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidTank; +import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; + public class TileEntityITER extends TileEntityMachineBase implements IConsumer, IFluidAcceptor, IFluidSource { + + public long power; + public static final long maxPower = 1000000000; + public int age = 0; + public List list = new ArrayList(); + public FluidTank[] tanks; + public FluidTank plasma; public TileEntityITER() { - super(1); - // TODO Auto-generated constructor stub + super(5); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(FluidType.WATER, 128000, 0); + tanks[1] = new FluidTank(FluidType.ULTRAHOTSTEAM, 128000, 0); + plasma = new FluidTank(FluidType.PLASMA_DT, 16000, 0); + } + + @Override + public String getName() { + return "container.machineITER"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + age++; + if (age >= 20) { + age = 0; + } + + if (age == 9 || age == 19) + fillFluidInit(tanks[1].getTankType()); + } + } + + @Override + public void setPower(long i) { + this.power = i; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; } @Override public void setFillstate(int fill, int index) { - // TODO Auto-generated method stub - + if (index < 2 && tanks[index] != null) + tanks[index].setFill(fill); } @Override - public void setFluidFill(int fill, FluidType type) { - // TODO Auto-generated method stub - + public void setFluidFill(int i, FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + tanks[0].setFill(i); + else if (type.name().equals(tanks[1].getTankType().name())) + tanks[1].setFill(i); } @Override public void setType(FluidType type, int index) { - // TODO Auto-generated method stub - + if (index < 2 && tanks[index] != null) + tanks[index].setTankType(type); } @Override public List getTanks() { - // TODO Auto-generated method stub - return null; + List list = new ArrayList(); + list.add(tanks[0]); + list.add(tanks[1]); + + return list; } @Override public int getFluidFill(FluidType type) { - // TODO Auto-generated method stub - return 0; + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getFill(); + else if (type.name().equals(tanks[2].getTankType().name())) + return tanks[2].getFill(); + else + return 0; } @Override public void fillFluidInit(FluidType type) { - // TODO Auto-generated method stub - + fillFluid(xCoord, yCoord - 3, zCoord, getTact(), type); + fillFluid(xCoord, yCoord + 3, zCoord, getTact(), type); } @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - // TODO Auto-generated method stub - + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); } @Override public boolean getTact() { - // TODO Auto-generated method stub + if (age >= 0 && age < 10) { + return true; + } + return false; } @Override public List getFluidList(FluidType type) { - // TODO Auto-generated method stub - return null; + return list; } @Override public void clearFluidList(FluidType type) { - // TODO Auto-generated method stub - + list.clear(); } @Override public int getMaxFluidFill(FluidType type) { - // TODO Auto-generated method stub - return 0; + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getMaxFill(); + else + return 0; } - + + AxisAlignedBB bb = null; + @Override - public void setPower(long i) { - // TODO Auto-generated method stub + public AxisAlignedBB getRenderBoundingBox() { - } - - @Override - public long getPower() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public long getMaxPower() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public String getName() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void updateEntity() { - // TODO Auto-generated method stub + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord + 0.5 - 8, + yCoord + 0.5 - 3, + zCoord + 0.5 - 8, + xCoord + 0.5 + 8, + yCoord + 0.5 + 3, + zCoord + 0.5 + 8 + ); + } + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; } - } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java index 446901e47..530de6de6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java @@ -1,13 +1,19 @@ package com.hbm.tileentity.machine; +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.MachineITER; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityITERStruct extends TileEntity { - public static int[][][] layout = new int[][][] { + public static final int[][][] layout = new int[][][] { new int[][] { new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, @@ -62,6 +68,61 @@ public class TileEntityITERStruct extends TileEntity { } }; + public static final int[][][] collisionMask = new int[][][] { + + new int[][] { + new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + new int[] {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,1,1,0,0,0,0,0,1,1,0,0,0}, + new int[] {0,0,1,1,0,0,0,0,0,0,0,1,1,0,0}, + new int[] {0,1,1,0,0,0,0,0,0,0,0,0,1,1,0}, + new int[] {0,1,1,0,0,0,0,0,0,0,0,0,1,1,0}, + new int[] {0,1,1,0,0,0,0,3,0,0,0,0,1,1,0}, + new int[] {0,1,1,0,0,0,0,0,0,0,0,0,1,1,0}, + new int[] {0,1,1,0,0,0,0,0,0,0,0,0,1,1,0}, + new int[] {0,0,1,1,0,0,0,0,0,0,0,1,1,0,0}, + new int[] {0,0,0,1,1,0,0,0,0,0,1,1,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, + new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + }, + new int[][] { + new int[] {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,1,1,1,1,1,1,1,1,1,1,1,0,0}, + new int[] {0,1,1,1,1,0,2,2,2,0,1,1,1,1,0}, + new int[] {0,1,1,1,0,2,0,0,0,2,0,1,1,1,0}, + new int[] {1,1,1,1,2,0,0,0,0,0,2,1,1,1,1}, + new int[] {1,1,1,1,2,0,0,3,0,0,2,1,1,1,1}, + new int[] {1,1,1,1,2,0,0,0,0,0,2,1,1,1,1}, + new int[] {0,1,1,1,0,2,0,0,0,2,0,1,1,1,0}, + new int[] {0,1,1,1,1,0,2,2,2,0,1,1,1,1,0}, + new int[] {0,0,1,1,1,1,1,1,1,1,1,1,1,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0} + }, + new int[][] { + new int[] {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,1,1,1,1,1,1,1,1,1,1,1,0,0}, + new int[] {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, + new int[] {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, + new int[] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, + new int[] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, + new int[] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, + new int[] {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, + new int[] {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, + new int[] {0,0,1,1,1,1,1,1,1,1,1,1,1,0,0}, + new int[] {0,0,0,1,1,1,1,1,1,1,1,1,0,0,0}, + new int[] {0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, + new int[] {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0} + } + }; + int age; @Override @@ -76,6 +137,40 @@ public class TileEntityITERStruct extends TileEntity { return; age = 0; + + for(int y = 0; y < 5; y++) { + for(int x = 0; x < layout[0].length; x++) { + for(int z = 0; z < layout[0][0].length; z++) { + + int ly = y > 2 ? 4 - y : y; + + int width = 7; + + if(x == width && y == 0 && z == width) + continue; + + int b = layout[ly][x][z]; + Block block = worldObj.getBlock(xCoord + x - width, yCoord + y, zCoord + z - width); + + switch(b) { + case 1: if(block != ModBlocks.fusion_conductor) { return; } break; + case 2: if(block != ModBlocks.fusion_center) { return; } break; + case 3: if(block != ModBlocks.fusion_motor) { return; } break; + case 4: if(block != ModBlocks.reinforced_glass) { return; } break; + } + } + } + } + + for(int x = -2; x <= 2; x++) + for(int y = 1; y <= 3; y++) + for(int z = -2; z <= 2; z++) + worldObj.setBlockToAir(xCoord + x, yCoord + y, zCoord + z); + + BlockDummyable.safeRem = true; + worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.iter, 12, 3); + ((MachineITER)ModBlocks.iter).fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN, 0); + BlockDummyable.safeRem = false; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java index 0e78066a2..7e1e83f3c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOilWell.java @@ -279,7 +279,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent if(b == ModBlocks.oil_pipe) continue; - if(b.isReplaceable(worldObj, xCoord, i, zCoord) || b.getExplosionResistance(null) < 100) { + if((b.isReplaceable(worldObj, xCoord, i, zCoord) || b.getExplosionResistance(null) < 100) && !(b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty)) { worldObj.setBlock(xCoord, i, zCoord, ModBlocks.oil_pipe); //Code 2: The drilling ended @@ -287,7 +287,7 @@ public class TileEntityMachineOilWell extends TileEntity implements ISidedInvent warning = 2; break; - } else if((b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty) && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { + } else if(this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { if(succ(this.xCoord, i, this.zCoord)) { this.tanks[0].setFill(this.tanks[0].getFill() + 500); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpjack.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpjack.java index b552ff332..845ee5754 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpjack.java @@ -282,7 +282,7 @@ public class TileEntityMachinePumpjack extends TileEntity implements ISidedInven if(b == ModBlocks.oil_pipe) continue; - if(b.isReplaceable(worldObj, xCoord, i, zCoord) || b.getExplosionResistance(null) < 100) { + if((b.isReplaceable(worldObj, xCoord, i, zCoord) || b.getExplosionResistance(null) < 100) && !(b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty)) { worldObj.setBlock(xCoord, i, zCoord, ModBlocks.oil_pipe); //Code 2: The drilling ended @@ -290,7 +290,7 @@ public class TileEntityMachinePumpjack extends TileEntity implements ISidedInven warning = 2; break; - } else if((b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty) && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { + } else if(this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { if(succ(this.xCoord, i, this.zCoord)) { this.tanks[0].setFill(this.tanks[0].getFill() + 650); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 79e5af6d6..24cb768d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -8,8 +8,8 @@ import com.hbm.interfaces.Untested; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityTickingBase; -import api.hbm.energy.IRadarDetectable; -import api.hbm.energy.IRadarDetectable.RadarTargetType; +import api.hbm.entity.IRadarDetectable; +import api.hbm.entity.IRadarDetectable.RadarTargetType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity;