From a9efeb6b26ef3b38a24c4fa1e511fbf108bb935c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 6 Jul 2014 21:03:45 +0200 Subject: [PATCH] Added tractor beam upgrade (item magnet). --- assets/items.psd | Bin 387760 -> 390839 bytes .../assets/opencomputers/lang/de_DE.lang | 2 + .../assets/opencomputers/lang/en_US.lang | 2 + .../opencomputers/recipes/default.recipes | 6 +++ .../textures/items/upgrade_tractor_beam.png | Bin 0 -> 414 bytes src/main/scala/li/cil/oc/Items.scala | 3 ++ src/main/scala/li/cil/oc/common/Proxy.scala | 3 +- .../oc/common/item/UpgradeTractorBeam.scala | 24 +++++++++ .../server/component/UpgradeTractorBeam.scala | 49 ++++++++++++++++++ .../driver/item/UpgradeTractorBeam.scala | 21 ++++++++ 10 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/opencomputers/textures/items/upgrade_tractor_beam.png create mode 100644 src/main/scala/li/cil/oc/common/item/UpgradeTractorBeam.scala create mode 100644 src/main/scala/li/cil/oc/server/component/UpgradeTractorBeam.scala create mode 100644 src/main/scala/li/cil/oc/server/driver/item/UpgradeTractorBeam.scala diff --git a/assets/items.psd b/assets/items.psd index 2020faf1429dc5476025c02cbbee1be6842062ef..696e2ee0f1d43f4e7abe1b78868b9559de6c7c0d 100644 GIT binary patch delta 4373 zcmeH}c~lfv7KdLoRSL?c&@8bL5CbAEbVFF=NGqEYl_en{h(wLrOyYthpc%2j94Bfd z2_YSMqAccUf{0+GJM`!bpdm4t(9)oSVX_cSGLcPDXc-&2-`uL+G&3jLnLh{4d-dwx zTd%5r_ujASgDzL)kn3As_KWJnqMnSWX#{`NvvMqd2}-8#dgoam1{3M;`y+6*#8XcKaR!Ol!I)Ie40Fd z%zSBz;nKxYDv-UQ*`8{)vs)T2GvAS-aZWPjgtzaaUcq$?#XYnGcFd=yJ+eufVUq|e zc&@e{b`!q*PEU^Ev6Zjyr7G=xDT>RpEt_ZeV3;TvNidGV7)GcR4(@Ksq_?S$oC}xL zNK@+v?eW#498VURph~x8dA)W@@zfhIrY|YHi|=$r^(0zO*W>{c>A& zl3bAIqP$*v)nUfr?yij5h=DJ96HXC?Cw}ac&REQ34^*w_KbO#VuELLhF5NACW%K7_ zjSc_ojy?Un^u0HFnwwhUW9M|e6_6$?Y&}uks=L5VIF;M{#@5W#Gts_-wb}eTE{@l?Y~C5ETwGQ5ps`T= z#rYKBf!BnS4_Gzd-;+CdH(Y%4&O)D>h$Ks=cDDeITed}`9|)Lv(#$DJXxm$Gju-5B9H2~9%wXgYFv4qABPxOnIC3oB#Z6!jq7)d*r_R zS#pQak}^0uOorK&s!Vc;j3;Xoc`FHbL@S30kM#DA5=v60S5ak>&j?A@1Xv}nOojuU zypnT*3J_vfCQ+$6TIDC?q!ng0&fLU2hTB_ckLh}YQ(kvuubi;68V|P6ktX|zx)QLn zvl<6npd+X0h;5lf($=PUS56i@J!iHWzi@#T*=vbS+j+%dutm(7rN$K(=rGpSa=z~H zHzXj!7i@(RMu4|8(GK{Ogt6zmin?O(hWmP{vExNrXtp6Q&K7l%4hI`iOs*@~=H|oM zc3-4DBZr8MqOPj0&d0~s%d4G`89KLdK5-)E)i4<%s6bbx_o4)DRdB+5Q(Rn7Ake!Z zQ56=n(%#Chi?pkiF+1MI>_i!}6ARh#LQ|2g60-Bud{0P>im1$qfi+RFi9sqoj7#|J z5r!W$3d;!?kcT*ppHd zvl^@Jae3hEYz7p@JWL&-BOP@_ud+db2r0;-HNgwic=?DS4bY&hEiQPT8cRpGG*HMz zk7yDaCjwjJ2q&t^79;Xk$()K3df7%un z;RnX(P)_)t>j=EGgW*qos0HxS#~HWj#)9u|YpQD^Z7{3x_6`tw%!_frWgU#Ysk)mK z#}76Uc2?t)9gH`YKhBt2qE1l;PIgw~&c_*3>9d+Qk&?{#4zRaT{U{>Kj)^^(EBm1f%+^^$Dn|3fs?N<|_Z}$Lyh%ym`#? z6hPhDh^9o8_z;@HIW*ZS56)+9n4;JgVWUhf5{JUM7MY?vxX=>C=JTg}v5f>#LPONg zzD6*-MpBf$LCkXD`r8Ca4gm&vfWgxLDFlfHf}t$WfQ>Bphy{P%xN#HXVf3-BM=S{R z#u}r~$U$P{pp(Q<3@iu1X5yd#KL_B0#B(qt78tU{VABE!1e*zgeB5pd<{SnN4oH}A zsD_6*2&B_^;3XRww}{^g!$CrdNdW>DR^qxpGG5C3EJhgQ3VN$Jy@744-oKk|#KJaC zUSJ-}GsDbL%^QawHOLFThvfybdE=MC=WfOuG2o5x!sdC5(ToS~z>G7_8lm~Dd~D-E zgb8*6{KHX$)&_@xc)W71@r=QtCgSn2bs6wrT{&ZC*~$z*ORE~Wce0%E2>uP+8-(u| zmV1>ru#%ahoK(Sta3cS=qW)!$5evsmHOpd)Sm4F+2}+p-7O`N<8(Vi8w1#qJ*+neu z;^PSLS$@13VBEXgAfcIE0$l${umNDIPKJAJ8-mRQv#4i)7Y@5(Qt#Jsi&GD{Rf#WL d1@%g=Fdh8=e_nDQo5s&e44;=hSl`Dq{2SWXHwpj% delta 2741 zcmds%dsvg#9mn4{IR^^^L@@*mw^)$cVz>z*VF{o$6vbf&m01;LDW#LOTol(y)08^L zp83qKL_N4Z)-lFK(QtWzw}o;Mm5VLnL=?G*_Suxi8`XqMLh|msZ_uq*WULz z=l468_nhDNcRuH(?+I%Mg}?Q64!a(?I(`EH1p6=_NM^M`q^sv@|AGZW9jE)&{$bJD zfKg2zH^+~ia=d^_B_~Ozh?Sw?$sw!c!Qt{Ssdfur_VpgBl>ZiA8?t8^6}4d5u3|eo zN}xueF8qh=8iWJhihHPvn)AT!(igbzsp5Kpc7H<&xk;OIdIdE=i#mCHXL|DIaU^y02+tyS{ypdR)c^ue1ykX|w;-j|g7{a6zje&BHYz^C-{Uo4M& zHL@uE#;nhliL{NAk46TX%S?w8Up(E_UAFx5XBk3u?@(jIwfg?Ffx025lRNKb9BfjnQmjX>w3^#PcI+DeDpTd0>YXw& zmQk`P`No6QwYRUvN-8Rc9=vF5ANx`{s)-vcn?2u}IPmn$sY8aEYUYYDxj5c`gkf`@mRonP35eG9i0+iStaIzM7-vte2O7A}fKpc2I(kW5b?ASOk2SioY! zgOCu>_zffEgbdd*+;&60eL#tnec)+&-w_b7GIEre@~C49nOer2WJ=^EFq|b4CK(%|DIqyxPMV|qG`a&-d^1oFFjdcjWCP8Id z&5OYjuq9%iNKhFA_^KEcHb52gcM?7|aT4~ILor%z=E59i{oUAiXk&PhfnL)9dZCsWv79QR?)9H&n=$LTZ90Uxp!`B;DeE&dEwE>_@9@3H{r zZ&$^gPNNkL2iiY5927eO1!M!-J_6mbiIqS$_rI1vHuu9elRF9pNErm#Y}bwA$o2(6 zHp-eHC}Y()+KZ>{u{z&CC_+nvp%Wfck3k_?9}JgazaSWLXYxIZgV~;W3ZKcm$DN5A zS{Dl4X;UzK7tn8q!%UL9U*CjTAjZsF3T3oZ3QvBQX|nG&E$Z>Ke|M>AsRHf@SylMo zAkE9>(u$E5qpWN$k(g^SYPR_k*>E0iPxL%S8|MrY&gIriXd~sTpW@u!?*VLX4R{Qj zs9fmvFHpak2mNR&7lwpAj`u(2cPZLd&IO7g=2)WXEo8)J{2dI|>`2_>H zL;!~7u<18}T6#QP978H@g`9uQ*JQxM`XG*t=UKoE1+GVX-~aD0iz)eX-1Gc&otF+S z4vQ`_N#-yZ^{{S9*15p=XtSQz#44}aridrg=bo4&Jmsh7bxTL9hJR1rD_wX09GCZk zy*@-@_HCy2M$vQ0znZ(|9 item.isEntityAlive && item.delayBeforeCanPickup <= 0) + if (items.nonEmpty) { + val item = items(world.rand.nextInt(items.size)) + val stack = item.getEntityItem + val size = stack.stackSize + item.onCollideWithPlayer(owner.player) + if (stack.stackSize < size || item.isDead) { + context.pause(Settings.get.suckDelay) + return result(true) + } + } + result(false) + } + + private def pickupBounds = { + val player = owner.player + val x = player.posX + val y = player.posY + val z = player.posZ + AxisAlignedBB.getBoundingBox( + x - pickupRadius, y - pickupRadius, z - pickupRadius, + x + pickupRadius, y + pickupRadius, z + pickupRadius) + } +} diff --git a/src/main/scala/li/cil/oc/server/driver/item/UpgradeTractorBeam.scala b/src/main/scala/li/cil/oc/server/driver/item/UpgradeTractorBeam.scala new file mode 100644 index 000000000..518562dd0 --- /dev/null +++ b/src/main/scala/li/cil/oc/server/driver/item/UpgradeTractorBeam.scala @@ -0,0 +1,21 @@ +package li.cil.oc.server.driver.item + +import li.cil.oc.api +import li.cil.oc.api.driver.{Container, Slot} +import li.cil.oc.api.machine.Robot +import li.cil.oc.common.InventorySlots.Tier +import li.cil.oc.server.component +import net.minecraft.item.ItemStack + +object UpgradeTractorBeam extends Item { + override def worksWith(stack: ItemStack) = isOneOf(stack, api.Items.get("tractorBeamUpgrade")) + + override def createEnvironment(stack: ItemStack, container: Container) = container match { + case robot: Robot => new component.UpgradeTractorBeam(robot) + case _ => null + } + + override def slot(stack: ItemStack) = Slot.Upgrade + + override def tier(stack: ItemStack) = Tier.Three +}