CombinedItemContainer class

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

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

extends: ItemContainer

Поля (31)

МодификаторыТипИмя
final ItemContainer[] containers
continue
return
ItemStack[] var1
short var1
int var1
Throwable var2
Throwable var2
short var2
short var2
short var2
var2
EventRegistration var3
short var3
EventRegistration[] var4
ItemStack var4
short var5
short var6
short var6
short var6
short var6
short var6
ClearTransaction var7
short var7
boolean var7
ItemContainer var7
Transaction var7
ItemStack[] var8
short var8
short var8
short var8

Методы (38)

МодификаторыВозвратСигнатура
public CombinedItemContainer cloneCombinedItemContainer clone()
for for(ItemContainer var5 : this.containers)
for for(int var1 = 0; var1 < this.containers.length; var1++)
for for(int var3 = var1 - 1; var3 >= 0; var3--)
for for(int var1 = this.containers.length - 1; var1 >= 0; var1--)
for for(int var1 = 0; var1 < this.containers.length; var1++)
for for(int var3 = var1 - 1; var3 >= 0; var3--)
for for(int var1 = this.containers.length - 1; var1 >= 0; var1--)
for for(ItemContainer var6 : this.containers)
for for(short var9 = 0; var9 < var8.length; var9++)
for for(ItemContainer var5 : this.containers)
for for(ItemContainer var6 : this.containers)
for for(ItemContainer var5 : this.containers)
for for(ItemContainer var7 : this.containers)
for for(ItemContainer var5 : this.containers)
for for(ItemContainer var5 : this.containers)
for for(ItemContainer var6 : this.containers)
for for(ItemContainer var5 : this.containers)
for for(int var6 = 0; var6 < this.containers.length; var6++)
for for(ItemContainer var6 : this.containers)
for for(ItemContainer var5 : this.containers)
for for(short var3 = 0; var3 < var3; var3++)
for for(short var3 = 0; var3 < var2; var3++)
for for(ItemContainer var7 : this.containers)
public ItemContainer getContainerItemContainer getContainer(int var1)
public int getContainersSizeint getContainersSize()
if if(var1 < var6)
if if(var1 < var6)
if if(var1 < var7)
if if(var1 < var6)
if if(var1 < var8)
if if(var1 < var6)
if if(var1 < var6)
if if(var7)
if if(var7 != null)
if if(var1 == this)
if if(this == var1)
if if(var2 < var8)

Исходный код

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

class="kw">import com.hypixel.hytale.event.EventRegistration;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.container.filter.FilterActionType;
class="kw">import com.hypixel.hytale.server.core.inventory.container.filter.FilterType;
class="kw">import com.hypixel.hytale.server.core.inventory.container.filter.SlotFilter;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ClearTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.Transaction;
class="kw">import java.util.Objects;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class CombinedItemContainer class="kw">extends ItemContainer {
   class="kw">protected class="kw">final ItemContainer[] containers;

   class="kw">public CombinedItemContainer(ItemContainer... var1) {
      this.containers = var1;
   }

   class="kw">public ItemContainer getContainer(int var1) {
      class="kw">return this.containers[var1];
   }

   class="kw">public int getContainersSize() {
      class="kw">return this.containers.length;
   }

   @Nullable
   class="kw">public ItemContainer getContainerForSlot(short var1) {
      for (ItemContainer var5 : this.containers) {
         short var6 = var5.getCapacity();
         if (var1 < var6) {
            class="kw">return var5;
         }

         var1 -= var6;
      }

      class="kw">return null;
   }

   @Override
   class="kw">protected <V> V readAction(@Nonnull Supplier<V> var1) {
      this.lockForRead();

      try {
         class="kw">return var1.get();
      } class="kw">finally {
         this.unlockForRead();
      }
   }

   @Override
   class="kw">protected <X, V> V readAction(@Nonnull Function<X, V> var1, X var2) {
      this.lockForRead();

      try {
         class="kw">return var1.apply(var2);
      } class="kw">finally {
         this.unlockForRead();
      }
   }

   @Override
   class="kw">protected <V> V writeAction(@Nonnull Supplier<V> var1) {
      this.lockForWrite();

      try {
         class="kw">return var1.get();
      } class="kw">finally {
         this.unlockForWrite();
      }
   }

   @Override
   class="kw">protected <X, V> V writeAction(@Nonnull Function<X, V> var1, X var2) {
      this.lockForWrite();

      try {
         class="kw">return var1.apply(var2);
      } class="kw">finally {
         this.unlockForWrite();
      }
   }

   @Override
   class="kw">protected void lockForRead() {
      for (int var1 = 0; var1 < this.containers.length; var1++) {
         try {
            this.containers[var1].lockForRead();
         } catch (Throwable var6) {
            Throwable var2 = var6;

            for (int var3 = var1 - 1; var3 >= 0; var3--) {
               try {
                  this.containers[var3].unlockForRead();
               } catch (Throwable var5) {
                  var2.addSuppressed(var5);
               }
            }

            throw var2;
         }
      }
   }

   @Override
   class="kw">protected void unlockForRead() {
      for (int var1 = this.containers.length - 1; var1 >= 0; var1--) {
         this.containers[var1].unlockForRead();
      }
   }

   @Override
   class="kw">protected void lockForWrite() {
      for (int var1 = 0; var1 < this.containers.length; var1++) {
         try {
            this.containers[var1].lockForWrite();
         } catch (Throwable var6) {
            Throwable var2 = var6;

            for (int var3 = var1 - 1; var3 >= 0; var3--) {
               try {
                  this.containers[var3].unlockForWrite();
               } catch (Throwable var5) {
                  var2.addSuppressed(var5);
               }
            }

            throw var2;
         }
      }
   }

   @Override
   class="kw">protected void unlockForWrite() {
      for (int var1 = this.containers.length - 1; var1 >= 0; var1--) {
         this.containers[var1].unlockForWrite();
      }
   }

   @Nonnull
   @Override
   class="kw">protected ClearTransaction internal_clear() {
      ItemStack[] var1 = new ItemStack[this.getCapacity()];
      short var2 = 0;

      for (ItemContainer var6 : this.containers) {
         ClearTransaction var7 = var6.internal_clear();
         ItemStack[] var8 = var7.getItems();

         for (short var9 = 0; var9 < var8.length; var9++) {
            var1[(short)(var2 + var9)] = var8[var9];
         }

         var2 += var6.getCapacity();
      }

      class="kw">return new ClearTransaction(true, (short)0, var1);
   }

   @Nullable
   @Override
   class="kw">protected ItemStack internal_getSlot(short var1) {
      for (ItemContainer var5 : this.containers) {
         short var6 = var5.getCapacity();
         if (var1 < var6) {
            class="kw">return var5.internal_getSlot(var1);
         }

         var1 -= var6;
      }

      class="kw">return null;
   }

   @Nullable
   @Override
   class="kw">protected ItemStack internal_setSlot(short var1, ItemStack var2) {
      if (ItemStack.isEmpty(var2)) {
         class="kw">return this.internal_removeSlot(var1);
      }

      for (ItemContainer var6 : this.containers) {
         short var7 = var6.getCapacity();
         if (var1 < var7) {
            class="kw">return var6.internal_setSlot(var1, var2);
         }

         var1 -= var7;
      }

      class="kw">return null;
   }

   @Nullable
   @Override
   class="kw">protected ItemStack internal_removeSlot(short var1) {
      for (ItemContainer var5 : this.containers) {
         short var6 = var5.getCapacity();
         if (var1 < var6) {
            class="kw">return var5.internal_removeSlot(var1);
         }

         var1 -= var6;
      }

      class="kw">return null;
   }

   @Override
   class="kw">protected boolean cantAddToSlot(short var1, ItemStack var2, ItemStack var3) {
      for (ItemContainer var7 : this.containers) {
         short var8 = var7.getCapacity();
         if (var1 < var8) {
            class="kw">return var7.cantAddToSlot(var1, var2, var3);
         }

         var1 -= var8;
      }

      class="kw">return true;
   }

   @Override
   class="kw">protected boolean cantRemoveFromSlot(short var1) {
      for (ItemContainer var5 : this.containers) {
         short var6 = var5.getCapacity();
         if (var1 < var6) {
            class="kw">return var5.cantRemoveFromSlot(var1);
         }

         var1 -= var6;
      }

