Skip to content
Merged

2.0.56 #1624

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
896bdd1
feat(breakhandler): implement Break Handler V2 with profile-based log…
chsami Nov 18, 2025
6e63403
skill calc: add vale totem actions
evilgenious448 Nov 22, 2025
b8afd2c
skill calc: add atlatl darts
evilgenious448 Nov 22, 2025
fcbba14
item stats: add sailing to yellow spicy stew
coopermor Nov 23, 2025
74757b5
clues: update khazard crate cryptic
Felanbird Nov 23, 2025
153ceba
gpu: fix zone reuse with roof removal
Adam- Nov 24, 2025
6c97b58
gpu: fix maploader race computing uvs
Adam- Nov 24, 2025
12115e8
idle notifier: add salvaging reset animation ids
NathanVegetable Nov 24, 2025
0b18b1c
api: add unlit face color api
Adam- Nov 25, 2025
694a3d2
game event manager: spoof we spawn events
Adam- Nov 25, 2025
36d56d1
api: expose WorldView getTarget{Location,Orientation}
LlemonDuck Nov 24, 2025
da1b321
rl-api: add world entity menu actions
abextm Nov 24, 2025
4995367
poh: add grid master incense burner objects
AltarOSRS Nov 26, 2025
682e787
skill calc: add marble wall construction action
charlie-collard Oct 17, 2025
2854cfc
skill calc: add high-cost construction actions
MoonWolf125 Oct 17, 2025
f9a8214
entity hider: use consistent wording for other players
Nightfirecat Nov 26, 2025
c408b9c
entity hider: clarify other players' random events are hidden
joemckie Nov 26, 2025
d5188cb
worldmap: add mooring points
coopermor Nov 26, 2025
5b5c0a0
loottracker: Add shipwreck salvage
coopermor Nov 25, 2025
ad593f2
loot tracker: use collectInvItems for salvaging loot
Adam- Nov 26, 2025
db0f67e
api: expose wec bounds
abextm Nov 26, 2025
7c51224
api: expose object op overrides
abextm Nov 26, 2025
13286a0
api: expose yellow click action
abextm Nov 26, 2025
b535874
overlay: cache overlay fonts
Adam- Nov 27, 2025
006adf7
gpu: reduce iterator allocs
Adam- Nov 27, 2025
856c949
implings: add region check to spawn overlay
Adam- Nov 27, 2025
7f89baf
gpu: simplify back-facing cull test
Adam- Nov 28, 2025
2562665
gpu: fix pmd
Adam- Nov 28, 2025
18262f6
gpu: enable by default
Adam- Nov 28, 2025
fa321d1
Merge branch 'runelite/master' into development
chsami Nov 28, 2025
bd563fe
chore(pom): update microbot version to 2.0.55
chsami Nov 28, 2025
31a19ab
Merge branch 'refs/heads/development' into chsami/breakhandlerv2
chsami Nov 29, 2025
4389a0a
fix(api): implement missing methods in Rs2TileObjectModel
gmason0 Nov 29, 2025
f3b6c2c
blast furnace: add lead and nickel bars
Loze-Put Nov 30, 2025
c454f01
fix(shortest-path): ardougne ship transport issue
gmason0 Nov 30, 2025
a8e8d6b
fix missing methods
chsami Nov 30, 2025
ac75ac8
refactor(breakhandler): streamline bank interaction and improve world…
chsami Nov 30, 2025
846be71
refactor(breakhandler): streamline bank interaction and improve world…
chsami Nov 30, 2025
2c8fe9f
style(breakhandler): set preferred size for panel component
chsami Nov 30, 2025
4f65540
worldmap: fix remote island mooring location
Nightfirecat Dec 1, 2025
31c94de
woodcutting: Add sailing trees
iCiaran Dec 1, 2025
71a8978
loottracker: Add sailing chests
coopermor Dec 1, 2025
632d35a
Revert "gpu: simplify back-facing cull test"
Adam- Dec 2, 2025
7b06119
gpu: simplify back-facing cull test
Adam- Dec 2, 2025
b9437d2
feat(breakhandler): update window title during breaks and add duratio…
chsami Dec 2, 2025
e857d0f
Merge pull request #1620 from g-mason0/fix/rs2-tile-object
chsami Dec 2, 2025
2ff86ee
Merge pull request #1621 from g-mason0/fix/ardy-boat
chsami Dec 2, 2025
a0265f6
Merge branch 'development' into chsami/breakhandlerv2
chsami Dec 2, 2025
4c82dc3
Merge pull request #1622 from chsami/chsami/breakhandlerv2
chsami Dec 2, 2025
ccccd75
Merge branch 'runelite/master' into development
chsami Dec 2, 2025
c0098c2
Merge remote-tracking branch 'origin/development' into development
chsami Dec 2, 2025
2a79aa7
chore(pom): bump microbot version to 2.0.56
chsami Dec 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,8 @@ public class Constants
* @see ItemComposition#getPrice
*/
public static final float HIGH_ALCHEMY_MULTIPLIER = .6f;

