repo for my hex addons :3
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

you see, to move items, the ability to insert items is also rather useful

+13 -4
+13 -4
src/main/scala/org/eu/net/pool/hexic/Hexic.scala
··· 2178 2178 trait Handler: 2179 2179 def apply(idx: Int)(using CastingEnvironment): Option[SlotReference] = None 2180 2180 def tryExtract(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 0 2181 - def tryWithdraw(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 0 2181 + def tryInsert(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 0 2182 2182 def capacity(variant: TransferVariant[?])(using TransactionContext, CastingEnvironment): Long = 2183 2183 Using(summon[TransactionContext].openNested()): tx => 2184 2184 given TransactionContext = tx ··· 2197 2197 abstract class OfMerged(viewType: InventoryView.Type[?], views: => Seq[Handler]) extends InventoryView(viewType): 2198 2198 def getViews = views 2199 2199 override def apply(idx: Int)(using CastingEnvironment): Option[SlotReference] = views.collectFirst(hexicVisibilityHack.unlifted(_(idx))) 2200 - override def tryWithdraw(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = LazyList.from(views).scanLeft(0L)((n, view) => view.tryWithdraw(variant, amount - n) + n).findFirstOrLast(_ >= amount).getOrElse(0) 2200 + override def tryExtract(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = LazyList.from(views).scanLeft(0L)((n, view) => view.tryExtract(variant, amount - n) + n).findFirstOrLast(_ >= amount).getOrElse(0) 2201 + override def tryInsert(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = LazyList.from(views).scanLeft(0L)((n, view) => view.tryInsert(variant, amount - n) + n).findFirstOrLast(_ >= amount).getOrElse(0) 2202 + override def capacity(variant: TransferVariant[?])(using TransactionContext, CastingEnvironment) = views.map(_.capacity(variant)).sum 2201 2203 override def entities(using TransactionContext) = views.flatMap(_.entities).toSet 2202 2204 override def teleportEntity(ent: Entity)(using TransactionContext, CastingEnvironment): Boolean = views.iterator∃(_.teleportEntity(ent)) 2203 2205 class OfSum private(private[InventoryView] val views: Seq[InventoryView]) extends OfMerged(typeOfSum, views): ··· 2266 2268 if storage == null then Seq() 2267 2269 else Seq( 2268 2270 new Handler: 2269 - override def tryWithdraw(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 2271 + override def tryInsert(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 2272 + variant match 2273 + case i: ItemVariant => storage.insert(i, amount, summon) 2274 + case _ => 0 2275 + override def tryExtract(variant: TransferVariant[?], amount: Long)(using TransactionContext, CastingEnvironment): Long = 2270 2276 variant match 2271 2277 case i: ItemVariant => storage.extract(i, amount, summon) 2272 2278 case _ => 0 2273 2279 override def entities(using TransactionContext): Set[Entity] = summon[World].getOtherEntities(null, MCBox.of(pos.toCenterPos, 0.5, 0.5, 0.5), _ => true).toSet 2274 - override def teleportEntity(ent: Entity)(using TransactionContext, CastingEnvironment): Boolean = super.teleportEntity(ent) 2280 + override def teleportEntity(ent: Entity)(using TransactionContext, CastingEnvironment): Boolean = 2281 + if allowTP then 2282 + ??? 2283 + else false 2275 2284 ) 2276 2285 2277 2286 object BoxedView extends IotaType[BoxedView.Instance]: