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;
}
}
}