public static final int CLICK_ACTION_NONE = 0;
public static final int CLICK_ACTION_WALK = 1;
public static final int CLICK_ACTION_SET_HEADING = 2;
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,10 @@ public interface DynamicObject extends Renderable
* @return
*/
Model getModelZbuf();

/**
* The object composition for the model returned by {@link #getModelZbuf()}
* @return
*/
ObjectComposition getRecordedObjectComposition();
}
8 changes: 8 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/MenuAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,12 @@ public enum MenuAction

SET_HEADING(60),

WORLD_ENTITY_FIRST_OPTION(63),
WORLD_ENTITY_SECOND_OPTION(64),
WORLD_ENTITY_THIRD_OPTION(65),
WORLD_ENTITY_FOURTH_OPTION(66),
WORLD_ENTITY_FIFTH_OPTION(67),

/**
* RuneLite menu that is a widge.
* @see MenuEntry#getWidget()
Expand Down Expand Up @@ -283,6 +289,8 @@ public enum MenuAction
*/
CC_OP_LOW_PRIORITY(1007),

EXAMINE_WORLD_ENTITY(1013),

/**
* Menu action injected by runelite for its menu items.
*/
Expand Down
2 changes: 2 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public interface Model extends Mesh<Model>, Renderable

int[] getFaceColors3();

short[] getUnlitFaceColors();

int getSceneId();
void setSceneId(int sceneId);

Expand Down
12 changes: 12 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/TileObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,16 @@ public interface TileObject
*/
@Nullable
Shape getClickbox();

/**
* Get the text override for a certain action
*/
@Nullable
String getOpOverride(int index);

/**
* Gets if an action is shown in the minimenu. If an action is {@code null} it
* will not be shown even if this method returns {@code true}
*/
boolean isOpShown(int index);
}
28 changes: 28 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/WorldEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,47 @@ public interface WorldEntity extends CameraFocusableEntity

/**
* Get the location of this world entity in the top level world.
*
* @return
*/
LocalPoint getLocalLocation();

/**
* Get the orientation of this world entity in the top level world.
*
* @return
*/
int getOrientation();

/**
* Get the destination that the WorldEntity is moving toward.
* After receiving a destination from the server, the client will
* interpolate movement along this route until the next game tick
* (with some added buffer for lag compensation).
*
* @return The target {@link LocalPoint} in the top-level {@link WorldView}.
*/
LocalPoint getTargetLocation();

/**
* Get the target orientation of this world entity in the top level world.
*
* @return
* @see #getTargetLocation()
*/
int getTargetOrientation();

/**
* Transform a point within the world entity to the overworld
*
* @param point
* @return
*/
LocalPoint transformToMainWorld(LocalPoint point);

/**
* Return true if this worldentity is overlapped
*
* @return
*/
boolean isHiddenForOverlap();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,12 @@ public interface WorldEntityConfig
int getId();

int getCategory();

int getBoundsX();

int getBoundsY();

int getBoundsWidth();

int getBoundsHeight();
}
9 changes: 9 additions & 0 deletions runelite-api/src/main/java/net/runelite/api/WorldView.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import javax.annotation.Nullable;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import org.intellij.lang.annotations.MagicConstant;

