From 38adc47c6f18b1e599886decae69c400bbaf2eca Mon Sep 17 00:00:00 2001 From: P3pp3rF1y Date: Tue, 6 Feb 2024 23:38:44 +0100 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E2=9C=A8=20Add=20support=20for=20s?= =?UTF-8?q?tack=20upgrades=20with=20decimal=20multiplier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../ClientStorageContentsTooltipBase.java | 13 +++++------ .../inventory/InventoryHandler.java | 14 ++++-------- .../upgrades/stack/StackUpgradeItem.java | 22 +++++++++---------- 4 files changed, 22 insertions(+), 29 deletions(-) diff --git a/gradle.properties b/gradle.properties index b57a8166..894c5e93 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.daemon=false mod_id=sophisticatedcore mod_group_id=sophisticatedcore -mod_version=0.5.116 +mod_version=0.6.0 sonar_project_key=sophisticatedcore:SophisticatedCore github_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedCore diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/client/render/ClientStorageContentsTooltipBase.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/client/render/ClientStorageContentsTooltipBase.java index 19b5c77e..99dafcf3 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/client/render/ClientStorageContentsTooltipBase.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/client/render/ClientStorageContentsTooltipBase.java @@ -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; @@ -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)); } } diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/inventory/InventoryHandler.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/inventory/InventoryHandler.java index 4bf03b6f..191a10f5 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/inventory/InventoryHandler.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/inventory/InventoryHandler.java @@ -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; @@ -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; @@ -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(); @@ -409,7 +403,7 @@ public CompoundTag serializeNBT() { return nbt; } - public int getStackSizeMultiplier() { + public double getStackSizeMultiplier() { return maxStackSizeMultiplier; } diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/upgrades/stack/StackUpgradeItem.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/upgrades/stack/StackUpgradeItem.java index 250a6c5c..95909003 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/upgrades/stack/StackUpgradeItem.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/upgrades/stack/StackUpgradeItem.java @@ -14,15 +14,15 @@ public class StackUpgradeItem extends UpgradeItemBase { public static final UpgradeType 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) { @@ -31,7 +31,7 @@ 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 @@ -39,7 +39,7 @@ public UpgradeType getType() { return TYPE; } - int getStackSizeMultiplier() { + double getStackSizeMultiplier() { return stackSizeMultiplier; } @@ -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); } @@ -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 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); } @@ -110,7 +110,7 @@ protected Wrapper(IStorageWrapper storageWrapper, ItemStack upgrade, Consumer Date: Sat, 10 Feb 2024 22:45:54 +0100 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E2=9C=A8=20Add=20Copper=20variants?= =?UTF-8?q?=20of=20chests,=20barrels=20and=20shulker=20boxes=20with=20rela?= =?UTF-8?q?ted=20tier=20upgrades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 894c5e93..4d582c9b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.daemon=false mod_id=sophisticatedcore mod_group_id=sophisticatedcore -mod_version=0.6.0 +mod_version=0.6.1 sonar_project_key=sophisticatedcore:SophisticatedCore github_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedCore From d4694c607d9f9f9768c43c9d4d21f7e57624d9f9 Mon Sep 17 00:00:00 2001 From: P3pp3rF1y Date: Sun, 11 Feb 2024 23:37:50 +0100 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fix=20overflow=20void?= =?UTF-8?q?=20upgrades=20in=20incepted=20backpacks=20to=20not=20affect=20i?= =?UTF-8?q?tems=20being=20put=20into=20main=20backpacks=20gui=20(by=20effe?= =?UTF-8?q?ctively=20deleting=20items=20that=20already=20exist=20in=20anot?= =?UTF-8?q?her=20slot=20as=20if=20the=20void=20upgrade=20was=20in=20main?= =?UTF-8?q?=20backpack)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../common/gui/StorageContainerMenuBase.java | 31 +++---------------- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4d582c9b..abe8029c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.daemon=false mod_id=sophisticatedcore mod_group_id=sophisticatedcore -mod_version=0.6.1 +mod_version=0.6.2 sonar_project_key=sophisticatedcore:SophisticatedCore github_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedCore diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/common/gui/StorageContainerMenuBase.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/common/gui/StorageContainerMenuBase.java index 9ab05b41..d2cd9b5d 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/common/gui/StorageContainerMenuBase.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/common/gui/StorageContainerMenuBase.java @@ -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; @@ -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; @@ -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; @@ -463,7 +442,7 @@ private boolean processOverflowForAnythingOverSlotMaxSize(ItemStack cursorStack, } private boolean processOverflowIfSlotWithSameItemFound(int slotId, ItemStack cursorStack, Consumer 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; @@ -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()) { From 85ca71e5e0fd14e9d26d36151334840e8514fb0e Mon Sep 17 00:00:00 2001 From: P3pp3rF1y Date: Mon, 12 Feb 2024 18:03:13 +0100 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fix=20storage=20remov?= =?UTF-8?q?ed=20from=20controlled=20multi=20block=20using=20Carry=20On=20m?= =?UTF-8?q?od=20and=20to=20properly=20try=20to=20register=20to=20controlle?= =?UTF-8?q?r=20again=20when=20put=20back=20down?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../controller/ControllerBlockEntityBase.java | 14 +++++--------- .../controller/IControllableStorage.java | 10 +++++++++- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index abe8029c..264d4762 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.daemon=false mod_id=sophisticatedcore mod_group_id=sophisticatedcore -mod_version=0.6.2 +mod_version=0.6.3 sonar_project_key=sophisticatedcore:SophisticatedCore github_package_url=https://maven.pkg.github.com/P3pp3rF1y/SophisticatedCore diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/ControllerBlockEntityBase.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/ControllerBlockEntityBase.java index 1d412fcf..b531b9da 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/ControllerBlockEntityBase.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/ControllerBlockEntityBase.java @@ -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 { @@ -103,6 +95,10 @@ public void onLoad() { } } + public boolean isStorageConnected(BlockPos storagePos) { + return storagePositions.contains(storagePos); + } + public void searchAndAddStorages() { Set positionsToCheck = new HashSet<>(); for (Direction dir : Direction.values()) { diff --git a/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/IControllableStorage.java b/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/IControllableStorage.java index 004d7449..dd0edc33 100644 --- a/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/IControllableStorage.java +++ b/src/main/java/net/p3pp3rf1y/sophisticatedcore/controller/IControllableStorage.java @@ -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(); + } + } + ); } }); } From 25139f2df8039b0a4cbc697240982b5616099364 Mon Sep 17 00:00:00 2001 From: soluto Date: Sun, 31 Dec 2023 15:27:54 +0100 Subject: [PATCH 5/5] Small changes --- .../assets/sophisticatedcore/lang/de_de.json | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/main/resources/assets/sophisticatedcore/lang/de_de.json b/src/main/resources/assets/sophisticatedcore/lang/de_de.json index 07bc3741..268300a6 100644 --- a/src/main/resources/assets/sophisticatedcore/lang/de_de.json +++ b/src/main/resources/assets/sophisticatedcore/lang/de_de.json @@ -8,7 +8,7 @@ "item.sophisticatedcore.storage.tooltip.inventory": "Inventar", "item.sophisticatedcore.storage.tooltip.empty": "Keine Upgrades oder Inventarinhalte", "item.sophisticatedcore.storage.tooltip.press_for_contents": "Drücke <%s>, um den Inhalt anzuzeigen", - "item.sophisticatedcore.storage.tooltip.shift": "Linke Verschiebung", + "item.sophisticatedcore.storage.tooltip.shift": "Shift-Taste", "gui.sophisticatedcore.settings.no_sort": "Keine Sortierung", "gui.sophisticatedcore.settings.no_sort.tooltip": "Keine Sortierplatzeinstellungen", "gui.sophisticatedcore.settings.no_sort.tooltip_detail": "Erlaubt die Auswahl von Slots, die beim Sortieren ignoriert werden\nTab öffnen, um Slot-Einstellungen zu ändern", @@ -21,57 +21,57 @@ "gui.sophisticatedcore.settings.item_display.tooltip": "Elementanzeigeeinstellungen", "gui.sophisticatedcore.settings.item_display.tooltip_detail": "Ermöglicht die Auswahl eines Platzes, der verwendet wird, um seinen Gegenstand auf dem Rucksackmodell anzuzeigen", "gui.sophisticatedcore.settings.item_display.tooltip_open_detail": "Ermöglicht die Auswahl eines Slots, der verwendet wird, um seinen Gegenstand oben auf dem Rucksackmodell anzuzeigen\nSlot auswählen = Linksklick/Ziehen\nSlot abwählen = Rechtsklick/Ziehen", - "gui.sophisticatedcore.upgrades.pickup": "Abholung", - "gui.sophisticatedcore.upgrades.advanced_pickup": "Adv. Abholung", + "gui.sophisticatedcore.upgrades.pickup": "Pickup", + "gui.sophisticatedcore.upgrades.advanced_pickup": "Erw. Pickup", "gui.sophisticatedcore.upgrades.filter": "Filter", - "gui.sophisticatedcore.upgrades.advanced_filter": "Adv. Filter", + "gui.sophisticatedcore.upgrades.advanced_filter": "Erw. Filter", "gui.sophisticatedcore.upgrades.magnet": "Magnet", - "gui.sophisticatedcore.upgrades.advanced_magnet": "Erweiterter Magnet", - "gui.sophisticatedcore.upgrades.feeding": "Fütterung", - "gui.sophisticatedcore.upgrades.advanced_feeding": "Adv. Füttern", - "gui.sophisticatedcore.upgrades.compacting": "Compa...", - "gui.sophisticatedcore.upgrades.void": "Void", - "gui.sophisticatedcore.upgrades.advanced_void": "Adv. Void", - "gui.sophisticatedcore.upgrades.advanced_compacting": "Adv. Comp...", - "gui.sophisticatedcore.upgrades.smelting": "Schmelzen", - "gui.sophisticatedcore.upgrades.auto_smelting": "Automatisch schmelzen", - "gui.sophisticatedcore.upgrades.smoking": "Rauchen", - "gui.sophisticatedcore.upgrades.auto_smoking": "Automatisches Rauchen", - "gui.sophisticatedcore.upgrades.blasting": "Sprengen", - "gui.sophisticatedcore.upgrades.auto_blasting": "Auto-blast", - "gui.sophisticatedcore.upgrades.crafting": "Handwerk", - "gui.sophisticatedcore.upgrades.stonecutter": "Steinmetz", + "gui.sophisticatedcore.upgrades.advanced_magnet": "Erw. Magnet", + "gui.sophisticatedcore.upgrades.feeding": "Futter", + "gui.sophisticatedcore.upgrades.advanced_feeding": "Erw. Futter", + "gui.sophisticatedcore.upgrades.compacting": "Presse", + "gui.sophisticatedcore.upgrades.void": "Leere", + "gui.sophisticatedcore.upgrades.advanced_void": "Erw. Leere", + "gui.sophisticatedcore.upgrades.advanced_compacting": "Erw. Presse", + "gui.sophisticatedcore.upgrades.smelting": "Ofen", + "gui.sophisticatedcore.upgrades.auto_smelting": "Auto-Ofen", + "gui.sophisticatedcore.upgrades.smoking": "Räucherofen", + "gui.sophisticatedcore.upgrades.auto_smoking": "Auto-Räucherofen", + "gui.sophisticatedcore.upgrades.blasting": "Schmelzofen", + "gui.sophisticatedcore.upgrades.auto_blasting": "Auto-Schmelzofen", + "gui.sophisticatedcore.upgrades.crafting": "Werkbank", + "gui.sophisticatedcore.upgrades.stonecutter": "Steinsäge", "gui.sophisticatedcore.upgrades.jukebox": "Jukebox", "gui.sophisticatedcore.upgrades.tank": "Tank", "gui.sophisticatedcore.upgrades.pump": "Pumpe", - "gui.sophisticatedcore.upgrades.advanced_pump": "Erweiterte Pumpe", - "gui.sophisticatedcore.upgrades.xp_pump": "Exp. Pumpe", - "gui.sophisticatedcore.upgrades.battery": "Batt.", - "gui.sophisticatedcore.upgrades.pickup.tooltip": "Abholeinstellungen", - "gui.sophisticatedcore.upgrades.advanced_pickup.tooltip": "Erweiterte Abholeinstellungen", - "gui.sophisticatedcore.upgrades.filter.tooltip": "Filtereinstellungen", - "gui.sophisticatedcore.upgrades.advanced_filter.tooltip": "Erweiterte Filtereinstellungen", - "gui.sophisticatedcore.upgrades.magnet.tooltip": "Magneteinstellungen", - "gui.sophisticatedcore.upgrades.advanced_magnet.tooltip": "Erweiterte Magneteinstellungen", + "gui.sophisticatedcore.upgrades.advanced_pump": "Erw. Pumpe", + "gui.sophisticatedcore.upgrades.xp_pump": "XP Pumpe", + "gui.sophisticatedcore.upgrades.battery": "Akku", + "gui.sophisticatedcore.upgrades.pickup.tooltip": "Pickup-Einstellungen", + "gui.sophisticatedcore.upgrades.advanced_pickup.tooltip": "Erweiterte Pickup-Einstellungen", + "gui.sophisticatedcore.upgrades.filter.tooltip": "Filter-Einstellungen", + "gui.sophisticatedcore.upgrades.advanced_filter.tooltip": "Erweiterte Filter-Einstellungen", + "gui.sophisticatedcore.upgrades.magnet.tooltip": "Magnet-Einstellungen", + "gui.sophisticatedcore.upgrades.advanced_magnet.tooltip": "Erweiterte Magnet-Einstellungen", "gui.sophisticatedcore.upgrades.feeding.tooltip": "Fütterungseinstellungen", "gui.sophisticatedcore.upgrades.advanced_feeding.tooltip": "Erweiterte Fütterungseinstellungen", "gui.sophisticatedcore.upgrades.compacting.tooltip": "Komprimierungseinstellungen", "gui.sophisticatedcore.upgrades.advanced_compacting.tooltip": "Erweiterte Komprimierungseinstellungen", - "gui.sophisticatedcore.upgrades.void.tooltip": "Void-Einstellungen", - "gui.sophisticatedcore.upgrades.advanced_void.tooltip": "Erweiterte Void-Einstellungen", - "gui.sophisticatedcore.upgrades.smelting.tooltip": "Schmelzen", - "gui.sophisticatedcore.upgrades.auto_smelting.tooltip": "Automatisches Schmelzen", - "gui.sophisticatedcore.upgrades.smoking.tooltip": "Rauchen", - "gui.sophisticatedcore.upgrades.auto_smoking.tooltip": "Automatisches Rauchen", - "gui.sophisticatedcore.upgrades.blasting.tooltip": "Sprengen", - "gui.sophisticatedcore.upgrades.auto_blasting.tooltip": "Automatisches Sprengen", - "gui.sophisticatedcore.upgrades.crafting.tooltip": "Herstellen", - "gui.sophisticatedcore.upgrades.stonecutter.tooltip": "Steinmetz", + "gui.sophisticatedcore.upgrades.void.tooltip": "Leeren-Einstellungen", + "gui.sophisticatedcore.upgrades.advanced_void.tooltip": "Erweiterte Leeren-Einstellungen", + "gui.sophisticatedcore.upgrades.smelting.tooltip": "Ofen", + "gui.sophisticatedcore.upgrades.auto_smelting.tooltip": "Automatischer Ofen", + "gui.sophisticatedcore.upgrades.smoking.tooltip": "Räucherofen", + "gui.sophisticatedcore.upgrades.auto_smoking.tooltip": "Automatischer Räucherofen", + "gui.sophisticatedcore.upgrades.blasting.tooltip": "Schmelzofen", + "gui.sophisticatedcore.upgrades.auto_blasting.tooltip": "Automatischer Schmelzofen", + "gui.sophisticatedcore.upgrades.crafting.tooltip": "Werkbank", + "gui.sophisticatedcore.upgrades.stonecutter.tooltip": "Steinsäge", "gui.sophisticatedcore.upgrades.jukebox.tooltip": "Jukebox", "gui.sophisticatedcore.upgrades.tank.tooltip": "Tank", "gui.sophisticatedcore.upgrades.pump.tooltip": "Pumpe", "gui.sophisticatedcore.upgrades.advanced_pump.tooltip": "Erweiterte Pumpe", - "gui.sophisticatedcore.upgrades.xp_pump.tooltip": "Pump erleben", + "gui.sophisticatedcore.upgrades.xp_pump.tooltip": "XP Pumpe", "gui.sophisticatedcore.upgrades.tank.contents_tooltip": "%s mB von %s mB", "gui.sophisticatedcore.upgrades.tank.xp_contents_tooltip": "%s von %s XP-Leveln", "gui.sophisticatedcore.upgrades.battery.tooltip": "Akku", @@ -100,7 +100,7 @@ "gui.sophisticatedcore.upgrades.buttons.direction_both": "Eingabe & Ausgabe", "gui.sophisticatedcore.upgrades.buttons.direction_input": "Eingabe", "gui.sophisticatedcore.upgrades.buttons.direction_output": "Ausgabe", - "gui.sophisticatedcore.upgrades.buttons.compact_only_uncraftable": "Kompakt nur nicht herstellbar", + "gui.sophisticatedcore.upgrades.buttons.compact_only_uncraftable": "Nur dekomprimierbares Komprimieren", "gui.sophisticatedcore.upgrades.buttons.compact_anything": "Alles komprimieren", "gui.sophisticatedcore.upgrades.buttons.works_in_gui": "Funktioniert auch in GUI", "gui.sophisticatedcore.upgrades.buttons.only_automatic": "Funktioniert nur mit anderen Upgrades/Automatisierungen", @@ -111,11 +111,11 @@ "gui.sophisticatedcore.upgrades.buttons.hunger_level_full": "Füttere nur, wenn der Spieler hungrig genug ist,\num überhaupt keine Hungerpunkte des Essens zu verschwenden", "gui.sophisticatedcore.upgrades.buttons.feed_immediately_when_hurt": "Spieler sofort füttern, wenn er verletzt ist\nIgnoriert die Hungereinstellung, wenn der Spieler nicht bei maximaler Gesundheit ist", "gui.sophisticatedcore.upgrades.buttons.do_not_consider_health": "Gesundheit nicht berücksichtigen\nIgnoriert die Gesundheit des Spielers und füttert nur basierend auf der Hungereinstellung", - "gui.sophisticatedcore.upgrades.buttons.pickup_items": "Gegenstände abholen", - "gui.sophisticatedcore.upgrades.buttons.do_not_pickup_items": "Gegenstände nicht abholen", - "gui.sophisticatedcore.upgrades.buttons.pickup_xp": "Abholerlebnis", + "gui.sophisticatedcore.upgrades.buttons.pickup_items": "Gegenstände einsammeln", + "gui.sophisticatedcore.upgrades.buttons.do_not_pickup_items": "Gegenstände nicht einsammeln", + "gui.sophisticatedcore.upgrades.buttons.pickup_xp": "XP einsammeln", "gui.sophisticatedcore.upgrades.buttons.pickup_xp.detail": "Tank-Upgrade erforderlich", - "gui.sophisticatedcore.upgrades.buttons.do_not_pickup_xp": "Erfahrung nicht abholen", + "gui.sophisticatedcore.upgrades.buttons.do_not_pickup_xp": "XP nicht einsammeln", "gui.sophisticatedcore.upgrades.buttons.pump_input": "Eingabe", "gui.sophisticatedcore.upgrades.buttons.pump_output": "Ausgabe", "gui.sophisticatedcore.upgrades.buttons.void_overflow": "Void-Überlauf", @@ -125,18 +125,18 @@ "gui.sophisticatedcore.upgrades.buttons.do_not_interact_with_world": "Nicht mit der Welt interagieren", "gui.sophisticatedcore.upgrades.buttons.interact_with_hand": "Mit\nFlüssigkeitsbehälter in der Hand interagieren", "gui.sophisticatedcore.upgrades.buttons.do_not_interact_with_hand": "Interagiere nicht mit\nFlüssigkeitsbehälter in der Hand", - "gui.sophisticatedcore.upgrades.buttons.xp_pump_input": "Pump-Erfahrung vom Spieler", - "gui.sophisticatedcore.upgrades.buttons.xp_pump_output": "Erfahrung zum Spieler pumpen", + "gui.sophisticatedcore.upgrades.buttons.xp_pump_input": "XP von Spieler nehmen", + "gui.sophisticatedcore.upgrades.buttons.xp_pump_output": "XP zum Spieler übertragen", "gui.sophisticatedcore.upgrades.buttons.xp_pump_off": "Pumpe aus", - "gui.sophisticatedcore.upgrades.buttons.store_all_experience": "Alle Erfahrungen speichern", - "gui.sophisticatedcore.upgrades.buttons.take_all_experience": "Alle Erfahrungen mitnehmen", - "gui.sophisticatedcore.upgrades.buttons.store_levels": "%s Level speichern", - "gui.sophisticatedcore.upgrades.buttons.store_levels.controls": "Scrollen, um # der Ebenen zu ändern", - "gui.sophisticatedcore.upgrades.buttons.take_levels": "Nimm %s Level", + "gui.sophisticatedcore.upgrades.buttons.store_all_experience": "Alle XP von Spieler nehmen", + "gui.sophisticatedcore.upgrades.buttons.take_all_experience": "Alle XP zum Spieler übertragen", + "gui.sophisticatedcore.upgrades.buttons.store_levels": "%s Level von Spieler nehmen", + "gui.sophisticatedcore.upgrades.buttons.store_levels.controls": "Scrollen, um die Anzahl der Level zu ändern", + "gui.sophisticatedcore.upgrades.buttons.take_levels": "%s Level an Spieler abgeben", "gui.sophisticatedcore.upgrades.buttons.take_levels.controls": "Scrollen, um die Anzahl der Level zu ändern", - "gui.sophisticatedcore.upgrades.buttons.mend_items": "Gegenstände durch Ausbessern reparieren", + "gui.sophisticatedcore.upgrades.buttons.mend_items": "Gegenstände reparieren", "gui.sophisticatedcore.upgrades.buttons.do_not_mend_items": "Gegenstände nicht reparieren", - "gui.sophisticatedcore.upgrades.controls.xp_level_select": "%s lvls", + "gui.sophisticatedcore.upgrades.controls.xp_level_select": "%s Level", "gui.sophisticatedcore.upgrades.controls.xp_level_select.tooltip": "Level, bei dem die Pumpe stoppt", "gui.sophisticatedcore.upgrades.controls.xp_level_select.tooltip.controls": "Zum Ändern scrollen", "gui.sophisticatedcore.upgrades.slots.tank_output.tooltip": "Ausgabe", @@ -156,10 +156,10 @@ "gui.sophisticatedcore.settings.buttons.context_player": "Spieler", "gui.sophisticatedcore.settings.buttons.context_player.tooltip": "Spielerlevel-Einstellungen", "gui.sophisticatedcore.settings.buttons.context_player.tooltip_detail": "Auf alle Rucksäcke anwenden, sofern nicht überschrieben", - "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.on": "Umschalt-Klick zuerst in geöffneten Tab", + "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.on": "Shift-Klick zuerst in geöffneten Tab", "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.off": "Zuerst ins Inventar klicken", - "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.on.tooltip": "Umschaltklick vom Rucksack/Inventar versucht zuerst, den Stapel in einen offenen Tab zu legen und erst dann ins Inventar/Rucksack.", - "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.off.tooltip": "Umschaltklick von Rucksack/Inventar versucht zuerst, den Stapel in Inventar/Rucksack zu legen und erst dann in einen offenen Tab.", + "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.on.tooltip": "Shift-Klick vom Rucksack/Inventar versucht zuerst, den Stapel in einen offenen Tab zu legen und erst dann ins Inventar/Rucksack.", + "gui.sophisticatedcore.settings.buttons.shift_click_open_tab.off.tooltip": "Shift-Klick von Rucksack/Inventar versucht zuerst, den Stapel in Inventar/Rucksack zu legen und erst dann in einen offenen Tab.", "gui.sophisticatedcore.settings.buttons.keep_tab_open.on": "Tab offen lassen: EIN", "gui.sophisticatedcore.settings.buttons.keep_tab_open.off": "Tab offen lassen: AUS", "gui.sophisticatedcore.settings.buttons.keep_tab_open.on.tooltip": "Beim Schließen der Benutzeroberfläche zeichnet der Rucksack auf, welcher Upgrade-Tab zuletzt geöffnet war, und öffnet ihn, wenn die Benutzeroberfläche das nächste Mal geöffnet wird",