runelite-mixins: wrap drawTileUnderlay in try/catch
The rasterizer crashes on certain tiles ingame with specific camera angles.
java.lang.ArrayIndexOutOfBoundsException: -1
at Graphics3D.rasterGouraudLine(Graphics3D.java:797)
at Graphics3D.rasterGouraud(Graphics3D.java:680)
at Region.drawTileUnderlay(Region.java:1853)
at Region.draw(Region.java:1376)
at Region.drawRegion(Region.java:1187)
at class35.method682(class35.java:808)
at WorldMapType3.gameDraw(WorldMapType3.java:448)
at class218.method4359(class218.java:1069)
at Client.method1268(Client.java:3922)
at Client.methodDraw(Client.java:2239)
at GameEngine.method914(GameEngine.java:605)
at GameEngine.run(GameEngine.java:1027)
at java.lang.Thread.run(Thread.java:748)
This commit is contained in:
@@ -25,11 +25,13 @@
|
|||||||
package net.runelite.mixins;
|
package net.runelite.mixins;
|
||||||
|
|
||||||
import net.runelite.api.Renderable;
|
import net.runelite.api.Renderable;
|
||||||
|
import net.runelite.api.SceneTilePaint;
|
||||||
import net.runelite.api.Tile;
|
import net.runelite.api.Tile;
|
||||||
import net.runelite.api.mixins.Copy;
|
import net.runelite.api.mixins.Copy;
|
||||||
import net.runelite.api.mixins.Inject;
|
import net.runelite.api.mixins.Inject;
|
||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
import net.runelite.api.mixins.Replace;
|
import net.runelite.api.mixins.Replace;
|
||||||
|
import static net.runelite.client.callback.Hooks.log;
|
||||||
import net.runelite.rs.api.RSDecorativeObject;
|
import net.runelite.rs.api.RSDecorativeObject;
|
||||||
import net.runelite.rs.api.RSGroundObject;
|
import net.runelite.rs.api.RSGroundObject;
|
||||||
import net.runelite.rs.api.RSItemLayer;
|
import net.runelite.rs.api.RSItemLayer;
|
||||||
@@ -130,4 +132,20 @@ public abstract class RSRegionMixin implements RSRegion
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Copy("drawTileUnderlay")
|
||||||
|
abstract public void rs$drawTileUnderlay(SceneTilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y);
|
||||||
|
|
||||||
|
@Replace("drawTileUnderlay")
|
||||||
|
public void rl$drawTileUnderlay(SceneTilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$drawTileUnderlay(tile, z, pitchSin, pitchCos, yawSin, yawCos, x, y);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
log.warn("error during tile underlay rendering", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user