      class="kw">return true;
   }

   @Override
   class="kw">protected boolean cantDropFromSlot(short var1) {
      for (ItemContainer var5 : this.containers) {
         short var6 = var5.getCapacity();
         if (var1 < var6) {
            class="kw">return var5.cantDropFromSlot(var1);
         }

         var1 -= var6;
      }

      class="kw">return true;
   }

   @Override
   class="kw">protected boolean cantMoveToSlot(ItemContainer var1, short var2) {
      for (ItemContainer var6 : this.containers) {
         boolean var7 = var6.cantMoveToSlot(var1, var2);
         if (var7) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   @Override
   class="kw">public short getCapacity() {
      short var1 = 0;

      for (ItemContainer var5 : this.containers) {
         var1 += var5.getCapacity();
      }

      class="kw">return var1;
   }

   class="kw">public CombinedItemContainer clone() {
      throw new UnsupportedOperationException("clone() is not supported for CombinedItemContainer");
   }

   @Nonnull
   @Override
   class="kw">public EventRegistration<Void, ItemContainer.ItemContainerChangeEvent> registerChangeEvent(
      short var1, @Nonnull Consumer<ItemContainer.ItemContainerChangeEvent> var2
   ) {
      EventRegistration var3 = super.registerChangeEvent(var1, var2);
      EventRegistration[] var4 = new EventRegistration[this.containers.length];
      short var5 = 0;

      for (int var6 = 0; var6 < this.containers.length; var6++) {
         ItemContainer var7 = this.containers[var6];
         short var8 = var5;
         var4[var6] = var7.registerChangeEvent(
            var1, var4x -> var2.accept(new ItemContainer.ItemContainerChangeEvent(this, var4x.transaction().toParent(this, var8, var7)))
         );
         var5 += var7.getCapacity();
      }

      class="kw">return EventRegistration.combine(var3, var4);
   }

   @Override
   class="kw">protected void sendUpdate(@Nonnull Transaction var1) {
      if (var1.succeeded()) {
         super.sendUpdate(var1);
         short var2 = 0;

         for (ItemContainer var6 : this.containers) {
            Transaction var7 = var1.fromParent(this, var2, var6);
            if (var7 != null) {
               if (!var7.succeeded()) {
                  var2 += var6.getCapacity();
                  class="kw">continue;
               }

               var6.sendUpdate(var7);
            }

            var2 += var6.getCapacity();
         }
      }
   }

   @Override
   class="kw">public boolean containsContainer(ItemContainer var1) {
      if (var1 == this) {
         class="kw">return true;
      }

      for (ItemContainer var5 : this.containers) {
         if (var5.containsContainer(var1)) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   @Override
   class="kw">public boolean equals(Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else if (var1 class="kw">instanceof CombinedItemContainer var2) {
         short var3 = this.getCapacity();
         class="kw">return var3 != var2.getCapacity() ? false : this.readAction(var2x -> var2x.readAction(var2xx -> {
            for (short var3 = 0; var3 < var3; var3++) {
               if (!Objects.equals(this.internal_getSlot(var3), var2xx.internal_getSlot(var3))) {
                  class="kw">return false;
               }
            }

            class="kw">return true;
         }, var2x), var2);
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      short var2 = this.getCapacity();
      int var1 = this.readAction(() -> {
         int var2 = 0;

         for (short var3 = 0; var3 < var2; var3++) {
            ItemStack var4 = this.internal_getSlot(var3);
            var2 = 31 * var2 + (var4 != null ? var4.hashCode() : 0);
         }

         class="kw">return var2;
      });
      class="kw">return 31 * var1 + var2;
   }

   @Override
   class="kw">public void setGlobalFilter(FilterType var1) {
      throw new UnsupportedOperationException("setGlobalFilter(FilterType) is not supported in CombinedItemContainer");
   }

   @Override
   class="kw">public void setSlotFilter(FilterActionType var1, short var2, SlotFilter var3) {
      for (ItemContainer var7 : this.containers) {
         short var8 = var7.getCapacity();
         if (var2 < var8) {
            var7.setSlotFilter(var1, var2, var3);
            class="kw">return;
         }

         var2 -= var8;
      }
   }
}