diff --git a/gradle.properties b/gradle.properties index 79afcbb..a3f7143 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ mod_name=QuantumBags # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=All Rights Reserved # The mod version. See https://semver.org/ -mod_version=0.0.2 +mod_version=0.0.3 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html @@ -46,4 +46,4 @@ mod_group_id=com.smthng # The authors of the mod. This is a simple text string that is used for display purposes in the mod list. mod_authors=xJenny69 # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. -mod_description=2^20 items in one slot \ No newline at end of file +mod_description=adds bundles with huge capacities \ No newline at end of file diff --git a/src/main/java/com/smthng/quantumbags/QuantumBag.java b/src/main/java/com/smthng/quantumbags/QuantumBag.java index 15b5ecd..2a15010 100644 --- a/src/main/java/com/smthng/quantumbags/QuantumBag.java +++ b/src/main/java/com/smthng/quantumbags/QuantumBag.java @@ -15,22 +15,23 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; +import net.minecraftforge.common.ForgeConfigSpec; import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import java.util.List; public class QuantumBag extends Item { - private final int maxSize; + ForgeConfigSpec.ConfigValue size; - public QuantumBag(Properties pProperties, int maxSize) { + public QuantumBag(Properties pProperties, ForgeConfigSpec.ConfigValue size) { super(pProperties); - this.maxSize = maxSize; + this.size = size; } @Override public boolean overrideOtherStackedOnMe(ItemStack pStack, ItemStack pOther, Slot pSlot, ClickAction pAction, Player pPlayer, SlotAccess pAccess) { - boolean canBeStored = !(pOther.getItem().equals(Items.AIR) || pOther.getItem().equals(items.QUANTUM_BAG.get())); + boolean canBeStored = !(pOther.getItem().equals(Items.AIR) || pOther.getItem().equals(this)); if (pAction.equals(ClickAction.PRIMARY)) { // left click on bag if (canBeStored && matchesStored(pStack, pOther)) { addItems(pStack, pOther); @@ -70,9 +71,9 @@ public class QuantumBag extends Item { } else if (mode(pStack) == 2) { // suck items into bag ItemStack stored = getStoredStack(pStack); for (ItemStack itemStack : pPlayer.getInventory().items) { - if (stored.getCount() < maxSize) { + if (stored.getCount() < size.get()) { if (itemStackSame(stored, itemStack)) { - int removeAmount = Math.min(maxSize - stored.getCount(), itemStack.getCount()); + int removeAmount = Math.min(size.get() - stored.getCount(), itemStack.getCount()); stored.setCount(stored.getCount() + removeAmount); itemStack.setCount(itemStack.getCount() - removeAmount); @@ -108,7 +109,7 @@ public class QuantumBag extends Item { } private void addItems(@NotNull ItemStack bag, @NotNull ItemStack itemStack) { - int removeAmount = Math.min(maxSize - storedItemCount(bag), itemStack.getCount()); + int removeAmount = Math.min(size.get() - storedItemCount(bag), itemStack.getCount()); if (removeAmount > 0) { ItemStack stored = itemStack.copy(); stored.setCount(removeAmount + storedItemCount(bag)); @@ -118,7 +119,7 @@ public class QuantumBag extends Item { } private void addOne(@NotNull ItemStack bag, @NotNull ItemStack itemStack) { - int removeAmount = Math.min(maxSize - storedItemCount(bag), 1); + int removeAmount = Math.min(size.get() - storedItemCount(bag), 1); if (removeAmount > 0) { ItemStack stored = itemStack.copy(); stored.setCount(removeAmount + storedItemCount(bag)); diff --git a/src/main/java/com/smthng/quantumbags/Quantumbags.java b/src/main/java/com/smthng/quantumbags/Quantumbags.java index f5633b5..f460757 100644 --- a/src/main/java/com/smthng/quantumbags/Quantumbags.java +++ b/src/main/java/com/smthng/quantumbags/Quantumbags.java @@ -3,6 +3,7 @@ package com.smthng.quantumbags; import com.mojang.logging.LogUtils; import net.minecraft.client.Minecraft; import net.minecraft.core.registries.Registries; +import net.minecraft.server.commands.LocateCommand; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; @@ -42,10 +43,13 @@ public class Quantumbags { items.register(modEventBus); MinecraftForge.EVENT_BUS.register(this); + ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ServerConfig.SPEC, "quantumbags-server.toml"); modEventBus.addListener(this::addCreative); } private void addCreative(@NotNull BuildCreativeModeTabContentsEvent event) { - if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) event.accept(items.QUANTUM_BAG); + if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { + items.ITEMS.getEntries().forEach((e) -> event.accept(e.get().getDefaultInstance())); + } } } diff --git a/src/main/java/com/smthng/quantumbags/ServerConfig.java b/src/main/java/com/smthng/quantumbags/ServerConfig.java new file mode 100644 index 0000000..1a15007 --- /dev/null +++ b/src/main/java/com/smthng/quantumbags/ServerConfig.java @@ -0,0 +1,21 @@ +package com.smthng.quantumbags; + +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.common.Mod; + +import static com.smthng.quantumbags.Quantumbags.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ServerConfig { + public static final ForgeConfigSpec.ConfigValue C_SIZE_SMALL, C_SIZE_MEDIUM, C_SIZE_LARGE, C_SIZE_HUGE; + private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + static { + C_SIZE_SMALL = BUILDER.define("size_small", 512); + C_SIZE_MEDIUM = BUILDER.define("size_medium", 4096); + C_SIZE_LARGE = BUILDER.define("size_large", 32768); + C_SIZE_HUGE = BUILDER.define("size_huge", 262144); + SPEC = BUILDER.build(); + } +} diff --git a/src/main/java/com/smthng/quantumbags/items.java b/src/main/java/com/smthng/quantumbags/items.java index 23c3d8e..690f636 100644 --- a/src/main/java/com/smthng/quantumbags/items.java +++ b/src/main/java/com/smthng/quantumbags/items.java @@ -10,7 +10,11 @@ import static com.smthng.quantumbags.Quantumbags.MODID; public class items { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); - public static final RegistryObject QUANTUM_BAG = ITEMS.register("quantum_bag", () -> new QuantumBag(new Item.Properties().stacksTo(1), 1048576)); + public static final RegistryObject QUANTUM_BAG_SMALL = ITEMS.register("quantum_bag_small", () -> new QuantumBag(new Item.Properties().stacksTo(1), ServerConfig.C_SIZE_SMALL)); + public static final RegistryObject QUANTUM_BAG_MEDIUM = ITEMS.register("quantum_bag_medium", () -> new QuantumBag(new Item.Properties().stacksTo(1), ServerConfig.C_SIZE_MEDIUM)); + public static final RegistryObject QUANTUM_BAG_LARGE = ITEMS.register("quantum_bag_large", () -> new QuantumBag(new Item.Properties().stacksTo(1), ServerConfig.C_SIZE_LARGE)); + public static final RegistryObject QUANTUM_BAG_HUGE = ITEMS.register("quantum_bag_huge", () -> new QuantumBag(new Item.Properties().stacksTo(1), ServerConfig.C_SIZE_HUGE)); + public static void register(IEventBus bus) { ITEMS.register(bus); diff --git a/src/main/resources/assets/quantumbags/lang/en_us.json b/src/main/resources/assets/quantumbags/lang/en_us.json index c0c0604..3877900 100644 --- a/src/main/resources/assets/quantumbags/lang/en_us.json +++ b/src/main/resources/assets/quantumbags/lang/en_us.json @@ -1,3 +1,6 @@ { - "item.quantumbags.quantum_bag": "Quantum Bag" + "item.quantumbags.quantum_bag_small": "Small Quantum Bag", + "item.quantumbags.quantum_bag_medium": "Medium Quantum Bag", + "item.quantumbags.quantum_bag_large": "Large Quantum Bag", + "item.quantumbags.quantum_bag_huge": "Huge Quantum Bag" } \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_filling.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_filling.json deleted file mode 100644 index 93ab662..0000000 --- a/src/main/resources/assets/quantumbags/models/item/quantum_bag_filling.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "quantumbags:item/quantum_bag_filling" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge.json similarity index 57% rename from src/main/resources/assets/quantumbags/models/item/quantum_bag.json rename to src/main/resources/assets/quantumbags/models/item/quantum_bag_huge.json index 5268c0e..d9b76ac 100644 --- a/src/main/resources/assets/quantumbags/models/item/quantum_bag.json +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge.json @@ -1,20 +1,20 @@ { "parent": "minecraft:item/handheld", "textures": { - "layer0": "quantumbags:item/quantum_bag" + "layer0": "quantumbags:item/quantum_bag_huge" }, "overrides": [ { "predicate": { "custom_model_data": 1 }, - "model": "quantumbags:item/quantum_bag_filling" + "model": "quantumbags:item/quantum_bag_huge_filling" }, { "predicate": { "custom_model_data": 2 }, - "model": "quantumbags:item/quantum_bag_sucking" + "model": "quantumbags:item/quantum_bag_huge_sucking" } ] } \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_filling.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_filling.json new file mode 100644 index 0000000..ed48f18 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_filling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_huge", + "layer1": "quantumbags:item/filling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_sucking.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_sucking.json new file mode 100644 index 0000000..339cf9d --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_huge_sucking.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_huge", + "layer1": "quantumbags:item/sucking" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_large.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large.json new file mode 100644 index 0000000..1a11186 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_large" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "quantumbags:item/quantum_bag_large_filling" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "quantumbags:item/quantum_bag_large_sucking" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_filling.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_filling.json new file mode 100644 index 0000000..d8d1aee --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_filling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_large", + "layer1": "quantumbags:item/filling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_sucking.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_sucking.json new file mode 100644 index 0000000..6db97af --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_large_sucking.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_large", + "layer1": "quantumbags:item/sucking" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium.json new file mode 100644 index 0000000..b8b3e9a --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_medium" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "quantumbags:item/quantum_bag_medium_filling" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "quantumbags:item/quantum_bag_medium_sucking" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_filling.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_filling.json new file mode 100644 index 0000000..bafffa7 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_filling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_medium", + "layer1": "quantumbags:item/filling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_sucking.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_sucking.json new file mode 100644 index 0000000..75bf3fc --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_medium_sucking.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_medium", + "layer1": "quantumbags:item/sucking" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_small.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small.json new file mode 100644 index 0000000..fb9abb4 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_small" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "quantumbags:item/quantum_bag_small_filling" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "quantumbags:item/quantum_bag_small_sucking" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_filling.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_filling.json new file mode 100644 index 0000000..3126889 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_filling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_small", + "layer1": "quantumbags:item/filling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_sucking.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_sucking.json new file mode 100644 index 0000000..5ff4432 --- /dev/null +++ b/src/main/resources/assets/quantumbags/models/item/quantum_bag_small_sucking.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "quantumbags:item/quantum_bag_small", + "layer1": "quantumbags:item/sucking" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/models/item/quantum_bag_sucking.json b/src/main/resources/assets/quantumbags/models/item/quantum_bag_sucking.json deleted file mode 100644 index fd35728..0000000 --- a/src/main/resources/assets/quantumbags/models/item/quantum_bag_sucking.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "quantumbags:item/quantum_bag_sucking" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/quantumbags/textures/item/filling.png b/src/main/resources/assets/quantumbags/textures/item/filling.png new file mode 100644 index 0000000..637b61e Binary files /dev/null and b/src/main/resources/assets/quantumbags/textures/item/filling.png differ diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_filling.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_filling.png deleted file mode 100644 index db10bc9..0000000 Binary files a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_filling.png and /dev/null differ diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_huge.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_huge.png new file mode 100644 index 0000000..eb25727 Binary files /dev/null and b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_huge.png differ diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_large.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_large.png new file mode 100644 index 0000000..660ff15 Binary files /dev/null and b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_large.png differ diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_medium.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_medium.png new file mode 100644 index 0000000..c444f81 Binary files /dev/null and b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_medium.png differ diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_small.png similarity index 100% rename from src/main/resources/assets/quantumbags/textures/item/quantum_bag.png rename to src/main/resources/assets/quantumbags/textures/item/quantum_bag_small.png diff --git a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_sucking.png b/src/main/resources/assets/quantumbags/textures/item/quantum_bag_sucking.png deleted file mode 100644 index 319ee1d..0000000 Binary files a/src/main/resources/assets/quantumbags/textures/item/quantum_bag_sucking.png and /dev/null differ diff --git a/src/main/resources/assets/quantumbags/textures/item/sucking.png b/src/main/resources/assets/quantumbags/textures/item/sucking.png new file mode 100644 index 0000000..b7cb66e Binary files /dev/null and b/src/main/resources/assets/quantumbags/textures/item/sucking.png differ diff --git a/src/main/resources/data/quantumbags/recipes/quantum_bag_huge.json b/src/main/resources/data/quantumbags/recipes/quantum_bag_huge.json new file mode 100644 index 0000000..3c8acb9 --- /dev/null +++ b/src/main/resources/data/quantumbags/recipes/quantum_bag_huge.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#S#", + "S S", + "#S#" + ], + "key": { + "#": { + "item": "minecraft:leather" + }, + "S": { + "item": "quantumbags:quantum_bag_large" + } + }, + "result": { + "item": "quantumbags:quantum_bag_huge", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/quantumbags/recipes/quantum_bag_large.json b/src/main/resources/data/quantumbags/recipes/quantum_bag_large.json new file mode 100644 index 0000000..2b8cf1c --- /dev/null +++ b/src/main/resources/data/quantumbags/recipes/quantum_bag_large.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#S#", + "S S", + "#S#" + ], + "key": { + "#": { + "item": "minecraft:leather" + }, + "S": { + "item": "quantumbags:quantum_bag_medium" + } + }, + "result": { + "item": "quantumbags:quantum_bag_large", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/quantumbags/recipes/quantum_bag_medium.json b/src/main/resources/data/quantumbags/recipes/quantum_bag_medium.json new file mode 100644 index 0000000..73cec0f --- /dev/null +++ b/src/main/resources/data/quantumbags/recipes/quantum_bag_medium.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#S#", + "S S", + "#S#" + ], + "key": { + "#": { + "item": "minecraft:leather" + }, + "S": { + "item": "quantumbags:quantum_bag_small" + } + }, + "result": { + "item": "quantumbags:quantum_bag_medium", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/quantumbags/recipes/quantum_bag.json b/src/main/resources/data/quantumbags/recipes/quantum_bag_small.json similarity index 84% rename from src/main/resources/data/quantumbags/recipes/quantum_bag.json rename to src/main/resources/data/quantumbags/recipes/quantum_bag_small.json index 59dddc9..41633bb 100644 --- a/src/main/resources/data/quantumbags/recipes/quantum_bag.json +++ b/src/main/resources/data/quantumbags/recipes/quantum_bag_small.json @@ -14,7 +14,7 @@ } }, "result": { - "item": "quantumbags:quantum_bag", + "item": "quantumbags:quantum_bag_small", "count": 1 } } \ No newline at end of file