From 59fa16b5bac1171af48f1e8186fda82069e7828b Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:10:56 +0300 Subject: [PATCH 01/11] 1.20.2 --- gradle.properties | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 596b8f7..af573f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,21 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true +org.gradle.caching=true # Fabric Properties # check these on https://fabricmc.net/versions.html - minecraft_version=1.18.2 - yarn_mappings=1.18.2+build.3 - loader_version=0.14.5 + minecraft_version=1.20.2 + yarn_mappings=1.20.2+build.4 + loader_version=0.14.19 # Mod Properties - mod_version = 3.0.2-1.18.2 + mod_version = 3.1.1-1.20.2 maven_group = io.github.Andrew6rant archives_base_name = stacker # Dependencies - fabric_version=0.51.1+1.18.2 - modmenu_version=2.0.6 - cloth_config_version=5.0.34 + fabric_version=0.91.6+1.20.2 + modmenu_version=8.0.1 + cloth_config_version=12.0.119 + stacc_version=1.8.0 From a5893ba33d345a80780cc03a6bcebba6fae96d1b Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:12:08 +0300 Subject: [PATCH 02/11] Delete .github/workflows/release.yml --- .github/workflows/release.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 5a82397..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Publish Artifacts - -on: - release: - types: [published] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v2 - with: - distribution: 'adopt-hotspot' - java-version: 17 - cache: 'gradle' - - name: make gradle wrapper executable - run: chmod +x ./gradlew - - name: build - run: ./gradlew build - - uses: Kir-Antipov/mc-publish@v3.0 - with: - curseforge-id: 515415 - modrinth-id: 7pbXPVrB - modrinth-featured: true - modrinth-unfeature-mode: intersection - modrinth-token: ${{ secrets.MODRINTH_TOKEN }} - curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} - version-type: release - loaders: | - fabric - quilt \ No newline at end of file From c46d2a2975dfff8a1dc0242933f2b2045a559388 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:12:39 +0300 Subject: [PATCH 03/11] Add files via upload --- build.gradle | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 97ee024..51b37ab 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.10-SNAPSHOT' + id 'fabric-loom' version '1.5-SNAPSHOT' id 'maven-publish' id "me.shedaniel.unified-publishing" version "0.1.+" } @@ -12,9 +12,21 @@ version = project.mod_version group = project.maven_group repositories { - maven { url("https://storage.googleapis.com/devan-maven/") } - maven { url "https://maven.shedaniel.me/" } - maven { url "https://maven.terraformersmc.com/releases/" } + maven { url 'https://jitpack.io' } + maven { url = "https://storage.googleapis.com/devan-maven/" } + maven { url = "https://maven.shedaniel.me/" } + maven { url = "https://maven.terraformersmc.com/releases/" } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. @@ -31,13 +43,17 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - include "net.devtech:Stacc:1.3.2" - modRuntime(include("net.devtech:Stacc:1.3.2")) + //include "net.devtech:Stacc:${project.stacc_version}" + //modRuntimeOnly(include("net.devtech:Stacc:${project.stacc_version}")) + + include "maven.modrinth:stacc-api:${project.stacc_version}" + modRuntimeOnly(include "maven.modrinth:stacc-api:${project.stacc_version}") - modApi("me.shedaniel.cloth:cloth-config-fabric:5.0.38") { + modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } + modRuntimeOnly("com.terraformersmc:modmenu:${project.modmenu_version}") modCompileOnly("com.terraformersmc:modmenu:${project.modmenu_version}") { transitive = false } From 8acdfd72c2576baee74708208a46c9f2d9cd3ec6 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:14:57 +0300 Subject: [PATCH 04/11] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 84d1f85..a595206 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 53a42db656786b998a46979d69b460ca419dbf1d Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:15:33 +0300 Subject: [PATCH 05/11] Delete src/main directory --- .../github/Andrew6rant/stacker/Stacker.java | 107 ------------------ .../Andrew6rant/stacker/StackerConfig.java | 31 ----- .../Andrew6rant/stacker/StackerModMenu.java | 16 --- .../mixin/AnvilScreenHandlerMixin.java | 19 ---- .../stacker/mixin/BucketItemMixin.java | 26 ----- .../stacker/mixin/BundleItemMixin.java | 20 ---- .../stacker/mixin/DispenserBehaviorMixin.java | 46 -------- .../mixin/HorseScreenHandlerMixin.java | 18 --- .../Andrew6rant/stacker/mixin/ItemAccess.java | 14 --- .../stacker/mixin/ItemRenderScaleMixin.java | 28 ----- .../stacker/mixin/ItemStackMixin.java | 17 --- .../stacker/mixin/JukeboxBlockMixin.java | 19 ---- .../stacker/mixin/LimitFurnaceStackMixin.java | 30 ----- .../stacker/mixin/MilkBucketItemMixin.java | 24 ---- .../stacker/mixin/StewItemMixin.java | 22 ---- .../stacker/util/HorseScreenInterface.java | 6 - .../Andrew6rant/stacker/util/ItemsHelper.java | 13 --- src/main/resources/assets/stacker/icon.png | Bin 4049 -> 0 bytes .../resources/assets/stacker/lang/en_us.json | 12 -- .../resources/assets/stacker/lang/ko_kr.json | 12 -- .../resources/assets/stacker/lang/zh_cn.json | 12 -- .../data/inmis/tags/items/backpacks.json | 14 --- .../stacker/tags/items/not_stackable.json | 40 ------- .../techreborn/tags/items/not_stackable.json | 30 ----- src/main/resources/fabric.mod.json | 50 -------- src/main/resources/stacker.mixins.json | 26 ----- 26 files changed, 652 deletions(-) delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/Stacker.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/JukeboxBlockMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java delete mode 100644 src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java delete mode 100644 src/main/resources/assets/stacker/icon.png delete mode 100644 src/main/resources/assets/stacker/lang/en_us.json delete mode 100644 src/main/resources/assets/stacker/lang/ko_kr.json delete mode 100644 src/main/resources/assets/stacker/lang/zh_cn.json delete mode 100644 src/main/resources/data/inmis/tags/items/backpacks.json delete mode 100644 src/main/resources/data/stacker/tags/items/not_stackable.json delete mode 100644 src/main/resources/data/techreborn/tags/items/not_stackable.json delete mode 100644 src/main/resources/fabric.mod.json delete mode 100644 src/main/resources/stacker.mixins.json diff --git a/src/main/java/io/github/Andrew6rant/stacker/Stacker.java b/src/main/java/io/github/Andrew6rant/stacker/Stacker.java deleted file mode 100644 index e9da716..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/Stacker.java +++ /dev/null @@ -1,107 +0,0 @@ -package io.github.Andrew6rant.stacker; - -import io.github.Andrew6rant.stacker.mixin.ItemAccess; -import me.shedaniel.autoconfig.AutoConfig; -import me.shedaniel.autoconfig.ConfigHolder; -import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; -import net.minecraft.item.Item; -import net.minecraft.tag.TagKey; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.Registry; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static net.minecraft.util.registry.Registry.ITEM_KEY; - -public class Stacker implements ModInitializer { - private static final Logger LOGGER = LogManager.getLogger("Stacker"); - private static Stacker stacker; - static ConfigHolder stackerConfig; - - @Override - public void onInitialize() { - stacker = this; - stackerConfig = AutoConfig.register(StackerConfig.class, GsonConfigSerializer::new); - stackerConfig.registerSaveListener((configHolder, stackerConfig1) -> { - loadStacker("save"); - return ActionResult.success(true); - }); - ServerLifecycleEvents.SERVER_STARTED.register(server -> loadStacker("load")); - ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, success) -> loadStacker("reload")); - } - public static void loadStacker(String configMsg) { - LOGGER.info("Stacker: Attempting to "+configMsg+" config..."); - Set invalidSet = new HashSet<>(); - for (Item item : Registry.ITEM) { - if (!item.isDamageable()) { - Stacker.setMax(item, stackerConfig.getConfig().maxStacker); - } - Stacker.setMax(item, Stacker.overrideItem(item, stackerConfig.getConfig().itemOverride, invalidSet)); - } - if (invalidSet.size() > 0) { - LOGGER.error("Stacker: Invalid override entries!"); - LOGGER.warn("Stacker: The following entries were invalid:"); - for (String invalid : invalidSet) { - LOGGER.warn("Stacker: \""+invalid+"\""); - } - LOGGER.warn("Stacker: Make sure to use the format, \"mod:item:max_stack\", or \"#tag:item:max_stack\"."); - } - - LOGGER.info(configMsg.equals("save") ? "Stacker: Config saved!": "Stacker: Config "+configMsg+"ed!"); - } - public static void setMax(Item item, int max) { - if (max >0) { - ((ItemAccess) item).setMaxCount(max); - } - } - public StackerConfig getStackerConfig() { - return stackerConfig.getConfig(); - } - public static Stacker getStacker() { - return stacker; - } - public static boolean isValid(String overrideEntry, String[] splitEntry, Set invalidSet) { - if (splitEntry.length != 3) { - invalidSet.add(overrideEntry); - return false; - } - try { - int max = Integer.parseInt(splitEntry[2]); - } catch (NumberFormatException e) { - invalidSet.add(overrideEntry); - return false; - } - return true; - } - public static Integer overrideItem(Item item, List overrideList, Set invalidSet) { - for(String overrideEntry : overrideList) { - if (overrideEntry.startsWith("#")) { - String[] splitEntry = overrideEntry.trim().substring(1).split(":"); // split into three parts: tag id, item name, max count - if (isValid(overrideEntry, splitEntry, invalidSet)) { - List> itemStream = item.getRegistryEntry().streamTags().collect(Collectors.toList()); - for (TagKey tagKey : itemStream) { - if (item.getRegistryEntry().isIn(TagKey.of(ITEM_KEY, new Identifier(splitEntry[0], splitEntry[1])))) { - return Integer.parseInt(splitEntry[2]); - } - } - } - } else { - String[] splitEntry = overrideEntry.trim().split(":"); // split into three parts: tag id, item name, max count - if (isValid(overrideEntry, splitEntry, invalidSet)) { - if (Registry.ITEM.getId(item).toString().equalsIgnoreCase(splitEntry[0] + ":" + splitEntry[1])) { - return Integer.parseInt(splitEntry[2]); - } - } - } - } - return 0; - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java b/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java deleted file mode 100644 index ae8c77c..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.Andrew6rant.stacker; - -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; - -import java.util.Arrays; -import java.util.List; - -@Config(name = "stacker") -public class StackerConfig implements ConfigData { - - @ConfigEntry.Gui.PrefixText - @ConfigEntry.Gui.Tooltip - public int maxStacker = 64; - - @ConfigEntry.Gui.Tooltip - public boolean fontOverride = true; - - @ConfigEntry.Gui.Tooltip - @ConfigEntry.BoundedDiscrete(min = 0, max = 50) - public int itemCountScaleInt = 25; - - @ConfigEntry.Gui.Tooltip - public List itemOverride = Arrays.asList( - "#stacker:not_stackable:1", - "minecraft:totem_of_undying:16", - "#c:potions:16" - ); - // #techreborn:not_stackable and #inmis:backpacks are kept for backwards compatibility with older configs -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java b/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java deleted file mode 100644 index 7509e43..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.github.Andrew6rant.stacker; - -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; -import io.github.Andrew6rant.stacker.StackerConfig; -import me.shedaniel.autoconfig.AutoConfig; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Environment(EnvType.CLIENT) -public class StackerModMenu implements ModMenuApi { - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> AutoConfig.getConfigScreen(StackerConfig.class, parent).get(); - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java deleted file mode 100644 index ee07648..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.AnvilScreenHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(value = AnvilScreenHandler.class, priority = 999) // default priority is 1000, so this applies a bit after other mod's AnvilScreenHandler mixins -public class AnvilScreenHandlerMixin { - // Credit to ZoeyTheEgoist for the original code behind this mixin - @Redirect(method = "onTakeOutput", at = @At(value = "INVOKE", target = "Lnet/minecraft/inventory/Inventory;setStack(ILnet/minecraft/item/ItemStack;)V", ordinal = 3)) - private void setDecrementSlot1StackCount(Inventory inventory, int slot, ItemStack stack) { - ItemStack newStack = inventory.getStack(1); - newStack.decrement(1); - inventory.setStack(1, newStack); - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java deleted file mode 100644 index 97d5674..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.util.ItemsHelper; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BucketItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(BucketItem.class) -public class BucketItemMixin { - - @Inject(method = "getEmptiedStack", at = @At(value = "HEAD"), cancellable = true) - private static void stackableBucket(ItemStack stack, PlayerEntity player, CallbackInfoReturnable cir){ - if(!player.isCreative()) { - if (stack.getCount() > 1) { - ItemsHelper.insertNewItem(player, new ItemStack(Items.BUCKET)); - stack.decrement(1); - cir.setReturnValue(stack); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java deleted file mode 100644 index bbd7838..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.item.BundleItem; -import net.minecraft.item.ItemStack; - -@Mixin(BundleItem.class) -public class BundleItemMixin { - // The following mixin was backported from Stacc API 1.3.3. Thanks to Devan-Kerman for the code. - @Inject(at = @At("RETURN"), method = "getItemOccupancy", cancellable = true) - private static void getItemOccupancyFix(ItemStack stack, CallbackInfoReturnable c) { - if (c.getReturnValue() <= 0) { - c.setReturnValue(1); - } - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java deleted file mode 100644 index 04beda4..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import net.minecraft.block.DispenserBlock; -import net.minecraft.block.dispenser.ItemDispenserBehavior; -import net.minecraft.block.entity.DispenserBlockEntity; -import net.minecraft.item.FluidModificationItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.math.BlockPointer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(targets = "net/minecraft/block/dispenser/DispenserBehavior$8") -public class DispenserBehaviorMixin { - // Credit to ZoeyTheEgoist for this mixin - /** - * @author Astrazoey - */ - @Overwrite - public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { - ItemDispenserBehavior fallbackBehavior = new ItemDispenserBehavior(); - ItemStack emptyBucketStack = new ItemStack(Items.BUCKET); - FluidModificationItem fluidModificationItem = (FluidModificationItem) stack.getItem(); - BlockPos blockPos = pointer.getPos().offset(pointer.getBlockState().get(DispenserBlock.FACING)); - World world = pointer.getWorld(); - - if (fluidModificationItem.placeFluid( null, world, blockPos, null)) { - fluidModificationItem.onEmptied( null, world, stack, blockPos); - if (stack.getCount() > 1) { - ItemStack newStack = stack.copy(); - newStack.decrement(1); - if (((DispenserBlockEntity)pointer.getBlockEntity()).addToFirstFreeSlot(emptyBucketStack.copy()) < 0) { - fallbackBehavior.dispense(pointer, emptyBucketStack.copy()); - } - return newStack; - } else { - return new ItemStack(Items.BUCKET); - } - } else { - return fallbackBehavior.dispense(pointer, stack); - } - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java deleted file mode 100644 index 2099fd1..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.util.HorseScreenInterface; -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.slot.Slot; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(targets = "net/minecraft/screen/HorseScreenHandler$1") -public class HorseScreenHandlerMixin extends Slot implements HorseScreenInterface { - // Credit to ZoeyTheEgoist for this mixin - public HorseScreenHandlerMixin(Inventory inventory, int index, int x, int y) { - super(inventory, index, x, y); - } - @Override - public int getMaxItemCount() { - return 1; - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java deleted file mode 100644 index a041914..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.item.Item; - -@Mixin (Item.class) -public interface ItemAccess { - @Mutable - @Accessor - void setMaxCount(int count); -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java deleted file mode 100644 index 19261e5..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.Stacker; -import io.github.Andrew6rant.stacker.StackerConfig; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.item.Item; -import org.apache.commons.lang3.Validate; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyVariable; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Environment(EnvType.CLIENT) -@Pseudo -@Mixin(targets = "net.devtech.stacc.ItemCountRenderHandler") -public class ItemRenderScaleMixin { - @Inject(method = "scale", at = @At("RETURN"), cancellable = true) - private void forceScale(CallbackInfoReturnable cir) { - float intToFloat = (float) (Stacker.getStacker().getStackerConfig().itemCountScaleInt+50)/100; - if (Stacker.getStacker().getStackerConfig().fontOverride) { - cir.setReturnValue(cir.getReturnValue()); - } else { - cir.setReturnValue(intToFloat); - } - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java deleted file mode 100644 index 21ffea2..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.Stacker; -import io.github.Andrew6rant.stacker.StackerConfig; -import net.minecraft.item.Item; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; - -@Mixin(Item.Settings.class) -public class ItemStackMixin { - @ModifyVariable(method = "maxCount", at = @At("HEAD"), argsOnly = true) - private int forceCount(int original) { - return Integer.MAX_VALUE; - } -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/JukeboxBlockMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/JukeboxBlockMixin.java deleted file mode 100644 index d5e92c8..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/JukeboxBlockMixin.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import net.minecraft.block.JukeboxBlock; -import net.minecraft.block.entity.JukeboxBlockEntity; -import net.minecraft.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(JukeboxBlock.class) -public class JukeboxBlockMixin { - // Credit to ZoeyTheEgoist for this mixin - @Redirect(method = "setRecord", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/JukeboxBlockEntity;setRecord(Lnet/minecraft/item/ItemStack;)V")) - public void setCountToOne(JukeboxBlockEntity jukeboxBlockEntity, ItemStack stack) { - ItemStack newStack = stack.copy(); - newStack.setCount(1); - jukeboxBlockEntity.setRecord(newStack); - } -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java deleted file mode 100644 index 54d3773..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.screen.AbstractFurnaceScreenHandler; -import net.minecraft.screen.slot.FurnaceFuelSlot; -import net.minecraft.screen.slot.Slot; -import org.spongepowered.asm.mixin.Mixin; - -import net.fabricmc.loader.api.FabricLoader; - -@Mixin(FurnaceFuelSlot.class) -public abstract class LimitFurnaceStackMixin extends Slot { - - public LimitFurnaceStackMixin(Inventory inventory, int index, int x, int y) { - super(inventory, index, x, y); - } - - public boolean canInsert(ItemStack stack) { // I know this is a kinda gross override, - return true; // but if removed it crashes the game - } - - @Override - public int getMaxItemCount(ItemStack stack) { - return isBucket(stack) ? 1 : super.getMaxItemCount(stack); - } - public boolean isBucket(ItemStack stack) { - return stack.isOf(Items.BUCKET) || stack.isOf(Items.LAVA_BUCKET); - } -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java deleted file mode 100644 index db6b353..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.util.ItemsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.MilkBucketItem; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(MilkBucketItem.class) -public class MilkBucketItemMixin { - - @Inject(method = "finishUsing", at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/item/ItemStack;decrement(I)V"), cancellable = true) - private void stackableMilkBucket(ItemStack stack, World world, LivingEntity user, CallbackInfoReturnable cir){ - user.clearStatusEffects(); - ItemsHelper.insertNewItem((PlayerEntity)user, new ItemStack(Items.BUCKET)); - cir.setReturnValue(stack); - } -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java deleted file mode 100644 index 30e542f..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.Andrew6rant.stacker.mixin; - -import io.github.Andrew6rant.stacker.util.ItemsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.StewItem; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(StewItem.class) -public class StewItemMixin { //This mixin works for soups as well - @Inject(method = "finishUsing", at=@At(value = "NEW", target = "net/minecraft/item/ItemStack"), cancellable = true) - private void stackableStew(ItemStack stack, World world, LivingEntity user, CallbackInfoReturnable cir){ - ItemsHelper.insertNewItem((PlayerEntity)user, new ItemStack(Items.BOWL)); - cir.setReturnValue(stack); - } -} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java b/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java deleted file mode 100644 index 4e24dea..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.Andrew6rant.stacker.util; - -public interface HorseScreenInterface { - // Credit to ZoeyTheEgoist for this interface - public int getMaxItemCount(); -} diff --git a/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java b/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java deleted file mode 100644 index daa5436..0000000 --- a/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.Andrew6rant.stacker.util; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; - -public class ItemsHelper { - - public static void insertNewItem(PlayerEntity player, ItemStack stack2) { - if (!player.getInventory().insertStack(stack2)) { - player.dropItem(stack2, false); - } - } -} diff --git a/src/main/resources/assets/stacker/icon.png b/src/main/resources/assets/stacker/icon.png deleted file mode 100644 index 2524cb23171e22c0c3b01b247aa1e89f7fce3df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4049 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 O;OgY=c*p*9{C@y}$MEO? diff --git a/src/main/resources/assets/stacker/lang/en_us.json b/src/main/resources/assets/stacker/lang/en_us.json deleted file mode 100644 index b1db3b9..0000000 --- a/src/main/resources/assets/stacker/lang/en_us.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "text.autoconfig.stacker.title": "Stacker Config", - "text.autoconfig.stacker.option.maxStacker": "Maximum Stack Size", - "text.autoconfig.stacker.option.maxStacker.@Tooltip": "Do not set larger than 2147483647 or below 1", - "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§cAll changes are applied instantly and do not need a restart!", - "text.autoconfig.stacker.option.fontOverride": "Variable Font Scale Override", - "text.autoconfig.stacker.option.fontOverride.@Tooltip": "Set this to §aYes §fif you want font size to scale with amount", - "text.autoconfig.stacker.option.itemCountScaleInt": "Item Text Size", - "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "Only applies if Variable Font Override is set to §cNo", - "text.autoconfig.stacker.option.itemOverride.@Tooltip": "Format: §emod:name:stack_size §ror §e#tag:name:stack_size", - "text.autoconfig.stacker.option.itemOverride": "Override the stack size of:" -} \ No newline at end of file diff --git a/src/main/resources/assets/stacker/lang/ko_kr.json b/src/main/resources/assets/stacker/lang/ko_kr.json deleted file mode 100644 index 961e480..0000000 --- a/src/main/resources/assets/stacker/lang/ko_kr.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "text.autoconfig.stacker.title": "Stacker 환경설정", - "text.autoconfig.stacker.option.maxStacker": "최대 아이템 개수", - "text.autoconfig.stacker.option.maxStacker.@Tooltip": "2147483647보다 크거나 1보다 작은 값으로 설정하지 마세요.", - "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§c모든 변경 내용은 즉시 적용되며 다시 시작하실 필요 없습니다!", - "text.autoconfig.stacker.option.fontOverride": "가변 폰트 크기 재정의", - "text.autoconfig.stacker.option.fontOverride.@Tooltip": "글자 크기를 수량에 따라 조정하려면 이 옵션을 §a예 §f로 설정하세요.", - "text.autoconfig.stacker.option.itemCountScaleInt": "아이템 텍스트 크기", - "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "가변 폰트 크기 재정의를 §c아니오§f를 설정한 경우에만 적용됩니다.", - "text.autoconfig.stacker.option.itemOverride.@Tooltip": "서식: §e모드 이름:아이템 이름:최대 개수 §r또는 §e#태그:이름:최대 개수", - "text.autoconfig.stacker.option.itemOverride": "아이템 개수 재정의:" -} \ No newline at end of file diff --git a/src/main/resources/assets/stacker/lang/zh_cn.json b/src/main/resources/assets/stacker/lang/zh_cn.json deleted file mode 100644 index 1cb9bae..0000000 --- a/src/main/resources/assets/stacker/lang/zh_cn.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "text.autoconfig.stacker.title": "Stacker配置", - "text.autoconfig.stacker.option.maxStacker": "最大堆叠大小", - "text.autoconfig.stacker.option.maxStacker.@Tooltip": "不要设置超过2147483647,也不要小于1", - "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§c所有的更改会被立即应用,不需要重新启动!", - "text.autoconfig.stacker.option.fontOverride": "动态字体比例覆盖", - "text.autoconfig.stacker.option.fontOverride.@Tooltip": "将该项设置为 §a是 §f如果您希望字体随物品堆叠数量大小而变化", - "text.autoconfig.stacker.option.itemCountScaleInt": "物品数量字体大小", - "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "仅在动态字体比例覆盖设置为 §c否 §f时适用", - "text.autoconfig.stacker.option.itemOverride.@Tooltip": "格式: §emod:name:stack_size §r或者 §e#tag:name:stack_size", - "text.autoconfig.stacker.option.itemOverride": "覆盖堆叠大小:" -} \ No newline at end of file diff --git a/src/main/resources/data/inmis/tags/items/backpacks.json b/src/main/resources/data/inmis/tags/items/backpacks.json deleted file mode 100644 index 3f8dc80..0000000 --- a/src/main/resources/data/inmis/tags/items/backpacks.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "replace": false, - "values": [ - {"id": "inmis:ender_pouch", "required": false}, - {"id": "inmis:baby_backpack", "required": false}, - {"id": "inmis:frayed_backpack", "required": false}, - {"id": "inmis:plated_backpack", "required": false}, - {"id": "inmis:gilded_backpack", "required": false}, - {"id": "inmis:bejeweled_backpack", "required": false}, - {"id": "inmis:blazing_backpack", "required": false}, - {"id": "inmis:withered_backpack", "required": false}, - {"id": "inmis:endless_backpack", "required": false} - ] -} \ No newline at end of file diff --git a/src/main/resources/data/stacker/tags/items/not_stackable.json b/src/main/resources/data/stacker/tags/items/not_stackable.json deleted file mode 100644 index 8b069cb..0000000 --- a/src/main/resources/data/stacker/tags/items/not_stackable.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "replace": false, - "values": [ - {"id": "minecraft:bundle", "required": false}, - {"id": "techreborn:quantum_helmet", "required": false}, - {"id": "techreborn:quantum_chestplate", "required": false}, - {"id": "techreborn:quantum_leggings", "required": false}, - {"id": "techreborn:quantum_boots", "required": false}, - {"id": "techreborn:red_cell_battery", "required": false}, - {"id": "techreborn:lithium_ion_battery", "required": false}, - {"id": "techreborn:lithium_ion_batpack", "required": false}, - {"id": "techreborn:energy_crystal", "required": false}, - {"id": "techreborn:lapotron_crystal", "required": false}, - {"id": "techreborn:lapotronic_orb", "required": false}, - {"id": "techreborn:lapotronic_orbpack", "required": false}, - {"id": "techreborn:basic_drill", "required": false}, - {"id": "techreborn:basic_chainsaw", "required": false}, - {"id": "techreborn:basic_jackhammer", "required": false}, - {"id": "techreborn:electric_treetap", "required": false}, - {"id": "techreborn:advanced_drill", "required": false}, - {"id": "techreborn:advanced_chainsaw", "required": false}, - {"id": "techreborn:advanced_jackhammer", "required": false}, - {"id": "techreborn:rock_cutter", "required": false}, - {"id": "techreborn:industrial_drill", "required": false}, - {"id": "techreborn:industrial_chainsaw", "required": false}, - {"id": "techreborn:industrial_jackhammer", "required": false}, - {"id": "techreborn:nanosaber", "required": false}, - {"id": "techreborn:omni_tool", "required": false}, - {"id": "techreborn:cloaking_device", "required": false}, - {"id": "inmis:ender_pouch", "required": false}, - {"id": "inmis:baby_backpack", "required": false}, - {"id": "inmis:frayed_backpack", "required": false}, - {"id": "inmis:plated_backpack", "required": false}, - {"id": "inmis:gilded_backpack", "required": false}, - {"id": "inmis:bejeweled_backpack", "required": false}, - {"id": "inmis:blazing_backpack", "required": false}, - {"id": "inmis:withered_backpack", "required": false}, - {"id": "inmis:endless_backpack", "required": false} - ] -} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/tags/items/not_stackable.json b/src/main/resources/data/techreborn/tags/items/not_stackable.json deleted file mode 100644 index d5f83a3..0000000 --- a/src/main/resources/data/techreborn/tags/items/not_stackable.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "replace": false, - "values": [ - {"id": "techreborn:quantum_helmet", "required": false}, - {"id": "techreborn:quantum_chestplate", "required": false}, - {"id": "techreborn:quantum_leggings", "required": false}, - {"id": "techreborn:quantum_boots", "required": false}, - {"id": "techreborn:red_cell_battery", "required": false}, - {"id": "techreborn:lithium_ion_battery", "required": false}, - {"id": "techreborn:lithium_ion_batpack", "required": false}, - {"id": "techreborn:energy_crystal", "required": false}, - {"id": "techreborn:lapotron_crystal", "required": false}, - {"id": "techreborn:lapotronic_orb", "required": false}, - {"id": "techreborn:lapotronic_orbpack", "required": false}, - {"id": "techreborn:basic_drill", "required": false}, - {"id": "techreborn:basic_chainsaw", "required": false}, - {"id": "techreborn:basic_jackhammer", "required": false}, - {"id": "techreborn:electric_treetap", "required": false}, - {"id": "techreborn:advanced_drill", "required": false}, - {"id": "techreborn:advanced_chainsaw", "required": false}, - {"id": "techreborn:advanced_jackhammer", "required": false}, - {"id": "techreborn:rock_cutter", "required": false}, - {"id": "techreborn:industrial_drill", "required": false}, - {"id": "techreborn:industrial_chainsaw", "required": false}, - {"id": "techreborn:industrial_jackhammer", "required": false}, - {"id": "techreborn:nanosaber", "required": false}, - {"id": "techreborn:omni_tool", "required": false}, - {"id": "techreborn:cloaking_device", "required": false} - ] -} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json deleted file mode 100644 index b54b8f3..0000000 --- a/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "schemaVersion": 1, - "id": "stacker", - "version": "${version}", - - "name": "Stacker", - "description": "Change the stack size of all items!", - "authors": [ - "Andrew6rant (Andrew Grant)" - ], - "contact": { - "homepage": "https://www.curseforge.com/minecraft/mc-mods/stacker", - "sources": "https://github.com/Andrew6rant/Stacker", - "issues": "https://github.com/Andrew6rant/Stacker/issues" - }, - - "license": "CC0-1.0", - "icon": "assets/stacker/icon.png", - - "environment": "*", - "entrypoints": { - "main": [ - "io.github.Andrew6rant.stacker.Stacker" - ], - "modmenu": [ - "io.github.Andrew6rant.stacker.StackerModMenu" - ] - }, - "mixins": [ - "stacker.mixins.json" - ], - - "depends": { - "fabricloader": ">=0.11.3", - "fabric": "*", - "minecraft": [ - "1.18.2" - ], - "java": ">=17", - "cloth-config2": ">=5.0.34" - }, - "custom": { - "modmenu": [ - "io.github.Andrew6rant.stacker.StackerConfig" - ] - }, - "suggests": { - "modmenu": "*" - } -} diff --git a/src/main/resources/stacker.mixins.json b/src/main/resources/stacker.mixins.json deleted file mode 100644 index 012993f..0000000 --- a/src/main/resources/stacker.mixins.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "io.github.Andrew6rant.stacker.mixin", - "compatibilityLevel": "JAVA_16", - "mixins": [ - "AnvilScreenHandlerMixin", - "BucketItemMixin", - "BundleItemMixin", - "DispenserBehaviorMixin", - "HorseScreenHandlerMixin", - "ItemAccess", - "ItemStackMixin", - "JukeboxBlockMixin", - "LimitFurnaceStackMixin", - "MilkBucketItemMixin", - "StewItemMixin" - ], - "client": [ - "ItemRenderScaleMixin" - ], - "server": [], - "injectors": { - "defaultRequire": 1 - } -} From 0b9da9f85be9837248988da8e793f3ac00708b81 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:16:11 +0300 Subject: [PATCH 06/11] 1.20.2 --- .../github/Andrew6rant/stacker/Stacker.java | 105 ++++++++++++++++++ .../Andrew6rant/stacker/StackerConfig.java | 31 ++++++ .../Andrew6rant/stacker/StackerModMenu.java | 15 +++ .../mixin/AnvilScreenHandlerMixin.java | 19 ++++ .../stacker/mixin/BucketItemMixin.java | 26 +++++ .../stacker/mixin/BundleItemMixin.java | 44 ++++++++ .../stacker/mixin/DispenserBehaviorMixin.java | 44 ++++++++ .../mixin/HorseScreenHandlerMixin.java | 18 +++ .../Andrew6rant/stacker/mixin/ItemAccess.java | 14 +++ .../stacker/mixin/ItemRenderScaleMixin.java | 24 ++++ .../stacker/mixin/ItemStackMixin.java | 13 +++ .../stacker/mixin/LimitFurnaceStackMixin.java | 31 ++++++ .../stacker/mixin/MilkBucketItemMixin.java | 24 ++++ .../stacker/mixin/MusicDiscItemMixin.java | 18 +++ .../stacker/mixin/StewItemMixin.java | 22 ++++ .../stacker/util/HorseScreenInterface.java | 6 + .../Andrew6rant/stacker/util/ItemsHelper.java | 13 +++ src/main/resources/assets/stacker/icon.png | Bin 0 -> 4049 bytes .../resources/assets/stacker/lang/en_us.json | 12 ++ .../resources/assets/stacker/lang/ko_kr.json | 12 ++ .../resources/assets/stacker/lang/zh_cn.json | 12 ++ .../data/inmis/tags/items/backpacks.json | 14 +++ .../stacker/tags/items/not_stackable.json | 40 +++++++ .../techreborn/tags/items/not_stackable.json | 30 +++++ src/main/resources/fabric.mod.json | 50 +++++++++ src/main/resources/stacker.mixins.json | 26 +++++ 26 files changed, 663 insertions(+) create mode 100644 src/main/java/io/github/Andrew6rant/stacker/Stacker.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/MusicDiscItemMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java create mode 100644 src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java create mode 100644 src/main/resources/assets/stacker/icon.png create mode 100644 src/main/resources/assets/stacker/lang/en_us.json create mode 100644 src/main/resources/assets/stacker/lang/ko_kr.json create mode 100644 src/main/resources/assets/stacker/lang/zh_cn.json create mode 100644 src/main/resources/data/inmis/tags/items/backpacks.json create mode 100644 src/main/resources/data/stacker/tags/items/not_stackable.json create mode 100644 src/main/resources/data/techreborn/tags/items/not_stackable.json create mode 100644 src/main/resources/fabric.mod.json create mode 100644 src/main/resources/stacker.mixins.json diff --git a/src/main/java/io/github/Andrew6rant/stacker/Stacker.java b/src/main/java/io/github/Andrew6rant/stacker/Stacker.java new file mode 100644 index 0000000..2731e5b --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/Stacker.java @@ -0,0 +1,105 @@ +package io.github.Andrew6rant.stacker; + +import io.github.Andrew6rant.stacker.mixin.ItemAccess; +import me.shedaniel.autoconfig.AutoConfig; +import me.shedaniel.autoconfig.ConfigHolder; +import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.TagKey; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class Stacker implements ModInitializer { + private static final Logger LOGGER = LogManager.getLogger("Stacker"); + private static Stacker stacker; + static ConfigHolder stackerConfig; + + @Override + public void onInitialize() { + stacker = this; + stackerConfig = AutoConfig.register(StackerConfig.class, GsonConfigSerializer::new); + stackerConfig.registerSaveListener((configHolder, stackerConfig1) -> { + loadStacker("save"); + return ActionResult.success(true); + }); + ServerLifecycleEvents.SERVER_STARTED.register(server -> loadStacker("load")); + ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, success) -> loadStacker("reload")); + } + public static void loadStacker(String configMsg) { + LOGGER.info("Stacker: Attempting to "+configMsg+" config..."); + Set invalidSet = new HashSet<>(); + for (Item item : Registries.ITEM) { + if (!item.isDamageable()) { + Stacker.setMax(item, stackerConfig.getConfig().maxStacker); + } + Stacker.setMax(item, Stacker.overrideItem(item, stackerConfig.getConfig().itemOverride, invalidSet)); + } + if (!invalidSet.isEmpty()) { + LOGGER.error("Stacker: Invalid override entries!"); + LOGGER.warn("Stacker: The following entries were invalid:"); + for (String invalid : invalidSet) { + LOGGER.warn("Stacker: \""+invalid+"\""); + } + LOGGER.warn("Stacker: Make sure to use the format, \"mod:item:max_stack\", or \"#tag:item:max_stack\"."); + } + + LOGGER.info(configMsg.equals("save") ? "Stacker: Config saved!": "Stacker: Config "+configMsg+"ed!"); + } + public static void setMax(Item item, int max) { + if (max >0) { + ((ItemAccess) item).setMaxCount(max); + } + } + public StackerConfig getStackerConfig() { + return stackerConfig.getConfig(); + } + public static Stacker getStacker() { + return stacker; + } + public static boolean isValid(String overrideEntry, String[] splitEntry, Set invalidSet) { + if (splitEntry.length != 3) { + invalidSet.add(overrideEntry); + return false; + } + try { + int max = Integer.parseInt(splitEntry[2]); + } catch (NumberFormatException e) { + invalidSet.add(overrideEntry); + return false; + } + return true; + } + public static Integer overrideItem(Item item, List overrideList, Set invalidSet) { + for(String overrideEntry : overrideList) { + if (overrideEntry.startsWith("#")) { + String[] splitEntry = overrideEntry.trim().substring(1).split(":"); // split into three parts: tag id, item name, max count + if (isValid(overrideEntry, splitEntry, invalidSet)) { + List> itemStream = item.getRegistryEntry().streamTags().toList(); + for (TagKey tagKey : itemStream) { + if (item.getRegistryEntry().isIn(TagKey.of(RegistryKeys.ITEM, new Identifier(splitEntry[0], splitEntry[1])))) { + return Integer.parseInt(splitEntry[2]); + } + } + } + } else { + String[] splitEntry = overrideEntry.trim().split(":"); // split into three parts: tag id, item name, max count + if (isValid(overrideEntry, splitEntry, invalidSet)) { + if (Registries.ITEM.getId(item).toString().equalsIgnoreCase(splitEntry[0] + ":" + splitEntry[1])) { + return Integer.parseInt(splitEntry[2]); + } + } + } + } + return 0; + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java b/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java new file mode 100644 index 0000000..ae8c77c --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/StackerConfig.java @@ -0,0 +1,31 @@ +package io.github.Andrew6rant.stacker; + +import me.shedaniel.autoconfig.ConfigData; +import me.shedaniel.autoconfig.annotation.Config; +import me.shedaniel.autoconfig.annotation.ConfigEntry; + +import java.util.Arrays; +import java.util.List; + +@Config(name = "stacker") +public class StackerConfig implements ConfigData { + + @ConfigEntry.Gui.PrefixText + @ConfigEntry.Gui.Tooltip + public int maxStacker = 64; + + @ConfigEntry.Gui.Tooltip + public boolean fontOverride = true; + + @ConfigEntry.Gui.Tooltip + @ConfigEntry.BoundedDiscrete(min = 0, max = 50) + public int itemCountScaleInt = 25; + + @ConfigEntry.Gui.Tooltip + public List itemOverride = Arrays.asList( + "#stacker:not_stackable:1", + "minecraft:totem_of_undying:16", + "#c:potions:16" + ); + // #techreborn:not_stackable and #inmis:backpacks are kept for backwards compatibility with older configs +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java b/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java new file mode 100644 index 0000000..49f6baa --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/StackerModMenu.java @@ -0,0 +1,15 @@ +package io.github.Andrew6rant.stacker; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import me.shedaniel.autoconfig.AutoConfig; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class StackerModMenu implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return parent -> AutoConfig.getConfigScreen(StackerConfig.class, parent).get(); + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java new file mode 100644 index 0000000..ee07648 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/AnvilScreenHandlerMixin.java @@ -0,0 +1,19 @@ +package io.github.Andrew6rant.stacker.mixin; + +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.AnvilScreenHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(value = AnvilScreenHandler.class, priority = 999) // default priority is 1000, so this applies a bit after other mod's AnvilScreenHandler mixins +public class AnvilScreenHandlerMixin { + // Credit to ZoeyTheEgoist for the original code behind this mixin + @Redirect(method = "onTakeOutput", at = @At(value = "INVOKE", target = "Lnet/minecraft/inventory/Inventory;setStack(ILnet/minecraft/item/ItemStack;)V", ordinal = 3)) + private void setDecrementSlot1StackCount(Inventory inventory, int slot, ItemStack stack) { + ItemStack newStack = inventory.getStack(1); + newStack.decrement(1); + inventory.setStack(1, newStack); + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java new file mode 100644 index 0000000..97d5674 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/BucketItemMixin.java @@ -0,0 +1,26 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.util.ItemsHelper; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BucketItem; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BucketItem.class) +public class BucketItemMixin { + + @Inject(method = "getEmptiedStack", at = @At(value = "HEAD"), cancellable = true) + private static void stackableBucket(ItemStack stack, PlayerEntity player, CallbackInfoReturnable cir){ + if(!player.isCreative()) { + if (stack.getCount() > 1) { + ItemsHelper.insertNewItem(player, new ItemStack(Items.BUCKET)); + stack.decrement(1); + cir.setReturnValue(stack); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java new file mode 100644 index 0000000..c942b3f --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/BundleItemMixin.java @@ -0,0 +1,44 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.Stacker; +import net.minecraft.item.BundleItem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +/** + * Modifies BundleItem's magic numbers to use Stacker's configured 'maxStacker' value + */ +@Mixin(BundleItem.class) +public abstract class BundleItemMixin { + + @ModifyConstant(method = "getAmountFilled", constant = @Constant(floatValue = 64.0f)) + private static float replaceAmountFilled(float constant) { + return (float) Stacker.getStacker().getStackerConfig().maxStacker; + } + + @ModifyConstant(method = "onStackClicked", constant = @Constant(intValue = 64)) + private int replaceOnStackClicked(int constant) { + return Stacker.getStacker().getStackerConfig().maxStacker; + } + + @ModifyConstant(method = "getItemBarStep", constant = @Constant(intValue = 64)) + private int replaceGetItemBarStep(int constant) { + return Stacker.getStacker().getStackerConfig().maxStacker; + } + + @ModifyConstant(method = "addToBundle", constant = @Constant(intValue = 64)) + private static int replaceAddToBundle(int constant) { + return Stacker.getStacker().getStackerConfig().maxStacker; + } + + @ModifyConstant(method = "getItemOccupancy", constant = @Constant(intValue = 64)) + private static int replaceGetItemOccupancy(int constant) { + return Stacker.getStacker().getStackerConfig().maxStacker; + } + + @ModifyConstant(method = "appendTooltip", constant = @Constant(intValue = 64)) + private int replaceAppendTooltip(int constant) { + return Stacker.getStacker().getStackerConfig().maxStacker; + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java new file mode 100644 index 0000000..3a07658 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/DispenserBehaviorMixin.java @@ -0,0 +1,44 @@ +package io.github.Andrew6rant.stacker.mixin; + +import net.minecraft.block.DispenserBlock; +import net.minecraft.block.dispenser.ItemDispenserBehavior; +import net.minecraft.item.FluidModificationItem; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.math.BlockPointer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(targets = "net/minecraft/block/dispenser/DispenserBehavior$8") +public class DispenserBehaviorMixin { + // Credit to ZoeyTheEgoist for this mixin + /** + * @author Astrazoey + */ + @Overwrite + public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { + ItemDispenserBehavior fallbackBehavior = new ItemDispenserBehavior(); + ItemStack emptyBucketStack = new ItemStack(Items.BUCKET); + FluidModificationItem fluidModificationItem = (FluidModificationItem) stack.getItem(); + BlockPos blockPos = pointer.blockEntity().getPos().offset(pointer.state().get(DispenserBlock.FACING)); + World world = pointer.blockEntity().getWorld(); + + if (fluidModificationItem.placeFluid( null, world, blockPos, null)) { + fluidModificationItem.onEmptied( null, world, stack, blockPos); + if (stack.getCount() > 1) { + ItemStack newStack = stack.copy(); + newStack.decrement(1); + if (pointer.blockEntity().addToFirstFreeSlot(emptyBucketStack.copy()) < 0) { + fallbackBehavior.dispense(pointer, emptyBucketStack.copy()); + } + return newStack; + } else { + return new ItemStack(Items.BUCKET); + } + } else { + return fallbackBehavior.dispense(pointer, stack); + } + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java new file mode 100644 index 0000000..2099fd1 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/HorseScreenHandlerMixin.java @@ -0,0 +1,18 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.util.HorseScreenInterface; +import net.minecraft.inventory.Inventory; +import net.minecraft.screen.slot.Slot; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(targets = "net/minecraft/screen/HorseScreenHandler$1") +public class HorseScreenHandlerMixin extends Slot implements HorseScreenInterface { + // Credit to ZoeyTheEgoist for this mixin + public HorseScreenHandlerMixin(Inventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + } + @Override + public int getMaxItemCount() { + return 1; + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java new file mode 100644 index 0000000..a041914 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemAccess.java @@ -0,0 +1,14 @@ +package io.github.Andrew6rant.stacker.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.item.Item; + +@Mixin (Item.class) +public interface ItemAccess { + @Mutable + @Accessor + void setMaxCount(int count); +} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java new file mode 100644 index 0000000..59dd91e --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemRenderScaleMixin.java @@ -0,0 +1,24 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.Stacker; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Environment(EnvType.CLIENT) +@Pseudo +@Mixin(targets = "net.devtech.stacc.ItemCountRenderHandler") +public class ItemRenderScaleMixin { + @Inject(method = "scale", at = @At("RETURN"), cancellable = true, remap = false) + private void forceScale(CallbackInfoReturnable cir) { + float intToFloat = (float) (Stacker.getStacker().getStackerConfig().itemCountScaleInt+50)/100; + if (Stacker.getStacker().getStackerConfig().fontOverride) { + cir.setReturnValue(cir.getReturnValue()); + } else { + cir.setReturnValue(intToFloat); + } + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java new file mode 100644 index 0000000..b860c0e --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/ItemStackMixin.java @@ -0,0 +1,13 @@ +package io.github.Andrew6rant.stacker.mixin; + +import net.minecraft.item.Item; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.*; + +@Mixin(Item.Settings.class) +public class ItemStackMixin { + @ModifyVariable(method = "maxCount", at = @At("HEAD"), argsOnly = true) + private int forceCount(int original) { + return Integer.MAX_VALUE; + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java new file mode 100644 index 0000000..020fda7 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/LimitFurnaceStackMixin.java @@ -0,0 +1,31 @@ +package io.github.Andrew6rant.stacker.mixin; + +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.screen.slot.FurnaceFuelSlot; +import net.minecraft.screen.slot.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(FurnaceFuelSlot.class) +public abstract class LimitFurnaceStackMixin extends Slot { + + public LimitFurnaceStackMixin(Inventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + } + + public boolean canInsert(ItemStack stack) { // I know this is a kinda gross override, + return true; // but if removed it crashes the game + } + + @Override + public int getMaxItemCount(ItemStack stack) { + return isBucket(stack) ? 1 : super.getMaxItemCount(stack); + } + + @Unique + public boolean isBucket(ItemStack stack) { + return stack.isOf(Items.BUCKET) || stack.isOf(Items.LAVA_BUCKET); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java new file mode 100644 index 0000000..db6b353 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/MilkBucketItemMixin.java @@ -0,0 +1,24 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.util.ItemsHelper; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.MilkBucketItem; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(MilkBucketItem.class) +public class MilkBucketItemMixin { + + @Inject(method = "finishUsing", at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/item/ItemStack;decrement(I)V"), cancellable = true) + private void stackableMilkBucket(ItemStack stack, World world, LivingEntity user, CallbackInfoReturnable cir){ + user.clearStatusEffects(); + ItemsHelper.insertNewItem((PlayerEntity)user, new ItemStack(Items.BUCKET)); + cir.setReturnValue(stack); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/MusicDiscItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/MusicDiscItemMixin.java new file mode 100644 index 0000000..40dd19f --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/MusicDiscItemMixin.java @@ -0,0 +1,18 @@ +package io.github.Andrew6rant.stacker.mixin; + +import net.minecraft.block.entity.JukeboxBlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.MusicDiscItem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(MusicDiscItem.class) +public class MusicDiscItemMixin { + @Redirect(method = "useOnBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/entity/JukeboxBlockEntity;setStack(Lnet/minecraft/item/ItemStack;)V")) + public void setCountToOne(JukeboxBlockEntity jukeboxBlockEntity, ItemStack stack) { + ItemStack newStack = stack.copy(); + newStack.setCount(1); + jukeboxBlockEntity.setStack(newStack); + } +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java b/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java new file mode 100644 index 0000000..30e542f --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/mixin/StewItemMixin.java @@ -0,0 +1,22 @@ +package io.github.Andrew6rant.stacker.mixin; + +import io.github.Andrew6rant.stacker.util.ItemsHelper; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.StewItem; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(StewItem.class) +public class StewItemMixin { //This mixin works for soups as well + @Inject(method = "finishUsing", at=@At(value = "NEW", target = "net/minecraft/item/ItemStack"), cancellable = true) + private void stackableStew(ItemStack stack, World world, LivingEntity user, CallbackInfoReturnable cir){ + ItemsHelper.insertNewItem((PlayerEntity)user, new ItemStack(Items.BOWL)); + cir.setReturnValue(stack); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java b/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java new file mode 100644 index 0000000..4e24dea --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/util/HorseScreenInterface.java @@ -0,0 +1,6 @@ +package io.github.Andrew6rant.stacker.util; + +public interface HorseScreenInterface { + // Credit to ZoeyTheEgoist for this interface + public int getMaxItemCount(); +} diff --git a/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java b/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java new file mode 100644 index 0000000..2ac7738 --- /dev/null +++ b/src/main/java/io/github/Andrew6rant/stacker/util/ItemsHelper.java @@ -0,0 +1,13 @@ +package io.github.Andrew6rant.stacker.util; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; + +public class ItemsHelper { + + public static void insertNewItem(PlayerEntity player, ItemStack stack2) { + if (!player.getInventory().insertStack(stack2)) { + player.dropItem(stack2, false); + } + } +} diff --git a/src/main/resources/assets/stacker/icon.png b/src/main/resources/assets/stacker/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2524cb23171e22c0c3b01b247aa1e89f7fce3df0 GIT binary patch literal 4049 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 O;OgY=c*p*9{C@y}$MEO? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/stacker/lang/en_us.json b/src/main/resources/assets/stacker/lang/en_us.json new file mode 100644 index 0000000..b1db3b9 --- /dev/null +++ b/src/main/resources/assets/stacker/lang/en_us.json @@ -0,0 +1,12 @@ +{ + "text.autoconfig.stacker.title": "Stacker Config", + "text.autoconfig.stacker.option.maxStacker": "Maximum Stack Size", + "text.autoconfig.stacker.option.maxStacker.@Tooltip": "Do not set larger than 2147483647 or below 1", + "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§cAll changes are applied instantly and do not need a restart!", + "text.autoconfig.stacker.option.fontOverride": "Variable Font Scale Override", + "text.autoconfig.stacker.option.fontOverride.@Tooltip": "Set this to §aYes §fif you want font size to scale with amount", + "text.autoconfig.stacker.option.itemCountScaleInt": "Item Text Size", + "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "Only applies if Variable Font Override is set to §cNo", + "text.autoconfig.stacker.option.itemOverride.@Tooltip": "Format: §emod:name:stack_size §ror §e#tag:name:stack_size", + "text.autoconfig.stacker.option.itemOverride": "Override the stack size of:" +} \ No newline at end of file diff --git a/src/main/resources/assets/stacker/lang/ko_kr.json b/src/main/resources/assets/stacker/lang/ko_kr.json new file mode 100644 index 0000000..961e480 --- /dev/null +++ b/src/main/resources/assets/stacker/lang/ko_kr.json @@ -0,0 +1,12 @@ +{ + "text.autoconfig.stacker.title": "Stacker 환경설정", + "text.autoconfig.stacker.option.maxStacker": "최대 아이템 개수", + "text.autoconfig.stacker.option.maxStacker.@Tooltip": "2147483647보다 크거나 1보다 작은 값으로 설정하지 마세요.", + "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§c모든 변경 내용은 즉시 적용되며 다시 시작하실 필요 없습니다!", + "text.autoconfig.stacker.option.fontOverride": "가변 폰트 크기 재정의", + "text.autoconfig.stacker.option.fontOverride.@Tooltip": "글자 크기를 수량에 따라 조정하려면 이 옵션을 §a예 §f로 설정하세요.", + "text.autoconfig.stacker.option.itemCountScaleInt": "아이템 텍스트 크기", + "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "가변 폰트 크기 재정의를 §c아니오§f를 설정한 경우에만 적용됩니다.", + "text.autoconfig.stacker.option.itemOverride.@Tooltip": "서식: §e모드 이름:아이템 이름:최대 개수 §r또는 §e#태그:이름:최대 개수", + "text.autoconfig.stacker.option.itemOverride": "아이템 개수 재정의:" +} \ No newline at end of file diff --git a/src/main/resources/assets/stacker/lang/zh_cn.json b/src/main/resources/assets/stacker/lang/zh_cn.json new file mode 100644 index 0000000..1cb9bae --- /dev/null +++ b/src/main/resources/assets/stacker/lang/zh_cn.json @@ -0,0 +1,12 @@ +{ + "text.autoconfig.stacker.title": "Stacker配置", + "text.autoconfig.stacker.option.maxStacker": "最大堆叠大小", + "text.autoconfig.stacker.option.maxStacker.@Tooltip": "不要设置超过2147483647,也不要小于1", + "text.autoconfig.stacker.option.maxStacker.@PrefixText": "§c所有的更改会被立即应用,不需要重新启动!", + "text.autoconfig.stacker.option.fontOverride": "动态字体比例覆盖", + "text.autoconfig.stacker.option.fontOverride.@Tooltip": "将该项设置为 §a是 §f如果您希望字体随物品堆叠数量大小而变化", + "text.autoconfig.stacker.option.itemCountScaleInt": "物品数量字体大小", + "text.autoconfig.stacker.option.itemCountScaleInt.@Tooltip": "仅在动态字体比例覆盖设置为 §c否 §f时适用", + "text.autoconfig.stacker.option.itemOverride.@Tooltip": "格式: §emod:name:stack_size §r或者 §e#tag:name:stack_size", + "text.autoconfig.stacker.option.itemOverride": "覆盖堆叠大小:" +} \ No newline at end of file diff --git a/src/main/resources/data/inmis/tags/items/backpacks.json b/src/main/resources/data/inmis/tags/items/backpacks.json new file mode 100644 index 0000000..3f8dc80 --- /dev/null +++ b/src/main/resources/data/inmis/tags/items/backpacks.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + {"id": "inmis:ender_pouch", "required": false}, + {"id": "inmis:baby_backpack", "required": false}, + {"id": "inmis:frayed_backpack", "required": false}, + {"id": "inmis:plated_backpack", "required": false}, + {"id": "inmis:gilded_backpack", "required": false}, + {"id": "inmis:bejeweled_backpack", "required": false}, + {"id": "inmis:blazing_backpack", "required": false}, + {"id": "inmis:withered_backpack", "required": false}, + {"id": "inmis:endless_backpack", "required": false} + ] +} \ No newline at end of file diff --git a/src/main/resources/data/stacker/tags/items/not_stackable.json b/src/main/resources/data/stacker/tags/items/not_stackable.json new file mode 100644 index 0000000..8b069cb --- /dev/null +++ b/src/main/resources/data/stacker/tags/items/not_stackable.json @@ -0,0 +1,40 @@ +{ + "replace": false, + "values": [ + {"id": "minecraft:bundle", "required": false}, + {"id": "techreborn:quantum_helmet", "required": false}, + {"id": "techreborn:quantum_chestplate", "required": false}, + {"id": "techreborn:quantum_leggings", "required": false}, + {"id": "techreborn:quantum_boots", "required": false}, + {"id": "techreborn:red_cell_battery", "required": false}, + {"id": "techreborn:lithium_ion_battery", "required": false}, + {"id": "techreborn:lithium_ion_batpack", "required": false}, + {"id": "techreborn:energy_crystal", "required": false}, + {"id": "techreborn:lapotron_crystal", "required": false}, + {"id": "techreborn:lapotronic_orb", "required": false}, + {"id": "techreborn:lapotronic_orbpack", "required": false}, + {"id": "techreborn:basic_drill", "required": false}, + {"id": "techreborn:basic_chainsaw", "required": false}, + {"id": "techreborn:basic_jackhammer", "required": false}, + {"id": "techreborn:electric_treetap", "required": false}, + {"id": "techreborn:advanced_drill", "required": false}, + {"id": "techreborn:advanced_chainsaw", "required": false}, + {"id": "techreborn:advanced_jackhammer", "required": false}, + {"id": "techreborn:rock_cutter", "required": false}, + {"id": "techreborn:industrial_drill", "required": false}, + {"id": "techreborn:industrial_chainsaw", "required": false}, + {"id": "techreborn:industrial_jackhammer", "required": false}, + {"id": "techreborn:nanosaber", "required": false}, + {"id": "techreborn:omni_tool", "required": false}, + {"id": "techreborn:cloaking_device", "required": false}, + {"id": "inmis:ender_pouch", "required": false}, + {"id": "inmis:baby_backpack", "required": false}, + {"id": "inmis:frayed_backpack", "required": false}, + {"id": "inmis:plated_backpack", "required": false}, + {"id": "inmis:gilded_backpack", "required": false}, + {"id": "inmis:bejeweled_backpack", "required": false}, + {"id": "inmis:blazing_backpack", "required": false}, + {"id": "inmis:withered_backpack", "required": false}, + {"id": "inmis:endless_backpack", "required": false} + ] +} \ No newline at end of file diff --git a/src/main/resources/data/techreborn/tags/items/not_stackable.json b/src/main/resources/data/techreborn/tags/items/not_stackable.json new file mode 100644 index 0000000..d5f83a3 --- /dev/null +++ b/src/main/resources/data/techreborn/tags/items/not_stackable.json @@ -0,0 +1,30 @@ +{ + "replace": false, + "values": [ + {"id": "techreborn:quantum_helmet", "required": false}, + {"id": "techreborn:quantum_chestplate", "required": false}, + {"id": "techreborn:quantum_leggings", "required": false}, + {"id": "techreborn:quantum_boots", "required": false}, + {"id": "techreborn:red_cell_battery", "required": false}, + {"id": "techreborn:lithium_ion_battery", "required": false}, + {"id": "techreborn:lithium_ion_batpack", "required": false}, + {"id": "techreborn:energy_crystal", "required": false}, + {"id": "techreborn:lapotron_crystal", "required": false}, + {"id": "techreborn:lapotronic_orb", "required": false}, + {"id": "techreborn:lapotronic_orbpack", "required": false}, + {"id": "techreborn:basic_drill", "required": false}, + {"id": "techreborn:basic_chainsaw", "required": false}, + {"id": "techreborn:basic_jackhammer", "required": false}, + {"id": "techreborn:electric_treetap", "required": false}, + {"id": "techreborn:advanced_drill", "required": false}, + {"id": "techreborn:advanced_chainsaw", "required": false}, + {"id": "techreborn:advanced_jackhammer", "required": false}, + {"id": "techreborn:rock_cutter", "required": false}, + {"id": "techreborn:industrial_drill", "required": false}, + {"id": "techreborn:industrial_chainsaw", "required": false}, + {"id": "techreborn:industrial_jackhammer", "required": false}, + {"id": "techreborn:nanosaber", "required": false}, + {"id": "techreborn:omni_tool", "required": false}, + {"id": "techreborn:cloaking_device", "required": false} + ] +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..b0fcff3 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,50 @@ +{ + "schemaVersion": 1, + "id": "stacker", + "version": "${version}", + + "name": "Stacker", + "description": "Change the stack size of all items! (1.20.2 Port by Fesuoy)", + "authors": [ + "Andrew6rant (Andrew Grant)" + ], + "contact": { + "homepage": "https://www.curseforge.com/minecraft/mc-mods/stacker", + "sources": "https://github.com/Andrew6rant/Stacker", + "issues": "https://github.com/Andrew6rant/Stacker/issues" + }, + + "license": "CC0-1.0", + "icon": "assets/stacker/icon.png", + + "environment": "*", + "entrypoints": { + "main": [ + "io.github.Andrew6rant.stacker.Stacker" + ], + "modmenu": [ + "io.github.Andrew6rant.stacker.StackerModMenu" + ] + }, + "mixins": [ + "stacker.mixins.json" + ], + + "depends": { + "fabricloader": ">=0.14.8", + "fabric": "*", + "minecraft": [ + "1.20.2" + ], + "java": ">=17", + "cloth-config2": ">=12.0.0" + }, + "custom": { + "modmenu": [ + "io.github.Andrew6rant.stacker.StackerConfig" + ] + }, + "suggests": { + "modmenu": "*" + } +} diff --git a/src/main/resources/stacker.mixins.json b/src/main/resources/stacker.mixins.json new file mode 100644 index 0000000..ac104b8 --- /dev/null +++ b/src/main/resources/stacker.mixins.json @@ -0,0 +1,26 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "io.github.Andrew6rant.stacker.mixin", + "compatibilityLevel": "JAVA_16", + "mixins": [ + "AnvilScreenHandlerMixin", + "BucketItemMixin", + "BundleItemMixin", + "DispenserBehaviorMixin", + "HorseScreenHandlerMixin", + "ItemAccess", + "ItemStackMixin", + "LimitFurnaceStackMixin", + "MilkBucketItemMixin", + "MusicDiscItemMixin", + "StewItemMixin" + ], + "client": [ + "ItemRenderScaleMixin" + ], + "server": [], + "injectors": { + "defaultRequire": 1 + } +} From 5dc3acf55f963523de207712f1cec78b4d29c83c Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:21:54 +0300 Subject: [PATCH 07/11] Update build.yml --- .github/workflows/build.yml | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f7478a9..71f0853 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,28 +12,38 @@ jobs: matrix: # Use these Java versions java: [ - 17 # Minimum supported by Minecraft + 17, # Minimum supported by Minecraft + 21, ] # and run on both Linux and Windows os: [ubuntu-20.04, windows-latest] runs-on: ${{ matrix.os }} steps: - name: checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: validate gradle wrapper uses: gradle/wrapper-validation-action@v1 - name: setup jdk ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v4 with: java-version: ${{ matrix.java }} + distribution: 'temurin' + - uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + ./.gradle/loom-cache + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- - name: make gradle wrapper executable - if: ${{ runner.os != 'Windows' }} run: chmod +x ./gradlew - name: build run: ./gradlew build - name: capture build artifacts - if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS - uses: actions/upload-artifact@v2 + if: ${{ matrix.java == '21' }} # Only upload artifacts built from latest java version + uses: actions/upload-artifact@v3 with: - name: Artifacts - path: build/libs/ + name: stacker-artifacts + path: build/libs/*.jar From 350e8ef4e1b75cd1c7805716188c3b6f99fb67a6 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:22:26 +0300 Subject: [PATCH 08/11] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 71f0853..7b52186 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: 21, ] # and run on both Linux and Windows - os: [ubuntu-20.04, windows-latest] + os: [ubuntu-20.04] runs-on: ${{ matrix.os }} steps: - name: checkout repository From 0433c513b9ae2d657772247f2d3bac4656ff1a20 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:24:07 +0300 Subject: [PATCH 09/11] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b52186..251b1ce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: - name: make gradle wrapper executable run: chmod +x ./gradlew - name: build - run: ./gradlew build + run: ./gradlew build --no-daemon - name: capture build artifacts if: ${{ matrix.java == '21' }} # Only upload artifacts built from latest java version uses: actions/upload-artifact@v3 From 9aff188688f1bb7c7dfd78bec720d86aaf3efe18 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:32:27 +0300 Subject: [PATCH 10/11] Create release.yml --- .github/workflows/release.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..851146f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,33 @@ +name: Publish Artifacts + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + distribution: 'adopt-hotspot' + java-version: 17 + cache: 'gradle' + - name: make gradle wrapper executable + run: chmod +x ./gradlew + - name: build + run: ./gradlew build + - uses: Kir-Antipov/mc-publish@v3.0 + with: + curseforge-id: 515415 + modrinth-id: 7pbXPVrB + modrinth-featured: true + modrinth-unfeature-mode: intersection + modrinth-token: ${{ secrets.MODRINTH_TOKEN }} + curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} + version-type: release + loaders: | + fabric + quilt From 43018c22e1d981508152528792cebeea88fc1c07 Mon Sep 17 00:00:00 2001 From: Fesuoy1 <127741745+Fesuoy1@users.noreply.github.com> Date: Sat, 17 Feb 2024 04:33:21 +0300 Subject: [PATCH 11/11] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 851146f..b617c88 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: - name: make gradle wrapper executable run: chmod +x ./gradlew - name: build - run: ./gradlew build + run: ./gradlew build --no-daemon - uses: Kir-Antipov/mc-publish@v3.0 with: curseforge-id: 515415