InternalContainerUtilMaterial class

Пакет: com.hypixel.hytale.server.core.inventory.container

Файл: com/hypixel/hytale/server/core/inventory/container/InternalContainerUtilMaterial.java

Поля (29)

МодификаторыТипИмя
List var10
List var10
short var12
List var13
short var15
MaterialQuantity var16
List var17
short var19
Set var3
long var3
ItemStack var4
int var4
var4
TestRemoveItemSlotResult var4
ResourceSlotTransaction var5
int var5
TagSlotTransaction var6
int var6
var6
int var6
ItemStackSlotTransaction var7
int var7
int var7
short var7
MaterialQuantity var8
List var8
MaterialQuantity var8
MaterialSlotTransaction var9
int var9

Методы (26)

МодификаторыВозвратСигнатура
static int countMaterialFromItemsint countMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, boolean var2)
static int countMaterialFromSlotint countMaterialFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2, boolean var3)
for for(MaterialQuantity var6 : var1)
for for(MaterialQuantity var10 : var1)
abstract for for(short var5 = 0; var5 < var0.getCapacity()
abstract for for(short var6 = 0; var6 < var2.size()
abstract for for(short var18 = 0; var18 < var2.size()
abstract for for(short var11 = 0; var11 < var2.size()
abstract for for(short var14 = 0; var14 < var2.size()
static TestRemoveItemSlotResult getTestRemoveMaterialFromItemsTestRemoveItemSlotResult getTestRemoveMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, int var2, boolean var3)
if if(var2 || var3)
if if(var5 > 0)
if if(var3 && var5 < 0)
if if(var2 || var3)
if if(var7 > 0)
if if(var3 && var7 < 0)
if if(var6 != var4.quantityRemaining)
if if(var3 || var4)
if if(var9 > 0)
if if(var4 && var9 < 0)
static MaterialTransaction internal_removeMaterialMaterialTransaction internal_removeMaterial(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, boolean var2, boolean var3, boolean var4)
static ListTransaction<MaterialTransaction> internal_removeMaterialsListTransaction<MaterialTransaction> internal_removeMaterials(@Nonnull ItemContainer var0, @Nullable List<MaterialQuantity> var1, boolean var2, boolean var3, boolean var4)
static ListTransaction<MaterialSlotTransaction> internal_removeMaterialsOrderedListTransaction<MaterialSlotTransaction> internal_removeMaterialsOrdered(@Nonnull ItemContainer var0, short var1, @Nullable List<MaterialQuantity> var2, boolean var3, boolean var4, boolean var5)
static boolean isSlotExcludedboolean isSlotExcluded(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2)
static int testRemoveMaterialFromItemsint testRemoveMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, int var2, boolean var3)
static int testRemoveMaterialFromSlotint testRemoveMaterialFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2, int var3, boolean var4)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.inventory.container;

class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.MaterialQuantity;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ActionType;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ItemStackSlotTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ListTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.MaterialSlotTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.MaterialTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ResourceSlotTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.SlotTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.TagSlotTransaction;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.stream.Collectors;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class InternalContainerUtilMaterial {
   class="kw">public InternalContainerUtilMaterial() {
   }

   @Nonnull
   class="kw">protected class="kw">static MaterialSlotTransaction internal_removeMaterialFromSlot(
      @Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2, boolean var3, boolean var4
   ) {
      ItemContainer.validateSlotIndex(var1, var0.getCapacity());
      ItemContainer.validateQuantity(var2.getQuantity());
      if (var2.getItemId() != null) {
         ItemStackSlotTransaction var7 = InternalContainerUtilItemStack.internal_removeItemStackFromSlot(
            var0, var1, var2.toItemStack(), var2.getQuantity(), var3, var4, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
         class="kw">return new MaterialSlotTransaction(var2, var7.getRemainder() != null ? var7.getRemainder().getQuantity() : 0, var7);
      } else if (var2.getTagIndex() != Integer.MIN_VALUE) {
         TagSlotTransaction var6 = InternalContainerUtilTag.internal_removeTagFromSlot(var0, var1, var2.getTagIndex(), var2.getQuantity(), var3, var4);
         class="kw">return new MaterialSlotTransaction(var2, var6.getRemainder(), var6);
      } else {
         ResourceSlotTransaction var5 = InternalContainerUtilResource.internal_removeResourceFromSlot(var0, var1, var2.toResource(), var3, var4);
         class="kw">return new MaterialSlotTransaction(var2, var5.getRemainder(), var5);
      }
   }

   class="kw">protected class="kw">static MaterialTransaction internal_removeMaterial(
      @Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, boolean var2, boolean var3, boolean var4
   ) {
      class="kw">return var0.writeAction(() -> {
         if (var2 || var3) {
            int var5 = testRemoveMaterialFromItems(var0, var1, var1.getQuantity(), var4);
            if (var5 > 0) {
               class="kw">return new MaterialTransaction(false, ActionType.REMOVE, var1, var1.getQuantity(), var2, var3, var4, Collections.emptyList());
            }

            if (var3 && var5 < 0) {
               class="kw">return new MaterialTransaction(false, ActionType.REMOVE, var1, var1.getQuantity(), var2, var3, var4, Collections.emptyList());
            }
         }

         List var10 = new ObjectArrayList();
         int var6 = var1.getQuantity();

         for (short var7 = 0; var7 < var0.getCapacity() && var6 > 0; var7++) {
            if (!isSlotExcluded(var0, var7, var1)) {
               MaterialQuantity var8 = var1.clone(var6);
               MaterialSlotTransaction var9 = internal_removeMaterialFromSlot(var0, var7, var8, false, var4);
               if (var9.succeeded()) {
                  var10.add(var9);
                  var6 = var9.getRemainder();
               }
            }
         }

         class="kw">return new MaterialTransaction(var6 != var1.getQuantity(), ActionType.REMOVE, var1, var1.getQuantity(), var2, var3, var4, var10);
      });
   }

   class="kw">private class="kw">static boolean isSlotExcluded(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2) {
      if (var2.getItemId() != null) {
         class="kw">return false;
      } else {
         Set var3 = var2.getExcludedItemIds();
         if (var3 != null && !var3.isEmpty()) {
            ItemStack var4 = var0.internal_getSlot(var1);
            class="kw">return var4 != null && var3.contains(var4.getItemId());
         } else {
            class="kw">return false;
         }
      }
   }

   class="kw">protected class="kw">static ListTransaction<MaterialTransaction> internal_removeMaterials(
      @Nonnull ItemContainer var0, @Nullable List<MaterialQuantity> var1, boolean var2, boolean var3, boolean var4
   ) {
      class="kw">return var1 != null && !var1.isEmpty()
         ? var0.writeAction(
            () -> {
               if (var2 || var3) {
                  for (MaterialQuantity var6 : var1) {
                     int var7 = testRemoveMaterialFromItems(var0, var6, var6.getQuantity(), var4);
                     if (var7 > 0) {
                        class="kw">return new ListTransaction<>(
                           false,
                           var1.stream()
                              .map(
                                 var4x -> new MaterialTransaction(false, ActionType.REMOVE, var6, var6.getQuantity(), var2, var3, var4, Collections.emptyList())
                              )
                              .collect(Collectors.toList())
                        );
                     }

                     if (var3 && var7 < 0) {
                        class="kw">return new ListTransaction<>(
                           false,
                           var1.stream()
                              .map(
                                 var4x -> new MaterialTransaction(false, ActionType.REMOVE, var6, var6.getQuantity(), var2, var3, var4, Collections.emptyList())
                              )
                              .collect(Collectors.toList())
                        );
                     }
                  }
               }

               List var8 = new ObjectArrayList();

               for (MaterialQuantity var10 : var1) {
                  var8.add(internal_removeMaterial(var0, var10, var2, var3, var4));
               }

               class="kw">return new ListTransaction<>(true, var8);
            }
         )
         : ListTransaction.getEmptyTransaction(true);
   }

   class="kw">public class="kw">static int testRemoveMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, int var2, boolean var3) {
      if (var1.getItemId() != null) {
         class="kw">return InternalContainerUtilItemStack.testRemoveItemStackFromItems(
            var0, var1.toItemStack(), var2, var3, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
      }

      if (var1.getExcludedItemIds() == null) {
         class="kw">return var1.getTagIndex() != Integer.MIN_VALUE
            ? InternalContainerUtilTag.testRemoveTagFromItems(var0, var1.getTagIndex(), var2, var3)
            : InternalContainerUtilResource.testRemoveResourceFromItems(var0, var1.toResource(), var2, var3);
      }

      int var4 = var2;

      for (short var5 = 0; var5 < var0.getCapacity() && var4 > 0; var5++) {
         if (!isSlotExcluded(var0, var5, var1)) {
            var4 = testRemoveMaterialFromSlot(var0, var5, var1, var4, var3);
         }
      }

      class="kw">return var4;
   }

   class="kw">public class="kw">static TestRemoveItemSlotResult getTestRemoveMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, int var2, boolean var3) {
      if (var1.getItemId() != null) {
         class="kw">return InternalContainerUtilItemStack.testRemoveItemStackSlotFromItems(
            var0, var1.toItemStack(), var2, var3, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
      }

      if (var1.getExcludedItemIds() == null) {
         class="kw">return var1.getTagIndex() != Integer.MIN_VALUE
            ? InternalContainerUtilTag.testRemoveTagSlotFromItems(var0, var1.getTagIndex(), var2, var3)
            : InternalContainerUtilResource.testRemoveResourceSlotFromItems(var0, var1.toResource(), var2, var3);
      }

      TestRemoveItemSlotResult var4 = new TestRemoveItemSlotResult(var2);

      for (short var5 = 0; var5 < var0.getCapacity() && var4.quantityRemaining > 0; var5++) {
         if (!isSlotExcluded(var0, var5, var1)) {
            int var6 = testRemoveMaterialFromSlot(var0, var5, var1, var4.quantityRemaining, var3);
            if (var6 != var4.quantityRemaining) {
               int var7 = var4.quantityRemaining - var6;
               var4.quantityRemaining = var6;
               var4.picked.put(var5, var7);
            }
         }
      }

      class="kw">return var4;
   }

   class="kw">public class="kw">static int countMaterialFromItems(@Nonnull ItemContainer var0, @Nonnull MaterialQuantity var1, boolean var2) {
      if (var1.getItemId() != null) {
         class="kw">return InternalContainerUtilItemStack.countItemStackFromItems(
            var0, var1.toItemStack(), var2, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
      }

      if (var1.getExcludedItemIds() != null) {
         long var3 = 0L;

         for (short var5 = 0; var5 < var0.getCapacity(); var5++) {
            if (!isSlotExcluded(var0, var5, var1)) {
               var3 += countMaterialFromSlot(var0, var5, var1, var2);
            }
         }

         class="kw">return (int)Math.min(var3, 2147483647L);
      } else {
         class="kw">return var1.getTagIndex() != Integer.MIN_VALUE
            ? InternalContainerUtilTag.countTagFromItems(var0, var1.getTagIndex(), var2)
            : InternalContainerUtilResource.countResourceFromItems(var0, var1.toResource(), var2);
      }
   }

   class="kw">private class="kw">static int countMaterialFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2, boolean var3) {
      if (var2.getItemId() != null) {
         class="kw">return InternalContainerUtilItemStack.countItemStackFromSlot(
            var0, var1, var2.toItemStack(), var3, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
      } else {
         class="kw">return var2.getTagIndex() != Integer.MIN_VALUE
            ? InternalContainerUtilTag.countTagFromSlot(var0, var1, var2.getTagIndex(), var3)
            : InternalContainerUtilResource.countResourceFromSlot(var0, var1, var2.toResource(), var3);
      }
   }

   class="kw">protected class="kw">static ListTransaction<MaterialSlotTransaction> internal_removeMaterialsOrdered(
      @Nonnull ItemContainer var0, short var1, @Nullable List<MaterialQuantity> var2, boolean var3, boolean var4, boolean var5
   ) {
      if (var2 != null && !var2.isEmpty()) {
         class="kw">return var1 + var2.size() > var0.getCapacity()
            ? ListTransaction.getEmptyTransaction(false)
            : var0.writeAction(
               () -> {
                  if (var3 || var4) {
                     for (short var6 = 0; var6 < var2.size(); var6++) {
                        short var7 = (short)(var1 + var6);
                        MaterialQuantity var8 = var2.get(var6);
                        int var9 = testRemoveMaterialFromSlot(var0, var7, var8, var8.getQuantity(), var5);
                        if (var9 > 0) {
                           List var17 = new ObjectArrayList();

                           for (short var18 = 0; var18 < var2.size(); var18++) {
                              short var19 = (short)(var1 + var18);
                              var17.add(
                                 new MaterialSlotTransaction(
                                    var8, var8.getQuantity(), new SlotTransaction(false, ActionType.REMOVE, var19, null, null, null, var3, var4, var5)
                                 )
                              );
                           }

                           class="kw">return new ListTransaction<>(false, var17);
                        }

                        if (var4 && var9 < 0) {
                           List var10 = new ObjectArrayList();

                           for (short var11 = 0; var11 < var2.size(); var11++) {
                              short var12 = (short)(var1 + var11);
                              var10.add(
                                 new MaterialSlotTransaction(
                                    var8, var8.getQuantity(), new SlotTransaction(false, ActionType.REMOVE, var12, null, null, null, var3, var4, var5)
                                 )
                              );
                           }

                           class="kw">return new ListTransaction<>(false, var10);
                        }
                     }
                  }

                  List var13 = new ObjectArrayList();

                  for (short var14 = 0; var14 < var2.size(); var14++) {
                     short var15 = (short)(var1 + var14);
                     MaterialQuantity var16 = var2.get(var14);
                     var13.add(internal_removeMaterialFromSlot(var0, var15, var16, var3, var5));
                  }

                  class="kw">return new ListTransaction<>(true, var13);
               }
            );
      } else {
         class="kw">return ListTransaction.getEmptyTransaction(true);
      }
   }

   class="kw">public class="kw">static int testRemoveMaterialFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull MaterialQuantity var2, int var3, boolean var4) {
      if (var2.getItemId() != null) {
         class="kw">return InternalContainerUtilItemStack.testRemoveItemStackFromSlot(
            var0, var1, var2.toItemStack(), var3, var4, (var0x, var1x) -> ItemStack.isEquivalentType(var0x, var1x)
         );
      } else {
         class="kw">return var2.getTagIndex() != Integer.MIN_VALUE
            ? InternalContainerUtilTag.testRemoveTagFromSlot(var0, var1, var2.getTagIndex(), var3, var4)
            : InternalContainerUtilResource.testRemoveResourceFromSlot(var0, var1, var2.toResource(), var3, var4);
      }
   }
}