diff options
Diffstat (limited to 'runtime/src/main/java')
9 files changed, 70 insertions, 61 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java index d3570aa5c..b0f2a7ebf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/DefaultRuntimePlugin.java @@ -194,7 +194,6 @@ public class DefaultRuntimePlugin implements REIPlugin { public EntryStackFavoriteEntry(EntryStack<?> stack) { this.stack = stack.copy(); - this.stack.setAmount(Fraction.ofWhole(127)); if (this.stack.getType() == VanillaEntryTypes.ITEM) this.stack.setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE); else if (this.stack.getType() == VanillaEntryTypes.FLUID) @@ -224,7 +223,7 @@ public class DefaultRuntimePlugin implements REIPlugin { } } if (entry.getType() == VanillaEntryTypes.ITEM) - entry.setAmount(Fraction.ofWhole(button != 1 && !Screen.hasShiftDown() ? 1 : ((ItemStack) entry.getValue()).getMaxStackSize())); + entry.<ItemStack>cast().getValue().setCount(button != 1 && !Screen.hasShiftDown() ? 1 : ((ItemStack) entry.getValue()).getMaxStackSize()); return ClientHelper.getInstance().tryCheatingEntry(entry); } diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java index 1c90ca6a2..569dcd67a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/FluidEntryDefinition.java @@ -57,7 +57,7 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; -public class FluidEntryDefinition implements EntryDefinition<FluidStack> { +public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntrySerializer<FluidStack> { private final EntryRenderer<FluidStack> renderer = new FluidEntryRenderer(); @Override @@ -81,16 +81,6 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack> { } @Override - public @NotNull Fraction getAmount(EntryStack<FluidStack> entry, FluidStack value) { - return value.getAmount(); - } - - @Override - public void setAmount(EntryStack<FluidStack> entry, FluidStack value, Fraction amount) { - value.setAmount(amount); - } - - @Override public boolean isEmpty(EntryStack<FluidStack> entry, FluidStack value) { return value.isEmpty(); } @@ -125,12 +115,28 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack> { } @Override - public @NotNull CompoundTag toTag(EntryStack<FluidStack> entry, FluidStack value) { + @Nullable + public EntrySerializer<FluidStack> getSerializer() { + return this; + } + + @Override + public boolean supportSaving() { + return true; + } + + @Override + public boolean supportReading() { + return true; + } + + @Override + public CompoundTag save(EntryStack<FluidStack> entry, FluidStack value) { return value.write(new CompoundTag()); } @Override - public @NotNull FluidStack fromTag(@NotNull CompoundTag tag) { + public FluidStack read(CompoundTag tag) { return FluidStack.read(tag); } @@ -178,7 +184,7 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack> { if (!entry.get(EntryStack.Settings.TOOLTIP_ENABLED).get() || entry.isEmpty()) return null; List<Component> toolTip = Lists.newArrayList(entry.asFormattedText()); - Fraction amount = entry.getAmount(); + Fraction amount = entry.getValue().getAmount(); if (!amount.isLessThan(Fraction.zero())) { String amountTooltip = entry.get(EntryStack.Settings.Fluid.AMOUNT_TOOLTIP).apply(entry); if (amountTooltip != null) diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java index 91b171c73..817786b1a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/plugin/entry/ItemEntryDefinition.java @@ -64,7 +64,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; -public class ItemEntryDefinition implements EntryDefinition<ItemStack> { +public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySerializer<ItemStack> { private final EntryRenderer<ItemStack> renderer = new ItemEntryRenderer(); @Override @@ -88,16 +88,6 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack> { } @Override - public @NotNull Fraction getAmount(EntryStack<ItemStack> entry, ItemStack value) { - return Fraction.ofWhole(value.getCount()); - } - - @Override - public void setAmount(EntryStack<ItemStack> entry, ItemStack value, Fraction amount) { - value.setCount(amount.intValue()); - } - - @Override public boolean isEmpty(EntryStack<ItemStack> entry, ItemStack value) { return value.isEmpty(); } @@ -186,12 +176,28 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack> { } @Override - public @NotNull CompoundTag toTag(EntryStack<ItemStack> entry, ItemStack value) { + @Nullable + public EntrySerializer<ItemStack> getSerializer() { + return this; + } + + @Override + public boolean supportSaving() { + return true; + } + + @Override + public boolean supportReading() { + return true; + } + + @Override + public CompoundTag save(EntryStack<ItemStack> entry, ItemStack value) { return value.save(new CompoundTag()); } @Override - public @NotNull ItemStack fromTag(@NotNull CompoundTag tag) { + public ItemStack read(CompoundTag tag) { return ItemStack.of(tag); } diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java index 02b3880f7..a4c770b95 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/EntryListEntryWidget.java @@ -87,7 +87,7 @@ public abstract class EntryListEntryWidget extends EntryWidget { } } if (entry.getValueType() == ItemStack.class) - entry.setAmount(Fraction.ofWhole(button != 1 && !Screen.hasShiftDown() ? 1 : ((ItemStack) entry.getValue()).getMaxStackSize())); + entry.<ItemStack>cast().getValue().setCount(button != 1 && !Screen.hasShiftDown() ? 1 : ((ItemStack) entry.getValue()).getMaxStackSize()); return ClientHelper.getInstance().tryCheatingEntry(entry); } diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java index 681818a97..715a7e0c2 100644 --- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java @@ -140,7 +140,8 @@ public class TabWidget extends WidgetWithBounds implements DraggableStackProvide } @Override - public @Nullable DraggableStack getHoveredStack(DraggingContext context, double mouseX, double mouseY) { + @Nullable + public DraggableStack getHoveredStack(DraggingContext context, double mouseX, double mouseY) { if (isShown() && renderer instanceof EntryStack && containsMouse(mouseX, mouseY)) { return new DraggableStack() { EntryStack<?> stack = ((EntryStack<?>) renderer).copy(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index c877da769..1f327fb7b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -154,7 +154,7 @@ public class ClientHelperImpl implements ClientHelper { Inventory inventory = Minecraft.getInstance().player.inventory; EntryStack<ItemStack> stack = entry.copy(); if (!inventory.getCarried().isEmpty() && EntryStacks.equalsIgnoreCount(EntryStacks.of(inventory.getCarried()), stack)) { - stack.setAmount(Fraction.ofWhole(Mth.clamp(stack.getAmount().intValue() + inventory.getCarried().getCount(), 1, stack.getValue().getMaxStackSize()))); + stack.getValue().setCount(Mth.clamp(stack.getValue().getCount() + inventory.getCarried().getCount(), 1, stack.getValue().getMaxStackSize())); } else if (!inventory.getCarried().isEmpty()) { return false; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java index bf521cf61..6c6da8652 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/TypedEntryStack.java @@ -71,16 +71,6 @@ public class TypedEntryStack<T> extends AbstractEntryStack<T> { } @Override - public Fraction getAmount() { - return getDefinition().getAmount(this, value); - } - - @Override - public void setAmount(Fraction amount) { - getDefinition().setAmount(this, value, amount); - } - - @Override public boolean isEmpty() { return getDefinition().isEmpty(this, value); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java index 8220ff971..59fa733ad 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java @@ -46,7 +46,7 @@ import java.util.Optional; import java.util.function.Supplier; @ApiStatus.Internal -public enum EmptyEntryDefinition implements EntryDefinition<Object> { +public enum EmptyEntryDefinition implements EntryDefinition<Object>, EntrySerializer<Object> { EMPTY(BuiltinEntryTypes.EMPTY, true, () -> Unit.INSTANCE, EmptyRenderer.INSTANCE), RENDERING(BuiltinEntryTypes.RENDERING, false, EmptyEntryDefinition::throwRendering, DeferredRenderer.INSTANCE); @@ -87,16 +87,6 @@ public enum EmptyEntryDefinition implements EntryDefinition<Object> { } @Override - public Fraction getAmount(EntryStack<Object> entry, Object value) { - return Fraction.zero(); - } - - @Override - public void setAmount(EntryStack<Object> entry, Object value, Fraction amount) { - - } - - @Override public boolean isEmpty(EntryStack<Object> entry, Object value) { return empty; } @@ -117,13 +107,9 @@ public enum EmptyEntryDefinition implements EntryDefinition<Object> { } @Override - public CompoundTag toTag(EntryStack<Object> entry, Object value) { - return new CompoundTag(); - } - - @Override - public Object fromTag(CompoundTag tag) { - return defaultValue.get(); + @Nullable + public EntrySerializer<Object> getSerializer() { + return this; } @Override @@ -142,6 +128,27 @@ public enum EmptyEntryDefinition implements EntryDefinition<Object> { return Collections.emptyList(); } + @Override + public boolean supportReading() { + return true; + } + + @Override + public boolean supportSaving() { + return true; + } + + @Override + public CompoundTag save(EntryStack<Object> entry, Object value) { + return new CompoundTag(); + } + + @Override + public Object read(CompoundTag tag) { + return defaultValue.get(); + } + + private enum EmptyRenderer implements EntryRenderer<Unit> { INSTANCE; diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java index 8ebd18416..6aecc2554 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java @@ -130,7 +130,7 @@ public class DefaultCategoryHandler implements TransferHandler { for (EntryStack<?> possibleStack : possibleStacks) { if (!done) { if (possibleStack.getType() == VanillaEntryTypes.ITEM) { - int invRequiredCount = possibleStack.getAmount().intValue(); + int invRequiredCount = possibleStack.<ItemStack>cast().getValue().getCount(); int key = RecipeFinder.getItemId((ItemStack) possibleStack.getValue()); while (invRequiredCount > 0 && recipeFinder.contains(key)) { invRequiredCount--; |
