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