Code:
package server.model.players.skills.mining;
import server.Server;
import server.event.CycleEvent;
import server.event.CycleEventContainer;
import server.event.CycleEventHandler;
import server.model.players.Client;
import server.model.players.skills.SkillHandler;
import server.model.players.skills.Skills;
/**
* Class Mining Handles Mining
*
* @author 2012 20:16 22/01/2011
*/
public class Mining extends SkillHandler {
public static void mineEss(final Client c, final int object) {
if (!noInventorySpace(c, "mining")) {
resetMining(c);
return;
}
if (!hasPickaxe(c)) {
c.sendMessage("You need a Mining pickaxe which you need a Mining level to use.");
return;
}
if (c.playerSkilling[14]) {
return;
}
c.playerSkilling[14] = true;
c.stopPlayerSkill = true;
c.startAnimation(getAnimation(c));
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
c.getItems().addItem(1436, 1);
c.sendMessage("You manage to mine some " + c.getItems().getItemName(1436).toLowerCase() + ".");
c.getPA().addSkillXP(5 * MINING_XP, Skills.MINING);
c.startAnimation(getAnimation(c));
if (!hasPickaxe(c)) {
c.sendMessage("You need a Mining pickaxe which you need a Mining level to use.");
resetMining(c);
container.stop();
}
if (!c.stopPlayerSkill) {
resetMining(c);
container.stop();
}
if (!noInventorySpace(c, "mining")) {
resetMining(c);
container.stop();
}
}
@Override
public void stop() {
}
}, 2);
}
public static void attemptData(final Client c, final int object, final int obX, final int obY) {
if (!noInventorySpace(c, "mining")) {
resetMining(c);
return;
}
if (!hasRequiredLevel(c, 14, getLevelReq(c, object), "mining", "mine here")) {
return;
}
if (!hasPickaxe(c)) {
c.sendMessage("You need a Mining pickaxe to use.");
return;
}
c.sendMessage("You swing your pick at the rock.");
if (c.playerSkilling[14]) {
return;
}
c.playerSkilling[14] = true;
c.stopPlayerSkill = true;
c.startAnimation(getAnimation(c));
for (int i = 0; i < data.length; i++) {
if (object == data[i][0]) {
c.playerSkillProp[14][0] = data[i][1];
c.playerSkillProp[14][1] = data[i][3];
c.startAnimation(getAnimation(c));
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
if (c.playerSkillProp[14][0] > 0) {
c.getItems().addItem(c.playerSkillProp[14][0], 1);
c.sendMessage("You manage to mine some "
+ c.getItems().getItemName(c.playerSkillProp[14][0]).toLowerCase() + ".");
}
if (c.playerSkillProp[14][1] > 0 && object != 5900) {
c.getPA().addSkillXP(c.playerSkillProp[14][1] * MINING_XP, Skills.MINING);
Server.objectHandler.createAnObject(451, obX, obY);
}
if (!hasPickaxe(c)) {
c.sendMessage("You need a Mining pickaxe to use.");
resetMining(c);
container.stop();
}
if (!c.stopPlayerSkill) {
resetMining(c);
container.stop();
}
if (!noInventorySpace(c, "mining")) {
resetMining(c);
container.stop();
}
resetMining(c);
container.stop();
}
@Override
public void stop() {
}
}, getTimer(c, object));
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
Server.objectHandler.createAnObject(object, obX, obY);
container.stop();
}
@Override
public void stop() {
}
}, getTimer(c, object) + getRespawnTime(c, object));
CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
if (c.playerSkilling[14]) {
c.startAnimation(getAnimation(c));
}
if (!c.stopPlayerSkill || !c.playerSkilling[14]) {
resetMining(c);
container.stop();
}
}
@Override
public void stop() {
}
}, 15);
}
}
}
private static int getTimer(Client c, int i) {
return (getMineTime(c, i) + getTime(c) + playerMiningLevel(c));
}
private static int getMineTime(Client c, int object) {
for (int i = 0; i < data.length; i++) {
if (object == data[i][0]) {
return data[i][4];
}
}
return -1;
}
private static int playerMiningLevel(Client c) {
return (10 - (int) Math.floor(c.playerLevel[Skills.MINING] / 10));
}
private static int getTime(Client c) {
for (int i = 0; i < pickaxe.length; i++) {
if (c.getItems().playerHasItem(pickaxe[i][0]) || c.playerEquipment[3] == pickaxe[i][0]) {
if (c.playerLevel[Skills.MINING] >= pickaxe[i][1]) {
return pickaxe[i][2];
}
}
}
return 10;
}
public static void resetMining(Client c) {
c.playerSkilling[14] = false;
c.stopPlayerSkill = false;
for (int i = 0; i < 2; i++) {
c.playerSkillProp[14][i] = -1;
}
c.startAnimation(65535);
}
public static boolean miningRocks(Client c, int object) {
for (int i = 0; i < data.length; i++) {
if (object == data[i][0]) {
return true;
}
}
return false;
}
private static int getRespawnTime(Client c, int object) {
for (int i = 0; i < data.length; i++) {
if (object == data[i][0]) {
return data[i][5];
}
}
return -1;
}
private static int getLevelReq(Client c, int object) {
for (int i = 0; i < data.length; i++) {
if (object == data[i][0]) {
return data[i][2];
}
}
return -1;
}
public static boolean hasPickaxe(Client c) {
for (int i = 0; i < animation.length; i++) {
if (c.getItems().playerHasItem(animation[i][0]) || c.playerEquipment[3] == animation[i][0]) {
return true;
}
}
return false;
}
public static int getAnimation(Client c) {
for (int i = 0; i < animation.length; i++) {
if (c.getItems().playerHasItem(animation[i][0]) || c.playerEquipment[3] == animation[i][0]) {
return animation[i][1];
}
}
return -1;
}
private static int[][] animation = { { 1275, 6746 }, { 1271, 6750 }, { 1273, 6751 }, { 1269, 6749 },
{ 1267, 6748 }, { 1265, 6747 }, { 15259, 12188 }, };
private static int[][] pickaxe = { { 15259, 61, 0 }, // drag
{ 1275, 41, 0 }, // RUNE
{ 1271, 31, 1 }, // ADDY
{ 1273, 21, 2 }, // MITH
{ 1269, 6, 3 }, // STEEL
{ 1267, 1, 3 }, // IRON
{ 1265, 1, 4 }, // BRONZE
};
private static int[][] data = {
{ 2091, 436, 1, 18, 1, 5 }, // COPPER
{ 2090, 436, 1, 18, 1, 5 }, // COPPER
{ 31080, 436, 1, 18, 1, 5 }, // COPPER
{ 31081, 436, 1, 18, 1, 5 }, // COPPER
{ 31082, 436, 1, 18, 1, 5 }, // COPPER
{ 2094, 438, 1, 18, 1, 5 }, // TIN
{ 2095, 438, 1, 18, 1, 5 }, // TIN
{ 21293, 438, 1, 18, 1, 5 }, // TIN
{ 21294, 438, 1, 18, 1, 5 }, // TIN
{ 21295, 438, 1, 18, 1, 5 }, // TIN
{ 31077, 438, 1, 18, 1, 5 }, // TIN
{ 31078, 438, 1, 18, 1, 5 }, // TIN
{ 31079, 438, 1, 18, 1, 5 }, // TIN
{ 2093, 440, 15, 35, 2, 5 }, // IRON
{ 2092, 440, 15, 35, 2, 5 }, // IRON
{ 21281, 440, 15, 35, 2, 5 }, // IRON
{ 21282, 440, 15, 35, 2, 5 }, // IRON
{ 21283, 440, 15, 35, 2, 5 }, // IRON
{ 31071, 440, 15, 35, 2, 5 }, // IRON
{ 31072, 440, 15, 35, 2, 5 }, // IRON
{ 31073, 440, 15, 35, 2, 5 }, // IRON
{ 2097, 453, 30, 50, 3, 8 }, // COAL
{ 2096, 453, 30, 50, 3, 8 }, // COAL
{ 21287, 453, 30, 50, 3, 8 }, // COAL
{ 21288, 453, 30, 50, 3, 8 }, // COAL
{ 21289, 453, 30, 50, 3, 8 }, // COAL
{ 31068, 453, 30, 50, 3, 8 }, // COAL
{ 31069, 453, 30, 50, 3, 8 }, // COAL
{ 31070, 453, 30, 50, 3, 8 }, // COAL
{ 2098, 444, 40, 65, 3, 10 }, // GOLD
{ 2099, 444, 40, 65, 3, 10 }, // GOLD
{ 31065, 444, 40, 65, 3, 10 },// GOLD
{ 31066, 444, 40, 65, 3, 10 },// GOLD
{ 2103, 447, 55, 80, 5, 10 }, // MITH
{ 2102, 447, 55, 80, 5, 10 }, // MITH
{ 21278, 447, 55, 80, 5, 10 },// MITH
{ 21279, 447, 55, 80, 5, 10 },// MITH
{ 21280, 447, 55, 80, 5, 10 },// MITH
{ 31086, 447, 55, 80, 5, 10 },// MITH
{ 31087, 447, 55, 80, 5, 10 },// MITH
{ 31088, 447, 55, 80, 5, 10 },// MITH
{ 2105, 449, 70, 95, 7, 50 }, // ADDY
{ 21275, 449, 70, 95, 7, 50 },// ADDY
{ 21276, 449, 70, 95, 7, 50 },// ADDY
{ 21277, 449, 70, 95, 7, 50 },// ADDY
{ 31083, 449, 70, 95, 7, 50 },// ADDY
{ 31084, 449, 70, 95, 7, 50 },// ADDY
{ 31085, 449, 70, 95, 7, 50 },// ADDY
{ 14860, 451, 85, 125, 40, 100, 7 },// RUNE
};
}