Code:
private static boolean canMine(Player player, int objectId) {
if (Rocks.getRock(objectId) == null) {
return false;
}
if (player.getItems().freeSlots() == 0) {
return false;
}
if (!hasPick(player)) {
return false;
}
if (player.playerEquipment[player.playerWeapon] == SkillingTools.infernoAdze) {
if (!player.getSkillTools().getAdzeRequirements(player))
return false;
}
if (player.playerLevel[player.playerMining] < Rocks.getRock(objectId).levelReq && !(player.playerEquipment[player.playerWeapon] == SkillingTools.infernoAdze)) {
return false;
}
return true;
}
public static boolean mineOre(final Player player, final int objectId, final int obX, final int obY) {
final Rocks r = Rocks.getRock(objectId);
if (!canMine(player, objectId) || player == null || r == null || player.playerSkilling[player.playerMining])
return false;
PickAxes pick = null;
for (PickAxes o : PickAxes.values()) {
if (player.playerEquipment[player.playerWeapon] == o.itemId || player.getItems().playerHasItem(o.itemId)) {
if (player.playerLevel[player.playerMining] >= o.levelReq)
pick = o;
}
}
final PickAxes p = pick;
if(p == null) {
player.sendMessage("You do not have a pickaxe in which you have the correct mining level to use.");
return false;
}
if (r.name().equalsIgnoreCase("empty")) {
player.sendMessage("This rock has run out of ore!");
return false;
}
player.sendMessage("You swing your pick at the rock.");
player.getPA().resetSkills();
player.startAnimation(p.getAnim());
player.playerSkilling[player.playerMining] = true;
CycleEventHandler.getSingleton().addEvent(new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
if (!player.playerSkilling[player.playerMining] || !canMine(player, objectId))
container.stop();
if (SkillHandler.skillCheck(player.playerLevel[player.playerMining], r.levelReq, p.bonus * 20)) {
player.getItems().addItem(getItemReceived(objectId, r.oreItemId), 1);
]CycleEventHandler.getSingleton().stopEvents(p,1);
player.sendMessage("You manage to mine some " + player.getItems().getItemName(r.oreItemId).toLowerCase());
player.getPA().addSkillXP(getExp(getItemReceived(objectId, r.oreItemId), r.xp), player.playerMining);
]CycleEventHandler.getSingleton().stopEvents(p,1);
Objects ob = null;
for (Objects o : ObjectHandler.globalObjects) {
if (Objects.objectId == objectId && Objects.objectX == obX && Objects.objectY == obY && o.objectHeight == player.heightLevel) {
ob = o;
}
}
final Objects obj = ob;
Server.objectHandler.placeObject(new Objects(emptyOre(objectId), obX, obY, player.heightLevel, obj != null ? obj.objectFace : 0, 10));
CycleEventHandler.getSingleton().addEvent(new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
container.stop();
}
@Override
public void stop() {
Server.objectHandler.placeObject(new Objects(objectId, obX, obY, player.heightLevel, obj != null ? obj.objectFace : 0, 10));
}
}, r.respawnTimer);
container.stop();
}
}