InternalContainerUtilResource class
Пакет: com.hypixel.hytale.server.core.inventory.container
Файл: com/hypixel/hytale/server/core/inventory/container/InternalContainerUtilResource.java
Поля (37)
| Модификаторы | Тип | Имя |
|---|---|---|
|
int |
var10 |
|
ResourceSlotTransaction |
var10 |
|
int |
var10 |
|
int |
var11 |
|
List |
var11 |
|
int |
var11 |
|
int |
var12 |
|
int |
var12 |
|
int |
var13 |
|
int |
var14 |
|
ItemStack |
var15 |
|
ItemStack |
var16 |
|
ItemStack |
var17 |
|
|
var2 |
|
long |
var3 |
|
TestRemoveItemSlotResult |
var4 |
|
ItemStack |
var4 |
|
ItemStack |
var5 |
|
int |
var5 |
|
ItemStack |
var5 |
|
ItemResourceType |
var5 |
|
Item |
var6 |
|
int |
var6 |
|
int |
var6 |
|
Item |
var6 |
|
int |
var7 |
|
int |
var7 |
|
|
var7 |
|
int |
var7 |
|
int |
var7 |
|
ItemResourceType |
var7 |
|
ItemResourceType |
var8 |
|
List |
var8 |
|
int |
var8 |
|
int |
var9 |
|
ResourceQuantity |
var9 |
|
int |
var9 |
Методы (24)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
ResourceSlotTransactionreturn new ResourceSlotTransaction(true, ActionType.REMOVE, var1, var5, var15, var16, var3, false, var4, var2, var10, var14) |
static |
int |
countResourceFromItemsint countResourceFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, boolean var2) |
static |
int |
countResourceFromSlotint countResourceFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, boolean var3) |
|
|
for for(ResourceQuantity var6 : var1) |
|
|
for for(ResourceQuantity var10 : var1) |
abstract |
|
for for(short var5 = 0; var5 < var0.getCapacity() |
|
|
if if(var5 == null) |
|
|
if if(var8 == null) |
|
|
if if(var3 && var10 > 0) |
|
|
if if(var14 <= 0) |
|
|
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(var7 == null) |
static |
ResourceTransaction |
internal_removeResourceResourceTransaction internal_removeResource(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, boolean var2, boolean var3, boolean var4) |
static |
ResourceSlotTransaction |
internal_removeResourceFromSlotResourceSlotTransaction internal_removeResourceFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, boolean var3, boolean var4) |
static |
ListTransaction<ResourceTransaction> |
internal_removeResourcesListTransaction<ResourceTransaction> internal_removeResources(@Nonnull ItemContainer var0, @Nullable List<ResourceQuantity> var1, boolean var2, boolean var3, boolean var4) |
static |
int |
testRemoveResourceFromItemsint testRemoveResourceFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, int var2, boolean var3) |
static |
int |
testRemoveResourceFromSlotint testRemoveResourceFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, int var3, boolean var4) |
static |
TestRemoveItemSlotResult |
testRemoveResourceSlotFromItemsTestRemoveItemSlotResult testRemoveResourceSlotFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, int var2, boolean var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.inventory.container;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.ItemResourceType;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.ResourceQuantity;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ActionType;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ListTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ResourceSlotTransaction;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ResourceTransaction;
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.stream.Collectors;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class InternalContainerUtilResource {
class="kw">public InternalContainerUtilResource() {
}
class="kw">protected class="kw">static ResourceSlotTransaction internal_removeResourceFromSlot(
@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, boolean var3, boolean var4
) {
ItemContainer.validateSlotIndex(var1, var0.getCapacity());
ItemContainer.validateQuantity(var2.getQuantity());
class="kw">return var0.writeAction(() -> {
if (var4 && var0.cantRemoveFromSlot(var1)) {
ItemStack var17 = var0.internal_getSlot(var1);
class="kw">return new ResourceSlotTransaction(false, ActionType.REMOVE, var1, var17, var17, null, var3, false, var4, var2, var2.getQuantity(), 0);
}
ItemStack var5 = var0.internal_getSlot(var1);
if (var5 == null) {
class="kw">return new ResourceSlotTransaction(false, ActionType.REMOVE, var1, null, null, null, var3, false, var4, var2, var2.getQuantity(), 0);
}
Item var6 = var5.getItem();
int var7 = var5.getQuantity();
ItemResourceType var8 = var2.getResourceType(var6);
if (var8 == null) {
class="kw">return new ResourceSlotTransaction(false, ActionType.REMOVE, var1, var5, var5, null, var3, false, var4, var2, var2.getQuantity(), 0);
}
int var9 = var8.quantity;
int var10 = var2.getQuantity();
int var11 = MathUtil.ceil((double)var10 / var9);
int var12 = Math.min(var7, var11);
int var13 = Math.max(var7 - var12, 0);
int var14 = var12 * var9;
var10 -= var14;
if (var3 && var10 > 0) {
class="kw">return new ResourceSlotTransaction(false, ActionType.REMOVE, var1, var5, var5, null, var3, false, var4, var2, var2.getQuantity(), 0);
}
if (var14 <= 0) {
class="kw">return new ResourceSlotTransaction(false, ActionType.REMOVE, var1, var5, var5, null, var3, false, var4, var2, var2.getQuantity(), 0);
}
ItemStack var15 = var5.withQuantity(var13);
var0.internal_setSlot(var1, var15);
ItemStack var16 = var5.withQuantity(var12);
class="kw">return new ResourceSlotTransaction(true, ActionType.REMOVE, var1, var5, var15, var16, var3, false, var4, var2, var10, var14);
});
}
class="kw">protected class="kw">static ResourceTransaction internal_removeResource(
@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, boolean var2, boolean var3, boolean var4
) {
class="kw">return var0.writeAction(() -> {
if (var2 || var3) {
int var5 = testRemoveResourceFromItems(var0, var1, var1.getQuantity(), var4);
if (var5 > 0) {
class="kw">return new ResourceTransaction(false, ActionType.REMOVE, var1, var1.getQuantity(), 0, var2, var3, var4, Collections.emptyList());
}
if (var3 && var5 < 0) {
class="kw">return new ResourceTransaction(false, ActionType.REMOVE, var1, var1.getQuantity(), 0, var2, var3, var4, Collections.emptyList());
}
}
List var11 = new ObjectArrayList();
int var6 = 0;
int var7 = var1.getQuantity();
for (short var8 = 0; var8 < var0.getCapacity() && var7 > 0; var8++) {
ResourceQuantity var9 = var1.clone(var7);
ResourceSlotTransaction var10 = internal_removeResourceFromSlot(var0, var8, var9, false, var4);
if (var10.succeeded()) {
var11.add(var10);
var7 = var10.getRemainder();
var6 += var10.getConsumed();
}
}
class="kw">return new ResourceTransaction(var7 != var1.getQuantity(), ActionType.REMOVE, var1, var7, var6, var2, var3, var4, var11);
});
}
class="kw">protected class="kw">static ListTransaction<ResourceTransaction> internal_removeResources(
@Nonnull ItemContainer var0, @Nullable List<ResourceQuantity> var1, boolean var2, boolean var3, boolean var4
) {
class="kw">return var1 != null && !var1.isEmpty()
? var0.writeAction(
() -> {
if (var2 || var3) {
for (ResourceQuantity var6 : var1) {
int var7 = testRemoveResourceFromItems(var0, var6, var6.getQuantity(), var4);
if (var7 > 0) {
class="kw">return new ListTransaction<>(
false,
var1.stream()
.map(
var4x -> new ResourceTransaction(
false, ActionType.REMOVE, var6, var6.getQuantity(), 0, var2, var3, var4, Collections.emptyList()
)
)
.collect(Collectors.toList())
);
}
if (var3 && var7 < 0) {
class="kw">return new ListTransaction<>(
false,
var1.stream()
.map(
var4x -> new ResourceTransaction(
false, ActionType.REMOVE, var6, var6.getQuantity(), 0, var2, var3, var4, Collections.emptyList()
)
)
.collect(Collectors.toList())
);
}
}
}
List var8 = new ObjectArrayList();
for (ResourceQuantity var10 : var1) {
var8.add(internal_removeResource(var0, var10, var2, var3, var4));
}
class="kw">return new ListTransaction<>(true, var8);
}
)
: ListTransaction.getEmptyTransaction(true);
}
class="kw">public class="kw">static int testRemoveResourceFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, int var2, boolean var3) {
for (short var4 = 0; var4 < var0.getCapacity() && var2 > 0; var4++) {
var2 = testRemoveResourceFromSlot(var0, var4, var1, var2, var3);
}
class="kw">return var2;
}
class="kw">public class="kw">static TestRemoveItemSlotResult testRemoveResourceSlotFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, int var2, boolean var3) {
TestRemoveItemSlotResult var4 = new TestRemoveItemSlotResult(var2);
for (short var5 = 0; var5 < var0.getCapacity() && var4.quantityRemaining > 0; var5++) {
int var6 = testRemoveResourceFromSlot(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 testRemoveResourceFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, int var3, boolean var4) {
if (var4 && var0.cantRemoveFromSlot(var1)) {
class="kw">return var3;
}
ItemStack var5 = var0.internal_getSlot(var1);
if (ItemStack.isEmpty(var5)) {
class="kw">return var3;
}
Item var6 = var5.getItem();
ItemResourceType var7 = var2.getResourceType(var6);
if (var7 == null) {
class="kw">return var3;
}
int var8 = var7.quantity;
int var9 = MathUtil.ceil((double)var3 / var8);
int var10 = var5.getQuantity();
int var11 = Math.min(var10, var9);
int var12 = var11 * var8;
class="kw">return var3 - var12;
}
class="kw">protected class="kw">static int countResourceFromSlot(@Nonnull ItemContainer var0, short var1, @Nonnull ResourceQuantity var2, boolean var3) {
if (var3 && var0.cantRemoveFromSlot(var1)) {
class="kw">return 0;
}
ItemStack var4 = var0.internal_getSlot(var1);
if (ItemStack.isEmpty(var4)) {
class="kw">return 0;
}
ItemResourceType var5 = var2.getResourceType(var4.getItem());
class="kw">return var5 == null ? 0 : (int)Math.min((long)var4.getQuantity() * var5.quantity, 2147483647L);
}
class="kw">protected class="kw">static int countResourceFromItems(@Nonnull ItemContainer var0, @Nonnull ResourceQuantity var1, boolean var2) {
long var3 = 0L;
for (short var5 = 0; var5 < var0.getCapacity(); var5++) {
var3 += countResourceFromSlot(var0, var5, var1, var2);
}
class="kw">return (int)Math.min(var3, 2147483647L);
}
}