Skip to content

Commit

Permalink
Merge pull request #205 from P3pp3rF1y/1.20.x-dev
Browse files Browse the repository at this point in the history
Release merge
  • Loading branch information
P3pp3rF1y authored Feb 12, 2024
2 parents d82e69d + 25139f2 commit 38312e4
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 121 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ org.gradle.daemon=false

mod_id=sophisticatedcore
mod_group_id=sophisticatedcore
mod_version=0.5.116
mod_version=0.6.3
sonar_project_key=sophisticatedcore:SophisticatedCore
github_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedCore

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,13 @@
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.p3pp3rf1y.sophisticatedcore.api.IStorageWrapper;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.Dimension;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.GuiHelper;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.TextureBlitData;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.TranslationHelper;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.UV;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.*;
import net.p3pp3rf1y.sophisticatedcore.upgrades.IUpgradeWrapper;
import net.p3pp3rf1y.sophisticatedcore.util.CountAbbreviator;
import net.p3pp3rf1y.sophisticatedcore.util.InventoryHelper;

import javax.annotation.Nullable;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
Expand Down Expand Up @@ -149,10 +146,12 @@ private int getTooltipWidth(Component component) {
}

private void addMultiplierTooltip(IStorageWrapper wrapper) {
int multiplier = wrapper.getInventoryHandler().getStackSizeMultiplier();
double multiplier = wrapper.getInventoryHandler().getStackSizeMultiplier();
if (multiplier > 1) {
DecimalFormat df = new DecimalFormat("0.###");

tooltipLines.add(Component.translatable(TranslationHelper.INSTANCE.translItemTooltip(STORAGE_ITEM) + ".stack_multiplier",
Component.literal(Integer.toString(multiplier)).withStyle(ChatFormatting.WHITE)
Component.literal(df.format(multiplier)).withStyle(ChatFormatting.WHITE)
).withStyle(ChatFormatting.GREEN));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,7 @@
import net.minecraft.world.Container;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.ClickAction;
import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.ContainerListener;
import net.minecraft.world.inventory.ContainerSynchronizer;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.inventory.ResultSlot;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.inventory.*;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
Expand All @@ -31,11 +23,7 @@
import net.p3pp3rf1y.sophisticatedcore.api.IStorageWrapper;
import net.p3pp3rf1y.sophisticatedcore.client.gui.utils.TranslationHelper;
import net.p3pp3rf1y.sophisticatedcore.inventory.InventoryHandler;
import net.p3pp3rf1y.sophisticatedcore.network.PacketHandler;
import net.p3pp3rf1y.sophisticatedcore.network.SyncAdditionalSlotInfoMessage;
import net.p3pp3rf1y.sophisticatedcore.network.SyncContainerClientDataMessage;
import net.p3pp3rf1y.sophisticatedcore.network.SyncEmptySlotIconsMessage;
import net.p3pp3rf1y.sophisticatedcore.network.SyncSlotChangeErrorMessage;
import net.p3pp3rf1y.sophisticatedcore.network.*;
import net.p3pp3rf1y.sophisticatedcore.settings.ISlotColorCategory;
import net.p3pp3rf1y.sophisticatedcore.settings.SettingsHandler;
import net.p3pp3rf1y.sophisticatedcore.settings.SettingsManager;
Expand All @@ -52,16 +40,7 @@
import javax.annotation.Nullable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.Set;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Supplier;

Expand Down Expand Up @@ -463,7 +442,7 @@ private boolean processOverflowForAnythingOverSlotMaxSize(ItemStack cursorStack,
}

private boolean processOverflowIfSlotWithSameItemFound(int slotId, ItemStack cursorStack, Consumer<ItemStack> updateCursorStack) {
for (IOverflowResponseUpgrade overflowUpgrade : storageWrapper.getUpgradeHandler().getWrappersThatImplement(IOverflowResponseUpgrade.class)) {
for (IOverflowResponseUpgrade overflowUpgrade : storageWrapper.getUpgradeHandler().getWrappersThatImplementFromMainStorage(IOverflowResponseUpgrade.class)) {
if (overflowUpgrade.stackMatchesFilter(cursorStack) && overflowUpgrade.worksInGui()
&& findSlotWithMatchingStack(slotId, cursorStack, updateCursorStack, overflowUpgrade)) {
return true;
Expand Down Expand Up @@ -921,7 +900,7 @@ private void refreshAllSlots() {

protected ItemStack processOverflowLogic(ItemStack stack) {
ItemStack result = stack;
for (IOverflowResponseUpgrade overflowUpgrade : storageWrapper.getUpgradeHandler().getWrappersThatImplement(IOverflowResponseUpgrade.class)) {
for (IOverflowResponseUpgrade overflowUpgrade : storageWrapper.getUpgradeHandler().getWrappersThatImplementFromMainStorage(IOverflowResponseUpgrade.class)) {
if (overflowUpgrade.worksInGui()) {
result = overflowUpgrade.onOverflow(result);
if (result.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.function.Function;

public abstract class ControllerBlockEntityBase extends BlockEntity implements IItemHandlerModifiable {
Expand Down Expand Up @@ -103,6 +95,10 @@ public void onLoad() {
}
}

public boolean isStorageConnected(BlockPos storagePos) {
return storagePositions.contains(storagePos);
}

public void searchAndAddStorages() {
Set<BlockPos> positionsToCheck = new HashSet<>();
for (Direction dir : Direction.values()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,15 @@ default void registerWithControllerOnLoad() {
Level level = getStorageBlockLevel();
if (!level.isClientSide()) {
WorldHelper.getLoadedBlockEntity(level, controllerPos, ControllerBlockEntityBase.class)
.ifPresent(controller -> controller.addStorageStacksAndRegisterListeners(getStorageBlockPos()));
.ifPresent(controller -> {
if (controller.isStorageConnected(getStorageBlockPos())) {
controller.addStorageStacksAndRegisterListeners(getStorageBlockPos());
} else {
removeControllerPos();
tryToAddToController();
}
}
);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
Expand All @@ -48,7 +42,7 @@ public abstract class InventoryHandler extends ItemStackHandler implements ITrac

private int baseSlotLimit;
private int slotLimit;
private int maxStackSizeMultiplier;
private double maxStackSizeMultiplier;
private boolean isInitializing;
private final StackUpgradeConfig stackUpgradeConfig;
private final InventoryPartitioner inventoryPartitioner;
Expand Down Expand Up @@ -203,7 +197,7 @@ public boolean isFilterItem(Item item) {
public void setBaseSlotLimit(int baseSlotLimit) {
slotLimitInitialized = false; // not the most ideal of places to do this, but base slot limit is set when upgrades change and that's when slot limit needs to be reinitialized as well
this.baseSlotLimit = baseSlotLimit;
maxStackSizeMultiplier = baseSlotLimit / 64;
maxStackSizeMultiplier = baseSlotLimit / 64f;

if (inventoryPartitioner != null) {
inventoryPartitioner.onSlotLimitChange();
Expand Down Expand Up @@ -409,7 +403,7 @@ public CompoundTag serializeNBT() {
return nbt;
}

public int getStackSizeMultiplier() {
public double getStackSizeMultiplier() {
return maxStackSizeMultiplier;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
public class StackUpgradeItem extends UpgradeItemBase<StackUpgradeItem.Wrapper> {
public static final UpgradeType<Wrapper> TYPE = new UpgradeType<>(Wrapper::new);
public static final UpgradeGroup UPGRADE_GROUP = new UpgradeGroup("stack_upgrades", TranslationHelper.INSTANCE.translUpgradeGroup("stack_upgrades"));
private final int stackSizeMultiplier;
private final double stackSizeMultiplier;

public StackUpgradeItem(int stackSizeMultiplier, IUpgradeCountLimitConfig upgradeTypeLimitConfig) {
public StackUpgradeItem(double stackSizeMultiplier, IUpgradeCountLimitConfig upgradeTypeLimitConfig) {
super(upgradeTypeLimitConfig);
this.stackSizeMultiplier = stackSizeMultiplier;
}

public static int getInventorySlotLimit(IStorageWrapper storageWrapper) {
int multiplier = storageWrapper.getBaseStackSizeMultiplier();
double multiplier = storageWrapper.getBaseStackSizeMultiplier();

for (Wrapper stackWrapper : storageWrapper.getUpgradeHandler().getTypeWrappers(TYPE)) {
if (Integer.MAX_VALUE / stackWrapper.getStackSizeMultiplier() < multiplier) {
Expand All @@ -31,15 +31,15 @@ public static int getInventorySlotLimit(IStorageWrapper storageWrapper) {
multiplier *= stackWrapper.getStackSizeMultiplier();
}

return Integer.MAX_VALUE / 64 < multiplier ? Integer.MAX_VALUE : multiplier * 64;
return Integer.MAX_VALUE / 64D < multiplier ? Integer.MAX_VALUE : (int) (multiplier * 64);
}

@Override
public UpgradeType<Wrapper> getType() {
return TYPE;
}

int getStackSizeMultiplier() {
double getStackSizeMultiplier() {
return stackSizeMultiplier;
}

Expand All @@ -49,8 +49,8 @@ public UpgradeSlotChangeResult canRemoveUpgradeFrom(IStorageWrapper storageWrapp
return new UpgradeSlotChangeResult.Success();
}

int currentInventoryMultiplier = getInventorySlotLimit(storageWrapper) / 64;
int multiplierWhenRemoved = currentInventoryMultiplier / stackSizeMultiplier;
double currentInventoryMultiplier = getInventorySlotLimit(storageWrapper) / 64D;
double multiplierWhenRemoved = currentInventoryMultiplier / stackSizeMultiplier;
return isMultiplierHighEnough(storageWrapper, multiplierWhenRemoved);
}

Expand All @@ -69,17 +69,17 @@ public UpgradeSlotChangeResult canSwapUpgradeFor(ItemStack upgradeStackToPut, IS
}

int currentInventoryMultiplier = getInventorySlotLimit(storageWrapper) / 64;
int multiplierWhenRemoved = currentInventoryMultiplier / stackSizeMultiplier;
double multiplierWhenRemoved = currentInventoryMultiplier / stackSizeMultiplier;

return isMultiplierHighEnough(storageWrapper, multiplierWhenRemoved * otherStackUpgradeItem.stackSizeMultiplier);
}

private UpgradeSlotChangeResult isMultiplierHighEnough(IStorageWrapper storageWrapper, int multiplier) {
private UpgradeSlotChangeResult isMultiplierHighEnough(IStorageWrapper storageWrapper, double multiplier) {
Set<Integer> slotsOverMultiplier = new HashSet<>();

for (int slot = 0; slot < storageWrapper.getInventoryHandler().getSlots(); slot++) {
ItemStack stack = storageWrapper.getInventoryHandler().getSlotStack(slot);
int stackMultiplierNeeded = (stack.getCount() / stack.getMaxStackSize()) + (stack.getCount() % stack.getMaxStackSize() != 0 ? 1 : 0);
double stackMultiplierNeeded = (double) stack.getCount() / stack.getMaxStackSize();
if (stackMultiplierNeeded > multiplier) {
slotsOverMultiplier.add(slot);
}
Expand Down Expand Up @@ -110,7 +110,7 @@ protected Wrapper(IStorageWrapper storageWrapper, ItemStack upgrade, Consumer<It
super(storageWrapper, upgrade, upgradeSaveHandler);
}

public int getStackSizeMultiplier() {
public double getStackSizeMultiplier() {
return upgradeItem.getStackSizeMultiplier();
}

Expand Down
Loading

0 comments on commit 38312e4

Please sign in to comment.