Merge pull request #1293 from Lucwousin/ohyeah

project: upstream fixes
This commit is contained in:
Tyler Bochard
2019-08-11 12:06:51 -04:00
committed by GitHub
36 changed files with 211 additions and 162 deletions

View File

@@ -174,4 +174,9 @@ public class Signature
return new Signature(arguments, rv); return new Signature(arguments, rv);
} }
} }
public Signature rsApiToRsClient()
{
return new Signature(this.toString().replaceAll("net/runelite/(rs/)?api/(RS)?", ""));
}
} }

View File

@@ -39,13 +39,22 @@ compileJava.doLast() {
into "$buildDir" into "$buildDir"
} }
def path = sourceSets.main.runtimeClasspath def path = sourceSets.main.runtimeClasspath
def loader = new URLClassLoader(path.collect { f -> f.toURI().toURL() } as URL[]) def loader
def inject = loader.loadClass('net.runelite.injector.Injector') try {
String[] jarPaths = [ loader = new URLClassLoader(path.collect { f -> f.toURI().toURL() } as URL[])
deobfuscatedJar.toString(), def inject = loader.loadClass('net.runelite.injector.Injector')
vanillaJar.toString(), String[] jarPaths = [
injectedClassesPath.toString() deobfuscatedJar.toString(),
] vanillaJar.toString(),
inject.main(jarPaths) injectedClassesPath.toString()
loader.close() ]
inject.main(jarPaths)
} finally {
if (loader) {
loader.close()
}
}
}
test {
} }

View File

