diff --git a/runelite-api/src/main/java/net/runelite/api/Buffer.java b/runelite-api/src/main/java/net/runelite/api/Buffer.java new file mode 100644 index 0000000000..384b3cacc8 --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/Buffer.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020, Noodleeater + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. 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 OWNER 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.api; + +/** + * Represents a byte buffer + */ +public interface Buffer extends Node +{ + byte[] getPayload(); + + int getOffset(); + + /** + * Use this api to write to byte buffers + */ + void writeByte(int var1); + + void writeShort(int var1); + + void writeMedium(int var1); + + void writeInt(int var1); + + void writeLong(long var1); + + void writeStringCp1252NullTerminated(String string); +} diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 1d354616c2..5d548fb2ae 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -2162,4 +2162,9 @@ public interface Client extends GameEngine AbstractArchive getSpotAnimationDefinition_archive(); AbstractArchive getSpotAnimationDefinition_modelArchive(); + + /** + * use createBuffer to create a new byte buffer + */ + Buffer createBuffer(byte[] initialBytes); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java index b43e772f62..3772548707 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java @@ -1,12 +1,37 @@ package net.runelite.rs.api; +import net.runelite.api.Buffer; import net.runelite.mapping.Import; -public interface RSBuffer extends RSNode +public interface RSBuffer extends Buffer, RSNode { @Import("array") byte[] getPayload(); @Import("offset") int getOffset(); + + @Import("writeByte") + @Override + void writeByte(int var1); + + @Import("writeShort") + @Override + void writeShort(int var1); + + @Import("writeMedium") + @Override + void writeMedium(int var1); + + @Import("writeInt") + @Override + void writeInt(int var1); + + @Import("writeLong") + @Override + void writeLong(long var1); + + @Import("writeStringCp1252NullTerminated") + @Override + void writeStringCp1252NullTerminated(String string); } \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index dc923d6bd5..66318eef50 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -1395,4 +1395,7 @@ public interface RSClient extends RSGameEngine, Client @Override @Import("SpotAnimationDefinition_modelArchive") AbstractArchive getSpotAnimationDefinition_modelArchive(); + + @Construct + RSBuffer createBuffer(byte[] bytes); }