diff --git a/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java b/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java deleted file mode 100644 index dd77c4ef9..000000000 --- a/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java +++ /dev/null @@ -1,87 +0,0 @@ -package yalter.mousetweaks.api; - -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; - -/** - * This is the interface you want to implement in your GuiScreen to make it compatible with Mouse Tweaks. - * If this interface is not enough (for example, you need a custom slot click function, or if you use a custom Container - * which happens to be incompatible), check IMTModGuiContainer2Ex instead. - * If you just need to disable Mouse Tweaks or the wheel tweak, see the MouseTweaksIgnore - * or the MouseTweaksDisableWheelTweak annotations. - */ -public interface IMTModGuiContainer2 { - /** - * If you want to disable Mouse Tweaks in your GuiScreen, return true from this method. - * - * @return True if Mouse Tweaks should be disabled, false otherwise. - */ - boolean MT_isMouseTweaksDisabled(); - - /** - * If you want to disable the Wheel Tweak in your GuiScreen, return true from this method. - * - * @return True if the Wheel Tweak should be disabled, false otherwise. - */ - boolean MT_isWheelTweakDisabled(); - - /** - * Returns the Container. - * - * @return Container that is currently in use. - */ - Container MT_getContainer(); - - /** - * Returns the Slot that is currently selected by the player, or null if no Slot is selected. - * - * @return Slot that is located under the mouse, or null if no Slot it currently under the mouse. - */ - Slot MT_getSlotUnderMouse(); - - /** - * Return true if the given Slot behaves like the vanilla crafting output slots (inside the crafting table, - * or the furnace output slot, or the anvil output slot, etc.). These slots are handled differently by Mouse Tweaks. - * - * @param slot the slot to check - * @return True if slot is a crafting output slot. - */ - boolean MT_isCraftingOutput(Slot slot); - - /** - * Return true if the given Slot should be ignored by Mouse Tweaks. Examples of ignored slots are the item select - * slots and the Destroy Item slot in the vanilla creative inventory. - * - * @param slot the slot to check - * @return Tru if slot should be ignored by Mouse Tweaks. - */ - boolean MT_isIgnored(Slot slot); - - /** - * If your container has an RMB dragging functionality (like vanilla containers), disable it inside this method. - * This method is called every frame (render tick), which is after all mouseClicked / mouseClickMove / mouseReleased - * events are handled (although note these events are handled every game tick, which is far less frequent than every - * render tick).

- * - * If true is returned from this method, Mouse Tweaks (after checking other conditions like isIgnored) will click - * the slot on which the right mouse button was initially pressed (in most cases this is the slot currently under - * mouse). This is needed because the vanilla RMB dragging functionality prevents the initial slot click.

- * - * For vanilla containers this method looks like this: - *
-	 * this.ignoreMouseUp = true;
-	 *
-	 * if (this.dragSplitting) {
-	 *     if (this.dragSplittingButton == 1) {
-	 *         this.dragSplitting = false;
-	 *         return true;
-	 *     }
-	 * }
-	 *
-	 * return false;
-	 * 
- * - * @return True if Mouse Tweaks should click the slot on which the RMB was pressed. - */ - boolean MT_disableRMBDraggingFunctionality(); -} diff --git a/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java b/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java new file mode 100644 index 000000000..78737d128 --- /dev/null +++ b/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java @@ -0,0 +1,14 @@ +package yalter.mousetweaks.api; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Put this on your GuiScreen to disable Mouse Tweaks. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface MouseTweaksIgnore { +} \ No newline at end of file diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index e0c952eb7..ea695d166 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -69,13 +69,11 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fml.common.Optional; -import net.minecraftforge.items.SlotItemHandler; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; -import yalter.mousetweaks.api.IMTModGuiContainer2; +import yalter.mousetweaks.api.MouseTweaksIgnore; -import javax.annotation.Nonnull; import java.awt.*; import java.io.IOException; import java.text.DecimalFormat; @@ -88,8 +86,8 @@ import static appeng.integration.modules.jei.JEIPlugin.aeGuiHandler; import static appeng.integration.modules.jei.JEIPlugin.runtime; -@Optional.Interface(iface = "yalter.mousetweaks.api.IMTModGuiContainer2", modid = "mousetweaks") -public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContainer2 { +@MouseTweaksIgnore +public abstract class AEBaseGui extends GuiContainer { private final List meSlots = new ArrayList<>(); // drag y private final Set drag_click = new HashSet<>(); @@ -935,7 +933,10 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain } } else if (s instanceof AppEngSlot) { AppEngSlot appEngSlot = ((AppEngSlot) s); - if (s.getStack().isEmpty()) return; + if (s.getStack().isEmpty()) { + super.drawSlot(s); + return; + } appEngSlot.setDisplay(true); appEngSlot.setReturnAsSingleStack(true); @@ -987,47 +988,4 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain protected List getMeSlots() { return this.meSlots; } - - @Override - @Optional.Method(modid = "mousetweaks") - public boolean MT_isMouseTweaksDisabled() { - return false; - } - - @Override - @Optional.Method(modid = "mousetweaks") - public boolean MT_isWheelTweakDisabled() { - return true; - } - - @Override - @Optional.Method(modid = "mousetweaks") - public Container MT_getContainer() { - return this.inventorySlots; - } - - @Override - @Optional.Method(modid = "mousetweaks") - public Slot MT_getSlotUnderMouse() { - return getSlotUnderMouse(); - } - - @Override - @Optional.Method(modid = "mousetweaks") - public boolean MT_isCraftingOutput(Slot slot) { - return slot instanceof SlotOutput || slot instanceof AppEngCraftingSlot; - } - - @Override - @Optional.Method(modid = "mousetweaks") - public boolean MT_isIgnored(Slot slot) { - return false; - } - - @Override - @Optional.Method(modid = "mousetweaks") - public boolean MT_disableRMBDraggingFunctionality() { - return false; - } - }