diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java index 504125de14..3b67f70a73 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java @@ -1,5 +1,6 @@ /* * Copyright (c) 2016-2018, Adam + * Copyright (c) 2020, ThatGamerBlue * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -62,6 +63,63 @@ public abstract class RSItemContainerMixin implements RSItemContainer return items; } + @Inject + @Override + public Item getItem(int slot) + { + int[] itemIds = getItemIds(); + int[] stackSizes = getStackSizes(); + if (slot >= 0 && slot < itemIds.length && itemIds[slot] != -1) + { + return new Item(itemIds[slot], stackSizes[slot]); + } + + return null; + } + + @Inject + @Override + public boolean contains(int itemId) + { + int[] itemIds = getItemIds(); + for (int id : itemIds) + { + if (id == itemId) + { + return true; + } + } + + return false; + } + + @Inject + @Override + public int count(int itemId) + { + int[] itemIds = getItemIds(); + int[] stackSizes = getStackSizes(); + int count = 0; + + for (int i = 0; i < itemIds.length; i++) + { + if (itemIds[i] != itemId) + { + continue; + } + + int stack = stackSizes[i]; + if (stack > 1) + { + return stack; + } + + count++; + } + + return count; + } + @FieldHook("changedItemContainers") @Inject public static void onItemContainerUpdate(int idx) @@ -80,4 +138,4 @@ public abstract class RSItemContainerMixin implements RSItemContainer } } } -} +} \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java index 49621b123d..63d9b5f23a 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java @@ -1,3 +1,31 @@ +/* + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package net.runelite.rs.api; import net.runelite.api.widgets.Widget; @@ -23,4 +51,12 @@ public interface RSScriptEvent extends ScriptEvent @Import("mouseX") int getMouseX(); -} + + @Import("keyTyped") + // shit name + int getTypedKeyCode(); + + @Import("keyPressed") + // also a shit name + int getTypedKeyChar(); +} \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java index 89b2a92d55..f7a4053935 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java @@ -85,7 +85,7 @@ public interface RSWidget extends Widget @Import("modelType") int getModelType(); - + @Import("modelType") void setModelType(int modelType); @@ -352,7 +352,7 @@ public interface RSWidget extends Widget @Import("onOp") @Override - Object[] getOnOp(); + Object[] getOnOpListener(); @Import("onDialogAbort") @Override @@ -542,4 +542,4 @@ public interface RSWidget extends Widget @Import("onClick") @Override void setOnClickListener(Object[] o); -} +} \ No newline at end of file