Compare commits

...

3 Commits

Author SHA1 Message Date
390553c591 Add count via lore 2024-05-25 08:50:24 +02:00
820f73a12d Add count via lore 2024-05-25 08:50:16 +02:00
747f2fb30c Change placeholders 2024-05-25 08:24:33 +02:00
4 changed files with 55 additions and 10 deletions

View File

@@ -8,7 +8,7 @@ yarn_mappings=1.20.6+build.3
loader_version=0.15.11
# Mod Properties
mod_version=1.2
mod_version=1.3
maven_group=systems.brn
archives_base_name=Server_storage

View File

@@ -1,13 +1,18 @@
package systems.brn.server_storage.lib;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.LoreComponent;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.text.RawFilteredPair;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Util {
@@ -53,4 +58,40 @@ public class Util {
return pages;
}
public static ItemStack addCountToLore(final int count, ItemStack stack) {
if (count > 0) {
ItemStack newStack = stack.copy();
LoreComponent lore = stack.get(DataComponentTypes.LORE);
Text countLine = Text.literal("Amount: " + count).setStyle(Style.EMPTY.withColor(Formatting.GOLD).withItalic(true));
assert lore != null;
List<Text> newLines = new ArrayList<>(lore.lines());
newLines.addFirst(countLine);
LoreComponent newLore = new LoreComponent(newLines);
newStack.set(DataComponentTypes.LORE, newLore);
return newStack;
} else {
return stack;
}
}
public static ItemStack removeCountFromLore(ItemStack stack) {
LoreComponent oldLore = stack.get(DataComponentTypes.LORE);
if (oldLore != null) {
ItemStack newStack = stack.copy();
List<Text> filteredLines = oldLore.lines().stream()
.filter(line -> !line.getString().matches("Amount: \\d+"))
.collect(Collectors.toList());
LoreComponent newLore = new LoreComponent(filteredLines);
newStack.set(DataComponentTypes.LORE, newLore);
return newStack;
} else {
return stack;
}
}
}

View File

@@ -13,6 +13,8 @@ import net.minecraft.world.World;
import systems.brn.server_storage.lib.PagedGui;
import static systems.brn.server_storage.lib.StorageOperations.*;
import static systems.brn.server_storage.lib.Util.addCountToLore;
import static systems.brn.server_storage.lib.Util.removeCountFromLore;
public class StorageScreen extends PagedGui {
private Inventory inventory;
@@ -48,7 +50,8 @@ public class StorageScreen extends PagedGui {
protected DisplayElement getElement(int id) {
if (this.inventory.size() > id) {
ItemStack itemStack = this.inventory.getStack(id);
GuiElementBuilder guiElement = new GuiElementBuilder(itemStack);
ItemStack newStack = addCountToLore(itemStack.getCount(), itemStack);
GuiElementBuilder guiElement = new GuiElementBuilder(newStack);
return DisplayElement.of(guiElement);
}
return DisplayElement.empty();
@@ -59,8 +62,9 @@ public class StorageScreen extends PagedGui {
GuiElementInterface clickedElement = this.getSlot(index);
if (clickedElement != null) {
ItemStack clickedItem = clickedElement.getItemStack();
if (tryRemoveItemStackFromChests(world, pos, clickedItem)) {
this.player.getInventory().insertStack(clickedItem);
ItemStack noLoreStack = removeCountFromLore(clickedItem);
if (tryRemoveItemStackFromChests(world, pos, noLoreStack)) {
this.player.getInventory().insertStack(noLoreStack);
}
}
this.updateDisplay();

View File

@@ -2,18 +2,18 @@
"type": "minecraft:crafting_shaped",
"category": "redstone",
"pattern": [
"#A#",
"AEA",
"#A#"
"DRD",
"RCR",
"DRD"
],
"key": {
"#": {
"D": {
"item": "minecraft:diamond"
},
"A": {
"R": {
"item": "minecraft:redstone"
},
"E": {
"C": {
"item": "minecraft:chest"
}
},