Well mining works perfectly for me except for the rune and addy ores. When i click to mine them it does the mining animation for like 10 seconds, and then it stops, and 15 seconds later i get the ore + xp. I noticed If u click away after the mining animation has stopped but before you receive the rune or addy ore, it gets buggy and doesn't let u click on the ore for a little while.
Heres a video to explain my problem View My Video
Heres some of my Mining.Java
Code:
public void startMining(final int j, final int x, final int y, final int type) {
if (c.isMining)
return;
if (c.mining)
return;
int miningLevel = c.playerLevel[c.playerMining] ;
a = -1;
c.turnPlayerTo(x, y);
if (Rock_Settings[j][1] > miningLevel) {
c.sendMessage("You need a Mining level of " + Rock_Settings[j][1] + " to mine this rock.");
return;
}
for (int i = 0; i < Pick_Settings.length; i++) {
if (c.getItems().playerHasItem(Pick_Settings[i][0]) || c.playerEquipment[c.playerWeapon] == Pick_Settings[i][0]) {
if (Pick_Settings[i][1] <= miningLevel) {
a = i;
}
}
}
if (a == -1) {
c.sendMessage("You need a pickaxe to mine this rock.");
return;
}
if (c.getItems().freeSlots() < 1) {
c.sendMessage("You do not have enough inventory slots to do that.");
return;
}
c.startAnimation(Pick_Settings[a][3]);
c.isMining = true;
c.rockX = x;
c.rockY = y;
c.mining = true;
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
if (!c.isMining) {
container.stop();
c.startAnimation(65535);
return;
}
if (c.isMining) {
c.getItems().addItem(Rock_Settings[j][4], 1);
c.getPA().addSkillXP(Rock_Settings[j][2], c.playerMining);
}
if (c.getItems().freeSlots() < 1) {
c.sendMessage("You have ran out of inventory slots.");
container.stop();
}
mineRock(Rock_Settings[j][3], x, y, type, Rock_Settings[j][0]);
c.isMining = false;
container.stop();
}
@Override
public void stop() {
c.getPA().sendFrame107();
c.startAnimation(65535);
c.isMining = false;
c.rockX = 0;
c.rockY = 0;
c.mining = false;
return;
}
}, getTimer(j, a, miningLevel));
}
public int getTimer(int b, int c, int level) {
double timer = (int)((Rock_Settings[b][1] * 2) + 20 + Misc.random(20))-((Pick_Settings[c][2] * (Pick_Settings[c][2] * 0.75)) + level);
if (timer < 2.0) {
return 2;
} else {
return (int)timer;
}
}
public void mineRock(int respawnTime, int x, int y, int type, int i) {
new Object(452, x, y, 0, type, 10, i, respawnTime);
for (int t = 0; t < Server.playerHandler.players.length; t++) {
if (Server.playerHandler.players[t] != null) {
if (Server.playerHandler.players[t].rockX == x && Server.playerHandler.players[t].rockY == y) {
Server.playerHandler.players[t].isMining = false;
Server.playerHandler.players[t].startAnimation(65535);
Server.playerHandler.players[t].rockX = 0;
Server.playerHandler.players[t].rockY = 0;
}
}
}
}
}
I would appreciate any help