@@ -45,6 +45,16 @@ public class InjectUtil
return obfuscatedField; return obfuscatedField;
} }
public static ClassFile toDeobClass(final ClassFile obCf, final ClassGroup deob) throws InjectionException
{
final ClassFile wowThatWasQuick = deob.findObfuscatedName(obCf.getName());
if (wowThatWasQuick == null)
{
throw new InjectionException("It wasn't obfscated enough, or a bit too much. Whatever it was it, wasn't in deob");
}
return wowThatWasQuick;
}
public static Type getFieldType(final Field f) public static Type getFieldType(final Field f)
{ {
Type type = f.getType(); Type type = f.getType();
@@ -97,6 +107,21 @@ public class InjectUtil
return m; return m;
} }
/**
* Find a static method in ClassGroup group. Throws exception if not found.
*/
public static Method findStaticMethod(final ClassGroup group, final String name, Signature sig) throws InjectionException
{
Method m = group.findStaticMethod(name, sig);
if (m == null)
{
throw new InjectionException(String.format("Static method \"%s\" could not be found.", name));
}
return m;
}
public static Method findMethod(Inject inject, String name) throws InjectionException public static Method findMethod(Inject inject, String name) throws InjectionException
{ {
return findMethod(inject, name, null); return findMethod(inject, name, null);

View File

@@ -60,6 +60,8 @@ import net.runelite.asm.attributes.code.instructions.PutField;
import net.runelite.asm.signature.Signature; import net.runelite.asm.signature.Signature;
import net.runelite.asm.visitors.ClassFileVisitor; import net.runelite.asm.visitors.ClassFileVisitor;
import net.runelite.deob.DeobAnnotations; import net.runelite.deob.DeobAnnotations;
import static net.runelite.injector.InjectUtil.findStaticMethod;
import static net.runelite.injector.InjectUtil.toDeobClass;
import static net.runelite.injector.InjectUtil.toObClass; import static net.runelite.injector.InjectUtil.toObClass;
import static net.runelite.injector.InjectUtil.toObField; import static net.runelite.injector.InjectUtil.toObField;
import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassReader;
@@ -329,9 +331,17 @@ public class MixinInjector
} }
String deobMethodName = (String) copyAnnotation.getElement().getValue(); String deobMethodName = (String) copyAnnotation.getElement().getValue();
Method deobMethod;
if (method.isStatic())
{
deobMethod = findStaticMethod(inject.getDeobfuscated(), deobMethodName, method.getDescriptor().rsApiToRsClient());
}
else
{
ClassFile deobCf = toDeobClass(cf, inject.getDeobfuscated());
deobMethod = deobCf.findMethod(deobMethodName, method.getDescriptor().rsApiToRsClient());
}
ClassFile deobCf = inject.toDeobClass(cf);
Method deobMethod = findDeobMethod(deobCf, deobMethodName, method.getDescriptor());
if (deobMethod == null) if (deobMethod == null)
{ {

View File

@@ -22,7 +22,7 @@ public class RenderDraw
private static final net.runelite.asm.pool.Method renderDraw = new net.runelite.asm.pool.Method( private static final net.runelite.asm.pool.Method renderDraw = new net.runelite.asm.pool.Method(
new Class("net.runelite.client.callback.Hooks"), new Class("net.runelite.client.callback.Hooks"),
"renderDraw", "renderDraw",
new Signature("(Lnet/runelite/api/Renderable;IIIIIIIIJ)V") new Signature("(Lnet/runelite/api/Entity;IIIIIIIIJ)V")
); );
private final Inject inject; private final Inject inject;

View File

@@ -35,7 +35,7 @@ import net.runelite.api.coords.WorldPoint;
/** /**
* Represents a RuneScape actor/entity. * Represents a RuneScape actor/entity.
*/ */
public interface Actor extends Renderable public interface Actor extends Entity
{ {
/** /**
* Gets the combat level of the actor. * Gets the combat level of the actor.

View File

@@ -40,8 +40,8 @@ public interface DecorativeObject extends TileObject
Polygon getConvexHull(); Polygon getConvexHull();
Polygon getConvexHull2(); Polygon getConvexHull2();
Renderable getRenderable(); Entity getRenderable();
Renderable getRenderable2(); Entity getRenderable2();
Model getModel1(); Model getModel1();

View File

@@ -1,6 +1,6 @@
package net.runelite.api; package net.runelite.api;
public interface DynamicObject extends Renderable public interface DynamicObject extends Entity
{ {
int getAnimationID(); int getAnimationID();
} }

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* Represents an object that can be rendered. * Represents an object that can be rendered.
*/ */
public interface Renderable extends Node public interface Entity extends Node
{ {
/** /**
* Gets the model of the object. * Gets the model of the object.

View File

@@ -68,7 +68,7 @@ public interface GameObject extends TileObject
*/ */
Angle getOrientation(); Angle getOrientation();
Renderable getRenderable(); Entity getRenderable();
int getRsOrientation(); int getRsOrientation();

View File

@@ -29,7 +29,7 @@ import net.runelite.api.coords.LocalPoint;
/** /**
* Represents a graphics object. * Represents a graphics object.
*/ */
public interface GraphicsObject extends Renderable public interface GraphicsObject extends Entity
{ {
/** /**
* The graphics object ID. * The graphics object ID.

View File

@@ -29,7 +29,7 @@ package net.runelite.api;
*/ */
public interface GroundObject extends TileObject public interface GroundObject extends TileObject
{ {
Renderable getRenderable(); Entity getRenderable();
Model getModel(); Model getModel();
} }

View File

@@ -31,7 +31,7 @@ import java.util.List;
/** /**
* Represents the model of an object. * Represents the model of an object.
*/ */
public interface Model extends Renderable public interface Model extends Entity
{ {
/** /**
* Gets a list of all vertices of the model. * Gets a list of all vertices of the model.

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* Represents a projectile entity (ie. cannonball, arrow). * Represents a projectile entity (ie. cannonball, arrow).
*/ */
public interface Projectile extends Renderable public interface Projectile extends Entity
{ {
/** /**
* Gets the ID of the projectile. * Gets the ID of the projectile.

View File

@@ -73,14 +73,14 @@ public interface Tile
* *
* @return the paint * @return the paint
*/ */
SceneTilePaint getSceneTilePaint(); TilePaint getSceneTilePaint();
/** /**
* Gets the model of the tile in the scene. * Gets the model of the tile in the scene.
* *
* @return the tile model * @return the tile model
*/ */
SceneTileModel getSceneTileModel(); TileModel getSceneTileModel();
/** /**
* Gets the location coordinate of the tile in the world. * Gets the location coordinate of the tile in the world.

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* Represents an item inside an {@link TileItemPile}. * Represents an item inside an {@link TileItemPile}.
*/ */
public interface TileItem extends Renderable public interface TileItem extends Entity
{ {
/** /**
* Gets the items ID. * Gets the items ID.

View File

@@ -41,21 +41,21 @@ public interface TileItemPile extends TileObject
* *
* @return the bottom item * @return the bottom item
*/ */
Renderable getBottom(); Entity getBottom();
/** /**
* Gets the item at the middle of the pile. * Gets the item at the middle of the pile.
* *
* @return the middle item * @return the middle item
*/ */
Renderable getMiddle(); Entity getMiddle();
/** /**
* Gets the item at the top of the pile. * Gets the item at the top of the pile.
* *
* @return the top item * @return the top item
*/ */
Renderable getTop(); Entity getTop();
Model getModelBottom(); Model getModelBottom();
Model getModelMiddle(); Model getModelMiddle();

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* Represents the model of a tile in the current scene. * Represents the model of a tile in the current scene.
*/ */
public interface SceneTileModel public interface TileModel
{ {
/** /**
* Gets the underlay color of the tile. * Gets the underlay color of the tile.

View File

@@ -27,7 +27,7 @@ package net.runelite.api;
/** /**
* Represents the paint of a tile in the current scene. * Represents the paint of a tile in the current scene.
*/ */
public interface SceneTilePaint public interface TilePaint
{ {
/** /**
* Gets the RGB value of the paint. * Gets the RGB value of the paint.

View File

@@ -50,8 +50,8 @@ public interface WallObject extends TileObject
*/ */
int getConfig(); int getConfig();
Renderable getRenderable1(); Entity getRenderable1();
Renderable getRenderable2(); Entity getRenderable2();
Model getModelA(); Model getModelA();
Model getModelB(); Model getModelB();

View File

@@ -24,22 +24,22 @@
*/ */
package net.runelite.api.hooks; package net.runelite.api.hooks;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import net.runelite.api.SceneTileModel; import net.runelite.api.TileModel;
import net.runelite.api.SceneTilePaint; import net.runelite.api.TilePaint;
import net.runelite.api.Texture; import net.runelite.api.Texture;
public interface DrawCallbacks public interface DrawCallbacks
{ {
void draw(Renderable renderable, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash); void draw(Entity entity, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
void drawScenePaint(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, void drawScenePaint(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
SceneTilePaint paint, int tileZ, int tileX, int tileY, TilePaint paint, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY); int zoom, int centerX, int centerY);
void drawSceneModel(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, void drawSceneModel(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
SceneTileModel model, int tileZ, int tileX, int tileY, TileModel model, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY); int zoom, int centerX, int centerY);
void draw(); void draw();

View File

@@ -43,10 +43,10 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.BufferProvider; import net.runelite.api.BufferProvider;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Constants; import net.runelite.api.Constants;
import net.runelite.api.Entity;
import net.runelite.api.MainBufferProvider; import net.runelite.api.MainBufferProvider;
import net.runelite.api.NullItemID; import net.runelite.api.NullItemID;
import net.runelite.api.RenderOverview; import net.runelite.api.RenderOverview;
import net.runelite.api.Renderable;
import net.runelite.api.WorldMapManager; import net.runelite.api.WorldMapManager;
import net.runelite.api.events.BeforeMenuRender; import net.runelite.api.events.BeforeMenuRender;
import net.runelite.api.events.BeforeRender; import net.runelite.api.events.BeforeRender;
@@ -473,16 +473,16 @@ public class Hooks implements Callbacks
deferredEventBus.replay(); deferredEventBus.replay();
} }
public static void renderDraw(Renderable renderable, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash) public static void renderDraw(Entity entity, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash)
{ {
DrawCallbacks drawCallbacks = client.getDrawCallbacks(); DrawCallbacks drawCallbacks = client.getDrawCallbacks();
if (drawCallbacks != null) if (drawCallbacks != null)
{ {
drawCallbacks.draw(renderable, orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash); drawCallbacks.draw(entity, orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash);
} }
else else
{ {
renderable.draw(orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash); entity.draw(orientation, pitchSin, pitchCos, yawSin, yawCos, x, y, z, hash);
} }
} }

View File

@@ -43,6 +43,7 @@ import net.runelite.api.Client;
import net.runelite.api.Constants; import net.runelite.api.Constants;
import net.runelite.api.DecorativeObject; import net.runelite.api.DecorativeObject;
import net.runelite.api.DynamicObject; import net.runelite.api.DynamicObject;
import net.runelite.api.Entity;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.GraphicsObject; import net.runelite.api.GraphicsObject;
import net.runelite.api.TileItem; import net.runelite.api.TileItem;
@@ -55,7 +56,6 @@ import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.Projectile; import net.runelite.api.Projectile;
import net.runelite.api.Renderable;
import net.runelite.api.Scene; import net.runelite.api.Scene;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
@@ -310,10 +310,10 @@ class DevToolsOverlay extends Overlay
{ {
if (player.getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= MAX_DISTANCE) if (player.getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= MAX_DISTANCE)
{ {
Renderable renderable = gameObject.getRenderable(); Entity entity = gameObject.getRenderable();
if (renderable instanceof DynamicObject) if (entity instanceof DynamicObject)
{ {
OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId() + " Anim: " + ((DynamicObject) renderable).getAnimationID(), TURQOISE); OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId() + " Anim: " + ((DynamicObject) entity).getAnimationID(), TURQOISE);
} }
else else
{ {

View File

@@ -60,10 +60,10 @@ import net.runelite.api.GameState;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.NodeCache; import net.runelite.api.NodeCache;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import net.runelite.api.Scene; import net.runelite.api.Scene;
import net.runelite.api.SceneTileModel; import net.runelite.api.TileModel;
import net.runelite.api.SceneTilePaint; import net.runelite.api.TilePaint;
import net.runelite.api.Texture; import net.runelite.api.Texture;
import net.runelite.api.TextureProvider; import net.runelite.api.TextureProvider;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
@@ -757,7 +757,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
} }
public void drawScenePaint(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, public void drawScenePaint(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
SceneTilePaint paint, int tileZ, int tileX, int tileY, TilePaint paint, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY) int zoom, int centerX, int centerY)
{ {
if (paint.getBufferLen() > 0) if (paint.getBufferLen() > 0)
@@ -783,7 +783,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
} }
public void drawSceneModel(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, public void drawSceneModel(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
SceneTileModel model, int tileZ, int tileX, int tileY, TileModel model, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY) int zoom, int centerX, int centerY)
{ {
if (model.getBufferLen() > 0) if (model.getBufferLen() > 0)
@@ -1397,9 +1397,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
} }
/** /**
* Draw a renderable in the scene * Draw a entity in the scene
* *
* @param renderable * @param entity
* @param orientation * @param orientation
* @param pitchSin * @param pitchSin
* @param pitchCos * @param pitchCos
@@ -1411,12 +1411,12 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
* @param hash * @param hash
*/ */
@Override @Override
public void draw(Renderable renderable, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash) public void draw(Entity entity, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash)
{ {
// Model may be in the scene buffer // Model may be in the scene buffer
if (renderable instanceof Model && ((Model) renderable).getSceneId() == sceneUploader.sceneId) if (entity instanceof Model && ((Model) entity).getSceneId() == sceneUploader.sceneId)
{ {
Model model = (Model) renderable; Model model = (Model) entity;
model.calculateBoundsCylinder(); model.calculateBoundsCylinder();
model.calculateExtreme(orientation); model.calculateExtreme(orientation);
@@ -1476,10 +1476,10 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
else else
{ {
// Temporary model (animated or otherwise not a static Model on the scene) // Temporary model (animated or otherwise not a static Model on the scene)
Model model = renderable instanceof Model ? (Model) renderable : renderable.getModel(); Model model = entity instanceof Model ? (Model) entity : entity.getModel();
if (model != null) if (model != null)
{ {
// Apply height to renderable from the model // Apply height to entity from the model
model.setModelHeight(model.getModelHeight()); model.setModelHeight(model.getModelHeight());
model.calculateBoundsCylinder(); model.calculateBoundsCylinder();

View File

@@ -35,10 +35,10 @@ import net.runelite.api.GroundObject;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import net.runelite.api.Scene; import net.runelite.api.Scene;
import net.runelite.api.SceneTileModel; import net.runelite.api.TileModel;
import net.runelite.api.SceneTilePaint; import net.runelite.api.TilePaint;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import static net.runelite.client.plugins.gpu.GpuPlugin.SMALL_TRIANGLE_COUNT; import static net.runelite.client.plugins.gpu.GpuPlugin.SMALL_TRIANGLE_COUNT;
@@ -100,13 +100,13 @@ class SceneUploader
reset(bridge); reset(bridge);
} }
SceneTilePaint sceneTilePaint = tile.getSceneTilePaint(); TilePaint tilePaint = tile.getSceneTilePaint();
if (sceneTilePaint != null) if (tilePaint != null)
{ {
sceneTilePaint.setBufferOffset(-1); tilePaint.setBufferOffset(-1);
} }
SceneTileModel sceneTileModel = tile.getSceneTileModel(); TileModel sceneTileModel = tile.getSceneTileModel();
if (sceneTileModel != null) if (sceneTileModel != null)
{ {
sceneTileModel.setBufferOffset(-1); sceneTileModel.setBufferOffset(-1);
@@ -159,29 +159,29 @@ class SceneUploader
upload(bridge, vertexBuffer, uvBuffer); upload(bridge, vertexBuffer, uvBuffer);
} }
SceneTilePaint sceneTilePaint = tile.getSceneTilePaint(); TilePaint tilePaint = tile.getSceneTilePaint();
if (sceneTilePaint != null) if (tilePaint != null)
{ {
sceneTilePaint.setBufferOffset(offset); tilePaint.setBufferOffset(offset);
if (sceneTilePaint.getTexture() != -1) if (tilePaint.getTexture() != -1)
{ {
sceneTilePaint.setUvBufferOffset(uvoffset); tilePaint.setUvBufferOffset(uvoffset);
} }
else else
{ {
sceneTilePaint.setUvBufferOffset(-1); tilePaint.setUvBufferOffset(-1);
} }
Point tilePoint = tile.getSceneLocation(); Point tilePoint = tile.getSceneLocation();
int len = upload(sceneTilePaint, tile.getRenderLevel(), tilePoint.getX(), tilePoint.getY(), vertexBuffer, uvBuffer); int len = upload(tilePaint, tile.getRenderLevel(), tilePoint.getX(), tilePoint.getY(), vertexBuffer, uvBuffer);
sceneTilePaint.setBufferLen(len); tilePaint.setBufferLen(len);
offset += len; offset += len;
if (sceneTilePaint.getTexture() != -1) if (tilePaint.getTexture() != -1)
{ {
uvoffset += len; uvoffset += len;
} }
} }
SceneTileModel sceneTileModel = tile.getSceneTileModel(); TileModel sceneTileModel = tile.getSceneTileModel();
if (sceneTileModel != null) if (sceneTileModel != null)
{ {
sceneTileModel.setBufferOffset(offset); sceneTileModel.setBufferOffset(offset);
@@ -206,42 +206,42 @@ class SceneUploader
WallObject wallObject = tile.getWallObject(); WallObject wallObject = tile.getWallObject();
if (wallObject != null) if (wallObject != null)
{ {
Renderable renderable1 = wallObject.getRenderable1(); Entity entity1 = wallObject.getRenderable1();
if (renderable1 instanceof Model) if (entity1 instanceof Model)
{ {
uploadModel((Model) renderable1, vertexBuffer, uvBuffer); uploadModel((Model) entity1, vertexBuffer, uvBuffer);
} }
Renderable renderable2 = wallObject.getRenderable2(); Entity entity2 = wallObject.getRenderable2();
if (renderable2 instanceof Model) if (entity2 instanceof Model)
{ {
uploadModel((Model) renderable2, vertexBuffer, uvBuffer); uploadModel((Model) entity2, vertexBuffer, uvBuffer);
} }
} }
GroundObject groundObject = tile.getGroundObject(); GroundObject groundObject = tile.getGroundObject();
if (groundObject != null) if (groundObject != null)
{ {
Renderable renderable = groundObject.getRenderable(); Entity entity = groundObject.getRenderable();
if (renderable instanceof Model) if (entity instanceof Model)
{ {
uploadModel((Model) renderable, vertexBuffer, uvBuffer); uploadModel((Model) entity, vertexBuffer, uvBuffer);
} }
} }
DecorativeObject decorativeObject = tile.getDecorativeObject(); DecorativeObject decorativeObject = tile.getDecorativeObject();
if (decorativeObject != null) if (decorativeObject != null)
{ {
Renderable renderable = decorativeObject.getRenderable(); Entity entity = decorativeObject.getRenderable();
if (renderable instanceof Model) if (entity instanceof Model)
{ {
uploadModel((Model) renderable, vertexBuffer, uvBuffer); uploadModel((Model) entity, vertexBuffer, uvBuffer);
} }
Renderable renderable2 = decorativeObject.getRenderable2(); Entity entity2 = decorativeObject.getRenderable2();
if (renderable2 instanceof Model) if (entity2 instanceof Model)
{ {
uploadModel((Model) renderable2, vertexBuffer, uvBuffer); uploadModel((Model) entity2, vertexBuffer, uvBuffer);
} }
} }
@@ -253,15 +253,15 @@ class SceneUploader
continue; continue;
} }
Renderable renderable = gameObject.getRenderable(); Entity entity = gameObject.getRenderable();
if (renderable instanceof Model) if (entity instanceof Model)
{ {
uploadModel((Model) gameObject.getRenderable(), vertexBuffer, uvBuffer); uploadModel((Model) gameObject.getRenderable(), vertexBuffer, uvBuffer);
} }
} }
} }
private int upload(SceneTilePaint tile, int tileZ, int tileX, int tileY, GpuIntBuffer vertexBuffer, GpuFloatBuffer uvBuffer) private int upload(TilePaint tile, int tileZ, int tileX, int tileY, GpuIntBuffer vertexBuffer, GpuFloatBuffer uvBuffer)
{ {
final int[][][] tileHeights = client.getTileHeights(); final int[][][] tileHeights = client.getTileHeights();
@@ -319,7 +319,7 @@ class SceneUploader
return 6; return 6;
} }
private static int upload(SceneTileModel sceneTileModel, int tileX, int tileY, GpuIntBuffer vertexBuffer, GpuFloatBuffer uvBuffer) private static int upload(TileModel sceneTileModel, int tileX, int tileY, GpuIntBuffer vertexBuffer, GpuFloatBuffer uvBuffer)
{ {
final int[] faceX = sceneTileModel.getFaceX(); final int[] faceX = sceneTileModel.getFaceX();
final int[] faceY = sceneTileModel.getFaceY(); final int[] faceY = sceneTileModel.getFaceY();

View File

@@ -33,6 +33,7 @@ import net.runelite.api.AnimationID;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Constants; import net.runelite.api.Constants;
import net.runelite.api.DynamicObject; import net.runelite.api.DynamicObject;
import net.runelite.api.Entity;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.GraphicsObject; import net.runelite.api.GraphicsObject;
import net.runelite.api.InventoryID; import net.runelite.api.InventoryID;
@@ -43,7 +44,6 @@ import net.runelite.api.NpcID;
import net.runelite.api.ObjectID; import net.runelite.api.ObjectID;
import net.runelite.api.Projectile; import net.runelite.api.Projectile;
import net.runelite.api.ProjectileID; import net.runelite.api.ProjectileID;
import net.runelite.api.Renderable;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
@@ -123,10 +123,10 @@ public class ZalcanoUtil
{ {
if (client.getLocalPlayer().getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= 2400) if (client.getLocalPlayer().getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= 2400)
{ {
Renderable renderable = gameObject.getRenderable(); Entity entity = gameObject.getRenderable();
if (renderable instanceof DynamicObject) if (entity instanceof DynamicObject)
{ {
if (((DynamicObject) renderable).getAnimationID() == AnimationID.ZALCANO_ROCK_GLOWING) if (((DynamicObject) entity).getAnimationID() == AnimationID.ZALCANO_ROCK_GLOWING)
{ {
return gameObject; return gameObject;
} }
@@ -149,8 +149,8 @@ public class ZalcanoUtil
{ {
if (client.getLocalPlayer().getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= 2400) if (client.getLocalPlayer().getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= 2400)
{ {
Renderable renderable = gameObject.getRenderable(); Entity entity = gameObject.getRenderable();
if (renderable instanceof DynamicObject) if (entity instanceof DynamicObject)
{ {
list.add(gameObject); list.add(gameObject);
} }

View File

@@ -1,8 +1,8 @@
package net.runelite.mixins; package net.runelite.mixins;
import net.runelite.api.Entity;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Renderable;
import java.awt.geom.Area; import java.awt.geom.Area;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
@@ -36,38 +36,38 @@ public abstract class RSBoundaryObjectMixin implements RSBoundaryObject
@Inject @Inject
public Model getModelA() public Model getModelA()
{ {
Renderable renderable = getRenderable1(); Entity entity = getRenderable1();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }
@Inject @Inject
public Model getModelB() public Model getModelB()
{ {
Renderable renderable = getRenderable2(); Entity entity = getRenderable2();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }

View File

@@ -2,7 +2,7 @@ package net.runelite.mixins;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import java.awt.geom.Area; import java.awt.geom.Area;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
@@ -37,19 +37,19 @@ public abstract class RSFloorDecorationMixin implements RSFloorDecoration
@Override @Override
public Model getModel() public Model getModel()
{ {
Renderable renderable = getRenderable(); Entity entity = getRenderable();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }

View File

@@ -24,10 +24,10 @@
*/ */
package net.runelite.mixins; package net.runelite.mixins;
import net.runelite.api.Entity;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Renderable; import net.runelite.api.TileModel;
import net.runelite.api.SceneTileModel; import net.runelite.api.TilePaint;
import net.runelite.api.SceneTilePaint;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.hooks.DrawCallbacks; import net.runelite.api.hooks.DrawCallbacks;
import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.Copy;
@@ -391,10 +391,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("newWallDecoration") @Copy("newWallDecoration")
abstract public void rs$addBoundaryDecoration(int plane, int x, int y, int floor, Renderable var5, Renderable var6, int var7, int var8, int var9, int var10, long hash, int var12); abstract public void rs$addBoundaryDecoration(int plane, int x, int y, int floor, Entity var5, Entity var6, int var7, int var8, int var9, int var10, long hash, int var12);
@Replace("newWallDecoration") @Replace("newWallDecoration")
public void rl$addBoundaryDecoration(int plane, int x, int y, int floor, Renderable var5, Renderable var6, int var7, int var8, int var9, int var10, long hash, int var12) public void rl$addBoundaryDecoration(int plane, int x, int y, int floor, Entity var5, Entity var6, int var7, int var8, int var9, int var10, long hash, int var12)
{ {
rs$addBoundaryDecoration(plane, x, y, floor, var5, var6, var7, var8, var9, var10, hash, var12); rs$addBoundaryDecoration(plane, x, y, floor, var5, var6, var7, var8, var9, var10, hash, var12);
Tile tile = getTiles()[plane][x][y]; Tile tile = getTiles()[plane][x][y];
@@ -409,10 +409,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("newGroundItemPile") @Copy("newGroundItemPile")
abstract public void rs$addItemPile(int plane, int x, int y, int hash, Renderable var5, long var6, Renderable var7, Renderable var8); abstract public void rs$addItemPile(int plane, int x, int y, int hash, Entity var5, long var6, Entity var7, Entity var8);
@Replace("newGroundItemPile") @Replace("newGroundItemPile")
public void rl$addItemPile(int plane, int x, int y, int hash, Renderable var5, long var6, Renderable var7, Renderable var8) public void rl$addItemPile(int plane, int x, int y, int hash, Entity var5, long var6, Entity var7, Entity var8)
{ {
rs$addItemPile(plane, x, y, hash, var5, var6, var7, var8); rs$addItemPile(plane, x, y, hash, var5, var6, var7, var8);
Tile tile = getTiles()[plane][x][y]; Tile tile = getTiles()[plane][x][y];
@@ -427,10 +427,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("newFloorDecoration") @Copy("newFloorDecoration")
abstract public void rs$groundObjectSpawned(int plane, int x, int y, int floor, Renderable var5, long hash, int var7); abstract public void rs$groundObjectSpawned(int plane, int x, int y, int floor, Entity var5, long hash, int var7);
@Replace("newFloorDecoration") @Replace("newFloorDecoration")
public void rl$groundObjectSpawned(int plane, int x, int y, int floor, Renderable var5, long hash, int var7) public void rl$groundObjectSpawned(int plane, int x, int y, int floor, Entity var5, long hash, int var7)
{ {
rs$groundObjectSpawned(plane, x, y, floor, var5, hash, var7); rs$groundObjectSpawned(plane, x, y, floor, var5, hash, var7);
Tile tile = getTiles()[plane][x][y]; Tile tile = getTiles()[plane][x][y];
@@ -445,10 +445,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("newBoundaryObject") @Copy("newBoundaryObject")
abstract public void rs$addBoundary(int plane, int x, int y, int floor, Renderable var5, Renderable var6, int var7, int var8, long hash, int var10); abstract public void rs$addBoundary(int plane, int x, int y, int floor, Entity var5, Entity var6, int var7, int var8, long hash, int var10);
@Replace("newBoundaryObject") @Replace("newBoundaryObject")
public void rl$addBoundary(int plane, int x, int y, int floor, Renderable var5, Renderable var6, int var7, int var8, long hash, int var10) public void rl$addBoundary(int plane, int x, int y, int floor, Entity var5, Entity var6, int var7, int var8, long hash, int var10)
{ {
rs$addBoundary(plane, x, y, floor, var5, var6, var7, var8, hash, var10); rs$addBoundary(plane, x, y, floor, var5, var6, var7, var8, hash, var10);
Tile tile = getTiles()[plane][x][y]; Tile tile = getTiles()[plane][x][y];
@@ -463,10 +463,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("drawTileUnderlay") @Copy("drawTileUnderlay")
abstract public void rs$drawTileUnderlay(SceneTilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y); abstract public void rs$drawTileUnderlay(TilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y);
@Replace("drawTileUnderlay") @Replace("drawTileUnderlay")
public void rl$drawTileUnderlay(SceneTilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y) public void rl$drawTileUnderlay(TilePaint tile, int z, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y)
{ {
if (!client.isGpu()) if (!client.isGpu())
{ {
@@ -590,10 +590,10 @@ public abstract class RSSceneMixin implements RSScene
} }
@Copy("drawTileOverlay") @Copy("drawTileOverlay")
abstract public void rs$drawTileOverlay(SceneTileModel tile, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y); abstract public void rs$drawTileOverlay(TileModel tile, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y);
@Replace("drawTileOverlay") @Replace("drawTileOverlay")
public void rl$drawTileOverlay(SceneTileModel tile, int pitchSin, int pitchCos, int yawSin, int yawCos, int tileX, int tileY) public void rl$drawTileOverlay(TileModel tile, int pitchSin, int pitchCos, int yawSin, int yawCos, int tileX, int tileY)
{ {
if (!client.isGpu()) if (!client.isGpu())
{ {

View File

@@ -1,8 +1,8 @@
package net.runelite.mixins; package net.runelite.mixins;
import java.awt.geom.Area; import java.awt.geom.Area;
import net.runelite.api.Entity;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.Renderable;
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.rs.api.RSTileItemPile; import net.runelite.rs.api.RSTileItemPile;
@@ -38,19 +38,19 @@ public abstract class RSTileItemPileMixin implements RSTileItemPile
@Override @Override
public Model getModelBottom() public Model getModelBottom()
{ {
Renderable renderable = getBottom(); Entity entity = getBottom();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }
@@ -58,19 +58,19 @@ public abstract class RSTileItemPileMixin implements RSTileItemPile
@Override @Override
public Model getModelMiddle() public Model getModelMiddle()
{ {
Renderable renderable = getMiddle(); Entity entity = getMiddle();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }
@@ -78,19 +78,19 @@ public abstract class RSTileItemPileMixin implements RSTileItemPile
@Override @Override
public Model getModelTop() public Model getModelTop()
{ {
Renderable renderable = getTop(); Entity entity = getTop();
if (renderable == null) if (entity == null)
{ {
return null; return null;
} }
if (renderable instanceof Model) if (entity instanceof Model)
{ {
return (Model) renderable; return (Model) entity;
} }
else else
{ {
return renderable.getModel(); return entity.getModel();
} }
} }
} }

View File

@@ -146,8 +146,8 @@ public abstract class ScriptVMMixin implements RSClient
{ {
assert isClientThread(); assert isClientThread();
assert currentScript == null; assert currentScript == null;
Object[] cargs = new Object[args.length + 1]; Object[] cargs = new Object[args.length];
// cargs[0] = id; assert cargs[0] instanceof Integer || cargs[0] instanceof JavaScriptCallback : "The first argument should always be a ScriptID!";
System.arraycopy(args, 0, cargs, 1, args.length); System.arraycopy(args, 0, cargs, 1, args.length);
RSScriptEvent se = createScriptEvent(); RSScriptEvent se = createScriptEvent();
se.setArguments(cargs); se.setArguments(cargs);

View File

@@ -1,10 +1,10 @@
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.DynamicObject; import net.runelite.api.DynamicObject;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSDynamicObject extends RSEntity, DynamicObject, Renderable public interface RSDynamicObject extends RSEntity, DynamicObject, Entity
{ {
@Import("id") @Import("id")
int getId(); int getId();

View File

@@ -24,10 +24,10 @@
*/ */
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.Renderable; import net.runelite.api.Entity;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSEntity extends RSNode, Renderable public interface RSEntity extends RSNode, Entity
{ {
@Import("height") @Import("height")
int getModelHeight(); int getModelHeight();

View File

@@ -4,8 +4,8 @@ import net.runelite.api.DecorativeObject;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.GroundObject; import net.runelite.api.GroundObject;
import net.runelite.api.TileItemPile; import net.runelite.api.TileItemPile;
import net.runelite.api.SceneTileModel; import net.runelite.api.TileModel;
import net.runelite.api.SceneTilePaint; import net.runelite.api.TilePaint;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
@@ -34,11 +34,11 @@ public interface RSTile extends Tile
@Import("paint") @Import("paint")
@Override @Override
SceneTilePaint getSceneTilePaint(); TilePaint getSceneTilePaint();
@Import("model") @Import("model")
@Override @Override
SceneTileModel getSceneTileModel(); TileModel getSceneTileModel();
@Import("x") @Import("x")
int getX(); int getX();

View File

@@ -1,9 +1,9 @@
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.SceneTileModel; import net.runelite.api.TileModel;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSTileModel extends SceneTileModel public interface RSTileModel extends TileModel
{ {
@Import("underlayRgb") @Import("underlayRgb")
@Override @Override

View File

@@ -1,9 +1,9 @@
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.SceneTilePaint; import net.runelite.api.TilePaint;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSTilePaint extends SceneTilePaint public interface RSTilePaint extends TilePaint
{ {
@Import("rgb") @Import("rgb")
@Override @Override