public interface WorldView
{
Expand Down Expand Up @@ -255,4 +256,12 @@ Projectile createProjectile(int id, int plane, int startX, int startY, int start
*/
@Nullable
Projection getCanvasProjection();

/**
* Returns how clicking on tiles should behave for this WorldView.
*
* @return one of {@link Constants#CLICK_ACTION_NONE}, {@link Constants#CLICK_ACTION_WALK}, {@link Constants#CLICK_ACTION_SET_HEADING}
*/
@MagicConstant(intValues = {Constants.CLICK_ACTION_NONE, Constants.CLICK_ACTION_WALK, Constants.CLICK_ACTION_SET_HEADING})
int getYellowClickAction();
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ public interface DrawCallbacks
* Enable the {@link #zoneInFrustum(int, int, int, int)} callback
*/
int ZBUF_ZONE_FRUSTUM_CHECK = 0x20;
/**
* Enable the {@link Model#getUnlitFaceColors()} method
*/
int UNLIT_FACE_COLORS = 0x40;

int PASS_OPAQUE = 0;
int PASS_ALPHA = 1;
Expand Down
2 changes: 1 addition & 1 deletion runelite-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<git.commit.id.abbrev>nogit</git.commit.id.abbrev>
<git.dirty>false</git.dirty>
<shade.skip>false</shade.skip>
<microbot.version>2.0.54</microbot.version>
<microbot.version>2.0.56</microbot.version>
<microbot.commit.sha>nogit</microbot.commit.sha>
</properties>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,18 @@ enum BarsOres
RUNITE_ORE(VarbitID.BLAST_FURNACE_RUNITE_ORE, ItemID.RUNITE_ORE),
SILVER_ORE(VarbitID.BLAST_FURNACE_SILVER_ORE, ItemID.SILVER_ORE),
GOLD_ORE(VarbitID.BLAST_FURNACE_GOLD_ORE, ItemID.GOLD_ORE),
LEAD_ORE(VarbitID.BLAST_FURNACE_LEAD_ORE, ItemID.LEAD_ORE),
NICKEL_ORE(VarbitID.BLAST_FURNACE_NICKEL_ORE, ItemID.NICKEL_ORE),
BRONZE_BAR(VarbitID.BLAST_FURNACE_BRONZE_BARS, ItemID.BRONZE_BAR),
IRON_BAR(VarbitID.BLAST_FURNACE_IRON_BARS, ItemID.IRON_BAR),
STEEL_BAR(VarbitID.BLAST_FURNACE_STEEL_BARS, ItemID.STEEL_BAR),
MITHRIL_BAR(VarbitID.BLAST_FURNACE_MITHRIL_BARS, ItemID.MITHRIL_BAR),
ADAMANTITE_BAR(VarbitID.BLAST_FURNACE_ADAMANTITE_BARS, ItemID.ADAMANTITE_BAR),
RUNITE_BAR(VarbitID.BLAST_FURNACE_RUNITE_BARS, ItemID.RUNITE_BAR),
SILVER_BAR(VarbitID.BLAST_FURNACE_SILVER_BARS, ItemID.SILVER_BAR),
GOLD_BAR(VarbitID.BLAST_FURNACE_GOLD_BARS, ItemID.GOLD_BAR);
GOLD_BAR(VarbitID.BLAST_FURNACE_GOLD_BARS, ItemID.GOLD_BAR),
LEAD_BAR(VarbitID.BLAST_FURNACE_LEAD_BARS, ItemID.LEAD_BAR),
CUPRONICKEL_BAR(VarbitID.BLAST_FURNACE_CUPRONICKEL_BARS, ItemID.CUPRONICKEL_BAR);

@Getter(onMethod_ = {@Varbit})
private final int varbit;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ public class CrypticClue extends ClueScroll implements NpcClueScroll, ObjectClue
.build(),
CrypticClue.builder()
.itemId(ItemID.TRAIL_CLUE_EASY_VAGUE020)
.text("Search the crate near a cart in Port Khazard.")
.text("Search the crate near the southern general store in Port Khazard.")
.location(new WorldPoint(2660, 3149, 0))
.objectId(ObjectID.CRATE)
.solution("Search by the southern Khazard General Store in Port Khazard.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ default boolean hideOthers()
@ConfigItem(
position = 2,
keyName = "hidePlayers2D",
name = "Hide others 2D",
description = "Configures whether or not other players 2D elements are hidden."
name = "Hide others' 2D",
description = "Configures whether or not other players' 2D elements are hidden."
)
default boolean hideOthers2D()
{
Expand Down Expand Up @@ -169,8 +169,8 @@ default boolean hideWorldEntities()
@ConfigItem(
position = 20,
keyName = "hidePets",
name = "Hide other players' pets",
description = "Configures whether or not other player pets are hidden."
name = "Hide others' pets",
description = "Configures whether or not other players' pets are hidden."
)
default boolean hidePets()
{
Expand Down Expand Up @@ -224,8 +224,8 @@ default boolean hideThralls()
@ConfigItem(
position = 25,
keyName = "hideRandomEvents",
name = "Hide random events",
description = "Configures whether or not random events are hidden."
name = "Hide others' random events",
description = "Configures whether or not other players' random events are hidden."
)
default boolean hideRandomEvents()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,18 @@

import java.nio.IntBuffer;
import java.util.Arrays;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import net.runelite.api.Client;
import net.runelite.api.Model;
import net.runelite.api.Perspective;
import net.runelite.api.Projection;

@Singleton
@RequiredArgsConstructor(onConstructor = @__(@Inject))
class FacePrioritySorter
{
static final int[] distances;
static final char[] distanceFaceCount;
static final char[][] distanceToFaces;

private static final float[] modelCanvasX;
private static final float[] modelCanvasY;
private static final float[] modelProjectedX;
private static final float[] modelProjectedY;

static final float[] modelLocalX;
static final float[] modelLocalY;
Expand All @@ -66,8 +60,8 @@ class FacePrioritySorter
distanceFaceCount = new char[MAX_DIAMETER];
distanceToFaces = new char[MAX_DIAMETER][ZSORT_GROUP_SIZE];

modelCanvasX = new float[MAX_VERTEX_COUNT];
modelCanvasY = new float[MAX_VERTEX_COUNT];
modelProjectedX = new float[MAX_VERTEX_COUNT];
modelProjectedY = new float[MAX_VERTEX_COUNT];

modelLocalX = new float[MAX_VERTEX_COUNT];
modelLocalY = new float[MAX_VERTEX_COUNT];
Expand All @@ -80,7 +74,12 @@ class FacePrioritySorter
orderedFaces = new int[12][MAX_FACES_PER_PRIORITY];
}

private final Client client;
private final SceneUploader sceneUploader;

FacePrioritySorter(SceneUploader sceneUploader)
{
this.sceneUploader = sceneUploader;
}

int uploadSortedModel(Projection proj, Model model, int orientation, int x, int y, int z, IntBuffer opaqueBuffer, IntBuffer alphaBuffer)
{
Expand All @@ -97,10 +96,6 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
final int[] faceColors3 = model.getFaceColors3();
final byte[] faceRenderPriorities = model.getFaceRenderPriorities();

final int centerX = client.getCenterX();
final int centerY = client.getCenterY();
final int zoom = client.get3dZoom();

float orientSine = 0;
float orientCosine = 0;
if (orientation != 0)
Expand Down Expand Up @@ -140,8 +135,8 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
return 0;
}

modelCanvasX[v] = centerX + p[0] * zoom / p[2];
modelCanvasY[v] = centerY + p[1] * zoom / p[2];
modelProjectedX[v] = p[0] / p[2];
modelProjectedY[v] = p[1] / p[2];
distances[v] = (int) p[2] - zero;
}

Expand All @@ -163,12 +158,12 @@ int uploadSortedModel(Projection proj, Model model, int orientation, int x, int
final int v3 = indices3[i];

final float
aX = modelCanvasX[v1],
aY = modelCanvasY[v1],
bX = modelCanvasX[v2],
bY = modelCanvasY[v2],
cX = modelCanvasX[v3],
cY = modelCanvasY[v3];
aX = modelProjectedX[v1],
aY = modelProjectedY[v1],
bX = modelProjectedX[v2],
bY = modelProjectedY[v2],
cX = modelProjectedX[v3],
cY = modelProjectedY[v3];

if ((aX - bX) * (cY - bY) - (cX - bX) * (aY - bY) > 0)
{
Expand Down Expand Up @@ -438,16 +433,16 @@ private int pushFace(Model model, int face, IntBuffer opaqueBuffer, IntBuffer al
float vy3 = modelLocalY[triangleC];
float vz3 = modelLocalZ[triangleC];

SceneUploader.computeFaceUvs(model, face);
sceneUploader.computeFaceUvs(model, face);

int su0 = (int) (SceneUploader.u0 * 256f);
int sv0 = (int) (SceneUploader.v0 * 256f);
int su0 = (int) (sceneUploader.u0 * 256f);
int sv0 = (int) (sceneUploader.v0 * 256f);

int su1 = (int) (SceneUploader.u1 * 256f);
int sv1 = (int) (SceneUploader.v1 * 256f);
int su1 = (int) (sceneUploader.u1 * 256f);
int sv1 = (int) (sceneUploader.v1 * 256f);

int su2 = (int) (SceneUploader.u2 * 256f);
int sv2 = (int) (SceneUploader.v2 * 256f);
int su2 = (int) (sceneUploader.u2 * 256f);
int sv2 = (int) (sceneUploader.v2 * 256f);

int alphaBias = 0;
alphaBias |= transparencies != null ? (transparencies[face] & 0xff) << 24 : 0;
Expand Down
Loading