diff --git a/dependencies.gradle b/dependencies.gradle index d3b9a9cf..a4f5991c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -176,9 +176,6 @@ dependencies { // Top Addons (from CurseForge) compileOnly rfg.deobf("curse.maven:top-addons-247111:2887479") // Version 1.13.0 - // Inventory BogoSorter (from CurseForge) - compileOnly rfg.deobf("curse.maven:inventory-bogosorter-632327:5162169") // Version 1.4.8 - // Thermal Foundation (from CurseForge) compileOnly "curse.maven:thermal-foundation-222880:2926428" // Version 2.6.7.1 @@ -302,11 +299,7 @@ dependencies { if (project.enable_aa.toBoolean()) { runtimeOnly "curse.maven:actually-additions-228404:3117927" // Version r152 } - - if (project.enable_bogo.toBoolean()) { - runtimeOnly "curse.maven:inventory-bogosorter-632327:5162169" // Version 1.4.8 - } - + z if (project.enable_find.toBoolean()) { runtimeOnly "curse.maven:findmyitemsandfluids-610085:3748963" // Version 1.0.0 } diff --git a/gradle.properties b/gradle.properties index 94989d71..f86ece6b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -304,9 +304,6 @@ enable_aa = false # If this is set to false, the remappers will not apply there. enable_ender_storage = false -# Whether to enable Inventory BogoSorter in runtime. Fixes duplication glitch with Thermal Satchels. -enable_bogo = false - # Whether to enable FindMyItemsAndFluids in runtime. Fixes issues with a keybind not registering. enable_find = false diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java b/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java index e04a0f51..5a2c6b06 100644 --- a/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java +++ b/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java @@ -46,7 +46,6 @@ public class LabsLateMixinLoader implements ILateMixinLoader { .put(LabsValues.AE2_MODID, true) .put(LabsValues.ENDER_IO_MODID, true) .put(LabsValues.AA_MODID, true) - .put(LabsValues.BOGOSORT_MODID, true) .put(LabsValues.THERMAL_FOUNDATION_MODID, true) .put(LabsValues.BQU_MODID, true) .put(LabsValues.BETTER_P2P_MODID, true) diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/bogosorter/SortHandlerMixin.java b/src/main/java/com/nomiceu/nomilabs/mixin/bogosorter/SortHandlerMixin.java deleted file mode 100644 index 2b580d81..00000000 --- a/src/main/java/com/nomiceu/nomilabs/mixin/bogosorter/SortHandlerMixin.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.nomiceu.nomilabs.mixin.bogosorter; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -import org.jetbrains.annotations.UnmodifiableView; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import com.cleanroommc.bogosorter.api.ISlot; -import com.cleanroommc.bogosorter.common.sort.SlotGroup; -import com.cleanroommc.bogosorter.common.sort.SortHandler; -import com.google.common.collect.ImmutableList; - -/** - * Prevents Modification of 'Locked' Slots. - */ -@Mixin(value = SortHandler.class, remap = false) -public class SortHandlerMixin { - - @Shadow - @Final - private EntityPlayer player; - - @Redirect(method = "sortHorizontal", - at = @At(value = "INVOKE", - target = "Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;getSlots()Ljava/util/List;")) - private @UnmodifiableView List checkLockedSlots1(SlotGroup instance) { - return labs$getSlotsLogic(instance); - } - - @Redirect(method = "gatherItems", - at = @At(value = "INVOKE", - target = "Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;getSlots()Ljava/util/List;")) - private @UnmodifiableView List checkLockedSlots2(SlotGroup instance) { - return labs$getSlotsLogic(instance); - } - - @Redirect(method = "clearAllItems", - at = @At(value = "INVOKE", - target = "Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;getSlots()Ljava/util/List;")) - private @UnmodifiableView List checkLockedSlots3(SlotGroup instance) { - return labs$getSlotsLogic(instance); - } - - @Redirect(method = "randomizeItems", - at = @At(value = "INVOKE", - target = "Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;getSlots()Ljava/util/List;")) - private @UnmodifiableView List checkLockedSlots4(SlotGroup instance) { - return labs$getSlotsLogic(instance); - } - - /** - * Sort Bogo is static, so we need to redirect calls of it - */ - @Redirect(method = "sort(Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;Z)V", - at = @At(value = "INVOKE", - target = "Lcom/cleanroommc/bogosorter/common/sort/SortHandler;sortBogo(Lcom/cleanroommc/bogosorter/common/sort/SlotGroup;)V")) - private void newSortBogo(SlotGroup instance) { - List items = new ArrayList<>(); - - for (var slot : labs$getSlotsLogic(instance)) { - ItemStack stack = slot.bogo$getStack(); - items.add(stack); - } - - Collections.shuffle(items); - List slots = labs$getSlotsLogic(instance); - - for (int i = 0; i < slots.size(); i++) { - ISlot slot = slots.get(i); - slot.bogo$putStack(items.get(i)); - } - } - - @Unique - private @UnmodifiableView List labs$getSlotsLogic(SlotGroup instance) { - var slots = instance.getSlots(); - List result = new ArrayList<>(); - - for (var slot : slots) { - /* - * Logic being used to check if we cannot access the slot: - * 1. Can the player take the stack? - * This usually returns true, but some slot implementations return false if the slot is empty. - * - * 2. Can we insert the current stack into the slot? - * This may seem roundabout, but this means that if it returns false, then most likely, the slot is - * always returning false. - * - * 3. Is the stack in the slot empty? - * If it is empty, some implementations return false for both above methods. - * Although this might risk changing actually inaccessible slots, most likely, those slots would not be - * empty. - * - * The slot should only be marked as inaccessible if all three conditions return false. - */ - boolean canTake = slot.bogo$canTakeStack(player); - boolean canInsert = slot.bogo$isItemValid(slot.bogo$getStack().copy()); - boolean isEmpty = slot.bogo$getStack().isEmpty(); - if (canTake || canInsert || isEmpty) result.add(slot); - } - return ImmutableList.copyOf(result); - } -} diff --git a/src/main/resources/mixins.nomilabs.bogosorter.json b/src/main/resources/mixins.nomilabs.bogosorter.json deleted file mode 100644 index 20a54081..00000000 --- a/src/main/resources/mixins.nomilabs.bogosorter.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "package": "com.nomiceu.nomilabs.mixin.bogosorter", - "refmap": "mixins.nomilabs.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "mixins": [ - "SortHandlerMixin" - ], - "client": [], - "server": [] -}