From 98a41dbabd808558d9ae9a8b1eeda908330ce8dd Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 27 Jun 2015 18:23:29 -0400 Subject: [PATCH] Added frame motor and actuator --- .gitignore | 2 + build.gradle | 23 +- build.properties | 9 +- resources/Changelog | 2 + resources/assets/projectred/lang/en_US.lang | 2 + .../blocks/machines/actuator/bottom.png | Bin 0 -> 19444 bytes .../blocks/machines/actuator/sidea.png | Bin 0 -> 19762 bytes .../blocks/machines/actuator/sideb.png | Bin 0 -> 19783 bytes .../blocks/machines/actuator/sidec.png | Bin 0 -> 19817 bytes .../textures/blocks/machines/actuator/top.png | Bin 0 -> 19713 bytes .../textures/blocks/machines/motor/bottom.png | Bin 0 -> 19307 bytes .../textures/blocks/machines/motor/side2a.png | Bin 0 -> 19675 bytes .../textures/blocks/machines/motor/side2b.png | Bin 0 -> 19714 bytes .../textures/blocks/machines/motor/side2c.png | Bin 0 -> 19728 bytes .../textures/blocks/machines/motor/side4.png | Bin 0 -> 19741 bytes .../textures/blocks/machines/motor/side5.png | Bin 0 -> 19740 bytes .../textures/blocks/machines/motor/top.png | Bin 0 -> 19905 bytes ...pendancies.info => base_dependancies.info} | 0 resources/mechanical_dependancies.info | 12 ++ .../projectred/ProjectRedExpansion.scala | 2 +- .../expansion/TileElectrotineGenerator.scala | 2 + .../expansion/TileFrameActuator.scala | 73 +++++++ .../projectred/expansion/TileFrameMotor.scala | 199 ++++++++++++++++++ src/mrtjp/projectred/expansion/items.scala | 2 +- .../expansion/machineabstracts.scala | 7 +- src/mrtjp/projectred/expansion/proxies.scala | 33 ++- 26 files changed, 348 insertions(+), 20 deletions(-) create mode 100755 resources/assets/projectred/textures/blocks/machines/actuator/bottom.png create mode 100755 resources/assets/projectred/textures/blocks/machines/actuator/sidea.png create mode 100755 resources/assets/projectred/textures/blocks/machines/actuator/sideb.png create mode 100755 resources/assets/projectred/textures/blocks/machines/actuator/sidec.png create mode 100755 resources/assets/projectred/textures/blocks/machines/actuator/top.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/bottom.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/side2a.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/side2b.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/side2c.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/side4.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/side5.png create mode 100755 resources/assets/projectred/textures/blocks/machines/motor/top.png rename resources/{dependancies.info => base_dependancies.info} (100%) create mode 100644 resources/mechanical_dependancies.info create mode 100644 src/mrtjp/projectred/expansion/TileFrameActuator.scala create mode 100644 src/mrtjp/projectred/expansion/TileFrameMotor.scala diff --git a/.gitignore b/.gitignore index e04049ebb..13e8016ed 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,5 @@ white-list.txt.converted whitelist.json world-20140811-075700.zip .cache + +gradle.properties diff --git a/build.gradle b/build.gradle index ee7a89a50..8d9ba6086 100755 --- a/build.gradle +++ b/build.gradle @@ -69,16 +69,17 @@ dependencies { deployerJars "org.apache.maven.wagon:wagon-ftp:2.2" compile "mrtjp:MrTJPCore:${config.mc.version}-${config.mrtjp.version}:dev" + compile "mrtjp:ForgeRelocation:${config.mc.version}-${config.fr.version}:dev" compile "codechicken:CodeChickenLib:${config.mc.version}-${config.ccl.version}:dev" compile "codechicken:ForgeMultipart:${config.mc.version}-${config.fmp.version}:dev" compile "codechicken:NotEnoughItems:${config.mc.version}-${config.nei.version}:dev" compile "tconstruct:TConstruct:${config.mc.version}-${config.tc.version}:deobf" -// compile group: 'thermalexpansion', name: 'ThermalExpansion', version: config.texpan.version, ext: 'jar' compile group: 'cofh', name: 'CoFHCore', version: config.cofh.version, ext: 'jar' } def build_number = project.hasProperty("manualbuildnum") ? project.manualbuildnum : (Integer.parseInt(System.getenv("BUILD_NUMBER") ?: "1")+51).toString() version = "${project.config.mod.version}."+build_number +println "Starting build for $archivesBaseName $version for MC $config.mc.version-$config.forge.version" minecraft { version = config.mc.version+"-"+config.forge.version @@ -115,7 +116,9 @@ task updateVersion(type: Copy) { 'FORGE_VERSION': config.forge.version, 'FMP_VERSION' : config.fmp.version, 'CCL_VERSION' : config.ccl.version, - 'MRTJP_VERSION': config.mrtjp.version + 'MRTJP_VERSION': config.mrtjp.version, + 'FR_VERSION': config.fr.version, + 'FRFMP_VERSION': config.frfmp.version ]) } @@ -126,6 +129,8 @@ processResources { inputs.property "fmp.version", config.fmp.version inputs.property "ccl.version", config.ccl.version inputs.property "mrtjp.version", config.mrtjp.version + inputs.property "fr.version", config.fr.version + inputs.property "frfmp.version", config.frfmp.version // Replace properties in all files from(sourceSets.main.resources.srcDirs) { @@ -137,7 +142,9 @@ processResources { 'FORGE_VERSION': config.forge.version, 'FMP_VERSION' : config.fmp.version, 'CCL_VERSION' : config.ccl.version, - 'MRTJP_VERSION': config.mrtjp.version + 'MRTJP_VERSION': config.mrtjp.version, + 'FR_VERSION': config.fr.version, + 'FRFMP_VERSION': config.frfmp.version ]) } // Copy everything else @@ -202,6 +209,9 @@ task mechanicalJar(type: Jar, dependsOn: reobf) { include "mechanical_mod.info" rename("mechanical_mod.info", 'mcmod.info') + include("mechanical_dependancies.info") + rename("mechanical_dependancies.info", "dependancies.info") + project.ext.baseExcludes.addAll(includes) } version = project.ext.jarVer @@ -229,9 +239,6 @@ task compatJar(type: Jar, dependsOn: reobf) { include "**/ProjectRedCompatibility*.class" include "**/mrtjp/projectred/compatibility/**" - //APIs - //include "**/dan200/**" - include "**/assets/asm/**" include "**/assets/projectred/textures/blocks/compat/**" @@ -249,6 +256,7 @@ task baseJar(type: Jar, dependsOn: reobf) { exclude project.ext.baseExcludes rename("base_mod.info", 'mcmod.info') + rename("base_dependancies.info", "dependancies.info") } manifest { attributes 'FMLCorePlugin': 'codechicken.core.launch.DepLoader' @@ -426,6 +434,8 @@ if (project.hasProperty('curseapi')) projectId = '229048' artifact = mechanicalJar relatedProject 'project-red-integration': 'requiredLibrary' + relatedProject 'forge-relocation': 'requiredLibrary' + relatedProject 'forge-relocation-fmp-plugin': 'requiredLibrary' } task curseWorld(dependsOn: 'curse', type: CurseUploadTask) { @@ -442,6 +452,7 @@ if (project.hasProperty('curseapi')) apiKey = project.curseapi releaseType = 'release' relatedProject 'mrtjpcore': 'requiredLibrary' + relatedProject 'forge-multi-part': 'requiredLibrary' addGameVersion project.minecraft.version } diff --git a/build.properties b/build.properties index a4932c1b4..52077b648 100644 --- a/build.properties +++ b/build.properties @@ -3,10 +3,13 @@ mod.version=4.7.0pre3 mc.version=1.7.10 forge.version=10.13.3.1399-1.7.10 -mrtjp.version=1.0.9.19 -ccl.version=1.1.3.136 -fmp.version=1.2.0.344 +mrtjp.version=1.0.10.23 +fmp.version=1.2.0.345 +fr.version = 0.0.1.2 +frfmp.version = 0.0.1.2 +#ccl not needed - is passed down from mrtjpcore +ccl.version=1.1.3.136 nei.version=1.0.4.106 tc.version=1.7.0.build734 diff --git a/resources/Changelog b/resources/Changelog index c8366e1d4..25126f4ad 100644 --- a/resources/Changelog +++ b/resources/Changelog @@ -1,5 +1,7 @@ v4.7.0pre3 - ADDED: Teleposer +- ADDED: Frame Motor +- ADDED: Frame Linear Actuator - FIX: Copper and tin harvest levels - CHANGE: Rebalanced Jetpack diff --git a/resources/assets/projectred/lang/en_US.lang b/resources/assets/projectred/lang/en_US.lang index 0066c58dc..de437807a 100755 --- a/resources/assets/projectred/lang/en_US.lang +++ b/resources/assets/projectred/lang/en_US.lang @@ -90,6 +90,8 @@ tile.projectred.expansion.machine2|4.name=Fire Starter tile.projectred.expansion.machine2|5.name=Battery Box tile.projectred.expansion.machine2|6.name=Charging Bench tile.projectred.expansion.machine2|7.name=Teleposer +tile.projectred.expansion.machine2|8.name=Frame Motor +tile.projectred.expansion.machine2|9.name=Frame Linear Actuator item.projectred.expansion.solar_panel.name=Solar Panel diff --git a/resources/assets/projectred/textures/blocks/machines/actuator/bottom.png b/resources/assets/projectred/textures/blocks/machines/actuator/bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..acd75e77a882eaab3dbcce7976730b39632b5f52 GIT binary patch literal 19444 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 P)d?^&vN9|&aNYMmw>>1< literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/actuator/sidea.png b/resources/assets/projectred/textures/blocks/machines/actuator/sidea.png new file mode 100755 index 0000000000000000000000000000000000000000..d35b01b830911264b14eec44189385d58386cae6 GIT binary patch literal 19762 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/actuator/sideb.png b/resources/assets/projectred/textures/blocks/machines/actuator/sideb.png new file mode 100755 index 0000000000000000000000000000000000000000..242096c428188696e07786e925bf2a25080b93d2 GIT binary patch literal 19783 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/actuator/sidec.png b/resources/assets/projectred/textures/blocks/machines/actuator/sidec.png new file mode 100755 index 0000000000000000000000000000000000000000..e08a76ae49771b6f1931434f3519b50989df9fc7 GIT binary patch literal 19817 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/actuator/top.png b/resources/assets/projectred/textures/blocks/machines/actuator/top.png new file mode 100755 index 0000000000000000000000000000000000000000..458a25c51d628c3304a85a5fe8898f0ab0fd5a3e GIT binary patch literal 19713 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/motor/bottom.png b/resources/assets/projectred/textures/blocks/machines/motor/bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..c3c759feacf75acae196bd0bb54a32f8b4a85c15 GIT binary patch literal 19307 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/motor/side2a.png b/resources/assets/projectred/textures/blocks/machines/motor/side2a.png new file mode 100755 index 0000000000000000000000000000000000000000..d186934dc8549bd158d8ad815de48e31c77c3e8b GIT binary patch literal 19675 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 literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/motor/side2b.png b/resources/assets/projectred/textures/blocks/machines/motor/side2b.png new file mode 100755 index 0000000000000000000000000000000000000000..00167b1d9c0929f65c547e3ac99e152db86362ed GIT binary patch literal 19714 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ɶb=E zX+}RsvgB#G_174yXTWHLOAE-v1Yzhwp<-zhFw|Wh4~aG&ys8sH8RqN^hU0K*wDAyd zU?-TeGgwho0gh8uCMc`GX`KFM{&QsCTz`-L&Go;Z>Wb@C=6`c->P?~*f2`Z8KK~ib zl@Pyi^S4k2q@~>Y(Scveh9$x4*Vdo8T`tp}SZ@kpsR(IEe6K=3>N>6Kj{~_}%n(@I zQh`U|mTCk6kA(cv`g2(HW~9F-@ZT+{75}Tu|2c+_3&Dd?g;{a6-0Pp6P{__yAFMY) zn@GE6{$2T7@%yVGeSqIz88k}E*Pk2dzmWts$eC&iYgec zrb+-SE2_ZoSe%L)7XBmA|6w8&pkM_xjDjixriM_WJ%y~4`v1*DEFoWsk8{C#5D9n` zPNe= z{H^Whs#)o8yHrixjx6_wE5j9))gTH`+VRbFwVK}4j z)zV|&$`gtuZO1}D(WXYf_`k(Yl=ZhJH4hUnBiHk8GIxQ0y9T3JM z6BlDXbXq1ZIv|WiCN9Q&=(J2+bU+x3Ok9ll&}o^t=zuU5nYbA9q0=&P(E(vBGI25H zL#Jipq65NMWa47Xhfd4HMF)hj$i&5%51p2Yiw+25k%@~jA37})7ab7BA`=&5K6F|p zE;=BLMJ6uBeCV`HTy#Jfi%eXM`Os;Zxafc|7MZvh^P$r+anS)`EHZI1=0m4t;-Uk> zSY+a2%!f|P#6<^$vB<>5m=B$niHi;hW08rAF&{cD6Biv2#v&6JV?K0RCN4T4j726c z#(e0sOk8w87>f*Xas7M;nczWt@z{s_0KBm*1qK=P~rQ zgiFW45>8K)sh7w|8k$b4OhYU%riFUhw^i z+57yZjvxGGr{U$VG%H(L*YK)aWNzh`v3P6{6wultRqp|g@2skvSE?Mcn zLcL25I6%l>y|;AKObc(1Lc8bG6@kMrHze4i(9+Xyx#WQSS_g%E%;`H{9-nm^*rue^ zw(}rI2}+&^%L$0{@UVp99=269a#-7la|VMrLF=O+r6Fd~LYYAZd+pYx%Eueri7fA76y6)&3X<%9vd2TJ)Ql zMA;%S<=e#0yd&=&Sub#Ue|7mB7Z*o}aJ$ka+K>AbnX?&<-ki2rCwBfZ-<05`3)+of zTXj)B-(isNyjR&V!MTM=yV(uM4c=`Bx|;Hf$;cM6cB<6foRe&_IDW{f7?9diEFb#$ zNZNCg^y(x}sh)6|yAJk{e9bkZ8AsX>T;aDK+B)&PQT!DDg=fbD{1qN?h2+hq5h3lk zXgBC<33-;q0k3BiWlM=jPbj)WOHu^2itt)65Cw*SI=<| zhtW2z!yx5?gH?iQP&OB(uls{z33jn;7JH=$%6)~obFtDlFIlwTt4X4rqR{6uxvlTV z?%>Yds(m4$R)SMMDg@Y~p}is)-Kh{JcB$>MiApyVL*ht4P6-c->FGZ!P#jO{@mojy(#E47tZe*S8q*)}+D zcydFIq#;X?`&NfGC@Qv2^6-VR)EHYuym+8Abky(2@Y;nCHn zhPmp?N3q9@ql4eHXfF2s#P)y;<(~4=kB+&f$#eTCl%kI9a~lsGJN~{c?c_{vM~AVV z>)o%PKJezgJ_q4q%XRc!9LmnWbbI{$(%ErOqdVEX`LO#)g@1k@_tA=jnRslLc}g{6^l=Bl5F^dtk6Jrv<;}*nbWR^RA&PMrvJ$&C;(|zESI%~Bmzz5YSQN9$3i#DWF8#2C;hufE Jc{+!J{|ms0tX=>B literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/motor/side4.png b/resources/assets/projectred/textures/blocks/machines/motor/side4.png new file mode 100755 index 0000000000000000000000000000000000000000..22e1b73b27db36f9de6d96be062eee621f0450ba GIT binary patch literal 19741 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 F{s%8uvXKA) literal 0 HcmV?d00001 diff --git a/resources/assets/projectred/textures/blocks/machines/motor/side5.png b/resources/assets/projectred/textures/blocks/machines/motor/side5.png new file mode 100755 index 0000000000000000000000000000000000000000..77f969f2802a619302bd6b96bd59a8cd67a4a18b GIT binary patch literal 19740 zcmeI4c{tSF+rYmfWUrK@Wo(6vSuo5PV;O6i61k}W+X$@Y*I$*x36 z3KeaZRFWlSNfPxWsf71Cv}m55xt`zkzSs3$?|aSM7c=*{&wZbBKKJ?F-|zWjCT@$h zsi@FuApihG&CQJLz;_AOp9DYn--akJ2fi)wHFNO?0I@pOAJ63^uTcOHvZ3PfTef)8 znRI_ox-Y~WkB9g&=pIyWG5`d1X4z95?1xwCPCol!Xb~HB%z|#WLJ(qS7#}8?v_VC7 ziNxku*^^IK*w!sIHs+JLofFHOkPvowg{`W{A)yX|0ohXtk*8x1-JN=|_q130)ybDl zGZjy8Lq+3R1+lLSDPlVgnlPaUABW$Phhz!?rm zdRW{<107HRZtmn^29#X_YMUj5F93of0NgeIzB){YKg?(5l;Rkl=Pu!# zfXR4|3*!0}K+bTd)3`5-jq%ANRZpJ|4h(c`zG=9faMx-745i++)@j=Nb13%f|6rNBrse38gYMlg6HUKf5}y6K_MzNObN4D|70G_vWqt`p8HdM_ zxpHxaN0o0Ww#}0IdR3=*alM*A*=`)q-X!R`okZS`78@m;nYDeB0Pwz=UiU~zkT=XT z@|4EQ(;P)0%)|Vs9{}t!Qc!caTdvnA2mnSo;VNYYG9T(zsn+tZsaxD#C;Zh7 zbHQP5c0xkPIT??K!8jdIE7EG}-ivh?%KRqjYcjI)`l zeEYJ*3d`c~$cHEZ)Y4bXD@%J))>)^vI2ybDl}eR;E0XRC zrEE^wkRqc3bI30^Tkxzv*m2zPoMe54gQR6&Ux4Vs|^rgqI7wXs;rl2VRS&a=FJV~o1X65qf(tV zy|y}Dw;=x{8n3=t-KpGe{FsNHK!2Lwr$3q2ONNy4QpZCNJ(GN^+@~yaR>QIiLEhn2 za6I+6bD>$GZK3H%4XR``FY9cLaka}-xR^oX=8Zcxno<&*7iSIGKeg}46Utj@rHh#; zQ7iDul{r~$6nLGMHg1MFAgSEJ;0uRZ1RVR_+e_pj(&xHp9Y_X(;N6V$ZoK( zdTlk9VP{o!R{5-srH*A|)BUDXP3`HLnYxH4$f3-k%qN+>m)y1mZBwm0S9zIieqmtS zS(mZOtF)+XXqQ}P$89^yO^UOM72B(etMiuTRaqxn7iPCpZj}91d8ab}l62W%2Y**d zrBCI40>xd5a_Lsdjj`mKo?mu?UayIw2Sc6tmDM8V^ul0T%9gpeD>J#qY zE0qSjz0)`NWOMz8sJxZ=YRgnH$Mr2^t+kK6Gmua@xAL&!`{jX(2|~g3YwIa;um`9I zu^spwD(kG@o2giZ9DS2?RWn%OmU^!0VAa8m`A4o=idyz$VzO6e?1A_obul%F$fHR| z{0s|Zt&%G#uPHA*_S`EXM_rh?MT@@#TbCkm$E*BE(P9^S@LhFxBkC%6yhel_g$ASck90p7-D%?tbLp)h ze2LDI!L5ipR3h0WmAc|Uhf;UYpiB(??)CKUV;A!aZ&s07JlZ^lUp|9oZx=gWkoq!J zj3)ZD^P*_)){CPPAC0?UsZB~<)sdC>s?*o8m#>oZ?ld>)=sBEm_~7ux0X5dvQ$cw0 ziS}SjX7AOH8gCwVZNEA>jk|NL%aO;?>aoXT@|5{h`J`S+T*2_C<5NC6i>-b9MjLtC zc&7#A#VVgvJ$k&hP1nILv3=8ssaWIsYcpAI1EHcQQO7_2Z0M8sH3}XWo?Oy9xlR<* zx##fSq89=W*Y8nCW587Wp3;Al=wO;&B4XjJ>=5dER z)Xw3Ehsl)pEr+vGvi66neeQPaI#s!Mh}hh_Tb%y(iUjjToAGS?kj_<|<{j@ZGv8n6 z8eHyl*(swGiw*7H7 zTDPZWJcK@ZYjUD@Wltz$<8<@A>ZgGl$BM7oTy_1RKWgw4-xKp#Z~IJl$J_1$yK4h; z#vgQ>PVz@Zw#+0=B#Pq~C#EOfix!O@$=1f9(S3T1>EW+=_!d&jhHR;sQ#1EUq*lU0 zKRq6K()=Lp!O7J3sma%U_T^5$t{sss?P{oRSa-qWognet?RI+q(@+=>3+W1$ZICOSqd z>_et8{Xsv(Z~c6~Km7l2|7FM@=6@U*%!!rN@14KT*T?6#L;Ew0_kak#A^m08@1Fh+ z!M1W1&#v>aMm}DHw7Yf&cs>2=N z2nR8zCnt$sB zo>aHYA5?MvcBY09b7MRTfkuJrRzoZdv!LH^;~3G20jvwefJP+ygK70&kZv&Pb0xr# zK>4-xyTO}^1Cy&pqLMI3BpHoz*Cs->;2LD823eg9)kbNPpc-gRf;(7w$Vg2MER1#G zgHAtZ!iqH4`s)}ASHNk8tPNykg)yi3GYQ}V%#G&eLj~vKjv^9JXc7TR)F5g>H4yF| zP;E3=o)8}DBqCBBr9~nT=62Pu?muVtE%f)%zlHwyOP!zD0{6d#wqa1g;!p5i(C0s+ zIX}d2!u)M0Gb$^$!EE4J*{~=3{o497w{vCMm%#8Rvx<(6PiyHWq1z<;-)=HoAL|K~9RJ;^jq6=puvT(5r);!pQr1`-%# z0}6P}{JZiuANN;B_5pr>Wq_3Cu0L<;er3FQ6 zYmuRv>L?_MKtyR1&_5FWA0`3;ha$8c5Ly_dHbw({3YjnU|C@ z`zHS0@P8_I|EdbkFZe&o-9O!8|6k;8{%ZWSGJd~T{JoN5Sx;CPunL0}fiPG7z#H)2 z+J5eu`TowVYU&*@*B`BkR@c;qA>iQao9jX|yQ>Rl*M(+w*Pot_G%6E^{5Bd}^8zo{ zW8nM~iamH@A>+WMu{W{z-a-u`dpjFZ!KVs;*1Z6M`sTxK_^qSMKRGTid~=*n(}Huw z+>LC$6+E?o2PW8$6Vu=BaX;=r|C1knuIPUAZ$Q5t6W^1`LJ2JxY&SjR=K!1 z^I@}caj^m6ta5R2=EG*?;$j2BS>@v5%!kd&#l;4Mv&zNAnGc(li;E2iXO)YKGaoi9 z7Z)24&MFrdXFhCJE-p48oK-F^&V1OcTwH8GIICP-ocXX>xwzPXa8|jvIP+n%a&fT% z;jD6TapuEj<>F!k!dd0w;>?H5%EiS7gtN-U#hDMAm5YlF2xpaxi!&cKD;F0V5Y8$W z7iT_fRxU0!Ae>b$F3x<|tXy1dKsc*hT%7r^S-H5_fN)m1xH$7+vvP5<0pYB2adGCu zX652y1HxJ5h)d|_caX_6@QcTR;5UrLjztfF-%f@Q&FriIAVd)W!Xg3S^DOv23;+Re z0C?>N0GKoYkfI-Ty=4LbixbR^3><it98mAw=ZbPgWj1;2eE8LCb^Xyp zMaymyjg|PsS0rr_i$AujBa%-@ZuF#-p>nPrW2vFJPprUSuO)<1+#*v@w+&7O$=1Z? z?^F;)XP@4viMWCo==BJ^eqZZhd_Z+>Zc7vVt;mgWT+2AJuPdf)c#P&XA|J5y32(e+ zyMDmikj?02hCYW8Wu+BjqN|99HQhu3r9m@ggU!lOe7S1|%>*N+^}PhGJXLc7&f!IK z?Ib)!3!2BVxsWUx-Rs?p%pM;fsJW+Znx)CvRXc=4FKRUQPb96D zoyy*Ve>6EFx21cNz!cA#YmBdry;Bln(;sZEXMBhWS_=0|(nC zYFgXcBn!uLIxjD?GXso>7oXZrDf^}>w(FAyH_GvtDTJvjxyC7V-0+B$aSJt!nHDr# zCch}*xDR7dM8)*F9)aA%NJW29BYKfmyG;33%Q$7kVlgqX=h=ZR)k6jYM%DviQ{6*2 zrTjBTYvtlqBlhn;(V6E~j`AvpG~Buj{%(y&!~Inq1Rd`f*&U)zHym3>LUxwoKl_1# zh<#>JlNthZ*$WQ@#p%5M=CZTM1jDUX1>;4a$E#wr5>Lxy8(w=G>Zxuhf`OU1iS(&Xr9P%b`XP)eI=V#i?(7Sy!P?eskfD+Mm3l!rcA!g#kCo{Ahhh4}ij%9^kGXl!|_cS+$-^nPtQ{Vm)6x7wA z&wYiZyTbgtsz$r{AD4b{)Jxl%AR8`*c?DFdrVcW!!pkqT;V)mQ;vH zHVF4e`2}T$f)b6N%n)5)_i;ShMu$HK>yoW%6OkEEPFrbL%95O5)PYI5{5!Xx!HiF9 zkmoH`mq%tjV9B;sm)cok(0RD2L*#PyNYyT=M%*TrwBouz5sqI^uej6LD*dE!D=x<9 zh~P3F1^(rcaR!24Qk!~bMZ`nPkO~cue#+Ow;M;l9bMN`WQxc37vsIjqJF)*owocXUs=OyFSkphl|B6F$EoT3>bp&vlsbZS v=tFf_4e=(t;QFY)0RV69;)mr{yypl2a9I-d^sKBr$W*eQ z2blsg(bEG_e97)aFFXJQbf(!7>}-dHHKuzfbQvYXA!`Mm<6JK|1|=?@intVY{NcC$;7gv*tES&J&)@9O z94eehD{1AZ;p9m)R<>3NAEgg?r~`$qJC7Rxj!;0*-RvF` zcmW2WCJye#z|}IKriGvTI>5;TK&_*WZUfkY0oMmoQUSn`bAX`XxC8pr_G11ac^av6 z*U{zDNP}=^POuM$gM*^DT#Jdwc0mMY6(&Vnu`cl3Mp!tU@72U30LX|JqRn<NrFW_GHDSTtq>{9`*?$cxmjtA%N!LoifljV1$*1VnufbmLl?Nd2U)-aEV{#O5m zF|9eHjIBVJyUA%E0C3TlR@>g|4Cu=t-)Ua=^UEN*FJ?n}%qAPu` zPM2So3m3N8*L7RrVO_b%=Br}zu8^nNV(=PkkH`cHuVS73EnW=@-&YK0daYbl_!>5y z2b}9M5}i>jZpR&^PH~EyJ31p#Ys@APBMoYd610{yi&rsLvN>)CvNskR*YI71Jht1g zB3}Ig06RPzS!JYjCj7d!##5e~dgZyQn~oS>FUlx*2?H9Z0j|DHi2-1nl%VE ze_aqpT*ugPhoi*{<6O{YY52O%HL7b^k672qN+#r*-H@qR_vPLOH<;2fM`H!4=K`_o zA^gEndiPYN1)}v}vgL8BOs-|wwF|TxwtL%14J+iO!i_gcB{X*8Jg;*g&nSSlKR7y= zHh6bXc~EpvV%(W4%}v`UYsU7qoXx|1rW@bzzk$DD$0x&d>@TI*^yFsRty78JrCXF) zYIDWp3fKk@VQ1y=mC!UD7+&Nq?TT zkwOs-Q3Sb-sT(*p5H|X6xRSi%^2R4I8yoDPs!AV{htBbxBilR5m&zX$ihsy;*7U5* zSy6e2U0(j>{N8+S`w9CdyVyJz+mK>Idu7{!yfse~3+(gLtUlO^+7j~AbC2Z{a>;gD zS)opI(dO7BJ_B#;Mlg;+e9zJca$sPcYEe1CM7x+ z7#CO<7=5Tl6p!SjU9L8$bov&~tJ7dAyIan56zA@#SskOV12X8uFbW-rqeSJwUoox_?QAT}DF2%>2FiXo`(_ z`Q>ew)pw}xXlQ=ae6jiYIh9lmr4HCo>QHJ&YG0Y_u7F(%rMacI@Fv#>cU^WGEv@oC zx(n%)?P$MiPl;hsTG7_$l|_{~>vGC15-bYRpA+t0{Z!gmnpd{*>YEqrUB#uO(hv;6 zO@vTZUwn5op*kU?BIM+p2FKcCFL?{Zc8P`h-S8De?L_saw45K+3aOt=9EK1aTlrgG zC=ZmbZ`yW`m}Z;$#E2k5DEEt)h>D3eJKUt0q^X!HdcWsE^`I$r%4bi1Q2SI`YDsF{ zNN(4aQN$>5^jP+%W%TYAt?wJ67Nvd zakVVlKYtoCCZhRS)Az!F<^Wo?7uM^v_mOH%*@Lns%e&4oNNG7J?SqfSj-qKRf7MUa?@c8rSt751 zO;zMI^A-1@J5?*-6M7-Q>|6;XFkF1yrK;jwlPYGk@vu%jXK8*gC%6f9ol(z&f!yf+VC3(H8YWZ@0X- z#kjG&dC=*P@l`5;()G&O3UA7f$mYdW?O3~`Cl!@0oN@p}f@z?tl_E~Z$NA{yOPD8= z65bQux*upN#2>vrU+*1L1`$8Y(dbzcSGd{<%vGv;`JLS^xej@b>jb=m`<>?KhseZ& z^zF?fk4heP#i^bjyRa}KP$$rTx->h|%mFOs__n%mAM!fdC$NiaKxp;$$erwk=v&82 z>&?-S58WLjdn_FxPJK5qUnA2*HHD&& z7YlZYBncgQA=e%7M)Vl@;hl5cXKv&b+$+bmy0^OzzwHI5JM$*yC%sML^SmrG`2LWYuRPlP1=36LyWff+{ARuc(;v;23LKC ze|*;ETs1wX*?7Clp2gn$nfo*RHA@LI%L`;+JIzm}rt2M!KTuj!i>UyJHIa3Z*{pX14v z17ZX*$Ufba@f5>U+mvt4Zq5~!k2Kq!zwZs2HR{^JcOH&*3N)RtYb16KAAXWR7;in1 zb~Y^}RPjr>#b>JuAh3C)Gks3YK6G7zZ`st}Y z;hs=m*}0ac%9sAKqeWGgReLA3M|585^&ESqPo&OH0j(bAUOmYFo3 zlyHZ1FnjKO&4-Owy6)HA7r)&YpseIFx%1mdt$(+_*x02$KFh&_phI#C9$&6a**?zs zmas7)VS$Y`d14l;4DJE|bP>_ck?Lr^1BE4%6from8(uMhM4>&1(sWt@6b#lAPX)Q* z2}ExV$+5~ik{}{ZL()OT9BNL{!+Q{ogM9I}K^At{AWtk3C#j{$g$_W`9FXu-3@Cu) zQ zvM&LmghV1CP#6RT1Jind{Q|wIm;kW1pVYFGAAa=lepp{3g-RrQgBJZ_+{pW>8j_NW zfqq`!=S8CY4CL+iogIxLBmhH!C@DfAe=@>hf7(#?`+6-64Tpu`z3?QwH`R}3r}RfV z%8!TtpXR@X{HgxOz_gs0oB!GP$9PGkKZf?B8XTY@_>T0qus;frxhz;J4yx$j# zH#k6>iqxNGPbIqlO3rVd7B&Akc6}y9RducAO zvR~&X+VN>|Re|KpF<7Ga;-P9A8bWXME91ZX;q@_8yyl`U7^(_ZhT1`uP%u@LvKkl) zM?s-0oGkaG^I=ZL5#0lS_)q~u5nvd?4hBWRRZvQ*D}Ai!N$-QUgK!us=3jYP*>{B> z92VtH_9bDcnnV(YfQL}L324Z##uYt(t}B!t*^BH;8x~$u84dYU^B=8fCsnKEgQ}*V zjgcI^I~kA1$qZE7DC%`cetd#SngP{h{z8 zYSNOch$G@qFc=<*a8tvARiSV^7>-xQgVhjfI4~Tkf^nl&9z0A1j)p95e45d(kt}*z zYW+RN${8>k;o<@^H%FOx`%y8p37F_FjfY4Z4+8G4idAw)g5BK^Fxn{aDqti64+pEj zX~V>;Adzl(_oY?!yZNt?eRusM`ghm=eyYnOTVeh;*OtCSTJgttt?2Wg(OeGk2RDBU zWlUVmZ6F=^#cbH(eSUBKmD{B3~n=bb^Lw6y=ci2sdL_+bwG_Y&cThrw_#Hy9YF;-(6Q;}EJ~q?#%otfGv7 z;V@W)8V30@(f?s0l%QZGH9I9$6if{Tr#*!%m-_$BL@Xj-j*s=gcoXnAO~{W${G;Lj zQttj;6%xL5qWlA;%%uu!xrOsfc(rRqn!0spP-*Q#0W z@3>e^z4kBlN2(x|Rn#C#P}=p~bfuc!)QPd_N;SRdFH3uGB2^RiJsMr}3aiD(z~v_t zTiS^QuSuI4eG`3eD`EiN%Tb?5d#dnTycZ}TzT40%{%Gj*PlhWL-wl`3wBlT`bR%1C zrJY)62PVkR6Vu=BaX;@s|C2v{&FFv9E1fT95IP`?MJ6uBeCV`HTy#Jfi%eXM`Os;Z zxafc|7MZvh^P$r+anS)`EHZI1=0m4t;-Uk>SY+a2%!f|P#6<^$vB<>5m=B$niHi;h zW08rAF&{cD6Biv2#v&6JV?K0RCN4T4j726c#(e0sOk8w87>i6?jQP-MnYieHFcz7( z81tdiGI7xXVJtFnG3G<3W#Xa(!dPVDV$6q5%fv+ogt5rP#h4GBmWhiF2xF0ni!mQM zEfW_V5XK@C7h^tjS|%g_fG`%BxES-H(=u_< z0bwjM#KraN9b~*W?Zsn%+8f5n#8tDjx069wV;ge-2-*q&VG#iEWr6lR3;_F~0Px-w z08q&QAVNO9x84u{*p*H6b?gEzC*tEKrnUlDc$QpYkEj)GhgaMj=r(hs@91+@_W5=3kvc+%^9l+^6qn;4ZfkG4g~X!U773g zk%K@WSCWAO&4V6+Pj(o8jImF&U}>E|_p$b|0`_Y;C0sx5_O{k!)jCw<=h6X@puKo; zbKWK3-7IT@u&l&2NUz;?XL&F5{MBC)s?~9 z_lHP5a(N29R3RcS@F_r=r*uHAm}7oMcj49hClM2vryDfTDdC)BU60hWY((A)|5+bajLk-t7&- zw`5jpflc3e4z{jz14hBF^YYg}$NaQ+(mko}8;@75Lg zNa!OBOWEwNigo#D#I^g(O0Jf#IW9Y@b+C`^MbYL*X}eYrS)^~Il+{>Hh^E~6g5+r+ z2S&2@Q`QA$avA`fnHik?oc%0fLl@L1UW2Lv2V=<><~8kjq=gf!TxMTz>~8S!T64|A z$;p_Nbl&uvb4zk12jXM*%&UYgcSVJaDto`Mp3%%3y0??EyJMp2BD)vI5q>T%t2mnq zUL5$zX@SxZ(ua^#l

FkVwiX+feeJ(R5&2_8Ecv*Hevw+@MaEo1yphIrH~{KpBJD zGqsN;UTg^r93Lh9m3AsoB+-lYP<9uu)drCZ9|TpT(5(#|7u(v~t!_OaS+NdXue_^V zySMd<+M3>yj7jaO$>0kYM2`Fw{rKU7t(-U5L!(%(u_hD{>Os?|r<^j^9)9*7{t2EN z628WbvvA}yPcZ6;oa&@$6?8&T8@9Lc4eZFHy=S#O;ccVNV0NN?m#nj8yvTjF9(r>*M8_jRo3eB}+m^Zk~cDd{Yg8v6$>1#Ji|7}FvM zSy{+cuBxno7tR&4Mie>ph8_}27QF)bM&U=PmNk3r0X|&Vi!3YWb_;r0@z=hnhKtsF zI2yL?)0uHmGBuT~C?;m)>15`;x}i4qwfU9#gyPpE9mVTSX)JPWQ^v-ud#6%+a!<}ZYVE21D&0AzNW-_uf8VuwIo|o9$%Es z_AnKJJ>^94_>#I+)>3cCuTlWw%}PFYCsF)?^Um4>+Ixx$Z~8|NI%6jMw4WSK;kT;D z@-kry7qN3W9>RJlJC4#4wh$du$k!$q3@*VZI1D4buQ(? z0-y9X*H!Lm=&;N}2$kNwaDC{&q~&&*i|Q`*w>e4`Iv<9-bQw8ObLon-Z}gU)^aX{` pl6tt#@W%HoqM+=NTfDRWfDP*`v|y}Z@t?E-CI%Mz#k#JC{|h1W`@jGI literal 0 HcmV?d00001 diff --git a/resources/dependancies.info b/resources/base_dependancies.info similarity index 100% rename from resources/dependancies.info rename to resources/base_dependancies.info diff --git a/resources/mechanical_dependancies.info b/resources/mechanical_dependancies.info new file mode 100644 index 000000000..5a27307ac --- /dev/null +++ b/resources/mechanical_dependancies.info @@ -0,0 +1,12 @@ +[{ + "repo": "http://projectredwiki.com/maven/mrtjp/ForgeRelocation/@MC_VERSION@-@FR_VERSION@/", + "file": "ForgeRelocation-@MC_VERSION@-@FR_VERSION@-universal.jar", + "dev": "ForgeRelocation-@MC_VERSION@-@FR_VERSION@-dev.jar", + "class": "mrtjp.relocation.handler.RelocationMod" +}, +{ + "repo": "http://projectredwiki.com/maven/mrtjp/ForgeRelocationFMP/@MC_VERSION@-@FRFMP_VERSION@/", + "file": "ForgeRelocationFMP-@MC_VERSION@-@FRFMP_VERSION@-universal.jar", + "dev": "ForgeRelocationFMP-@MC_VERSION@-@FRFMP_VERSION@-dev.jar", + "class": "mrtjp.relocation.handler.RelocationMod" +}] \ No newline at end of file diff --git a/src/mrtjp/projectred/ProjectRedExpansion.scala b/src/mrtjp/projectred/ProjectRedExpansion.scala index e633dae55..04bdeaecb 100644 --- a/src/mrtjp/projectred/ProjectRedExpansion.scala +++ b/src/mrtjp/projectred/ProjectRedExpansion.scala @@ -17,7 +17,7 @@ object ProjectRedExpansion /** Items **/ var itemEmptybattery:ItemBatteryEmpty = null var itemBattery:ItemBattery = null - var itemJetpack:ItemElectronicJetpack = null + var itemJetpack:ItemJetpack = null var itemScrewdriver:ItemElectronicScrewdriver = null var itemInfusedEnderPearl:ItemInfusedEnderPearl = null diff --git a/src/mrtjp/projectred/expansion/TileElectrotineGenerator.scala b/src/mrtjp/projectred/expansion/TileElectrotineGenerator.scala index 4fa31d700..cdc7f9496 100644 --- a/src/mrtjp/projectred/expansion/TileElectrotineGenerator.scala +++ b/src/mrtjp/projectred/expansion/TileElectrotineGenerator.scala @@ -49,6 +49,8 @@ class TileElectrotineGenerator extends TPoweredMachine with TGuiMachine with TIn burnTimeRemaining = tag.getShort("btime") isBurning = burnTimeRemaining > 0 isCharged = cond.canWork + ib = isBurning + ic = isCharged } override def writeDesc(out:MCDataOutput) diff --git a/src/mrtjp/projectred/expansion/TileFrameActuator.scala b/src/mrtjp/projectred/expansion/TileFrameActuator.scala new file mode 100644 index 000000000..c2a865b7b --- /dev/null +++ b/src/mrtjp/projectred/expansion/TileFrameActuator.scala @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015. + * Created by MrTJP. + * All rights reserved. + */ +package mrtjp.projectred.expansion + +import codechicken.lib.render.uv.{MultiIconTransformation, UVTransformation} +import mrtjp.core.render.TCubeMapRender +import mrtjp.core.world.WorldLib +import mrtjp.projectred.ProjectRedExpansion +import net.minecraft.client.renderer.texture.IIconRegister +import net.minecraft.util.IIcon +import net.minecraft.world.{IBlockAccess, World} + +class TileFrameActuator extends TileMachine with TMotorTile +{ + override def getBlock = ProjectRedExpansion.machine2 + override def doesRotate = false + override def doesOrient = true + + override def stickOut(w:World, x:Int, y:Int, z:Int, side:Int) = side == (this.side^1) + override def stickIn(w:World, x:Int, y:Int, z:Int, side:Int) = side != (this.side^1) + + override def getMoveDir = side^1 + + override def drawPower(size:Int) = cond.drawPower(200+10*size) +} + +object RenderFrameActuator extends TCubeMapRender +{ + var bottom:IIcon = _ + var top:IIcon = _ + var sidea:IIcon = _ + var sideb:IIcon = _ + var sidec:IIcon = _ + + var iconT1:UVTransformation = null + var iconT2:UVTransformation = null + var iconT3:UVTransformation = null + + override def getData(w:IBlockAccess, x:Int, y:Int, z:Int) = + { + val te = WorldLib.getTileEntity(w, x, y, z, classOf[TileFrameActuator]) + if (te != null) (te.side, te.rotation, + if (te.isCharged && te.isPowered) iconT3 + else if (te.isCharged) iconT2 + else iconT1) + else getInvData + } + + override def getInvData = (0, 0, iconT1) + + override def getIcon(s:Int, meta:Int) = s match + { + case 0 => bottom + case 1 => top + case _ => sidea + } + + override def registerIcons(reg:IIconRegister) + { + bottom = reg.registerIcon("projectred:machines/actuator/bottom") + top = reg.registerIcon("projectred:machines/actuator/top") + sidea = reg.registerIcon("projectred:machines/actuator/sidea") + sideb = reg.registerIcon("projectred:machines/actuator/sideb") + sidec = reg.registerIcon("projectred:machines/actuator/sidec") + + iconT1 = new MultiIconTransformation(bottom, top, sidea, sidea, sidea, sidea) + iconT2 = new MultiIconTransformation(bottom, top, sideb, sideb, sideb, sideb) + iconT3 = new MultiIconTransformation(bottom, top, sidec, sidec, sidec, sidec) + } +} \ No newline at end of file diff --git a/src/mrtjp/projectred/expansion/TileFrameMotor.scala b/src/mrtjp/projectred/expansion/TileFrameMotor.scala new file mode 100644 index 000000000..7b4bec2a6 --- /dev/null +++ b/src/mrtjp/projectred/expansion/TileFrameMotor.scala @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2015. + * Created by MrTJP. + * All rights reserved. + */ +package mrtjp.projectred.expansion + +import codechicken.lib.data.{MCDataInput, MCDataOutput} +import codechicken.lib.render.uv.{MultiIconTransformation, UVTransformation} +import codechicken.multipart.{RedstoneInteractions, IRedstoneConnector} +import mrtjp.core.render.TCubeMapRender +import mrtjp.core.world.WorldLib +import mrtjp.mcframes.api.{IFrame, MCFramesAPI} +import mrtjp.projectred.ProjectRedExpansion +import mrtjp.relocation.api.{BlockPos, RelocationAPI} +import net.minecraft.block.Block +import net.minecraft.client.renderer.texture.IIconRegister +import net.minecraft.nbt.NBTTagCompound +import net.minecraft.util.IIcon +import net.minecraft.world.{IBlockAccess, World} + +trait TMotorTile extends TileMachine with TPoweredMachine with IFrame with IRedstoneConnector +{ + var isCharged = false + var isPowered = false + + abstract override def save(tag:NBTTagCompound) + { + super.save(tag) + tag.setBoolean("ch", isCharged) + tag.setBoolean("pow", isPowered) + } + + abstract override def load(tag:NBTTagCompound) + { + super.load(tag) + isCharged = tag.getBoolean("ch") + isPowered = tag.getBoolean("pow") + oldC = isCharged + oldP = isPowered + } + + abstract override def writeDesc(out:MCDataOutput) + { + super.writeDesc(out) + out.writeBoolean(isCharged) + out.writeBoolean(isPowered) + } + + abstract override def readDesc(in:MCDataInput) + { + super.readDesc(in) + isCharged = in.readBoolean() + isPowered = in.readBoolean() + } + + abstract override def read(in:MCDataInput, key:Int) = key match + { + case 2 => + isCharged = in.readBoolean() + isPowered = in.readBoolean() + markRender() + case _ => super.read(in, key) + } + + def sendStateUpdate() + { + writeStream(2).writeBoolean(isCharged).writeBoolean(isPowered).sendToChunk() + } + + abstract override def onNeighborChange(b:Block) + { + super.onNeighborChange(b) + isPowered = false + import scala.util.control.Breaks._ + breakable { for (s <- 0 until 6) { + if (RedstoneInteractions.getPowerTo(world, x, y, z, s, 0x1F) > 0) { + isPowered = true + break() + } + }} + } + + def getMoveDir:Int + + def drawPower(size:Int) + + abstract override def update() + { + super.update() + + if (isPowered && cond.canWork) + { + val pos = position.offset(side^1) + if (!world.isAirBlock(pos.x, pos.y, pos.z)) + { + if (!RelocationAPI.instance.isMoving(world, pos.x, pos.y, pos.z) && + !RelocationAPI.instance.isMoving(world, x, y, z)) + { + val blocks = MCFramesAPI.instance.getStickResolver + .getStructure(world, pos.x, pos.y, pos.z, new BlockPos(x, y, z)) + + drawPower(blocks.size) + + val r = RelocationAPI.instance.getRelocator + r.push() + r.setWorld(world) + r.setDirection(getMoveDir) + r.addBlocks(blocks) + r.execute() + r.pop() + } + } + } + + if (world.getTotalWorldTime%10 == 0) updateRendersIfNeeded() + } + + private var oldC = false + private var oldP = false + def updateRendersIfNeeded() + { + isCharged = cond.canWork + if (oldC != isCharged || oldP != isPowered) + sendStateUpdate() + + oldC = isCharged + oldP = isPowered + } + + override def getConnectionMask(side:Int) = 0x1F + override def weakPowerLevel(side:Int, mask:Int) = 0 +} + +class TileFrameMotor extends TileMachine with TMotorTile +{ + override def getBlock = ProjectRedExpansion.machine2 + override def doesRotate = true + override def doesOrient = true + + override def stickOut(w:World, x:Int, y:Int, z:Int, side:Int) = side == (this.side^1) + override def stickIn(w:World, x:Int, y:Int, z:Int, side:Int) = side != (this.side^1) + + override def getMoveDir = absoluteDir((rotation+2)%4) + + override def drawPower(size:Int) = cond.drawPower(100+10*size) +} + +object RenderFrameMotor extends TCubeMapRender +{ + var bottom:IIcon = _ + var top:IIcon = _ + var side2a:IIcon = _ + var side2b:IIcon = _ + var side2c:IIcon = _ + var side4:IIcon = _ + var side5:IIcon = _ + + var iconT1:UVTransformation = null + var iconT2:UVTransformation = null + var iconT3:UVTransformation = null + + override def getData(w:IBlockAccess, x:Int, y:Int, z:Int) = + { + val te = WorldLib.getTileEntity(w, x, y, z, classOf[TileFrameMotor]) + if (te != null) (te.side, te.rotation, + if (te.isCharged && te.isPowered) iconT3 + else if (te.isCharged) iconT2 + else iconT1) + else getInvData + } + + override def getInvData = (0, 0, iconT1) + + override def getIcon(s:Int, meta:Int) = s match + { + case 0 => bottom + case 1 => top + case 2 => side2a + case 3 => side2a + case 4 => side4 + case 5 => side5 + } + + override def registerIcons(reg:IIconRegister) + { + bottom = reg.registerIcon("projectred:machines/motor/bottom") + top = reg.registerIcon("projectred:machines/motor/top") + side2a = reg.registerIcon("projectred:machines/motor/side2a") + side2b = reg.registerIcon("projectred:machines/motor/side2b") + side2c = reg.registerIcon("projectred:machines/motor/side2c") + side4 = reg.registerIcon("projectred:machines/motor/side4") + side5 = reg.registerIcon("projectred:machines/motor/side5") + + iconT1 = new MultiIconTransformation(bottom, top, side2a, side2a, side4, side5) + iconT2 = new MultiIconTransformation(bottom, top, side2b, side2b, side4, side5) + iconT3 = new MultiIconTransformation(bottom, top, side2c, side2c, side4, side5) + } +} \ No newline at end of file diff --git a/src/mrtjp/projectred/expansion/items.scala b/src/mrtjp/projectred/expansion/items.scala index a04f752a8..f334ce4b9 100644 --- a/src/mrtjp/projectred/expansion/items.scala +++ b/src/mrtjp/projectred/expansion/items.scala @@ -138,7 +138,7 @@ class ItemElectronicScrewdriver extends ItemCore("projectred.expansion.electric_ } } -class ItemElectronicJetpack extends ItemArmor(ArmorMaterial.DIAMOND, 0, 1) with IChargable +class ItemJetpack extends ItemArmor(ArmorMaterial.DIAMOND, 0, 1) with IChargable { setMaxStackSize(1) setMaxDamage(6400) diff --git a/src/mrtjp/projectred/expansion/machineabstracts.scala b/src/mrtjp/projectred/expansion/machineabstracts.scala index af054af3c..92e36776f 100644 --- a/src/mrtjp/projectred/expansion/machineabstracts.scala +++ b/src/mrtjp/projectred/expansion/machineabstracts.scala @@ -308,11 +308,10 @@ with TPoweredMachine with TGuiMachine with TInventory with ISidedInventory { isCharged = cond.canWork if (isWorking != oldW || isCharged != oldCh) - { sendWorkUpdate() - oldW = isWorking - oldCh = isCharged - } + + oldW = isWorking + oldCh = isCharged } override def getLightValue = if (isWorking && isCharged) 13 else 0 diff --git a/src/mrtjp/projectred/expansion/proxies.scala b/src/mrtjp/projectred/expansion/proxies.scala index 5cbb307ba..10c5ab0fa 100644 --- a/src/mrtjp/projectred/expansion/proxies.scala +++ b/src/mrtjp/projectred/expansion/proxies.scala @@ -40,7 +40,7 @@ class ExpansionProxy_server extends IProxy with IPartFactory2 //Items itemEmptybattery = new ItemBatteryEmpty itemBattery = new ItemBattery - itemJetpack = new ItemElectronicJetpack + itemJetpack = new ItemJetpack itemScrewdriver = new ItemElectronicScrewdriver itemInfusedEnderPearl = new ItemInfusedEnderPearl @@ -59,6 +59,8 @@ class ExpansionProxy_server extends IProxy with IPartFactory2 machine2.addTile(classOf[TileBatteryBox], 5) machine2.addTile(classOf[TileChargingBench], 6) machine2.addTile(classOf[TileTeleposer], 7) + machine2.addTile(classOf[TileFrameMotor], 8) + machine2.addTile(classOf[TileFrameActuator], 9) ExpansionRecipes.initRecipes() } @@ -120,6 +122,8 @@ class ExpansionProxy_client extends ExpansionProxy_server TileRenderRegistry.setRenderer(machine2, 5, RenderBatteryBox) TileRenderRegistry.setRenderer(machine2, 6, RenderChargingBench) TileRenderRegistry.setRenderer(machine2, 7, RenderTeleposer) + TileRenderRegistry.setRenderer(machine2, 8, RenderFrameMotor) + TileRenderRegistry.setRenderer(machine2, 9, RenderFrameActuator) MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(machine2), RenderBatteryBox) MinecraftForgeClient.registerItemRenderer(itemSolar, RenderSolarPanel) @@ -251,7 +255,7 @@ object ExpansionRecipes 's':JC, Blocks.cobblestone )) - //Fire starter + //Fire Starter GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(machine2, 1, 4), "nfn", "cpc", "crc", 'n':JC, Blocks.netherrack, @@ -261,7 +265,7 @@ object ExpansionRecipes 'r':JC, Items.redstone )) - //Battery box + //Battery Box GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(machine2, 1, 5), "bwb","bbb","iei", 'b':JC, new ItemStack(itemBattery), @@ -270,7 +274,7 @@ object ExpansionRecipes 'e':JC, "ingotElectrotine" )) - //Solar panel + //Solar Panel GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemSolar), "sss","iwi","wew", 's':JC, PartDefs.ELECTROSILICON.makeStack, @@ -279,7 +283,7 @@ object ExpansionRecipes 'w':JC, "slabWood" )) - //Teleposer + //Charging Bench GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(machine2, 1, 6), "scs","wbw","iei", 's':JC, Blocks.stone, @@ -300,6 +304,25 @@ object ExpansionRecipes 'i':JC, "ingotIron", 'e':JC, "ingotElectrotine" )) + + //Frame Motor + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(machine2, 1, 8), + "wiw","cmc","iei", + 'w':JC, "plankWood", + 'i':JC, "ingotIron", + 'c':JC, PartDefs.COPPERCOIL.makeStack, + 'm':JC, PartDefs.MOTOR.makeStack, + 'e':JC, "ingotElectrotine" + )) + + //Frame Linear Actuator + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(machine2, 1, 9), + "wiw","cic","cec", + 'w':JC, "plankWood", + 'i':JC, "ingotIron", + 'c':JC, PartDefs.COPPERCOIL.makeStack, + 'e':JC, "ingotElectrotine" + )) } private def initMiscRecipes()