mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-23 13:46:46 +01:00
My OCD made me do it.
This commit is contained in:
parent
c60cbe824c
commit
e193da2cd7
@ -44,24 +44,24 @@ public class AcrobaticsCommand extends SkillCommand {
|
|||||||
float gracefulRollChanceF;
|
float gracefulRollChanceF;
|
||||||
|
|
||||||
// DODGE
|
// DODGE
|
||||||
if(skillValue >= dodgeMaxBonusLevel) dodgeChanceF = dodgeChanceMax;
|
if (skillValue >= dodgeMaxBonusLevel) dodgeChanceF = dodgeChanceMax;
|
||||||
else dodgeChanceF = (float) (((double) dodgeChanceMax / (double) dodgeMaxBonusLevel) * skillValue);
|
else dodgeChanceF = (float) (((double) dodgeChanceMax / (double) dodgeMaxBonusLevel) * skillValue);
|
||||||
dodgeChance = df.format(dodgeChanceF);
|
dodgeChance = df.format(dodgeChanceF);
|
||||||
if(dodgeChanceF + dodgeChanceF * 0.3333D >= 100D) dodgeChanceLucky = df.format(100D);
|
if (dodgeChanceF + dodgeChanceF * 0.3333D >= 100D) dodgeChanceLucky = df.format(100D);
|
||||||
else dodgeChanceLucky = df.format(dodgeChanceF + dodgeChanceF * 0.3333D);
|
else dodgeChanceLucky = df.format(dodgeChanceF + dodgeChanceF * 0.3333D);
|
||||||
|
|
||||||
// ROLL
|
// ROLL
|
||||||
if(skillValue >= rollMaxBonusLevel) rollChanceF = rollChanceMax;
|
if (skillValue >= rollMaxBonusLevel) rollChanceF = rollChanceMax;
|
||||||
else rollChanceF = (float) (((double) rollChanceMax / (double) rollMaxBonusLevel) * skillValue);
|
else rollChanceF = (float) (((double) rollChanceMax / (double) rollMaxBonusLevel) * skillValue);
|
||||||
rollChance = df.format(rollChanceF);
|
rollChance = df.format(rollChanceF);
|
||||||
if(rollChanceF + rollChanceF * 0.3333D >= 100D) rollChanceLucky = df.format(100D);
|
if (rollChanceF + rollChanceF * 0.3333D >= 100D) rollChanceLucky = df.format(100D);
|
||||||
else rollChanceLucky = df.format(rollChanceF + rollChanceF * 0.3333D);
|
else rollChanceLucky = df.format(rollChanceF + rollChanceF * 0.3333D);
|
||||||
|
|
||||||
// GRACEFULROLL
|
// GRACEFULROLL
|
||||||
if(skillValue >= gracefulRollMaxBonusLevel) gracefulRollChanceF = gracefulRollChanceMax;
|
if (skillValue >= gracefulRollMaxBonusLevel) gracefulRollChanceF = gracefulRollChanceMax;
|
||||||
else gracefulRollChanceF = (float) (((double) gracefulRollChanceMax / (double) gracefulRollMaxBonusLevel) * skillValue);
|
else gracefulRollChanceF = (float) (((double) gracefulRollChanceMax / (double) gracefulRollMaxBonusLevel) * skillValue);
|
||||||
gracefulRollChance = df.format(gracefulRollChanceF);
|
gracefulRollChance = df.format(gracefulRollChanceF);
|
||||||
if(gracefulRollChanceF + gracefulRollChanceF * 0.3333D >= 100D) gracefulRollChanceLucky = df.format(100D);
|
if (gracefulRollChanceF + gracefulRollChanceF * 0.3333D >= 100D) gracefulRollChanceLucky = df.format(100D);
|
||||||
else gracefulRollChanceLucky = df.format(gracefulRollChanceF + gracefulRollChanceF * 0.3333D);
|
else gracefulRollChanceLucky = df.format(gracefulRollChanceF + gracefulRollChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,17 +50,17 @@ public class ArcheryCommand extends SkillCommand {
|
|||||||
else skillShotBonus = percent.format(bonus);
|
else skillShotBonus = percent.format(bonus);
|
||||||
|
|
||||||
// Daze
|
// Daze
|
||||||
if(skillValue >= dazeMaxBonusLevel) dazeChanceF = dazeBonusMax;
|
if (skillValue >= dazeMaxBonusLevel) dazeChanceF = dazeBonusMax;
|
||||||
else dazeChanceF = (float) (((double) dazeBonusMax / (double) dazeMaxBonusLevel) * skillValue);
|
else dazeChanceF = (float) (((double) dazeBonusMax / (double) dazeMaxBonusLevel) * skillValue);
|
||||||
dazeChance = df.format(dazeChanceF);
|
dazeChance = df.format(dazeChanceF);
|
||||||
if(dazeChanceF + dazeChanceF * 0.3333D >= 100D) dazeChanceLucky = df.format(100D);
|
if (dazeChanceF + dazeChanceF * 0.3333D >= 100D) dazeChanceLucky = df.format(100D);
|
||||||
else dazeChanceLucky = df.format(dazeChanceF + dazeChanceF * 0.3333D);
|
else dazeChanceLucky = df.format(dazeChanceF + dazeChanceF * 0.3333D);
|
||||||
|
|
||||||
// Retrieve
|
// Retrieve
|
||||||
if(skillValue >= retrieveMaxBonusLevel) retrieveChanceF = retrieveBonusMax;
|
if (skillValue >= retrieveMaxBonusLevel) retrieveChanceF = retrieveBonusMax;
|
||||||
else retrieveChanceF = (float) (((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * skillValue);
|
else retrieveChanceF = (float) (((double) retrieveBonusMax / (double) retrieveMaxBonusLevel) * skillValue);
|
||||||
retrieveChance = df.format(retrieveChanceF);
|
retrieveChance = df.format(retrieveChanceF);
|
||||||
if(retrieveChanceF + retrieveChanceF * 0.3333D >= 100D) retrieveChanceLucky = df.format(100D);
|
if (retrieveChanceF + retrieveChanceF * 0.3333D >= 100D) retrieveChanceLucky = df.format(100D);
|
||||||
else retrieveChanceLucky = df.format(retrieveChanceF + retrieveChanceF * 0.3333D);
|
else retrieveChanceLucky = df.format(retrieveChanceF + retrieveChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ public class AxesCommand extends SkillCommand {
|
|||||||
if (skillValue >= critMaxBonusLevel) critChanceF = (float) critMaxChance;
|
if (skillValue >= critMaxBonusLevel) critChanceF = (float) critMaxChance;
|
||||||
else critChanceF = (float) ((critMaxChance / critMaxBonusLevel) * skillCheck);
|
else critChanceF = (float) ((critMaxChance / critMaxBonusLevel) * skillCheck);
|
||||||
critChance = df.format(critChanceF);
|
critChance = df.format(critChanceF);
|
||||||
if(critChanceF + critChanceF * 0.3333D >= 100D) critChanceLucky = df.format(100D);
|
if (critChanceF + critChanceF * 0.3333D >= 100D) critChanceLucky = df.format(100D);
|
||||||
else critChanceLucky = df.format(critChanceF + critChanceF * 0.3333D);
|
else critChanceLucky = df.format(critChanceF + critChanceF * 0.3333D);
|
||||||
//Axe Mastery
|
//Axe Mastery
|
||||||
if (skillValue >= bonusDamageAxesMaxBonusLevel) bonusDamage = String.valueOf(bonusDamageAxesBonusMax);
|
if (skillValue >= bonusDamageAxesMaxBonusLevel) bonusDamage = String.valueOf(bonusDamageAxesBonusMax);
|
||||||
@ -125,7 +125,7 @@ public class AxesCommand extends SkillCommand {
|
|||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template", new Object[] { LocaleLoader.getString("Axes.Ability.Bonus.4"), LocaleLoader.getString("Axes.Ability.Bonus.5", new Object[] {greaterImpactDamage}) }));
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template", new Object[] { LocaleLoader.getString("Axes.Ability.Bonus.4"), LocaleLoader.getString("Axes.Ability.Bonus.5", new Object[] {greaterImpactDamage}) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canCritical){
|
if (canCritical) {
|
||||||
if (player.hasPermission("mcmmo.perks.lucky.axes"))
|
if (player.hasPermission("mcmmo.perks.lucky.axes"))
|
||||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.CritChance", new Object[] { critChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { critChanceLucky }));
|
player.sendMessage(LocaleLoader.getString("Axes.Combat.CritChance", new Object[] { critChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { critChanceLucky }));
|
||||||
else
|
else
|
||||||
|
@ -45,12 +45,12 @@ public class FishingCommand extends SkillCommand {
|
|||||||
int dropChance = Fishing.getShakeChance(lootTier);
|
int dropChance = Fishing.getShakeChance(lootTier);
|
||||||
|
|
||||||
shakeChance = df.format(dropChance);
|
shakeChance = df.format(dropChance);
|
||||||
if(dropChance + (dropChance * 0.3333D) >= 100D) shakeChanceLucky = df.format(100D);
|
if (dropChance + (dropChance * 0.3333D) >= 100D) shakeChanceLucky = df.format(100D);
|
||||||
else shakeChanceLucky = df.format(dropChance + (dropChance * 0.3333D));
|
else shakeChanceLucky = df.format(dropChance + (dropChance * 0.3333D));
|
||||||
shakeUnlockLevel = advancedConfig.getShakeUnlockLevel();
|
shakeUnlockLevel = advancedConfig.getShakeUnlockLevel();
|
||||||
|
|
||||||
//Fishermans Diet
|
//Fishermans Diet
|
||||||
if(skillValue >= fishermansDietRankMaxLevel) fishermansDietRank = "5";
|
if (skillValue >= fishermansDietRankMaxLevel) fishermansDietRank = "5";
|
||||||
else fishermansDietRank = String.valueOf((int) ((double) skillValue / (double) fishermansDietRankChange));
|
else fishermansDietRank = String.valueOf((int) ((double) skillValue / (double) fishermansDietRankChange));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,22 +51,22 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
float doubleDropChanceF;
|
float doubleDropChanceF;
|
||||||
greenTerraLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
greenTerraLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
||||||
//FARMERS DIET
|
//FARMERS DIET
|
||||||
if(skillValue >= farmersDietMaxLevel) farmersDietRank = "5";
|
if (skillValue >= farmersDietMaxLevel) farmersDietRank = "5";
|
||||||
else farmersDietRank = String.valueOf((int) ((double) skillValue / (double) farmersDietRankChange));
|
else farmersDietRank = String.valueOf((int) ((double) skillValue / (double) farmersDietRankChange));
|
||||||
//GREEN THUMB
|
//GREEN THUMB
|
||||||
if(skillValue >= greenThumbStageMaxLevel) greenThumbStage = "4";
|
if (skillValue >= greenThumbStageMaxLevel) greenThumbStage = "4";
|
||||||
else greenThumbStage = String.valueOf((int) ((double) skillValue / (double) greenThumbStageChange));
|
else greenThumbStage = String.valueOf((int) ((double) skillValue / (double) greenThumbStageChange));
|
||||||
|
|
||||||
if(skillValue >= greenThumbMaxLevel) greenThumbChanceF = (float) (greenThumbMaxBonus);
|
if (skillValue >= greenThumbMaxLevel) greenThumbChanceF = (float) (greenThumbMaxBonus);
|
||||||
else greenThumbChanceF = (float) ((greenThumbMaxBonus / greenThumbMaxLevel) * skillValue);
|
else greenThumbChanceF = (float) ((greenThumbMaxBonus / greenThumbMaxLevel) * skillValue);
|
||||||
greenThumbChance = df.format(greenThumbChanceF);
|
greenThumbChance = df.format(greenThumbChanceF);
|
||||||
if(greenThumbChanceF + greenThumbChanceF * 0.3333D >= 100D) greenThumbChanceLucky = df.format(100D);
|
if (greenThumbChanceF + greenThumbChanceF * 0.3333D >= 100D) greenThumbChanceLucky = df.format(100D);
|
||||||
else greenThumbChanceLucky = df.format(greenThumbChanceF + greenThumbChanceF * 0.3333D);
|
else greenThumbChanceLucky = df.format(greenThumbChanceF + greenThumbChanceF * 0.3333D);
|
||||||
//DOUBLE DROPS
|
//DOUBLE DROPS
|
||||||
if(skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
if (skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
||||||
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
||||||
doubleDropChance = df.format(doubleDropChanceF);
|
doubleDropChance = df.format(doubleDropChanceF);
|
||||||
if(doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
if (doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
||||||
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,10 +53,10 @@ public class MiningCommand extends SkillCommand {
|
|||||||
//Super Breaker
|
//Super Breaker
|
||||||
superBreakerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
superBreakerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
||||||
//Double Drops
|
//Double Drops
|
||||||
if(skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
if (skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
||||||
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
||||||
doubleDropChance = df.format(doubleDropChanceF);
|
doubleDropChance = df.format(doubleDropChanceF);
|
||||||
if(doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
if (doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
||||||
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
||||||
|
|
||||||
//Blast Mining
|
//Blast Mining
|
||||||
|
@ -67,13 +67,13 @@ public class RepairCommand extends SkillCommand {
|
|||||||
|
|
||||||
salvageLevel = Config.getInstance().getSalvageUnlockLevel();
|
salvageLevel = Config.getInstance().getSalvageUnlockLevel();
|
||||||
|
|
||||||
if(skillValue >= repairMasteryMaxBonusLevel) repairMasteryBonus = df.format(repairMasteryMaxBonus);
|
if (skillValue >= repairMasteryMaxBonusLevel) repairMasteryBonus = df.format(repairMasteryMaxBonus);
|
||||||
else repairMasteryBonus = df.format(((double) repairMasteryMaxBonus / (double) repairMasteryMaxBonusLevel) * skillValue);
|
else repairMasteryBonus = df.format(((double) repairMasteryMaxBonus / (double) repairMasteryMaxBonusLevel) * skillValue);
|
||||||
|
|
||||||
if(skillValue >= superRepairMaxBonusLevel) superRepairChanceF = superRepairChanceMax;
|
if (skillValue >= superRepairMaxBonusLevel) superRepairChanceF = superRepairChanceMax;
|
||||||
else superRepairChanceF = (float) (((double) superRepairChanceMax / (double) superRepairMaxBonusLevel) * skillValue);
|
else superRepairChanceF = (float) (((double) superRepairChanceMax / (double) superRepairMaxBonusLevel) * skillValue);
|
||||||
superRepairChance = df.format(superRepairChanceF);
|
superRepairChance = df.format(superRepairChanceF);
|
||||||
if(superRepairChanceF + superRepairChanceF * 0.3333D >= 100D) superRepairChanceLucky = df.format(100D);
|
if (superRepairChanceF + superRepairChanceF * 0.3333D >= 100D) superRepairChanceLucky = df.format(100D);
|
||||||
else superRepairChanceLucky = df.format(superRepairChanceF + superRepairChanceF * 0.3333D);
|
else superRepairChanceLucky = df.format(superRepairChanceF + superRepairChanceF * 0.3333D);
|
||||||
|
|
||||||
arcaneForgingRank = Repair.getArcaneForgingRank(profile);
|
arcaneForgingRank = Repair.getArcaneForgingRank(profile);
|
||||||
|
@ -48,16 +48,16 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
if (skillValue >= bleedMaxLevel) bleedLength = String.valueOf(bleedMaxTicks);
|
if (skillValue >= bleedMaxLevel) bleedLength = String.valueOf(bleedMaxTicks);
|
||||||
else bleedLength = String.valueOf(bleedBaseTicks);
|
else bleedLength = String.valueOf(bleedBaseTicks);
|
||||||
|
|
||||||
if(skillValue >= bleedMaxLevel) bleedChanceF = bleedChanceMax;
|
if (skillValue >= bleedMaxLevel) bleedChanceF = bleedChanceMax;
|
||||||
else bleedChanceF = (float) (((double) bleedChanceMax / (double) bleedMaxLevel) * skillValue);
|
else bleedChanceF = (float) (((double) bleedChanceMax / (double) bleedMaxLevel) * skillValue);
|
||||||
bleedChance = df.format(bleedChanceF);
|
bleedChance = df.format(bleedChanceF);
|
||||||
if(bleedChanceF + bleedChanceF * 0.3333D >= 100D) bleedChanceLucky = df.format(100D);
|
if (bleedChanceF + bleedChanceF * 0.3333D >= 100D) bleedChanceLucky = df.format(100D);
|
||||||
else bleedChanceLucky = df.format(bleedChanceF + bleedChanceF * 0.3333D);
|
else bleedChanceLucky = df.format(bleedChanceF + bleedChanceF * 0.3333D);
|
||||||
|
|
||||||
if(skillValue >= counterMaxLevel) counterAttackChanceF = counterChanceMax;
|
if (skillValue >= counterMaxLevel) counterAttackChanceF = counterChanceMax;
|
||||||
else counterAttackChanceF = (float) (((double) counterChanceMax / (double) counterMaxLevel) * skillValue);
|
else counterAttackChanceF = (float) (((double) counterChanceMax / (double) counterMaxLevel) * skillValue);
|
||||||
counterAttackChance = df.format(counterAttackChanceF);
|
counterAttackChance = df.format(counterAttackChanceF);
|
||||||
if(counterAttackChanceF + counterAttackChanceF * 0.3333D >= 100D) counterAttackChanceLucky = df.format(100D);
|
if (counterAttackChanceF + counterAttackChanceF * 0.3333D >= 100D) counterAttackChanceLucky = df.format(100D);
|
||||||
else counterAttackChanceLucky = df.format(counterAttackChanceF + counterAttackChanceF * 0.3333D);
|
else counterAttackChanceLucky = df.format(counterAttackChanceF + counterAttackChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,10 +43,10 @@ public class TamingCommand extends SkillCommand {
|
|||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
DecimalFormat df = new DecimalFormat("0.0");
|
DecimalFormat df = new DecimalFormat("0.0");
|
||||||
float goreChanceF;
|
float goreChanceF;
|
||||||
if(skillValue >= goreMaxLevel) goreChanceF = (goreChanceMax);
|
if (skillValue >= goreMaxLevel) goreChanceF = (goreChanceMax);
|
||||||
else goreChanceF = (float) (((double) goreChanceMax / (double) goreMaxLevel) * skillValue);
|
else goreChanceF = (float) (((double) goreChanceMax / (double) goreMaxLevel) * skillValue);
|
||||||
goreChance = df.format(goreChanceF);
|
goreChance = df.format(goreChanceF);
|
||||||
if(goreChanceF + goreChanceF * 0.3333D >= 100D) goreChanceLucky = df.format(100D);
|
if (goreChanceF + goreChanceF * 0.3333D >= 100D) goreChanceLucky = df.format(100D);
|
||||||
else goreChanceLucky = df.format(goreChanceF + goreChanceF * 0.3333D);
|
else goreChanceLucky = df.format(goreChanceF + goreChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,16 +44,16 @@ public class UnarmedCommand extends SkillCommand {
|
|||||||
float deflectChanceF;
|
float deflectChanceF;
|
||||||
berserkLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
berserkLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
||||||
|
|
||||||
if(skillValue >= disarmMaxLevel) disarmChanceF = disarmChanceMax;
|
if (skillValue >= disarmMaxLevel) disarmChanceF = disarmChanceMax;
|
||||||
else disarmChanceF = (float) (((double) disarmChanceMax / (double) disarmMaxLevel) * skillValue);
|
else disarmChanceF = (float) (((double) disarmChanceMax / (double) disarmMaxLevel) * skillValue);
|
||||||
disarmChance = df.format(disarmChanceF);
|
disarmChance = df.format(disarmChanceF);
|
||||||
if(disarmChanceF + disarmChanceF * 0.3333D >= 100D) disarmChanceLucky = df.format(100D);
|
if (disarmChanceF + disarmChanceF * 0.3333D >= 100D) disarmChanceLucky = df.format(100D);
|
||||||
else disarmChanceLucky = df.format(disarmChanceF + disarmChanceF * 0.3333D);
|
else disarmChanceLucky = df.format(disarmChanceF + disarmChanceF * 0.3333D);
|
||||||
|
|
||||||
if(skillValue >= deflectMaxLevel) deflectChanceF = deflectChanceMax;
|
if (skillValue >= deflectMaxLevel) deflectChanceF = deflectChanceMax;
|
||||||
else deflectChanceF = (float) (((double) deflectChanceMax / (double) deflectMaxLevel) * skillValue);
|
else deflectChanceF = (float) (((double) deflectChanceMax / (double) deflectMaxLevel) * skillValue);
|
||||||
deflectChance = df.format(deflectChanceF);
|
deflectChance = df.format(deflectChanceF);
|
||||||
if(deflectChanceF + deflectChanceF * 0.3333D >= 100D) deflectChanceLucky = df.format(100D);
|
if (deflectChanceF + deflectChanceF * 0.3333D >= 100D) deflectChanceLucky = df.format(100D);
|
||||||
else deflectChanceLucky = df.format(deflectChanceF + deflectChanceF * 0.3333D);
|
else deflectChanceLucky = df.format(deflectChanceF + deflectChanceF * 0.3333D);
|
||||||
|
|
||||||
if (skillValue >= 250) ironArmBonus = String.valueOf(ironArmMaxBonus);
|
if (skillValue >= 250) ironArmBonus = String.valueOf(ironArmMaxBonus);
|
||||||
|
@ -38,10 +38,10 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
float doubleDropChanceF;
|
float doubleDropChanceF;
|
||||||
|
|
||||||
treeFellerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
treeFellerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
|
||||||
if(skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
if (skillValue >= doubleDropsMaxLevel) doubleDropChanceF = (float) (doubleDropsMaxBonus);
|
||||||
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
else doubleDropChanceF = (float) ((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
|
||||||
doubleDropChance = df.format(doubleDropChanceF);
|
doubleDropChance = df.format(doubleDropChanceF);
|
||||||
if(doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
if (doubleDropChanceF + doubleDropChanceF * 0.3333D >= 100D) doubleDropChanceLucky = df.format(100D);
|
||||||
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
else doubleDropChanceLucky = df.format(doubleDropChanceF + doubleDropChanceF * 0.3333D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,13 +16,13 @@ public abstract class ConfigLoader {
|
|||||||
protected File configFile;
|
protected File configFile;
|
||||||
protected FileConfiguration config;
|
protected FileConfiguration config;
|
||||||
|
|
||||||
public ConfigLoader(String relativePath, String fileName){
|
public ConfigLoader(String relativePath, String fileName) {
|
||||||
this.fileName = fileName;
|
this.fileName = fileName;
|
||||||
configFile = new File(plugin.getDataFolder(), relativePath + File.separator + fileName);
|
configFile = new File(plugin.getDataFolder(), relativePath + File.separator + fileName);
|
||||||
loadFile();
|
loadFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigLoader(String fileName){
|
public ConfigLoader(String fileName) {
|
||||||
this.fileName = fileName;
|
this.fileName = fileName;
|
||||||
configFile = new File(plugin.getDataFolder(), fileName);
|
configFile = new File(plugin.getDataFolder(), fileName);
|
||||||
loadFile();
|
loadFile();
|
||||||
|
@ -202,11 +202,11 @@ public class TreasuresConfig extends ConfigLoader{
|
|||||||
int dropLevel = fTreasure.getDropLevel();
|
int dropLevel = fTreasure.getDropLevel();
|
||||||
int maxLevel = fTreasure.getMaxLevel();
|
int maxLevel = fTreasure.getMaxLevel();
|
||||||
|
|
||||||
if(dropLevel <= Config.getInstance().getFishingTierLevelsTier1() && maxLevel >= Config.getInstance().getFishingTierLevelsTier1()) {
|
if (dropLevel <= Config.getInstance().getFishingTierLevelsTier1() && maxLevel >= Config.getInstance().getFishingTierLevelsTier1()) {
|
||||||
fishingRewardsTier1.add(fTreasure);
|
fishingRewardsTier1.add(fTreasure);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dropLevel <= Config.getInstance().getFishingTierLevelsTier2() && maxLevel >= Config.getInstance().getFishingTierLevelsTier2()) {
|
if (dropLevel <= Config.getInstance().getFishingTierLevelsTier2() && maxLevel >= Config.getInstance().getFishingTierLevelsTier2()) {
|
||||||
fishingRewardsTier2.add(fTreasure);
|
fishingRewardsTier2.add(fTreasure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ public class CustomArmorConfig extends ConfigLoader{
|
|||||||
private void loadArmor(String armorType, List<Integer> idList) {
|
private void loadArmor(String armorType, List<Integer> idList) {
|
||||||
ConfigurationSection armorSection = config.getConfigurationSection(armorType);
|
ConfigurationSection armorSection = config.getConfigurationSection(armorType);
|
||||||
|
|
||||||
if(armorSection == null)
|
if (armorSection == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Set<String> armorConfigSet = armorSection.getKeys(false);
|
Set<String> armorConfigSet = armorSection.getKeys(false);
|
||||||
@ -88,7 +88,7 @@ public class CustomArmorConfig extends ConfigLoader{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Repairable> getLoadedRepairables() {
|
public List<Repairable> getLoadedRepairables() {
|
||||||
if(repairables == null) return new ArrayList<Repairable>();
|
if (repairables == null) return new ArrayList<Repairable>();
|
||||||
return repairables;
|
return repairables;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ public class CustomBlocksConfig extends ConfigLoader {
|
|||||||
private void loadBlocks(String skillType, List<ItemStack> blockList) {
|
private void loadBlocks(String skillType, List<ItemStack> blockList) {
|
||||||
ConfigurationSection skillSection = config.getConfigurationSection(skillType);
|
ConfigurationSection skillSection = config.getConfigurationSection(skillType);
|
||||||
|
|
||||||
if(skillSection == null)
|
if (skillSection == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Set<String> skillConfigSet = skillSection.getKeys(false);
|
Set<String> skillConfigSet = skillSection.getKeys(false);
|
||||||
|
@ -53,7 +53,7 @@ public class CustomToolsConfig extends ConfigLoader {
|
|||||||
private void loadTool(String toolType, List<Integer> idList) {
|
private void loadTool(String toolType, List<Integer> idList) {
|
||||||
ConfigurationSection toolSection = config.getConfigurationSection(toolType);
|
ConfigurationSection toolSection = config.getConfigurationSection(toolType);
|
||||||
|
|
||||||
if(toolSection == null)
|
if (toolSection == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Set<String> toolConfigSet = toolSection.getKeys(false);
|
Set<String> toolConfigSet = toolSection.getKeys(false);
|
||||||
@ -95,7 +95,7 @@ public class CustomToolsConfig extends ConfigLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Repairable> getLoadedRepairables() {
|
public List<Repairable> getLoadedRepairables() {
|
||||||
if(repairables == null) return new ArrayList<Repairable>();
|
if (repairables == null) return new ArrayList<Repairable>();
|
||||||
return repairables;
|
return repairables;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,9 +120,9 @@ public class McMMOPlayer {
|
|||||||
* @param newvalue The amount of XP to add
|
* @param newvalue The amount of XP to add
|
||||||
*/
|
*/
|
||||||
public void addXP(SkillType skillType, int newValue) {
|
public void addXP(SkillType skillType, int newValue) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
else if(player.getGameMode() == null)
|
else if (player.getGameMode() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (player.getGameMode().equals(GameMode.CREATIVE)) {
|
if (player.getGameMode().equals(GameMode.CREATIVE)) {
|
||||||
|
@ -297,7 +297,7 @@ public class PlayerProfile {
|
|||||||
|
|
||||||
public void save(boolean override) {
|
public void save(boolean override) {
|
||||||
Long timestamp = System.currentTimeMillis();
|
Long timestamp = System.currentTimeMillis();
|
||||||
if(timestamp < (lastSave + ((long) Config.getInstance().getSaveInterval() * 60000)) && !override)
|
if (timestamp < (lastSave + ((long) Config.getInstance().getSaveInterval() * 60000)) && !override)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// if we are using mysql save to database
|
// if we are using mysql save to database
|
||||||
|
@ -128,7 +128,7 @@ public class BlockListener implements Listener {
|
|||||||
int id = block.getTypeId();
|
int id = block.getTypeId();
|
||||||
Material type = block.getType();
|
Material type = block.getType();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
/* Code to prevent issues with placed falling Sand/Gravel not being tracked */
|
/* Code to prevent issues with placed falling Sand/Gravel not being tracked */
|
||||||
if (type.equals(Material.SAND) || type.equals(Material.GRAVEL)) {
|
if (type.equals(Material.SAND) || type.equals(Material.GRAVEL)) {
|
||||||
@ -171,7 +171,7 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ public class BlockListener implements Listener {
|
|||||||
if ((relativeType == Material.SAND || relativeType == Material.GRAVEL) && mcMMO.placeStore.isTrue(relative)) {
|
if ((relativeType == Material.SAND || relativeType == Material.GRAVEL) && mcMMO.placeStore.isTrue(relative)) {
|
||||||
mcMMO.placeStore.setFalse(relative);
|
mcMMO.placeStore.setFalse(relative);
|
||||||
}
|
}
|
||||||
else if (!BlockChecks.shouldBeWatched(relative) && mcMMO.placeStore.isTrue(relative)){
|
else if (!BlockChecks.shouldBeWatched(relative) && mcMMO.placeStore.isTrue(relative)) {
|
||||||
mcMMO.placeStore.setFalse(relative);
|
mcMMO.placeStore.setFalse(relative);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -284,7 +284,7 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
|
|
||||||
|
@ -60,13 +60,13 @@ public class EntityListener implements Listener {
|
|||||||
if (event instanceof FakeEntityDamageByEntityEvent)
|
if (event instanceof FakeEntityDamageByEntityEvent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(event.getDamage() <= 0)
|
if (event.getDamage() <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Entity attacker = event.getDamager();
|
Entity attacker = event.getDamager();
|
||||||
Entity defender = event.getEntity();
|
Entity defender = event.getEntity();
|
||||||
|
|
||||||
if(attacker.hasMetadata("NPC") || defender.hasMetadata("NPC")) return; // Check if either players is are Citizens NPCs
|
if (attacker.hasMetadata("NPC") || defender.hasMetadata("NPC")) return; // Check if either players is are Citizens NPCs
|
||||||
|
|
||||||
if (attacker instanceof Projectile) {
|
if (attacker instanceof Projectile) {
|
||||||
attacker = ((Projectile) attacker).getShooter();
|
attacker = ((Projectile) attacker).getShooter();
|
||||||
@ -118,7 +118,7 @@ public class EntityListener implements Listener {
|
|||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
DamageCause cause = event.getCause();
|
DamageCause cause = event.getCause();
|
||||||
|
|
||||||
if(entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (!(entity instanceof LivingEntity)) {
|
if (!(entity instanceof LivingEntity)) {
|
||||||
return;
|
return;
|
||||||
@ -179,7 +179,7 @@ public class EntityListener implements Listener {
|
|||||||
public void onEntityDeath(EntityDeathEvent event) {
|
public void onEntityDeath(EntityDeathEvent event) {
|
||||||
LivingEntity entity = event.getEntity();
|
LivingEntity entity = event.getEntity();
|
||||||
|
|
||||||
if(entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
entity.setFireTicks(0);
|
entity.setFireTicks(0);
|
||||||
BleedTimer.remove(entity);
|
BleedTimer.remove(entity);
|
||||||
@ -211,7 +211,7 @@ public class EntityListener implements Listener {
|
|||||||
public void onExplosionPrime(ExplosionPrimeEvent event) {
|
public void onExplosionPrime(ExplosionPrimeEvent event) {
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
|
|
||||||
if(entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (entity instanceof TNTPrimed) {
|
if (entity instanceof TNTPrimed) {
|
||||||
int id = entity.getEntityId();
|
int id = entity.getEntityId();
|
||||||
@ -236,9 +236,9 @@ public class EntityListener implements Listener {
|
|||||||
public void onEnitityExplode(EntityExplodeEvent event) {
|
public void onEnitityExplode(EntityExplodeEvent event) {
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
|
|
||||||
if(entity == null) return;
|
if (entity == null) return;
|
||||||
|
|
||||||
if(entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (entity.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (entity instanceof TNTPrimed) {
|
if (entity instanceof TNTPrimed) {
|
||||||
int id = entity.getEntityId();
|
int id = entity.getEntityId();
|
||||||
@ -263,7 +263,7 @@ public class EntityListener implements Listener {
|
|||||||
if (event.getEntity() instanceof Player) {
|
if (event.getEntity() instanceof Player) {
|
||||||
Player player = (Player) event.getEntity();
|
Player player = (Player) event.getEntity();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
int currentFoodLevel = player.getFoodLevel();
|
int currentFoodLevel = player.getFoodLevel();
|
||||||
@ -399,7 +399,7 @@ public class EntityListener implements Listener {
|
|||||||
public void onEntityTame(EntityTameEvent event) {
|
public void onEntityTame(EntityTameEvent event) {
|
||||||
Player player = (Player) event.getOwner();
|
Player player = (Player) event.getOwner();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (Permissions.taming(player) && !mcMMO.placeStore.isSpawnedPet(event.getEntity())) {
|
if (Permissions.taming(player) && !mcMMO.placeStore.isSpawnedPet(event.getEntity())) {
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
|
@ -21,7 +21,7 @@ public class HardcoreListener implements Listener {
|
|||||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
Player player = event.getEntity(); //Note this returns a Player object for this subevent
|
Player player = event.getEntity(); //Note this returns a Player object for this subevent
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (!Permissions.hardcoremodeBypass(player)) {
|
if (!Permissions.hardcoremodeBypass(player)) {
|
||||||
if (player.getKiller() != null && Config.getInstance().getHardcoreVampirismEnabled()) {
|
if (player.getKiller() != null && Config.getInstance().getHardcoreVampirismEnabled()) {
|
||||||
|
@ -63,7 +63,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerWorldChangeEvent(PlayerChangedWorldEvent event) {
|
public void onPlayerWorldChangeEvent(PlayerChangedWorldEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ public class PlayerListener implements Listener {
|
|||||||
int shakeUnlockLevel = advancedConfig.getShakeUnlockLevel();
|
int shakeUnlockLevel = advancedConfig.getShakeUnlockLevel();
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
if (Permissions.fishing(player)) {
|
if (Permissions.fishing(player)) {
|
||||||
State state = event.getState();
|
State state = event.getState();
|
||||||
@ -131,7 +131,7 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
||||||
|
|
||||||
if(event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(event.getPlayer());
|
PlayerProfile profile = Users.getProfile(event.getPlayer());
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ public class PlayerListener implements Listener {
|
|||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||||
if(event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
Users.addUser(event.getPlayer()).getProfile().actualizeRespawnATS();
|
Users.addUser(event.getPlayer()).getProfile().actualizeRespawnATS();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
/* GARBAGE COLLECTION */
|
/* GARBAGE COLLECTION */
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
//TODO: Locale ALL the things.
|
//TODO: Locale ALL the things.
|
||||||
if (Config.getInstance().getMOTDEnabled() && Permissions.motd(player)) {
|
if (Config.getInstance().getMOTDEnabled() && Permissions.motd(player)) {
|
||||||
@ -287,7 +287,7 @@ public class PlayerListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||||
if(event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (event.getPlayer().hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
PlayerProfile profile = Users.getProfile(event.getPlayer());
|
PlayerProfile profile = Users.getProfile(event.getPlayer());
|
||||||
|
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
@ -303,7 +303,7 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
Action action = event.getAction();
|
Action action = event.getAction();
|
||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
ItemStack inHand = player.getItemInHand();
|
ItemStack inHand = player.getItemInHand();
|
||||||
@ -427,7 +427,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if(player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
if (player.hasMetadata("NPC")) return; // Check if this player is a Citizens NPC
|
||||||
|
|
||||||
PlayerProfile profile = Users.getProfile(player);
|
PlayerProfile profile = Users.getProfile(player);
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class SelfListener implements Listener {
|
|||||||
public void onPlayerXpGain(McMMOPlayerXpGainEvent event) {
|
public void onPlayerXpGain(McMMOPlayerXpGainEvent event) {
|
||||||
int xp = event.getXpGained();
|
int xp = event.getXpGained();
|
||||||
|
|
||||||
if(xp < 0) {
|
if (xp < 0) {
|
||||||
try {
|
try {
|
||||||
throw new Exception("Gained negative XP!");
|
throw new Exception("Gained negative XP!");
|
||||||
}
|
}
|
||||||
|
@ -20,11 +20,11 @@ public class WorldListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onWorldInit(WorldInitEvent event) {
|
public void onWorldInit(WorldInitEvent event) {
|
||||||
File dataDir = new File(event.getWorld().getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(event.getWorld().getWorldFolder(), "mcmmo_data");
|
||||||
if(!dataDir.exists()) {
|
if (!dataDir.exists()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mcMMO.p == null)
|
if (mcMMO.p == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mcMMO.p.getLogger().info("Converting block storage for " + event.getWorld().getName() + " to a new format.");
|
mcMMO.p.getLogger().info("Converting block storage for " + event.getWorld().getName() + " to a new format.");
|
||||||
@ -50,7 +50,7 @@ public class WorldListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onChunkLoad(ChunkLoadEvent event) {
|
public void onChunkLoad(ChunkLoadEvent event) {
|
||||||
if(event.getChunk().getEntities().length > 0)
|
if (event.getChunk().getEntities().length > 0)
|
||||||
mcMMO.placeStore.loadChunk(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
|
mcMMO.placeStore.loadChunk(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
repairManager.registerRepairables(repairables);
|
repairManager.registerRepairables(repairables);
|
||||||
|
|
||||||
//Check if Repair Anvil and Salvage Anvil have different itemID's
|
//Check if Repair Anvil and Salvage Anvil have different itemID's
|
||||||
if (configInstance.getSalvageAnvilId() == configInstance.getRepairAnvilId()){
|
if (configInstance.getSalvageAnvilId() == configInstance.getRepairAnvilId()) {
|
||||||
getLogger().warning("Can't use the same itemID for Repair/Salvage Anvils!");
|
getLogger().warning("Can't use the same itemID for Repair/Salvage Anvils!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public class ChunkletUnloader implements Runnable {
|
|||||||
|
|
||||||
//Chunklets are unloaded only if their chunk has been unloaded for minimumInactiveTime
|
//Chunklets are unloaded only if their chunk has been unloaded for minimumInactiveTime
|
||||||
if (inactiveTime >= minimumInactiveTime) {
|
if (inactiveTime >= minimumInactiveTime) {
|
||||||
if(mcMMO.placeStore == null)
|
if (mcMMO.placeStore == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
mcMMO.placeStore.unloadChunk(chunk.getX(), chunk.getZ(), chunk.getWorld());
|
mcMMO.placeStore.unloadChunk(chunk.getX(), chunk.getZ(), chunk.getWorld());
|
||||||
|
@ -23,7 +23,7 @@ public class GreenThumbTimer implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(this.block.getType() != this.type)
|
if (this.block.getType() != this.type)
|
||||||
this.block.setType(this.type);
|
this.block.setType(this.type);
|
||||||
|
|
||||||
int skillLevel = this.profile.getSkillLevel(SkillType.HERBALISM);
|
int skillLevel = this.profile.getSkillLevel(SkillType.HERBALISM);
|
||||||
|
@ -25,7 +25,7 @@ public class BlockStoreConversionMain implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
if(this.taskID >= 0)
|
if (this.taskID >= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
||||||
@ -34,18 +34,18 @@ public class BlockStoreConversionMain implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(!this.dataDir.exists()) {
|
if (!this.dataDir.exists()) {
|
||||||
softStop();
|
softStop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.dataDir.isDirectory()) {
|
if (!this.dataDir.isDirectory()) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
softStop();
|
softStop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.dataDir.listFiles().length <= 0) {
|
if (this.dataDir.listFiles().length <= 0) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
softStop();
|
softStop();
|
||||||
return;
|
return;
|
||||||
@ -54,7 +54,7 @@ public class BlockStoreConversionMain implements Runnable {
|
|||||||
this.xDirs = this.dataDir.listFiles();
|
this.xDirs = this.dataDir.listFiles();
|
||||||
|
|
||||||
for (this.i = 0; (this.i < HiddenConfig.getInstance().getConversionRate()) && (this.i < this.xDirs.length); this.i++) {
|
for (this.i = 0; (this.i < HiddenConfig.getInstance().getConversionRate()) && (this.i < this.xDirs.length); this.i++) {
|
||||||
if(this.converters[this.i] == null)
|
if (this.converters[this.i] == null)
|
||||||
this.converters[this.i] = new BlockStoreConversionXDirectory();
|
this.converters[this.i] = new BlockStoreConversionXDirectory();
|
||||||
|
|
||||||
this.converters[this.i].start(this.world, this.xDirs[this.i]);
|
this.converters[this.i].start(this.world, this.xDirs[this.i]);
|
||||||
@ -64,7 +64,7 @@ public class BlockStoreConversionMain implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if(this.taskID < 0)
|
if (this.taskID < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.scheduler.cancelTask(this.taskID);
|
this.scheduler.cancelTask(this.taskID);
|
||||||
@ -74,7 +74,7 @@ public class BlockStoreConversionMain implements Runnable {
|
|||||||
public void softStop() {
|
public void softStop() {
|
||||||
stop();
|
stop();
|
||||||
|
|
||||||
if(this.dataDir.exists() || this.dataDir.isDirectory()) {
|
if (this.dataDir.exists() || this.dataDir.isDirectory()) {
|
||||||
start();
|
start();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ public class BlockStoreConversionXDirectory implements Runnable {
|
|||||||
this.converters = new BlockStoreConversionZDirectory[HiddenConfig.getInstance().getConversionRate()];
|
this.converters = new BlockStoreConversionZDirectory[HiddenConfig.getInstance().getConversionRate()];
|
||||||
this.dataDir = dataDir;
|
this.dataDir = dataDir;
|
||||||
|
|
||||||
if(this.taskID >= 0)
|
if (this.taskID >= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
||||||
@ -35,18 +35,18 @@ public class BlockStoreConversionXDirectory implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(!this.dataDir.exists()) {
|
if (!this.dataDir.exists()) {
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.dataDir.isDirectory()) {
|
if (!this.dataDir.isDirectory()) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.dataDir.listFiles().length <= 0) {
|
if (this.dataDir.listFiles().length <= 0) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
@ -55,7 +55,7 @@ public class BlockStoreConversionXDirectory implements Runnable {
|
|||||||
this.zDirs = this.dataDir.listFiles();
|
this.zDirs = this.dataDir.listFiles();
|
||||||
|
|
||||||
for (this.i = 0; (this.i < HiddenConfig.getInstance().getConversionRate()) && (this.i < this.zDirs.length); this.i++) {
|
for (this.i = 0; (this.i < HiddenConfig.getInstance().getConversionRate()) && (this.i < this.zDirs.length); this.i++) {
|
||||||
if(this.converters[this.i] == null)
|
if (this.converters[this.i] == null)
|
||||||
this.converters[this.i] = new BlockStoreConversionZDirectory();
|
this.converters[this.i] = new BlockStoreConversionZDirectory();
|
||||||
|
|
||||||
this.converters[this.i].start(this.world, this.dataDir, this.zDirs[this.i]);
|
this.converters[this.i].start(this.world, this.dataDir, this.zDirs[this.i]);
|
||||||
@ -65,7 +65,7 @@ public class BlockStoreConversionXDirectory implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if(this.taskID < 0)
|
if (this.taskID < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.scheduler.cancelTask(this.taskID);
|
this.scheduler.cancelTask(this.taskID);
|
||||||
|
@ -40,7 +40,7 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
this.dataDir = dataDir;
|
this.dataDir = dataDir;
|
||||||
this.xDir = xDir;
|
this.xDir = xDir;
|
||||||
|
|
||||||
if(this.taskID >= 0)
|
if (this.taskID >= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
this.taskID = this.scheduler.scheduleSyncDelayedTask(mcMMO.p, this, 1);
|
||||||
@ -49,18 +49,18 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(!this.dataDir.exists()) {
|
if (!this.dataDir.exists()) {
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.dataDir.isDirectory()) {
|
if (!this.dataDir.isDirectory()) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.dataDir.listFiles().length <= 0) {
|
if (this.dataDir.listFiles().length <= 0) {
|
||||||
this.dataDir.delete();
|
this.dataDir.delete();
|
||||||
stop();
|
stop();
|
||||||
return;
|
return;
|
||||||
@ -112,7 +112,7 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
|
|
||||||
for(this.y2 = (64 * this.y); this.y2 < (64 * this.y + 64); this.y2++) {
|
for(this.y2 = (64 * this.y); this.y2 < (64 * this.y + 64); this.y2++) {
|
||||||
try {
|
try {
|
||||||
if(!this.manager.isTrue(this.cxPos, this.y2, this.czPos, this.world))
|
if (!this.manager.isTrue(this.cxPos, this.y2, this.czPos, this.world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
this.newManager.setTrue(this.cxPos, this.y2, this.czPos, this.world);
|
this.newManager.setTrue(this.cxPos, this.y2, this.czPos, this.world);
|
||||||
@ -130,16 +130,16 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
|
|
||||||
for(this.x = 0; this.x < 16; this.x++) {
|
for(this.x = 0; this.x < 16; this.x++) {
|
||||||
for(this.z = 0; this.z < 16; this.z++) {
|
for(this.z = 0; this.z < 16; this.z++) {
|
||||||
if(this.primitiveChunklet != null)
|
if (this.primitiveChunklet != null)
|
||||||
this.oldArray = this.primitiveChunklet.store[x][z];
|
this.oldArray = this.primitiveChunklet.store[x][z];
|
||||||
if(this.primitiveExChunklet != null)
|
if (this.primitiveExChunklet != null)
|
||||||
this.oldArray = this.primitiveExChunklet.store[x][z];
|
this.oldArray = this.primitiveExChunklet.store[x][z];
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
this.newArray = this.currentChunk.store[x][z];
|
this.newArray = this.currentChunk.store[x][z];
|
||||||
if(this.oldArray.length < 64)
|
if (this.oldArray.length < 64)
|
||||||
return;
|
return;
|
||||||
else if(this.newArray.length < ((this.y * 64) + 64))
|
else if (this.newArray.length < ((this.y * 64) + 64))
|
||||||
return;
|
return;
|
||||||
System.arraycopy(this.oldArray, 0, this.newArray, (this.y * 64), 64);
|
System.arraycopy(this.oldArray, 0, this.newArray, (this.y * 64), 64);
|
||||||
}
|
}
|
||||||
@ -150,7 +150,7 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
this.newManager.unloadChunk(this.cx, this.cz, this.world);
|
this.newManager.unloadChunk(this.cx, this.cz, this.world);
|
||||||
|
|
||||||
for(File yFile : dataDir.listFiles()) {
|
for(File yFile : dataDir.listFiles()) {
|
||||||
if(!yFile.exists())
|
if (!yFile.exists())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
yFile.delete();
|
yFile.delete();
|
||||||
@ -160,7 +160,7 @@ public class BlockStoreConversionZDirectory implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if(this.taskID < 0)
|
if (this.taskID < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.scheduler.cancelTask(taskID);
|
this.scheduler.cancelTask(taskID);
|
||||||
|
@ -33,7 +33,7 @@ public class Axes {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
public static void axesBonus(Player attacker, EntityDamageByEntityEvent event) {
|
public static void axesBonus(Player attacker, EntityDamageByEntityEvent event) {
|
||||||
if(attacker == null)
|
if (attacker == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
final int MAX_BONUS = advancedConfig.getBonusDamageAxesBonusMax();
|
final int MAX_BONUS = advancedConfig.getBonusDamageAxesBonusMax();
|
||||||
@ -57,7 +57,7 @@ public class Axes {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event) {
|
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event) {
|
||||||
if(attacker == null)
|
if (attacker == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
@ -95,10 +95,10 @@ public class Axes {
|
|||||||
randomChance = (int) (randomChance * 0.75);
|
randomChance = (int) (randomChance * 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chance > random.nextInt(randomChance) && !entity.isDead()){
|
if (chance > random.nextInt(randomChance) && !entity.isDead()) {
|
||||||
int damage = event.getDamage();
|
int damage = event.getDamage();
|
||||||
|
|
||||||
if (entity instanceof Player){
|
if (entity instanceof Player) {
|
||||||
event.setDamage((int) (damage * PVP_MODIFIER));
|
event.setDamage((int) (damage * PVP_MODIFIER));
|
||||||
((Player) entity).sendMessage(LocaleLoader.getString("Axes.Combat.CritStruck"));
|
((Player) entity).sendMessage(LocaleLoader.getString("Axes.Combat.CritStruck"));
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ public class Axes {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public static void impact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) {
|
public static void impact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) {
|
||||||
if(attacker == null)
|
if (attacker == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -140,7 +140,7 @@ public class Axes {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (ItemStack armor : targetPlayer.getInventory().getArmorContents()) {
|
for (ItemStack armor : targetPlayer.getInventory().getArmorContents()) {
|
||||||
if(Math.random() * 100 > 75) {
|
if (Math.random() * 100 > 75) {
|
||||||
int lowerdamage = 0;
|
int lowerdamage = 0;
|
||||||
for (int i = 0; i <= durabilityDamage; i ++) {
|
for (int i = 0; i <= durabilityDamage; i ++) {
|
||||||
if (armor.containsEnchantment(Enchantment.DURABILITY)) {
|
if (armor.containsEnchantment(Enchantment.DURABILITY)) {
|
||||||
@ -172,7 +172,7 @@ public class Axes {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
private static void applyGreaterImpact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) {
|
private static void applyGreaterImpact(Player attacker, LivingEntity target, EntityDamageByEntityEvent event) {
|
||||||
if(attacker == null)
|
if (attacker == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
final int GREATER_IMPACT_CHANCE = advancedConfig.getGreaterImpactChance();
|
final int GREATER_IMPACT_CHANCE = advancedConfig.getGreaterImpactChance();
|
||||||
@ -203,7 +203,7 @@ public class Axes {
|
|||||||
* @return true if the player has armor, false otherwise
|
* @return true if the player has armor, false otherwise
|
||||||
*/
|
*/
|
||||||
private static boolean hasArmor(Player player) {
|
private static boolean hasArmor(Player player) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
PlayerInventory inventory = player.getInventory();
|
PlayerInventory inventory = player.getInventory();
|
||||||
|
@ -38,7 +38,7 @@ public class Excavation {
|
|||||||
* @param player The player who broke the block
|
* @param player The player who broke the block
|
||||||
*/
|
*/
|
||||||
public static void excavationProcCheck(Block block, Player player) {
|
public static void excavationProcCheck(Block block, Player player) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Material type = block.getType();
|
Material type = block.getType();
|
||||||
@ -128,7 +128,7 @@ public class Excavation {
|
|||||||
* @param block The block to check
|
* @param block The block to check
|
||||||
*/
|
*/
|
||||||
public static void gigaDrillBreaker(Player player, Block block) {
|
public static void gigaDrillBreaker(Player player, Block block) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Skills.abilityDurabilityLoss(player.getItemInHand(), Config.getInstance().getAbilityToolDamage());
|
Skills.abilityDurabilityLoss(player.getItemInHand(), Config.getInstance().getAbilityToolDamage());
|
||||||
|
@ -84,7 +84,7 @@ public class Herbalism {
|
|||||||
* @param plugin mcMMO plugin instance
|
* @param plugin mcMMO plugin instance
|
||||||
*/
|
*/
|
||||||
public static void herbalismProcCheck(final Block block, Player player, BlockBreakEvent event, mcMMO plugin) {
|
public static void herbalismProcCheck(final Block block, Player player, BlockBreakEvent event, mcMMO plugin) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
final PlayerProfile profile = Users.getProfile(player);
|
final PlayerProfile profile = Users.getProfile(player);
|
||||||
@ -396,7 +396,7 @@ public class Herbalism {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Config.getInstance().getHerbalismAFKDisabled() && player.isInsideVehicle())
|
if (Config.getInstance().getHerbalismAFKDisabled() && player.isInsideVehicle())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Skills.xpProcessing(player, profile, SkillType.HERBALISM, xp);
|
Skills.xpProcessing(player, profile, SkillType.HERBALISM, xp);
|
||||||
|
@ -275,13 +275,13 @@ public class WoodCutting {
|
|||||||
|
|
||||||
byte data = currentBlock.getData();
|
byte data = currentBlock.getData();
|
||||||
|
|
||||||
if((data & 0x4) == 0x4)
|
if ((data & 0x4) == 0x4)
|
||||||
data ^= 0x4;
|
data ^= 0x4;
|
||||||
|
|
||||||
if((data & 0x8) == 0x8)
|
if ((data & 0x8) == 0x8)
|
||||||
data ^= 0x8;
|
data ^= 0x8;
|
||||||
|
|
||||||
if(TreeSpecies.getByData(data) == TreeSpecies.JUNGLE) {
|
if (TreeSpecies.getByData(data) == TreeSpecies.JUNGLE) {
|
||||||
Block corner1 = currentBlock.getRelative(1, 0, 1);
|
Block corner1 = currentBlock.getRelative(1, 0, 1);
|
||||||
Block corner2 = currentBlock.getRelative(1, 0, -1);
|
Block corner2 = currentBlock.getRelative(1, 0, -1);
|
||||||
Block corner3 = currentBlock.getRelative(-1, 0, 1);
|
Block corner3 = currentBlock.getRelative(-1, 0, 1);
|
||||||
@ -307,7 +307,7 @@ public class WoodCutting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (BlockChecks.treeFellerCompatible(yPositive)) {
|
if (BlockChecks.treeFellerCompatible(yPositive)) {
|
||||||
if(!mcMMO.placeStore.isTrue(currentBlock) && !toBeFelled.contains(yPositive)) {
|
if (!mcMMO.placeStore.isTrue(currentBlock) && !toBeFelled.contains(yPositive)) {
|
||||||
processTreeFelling(yPositive, toBeFelled);
|
processTreeFelling(yPositive, toBeFelled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -345,10 +345,10 @@ public class WoodCutting {
|
|||||||
int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.WOODCUTTING);
|
int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.WOODCUTTING);
|
||||||
byte type = block.getData();
|
byte type = block.getData();
|
||||||
|
|
||||||
if((type & 0x4) == 0x4)
|
if ((type & 0x4) == 0x4)
|
||||||
type ^= 0x4;
|
type ^= 0x4;
|
||||||
|
|
||||||
if((type & 0x8) == 0x8)
|
if ((type & 0x8) == 0x8)
|
||||||
type ^= 0x8;
|
type ^= 0x8;
|
||||||
|
|
||||||
Material mat = Material.getMaterial(block.getTypeId());
|
Material mat = Material.getMaterial(block.getTypeId());
|
||||||
@ -442,17 +442,17 @@ public class WoodCutting {
|
|||||||
else {
|
else {
|
||||||
byte type = block.getData();
|
byte type = block.getData();
|
||||||
|
|
||||||
if((type & 0x4) == 0x4)
|
if ((type & 0x4) == 0x4)
|
||||||
type ^= 0x4;
|
type ^= 0x4;
|
||||||
|
|
||||||
if((type & 0x8) == 0x8)
|
if ((type & 0x8) == 0x8)
|
||||||
type ^= 0x8;
|
type ^= 0x8;
|
||||||
|
|
||||||
TreeSpecies species = TreeSpecies.getByData(type);
|
TreeSpecies species = TreeSpecies.getByData(type);
|
||||||
|
|
||||||
//Apparently species can be null in certain cases (custom server mods?)
|
//Apparently species can be null in certain cases (custom server mods?)
|
||||||
//https://github.com/mcMMO-Dev/mcMMO/issues/229
|
//https://github.com/mcMMO-Dev/mcMMO/issues/229
|
||||||
if(species == null)
|
if (species == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (species) {
|
switch (species) {
|
||||||
|
@ -90,7 +90,7 @@ public class Repair {
|
|||||||
* @param is Item being repaired
|
* @param is Item being repaired
|
||||||
*/
|
*/
|
||||||
protected static void addEnchants(Player player, ItemStack is) {
|
protected static void addEnchants(Player player, ItemStack is) {
|
||||||
if(Permissions.arcaneBypass(player)) {
|
if (Permissions.arcaneBypass(player)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Perfect"));
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Perfect"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -210,7 +210,7 @@ public class Repair {
|
|||||||
*/
|
*/
|
||||||
protected static short repairCalculate(Player player, int skillLevel, short durability, int repairAmount) {
|
protected static short repairCalculate(Player player, int skillLevel, short durability, int repairAmount) {
|
||||||
float bonus;
|
float bonus;
|
||||||
if(skillLevel >= REPAIR_MASTERY_MAX_BONUS_LEVEL) bonus = ((float) REPAIR_MASTERY_CHANCE_MAX / 100F);
|
if (skillLevel >= REPAIR_MASTERY_MAX_BONUS_LEVEL) bonus = ((float) REPAIR_MASTERY_CHANCE_MAX / 100F);
|
||||||
else bonus = (((float) skillLevel) / ((float) REPAIR_MASTERY_MAX_BONUS_LEVEL)) * (((float) REPAIR_MASTERY_CHANCE_MAX) / 100F);
|
else bonus = (((float) skillLevel) / ((float) REPAIR_MASTERY_MAX_BONUS_LEVEL)) * (((float) REPAIR_MASTERY_CHANCE_MAX) / 100F);
|
||||||
|
|
||||||
if (Permissions.repairMastery(player)) {
|
if (Permissions.repairMastery(player)) {
|
||||||
@ -222,7 +222,7 @@ public class Repair {
|
|||||||
repairAmount = (int) (repairAmount * 2D);
|
repairAmount = (int) (repairAmount * 2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(repairAmount <= 0 || repairAmount > 32767)
|
if (repairAmount <= 0 || repairAmount > 32767)
|
||||||
repairAmount = 32767;
|
repairAmount = 32767;
|
||||||
|
|
||||||
durability -= repairAmount;
|
durability -= repairAmount;
|
||||||
@ -249,7 +249,7 @@ public class Repair {
|
|||||||
|
|
||||||
if (Permissions.luckyRepair(player)) randomChance = (int) (randomChance * 0.75);
|
if (Permissions.luckyRepair(player)) randomChance = (int) (randomChance * 0.75);
|
||||||
|
|
||||||
if (chance > random.nextInt(randomChance) && Permissions.repairBonus(player)){
|
if (chance > random.nextInt(randomChance) && Permissions.repairBonus(player)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Skills.FeltEasy"));
|
player.sendMessage(LocaleLoader.getString("Repair.Skills.FeltEasy"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public class Salvage {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(player.getGameMode() == GameMode.SURVIVAL) {
|
if (player.getGameMode() == GameMode.SURVIVAL) {
|
||||||
final PlayerProfile profile = Users.getProfile(player);
|
final PlayerProfile profile = Users.getProfile(player);
|
||||||
final int skillLevel = profile.getSkillLevel(SkillType.REPAIR);
|
final int skillLevel = profile.getSkillLevel(SkillType.REPAIR);
|
||||||
final int unlockLevel = configInstance.getSalvageUnlockLevel();
|
final int unlockLevel = configInstance.getSalvageUnlockLevel();
|
||||||
|
@ -24,7 +24,7 @@ public class CounterAttackEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isHoldingSword() {
|
protected boolean isHoldingSword() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return ItemChecks.isSword(player.getItemInHand());
|
return ItemChecks.isSword(player.getItemInHand());
|
||||||
@ -39,7 +39,7 @@ public class CounterAttackEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendAbilityMessages() {
|
protected void sendAbilityMessages() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Countered"));
|
player.sendMessage(LocaleLoader.getString("Swords.Combat.Countered"));
|
||||||
|
@ -19,7 +19,7 @@ public class SerratedStrikesEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void applyAbilityEffects() {
|
protected void applyAbilityEffects() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Combat.applyAbilityAoE(player, target, damage / Swords.SERRATED_STRIKES_MODIFIER, SkillType.SWORDS);
|
Combat.applyAbilityAoE(player, target, damage / Swords.SERRATED_STRIKES_MODIFIER, SkillType.SWORDS);
|
||||||
|
@ -26,7 +26,7 @@ public class SwordsManager {
|
|||||||
* @param defender The defending entity
|
* @param defender The defending entity
|
||||||
*/
|
*/
|
||||||
public void bleedCheck(LivingEntity defender) {
|
public void bleedCheck(LivingEntity defender) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.swordsBleed(player)) {
|
if (!Permissions.swordsBleed(player)) {
|
||||||
@ -53,7 +53,7 @@ public class SwordsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void counterAttackChecks(LivingEntity attacker, int damage) {
|
public void counterAttackChecks(LivingEntity attacker, int damage) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.counterAttack(player)) {
|
if (!Permissions.counterAttack(player)) {
|
||||||
@ -82,7 +82,7 @@ public class SwordsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void serratedStrikes(LivingEntity target, int damage) {
|
public void serratedStrikes(LivingEntity target, int damage) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.serratedStrikes(player)) {
|
if (!Permissions.serratedStrikes(player)) {
|
||||||
|
@ -19,7 +19,7 @@ public class BeastLoreEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendInspectMessage() {
|
protected void sendInspectMessage() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
String message = LocaleLoader.getString("Combat.BeastLore") + " ";
|
String message = LocaleLoader.getString("Combat.BeastLore") + " ";
|
||||||
|
@ -28,14 +28,14 @@ public class CallOfTheWildEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendInsufficientAmountMessage() {
|
protected void sendInsufficientAmountMessage() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.NeedMore") + " " + ChatColor.GRAY + Misc.prettyItemString(inHand.getTypeId()));
|
player.sendMessage(LocaleLoader.getString("Skills.NeedMore") + " " + ChatColor.GRAY + Misc.prettyItemString(inHand.getTypeId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean nearbyEntityExists() {
|
protected boolean nearbyEntityExists() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
boolean entityExists = false;
|
boolean entityExists = false;
|
||||||
@ -51,7 +51,7 @@ public class CallOfTheWildEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendFailureMessage() {
|
protected void sendFailureMessage() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (type == EntityType.OCELOT) {
|
if (type == EntityType.OCELOT) {
|
||||||
@ -63,7 +63,7 @@ public class CallOfTheWildEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void spawnCreature() {
|
protected void spawnCreature() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
LivingEntity entity = (LivingEntity) player.getWorld().spawnEntity(player.getLocation(), type);
|
||||||
@ -80,7 +80,7 @@ public class CallOfTheWildEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void processResourceCost() {
|
protected void processResourceCost() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int newAmount = inHand.getAmount() - summonAmount;
|
int newAmount = inHand.getAmount() - summonAmount;
|
||||||
@ -94,7 +94,7 @@ public class CallOfTheWildEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendSuccessMessage() {
|
protected void sendSuccessMessage() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
|
player.sendMessage(LocaleLoader.getString("Taming.Summon.Complete"));
|
||||||
|
@ -18,7 +18,7 @@ public class EnvironmentallyAwareEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void teleportWolf() {
|
protected void teleportWolf() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (event.getDamage() > wolf.getHealth()) {
|
if (event.getDamage() > wolf.getHealth()) {
|
||||||
@ -29,7 +29,7 @@ public class EnvironmentallyAwareEventHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void sendAbilityMessage() {
|
protected void sendAbilityMessage() {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
|
player.sendMessage(LocaleLoader.getString("Taming.Listener.Wolf"));
|
||||||
|
@ -34,7 +34,7 @@ public class TamingManager {
|
|||||||
* @param damage The damage being absorbed by the wolf
|
* @param damage The damage being absorbed by the wolf
|
||||||
*/
|
*/
|
||||||
public void fastFoodService(Wolf wolf, int damage) {
|
public void fastFoodService(Wolf wolf, int damage) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.fastFoodService(player)) {
|
if (!Permissions.fastFoodService(player)) {
|
||||||
@ -62,7 +62,7 @@ public class TamingManager {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
public void sharpenedClaws(EntityDamageEvent event) {
|
public void sharpenedClaws(EntityDamageEvent event) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.sharpenedClaws(player)) {
|
if (!Permissions.sharpenedClaws(player)) {
|
||||||
@ -82,7 +82,7 @@ public class TamingManager {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
public void gore(EntityDamageEvent event) {
|
public void gore(EntityDamageEvent event) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.gore(player)) {
|
if (!Permissions.gore(player)) {
|
||||||
@ -160,7 +160,7 @@ public class TamingManager {
|
|||||||
* @param livingEntity The entity to examine
|
* @param livingEntity The entity to examine
|
||||||
*/
|
*/
|
||||||
public void beastLore(LivingEntity livingEntity) {
|
public void beastLore(LivingEntity livingEntity) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.beastLore(player)) {
|
if (!Permissions.beastLore(player)) {
|
||||||
@ -179,7 +179,7 @@ public class TamingManager {
|
|||||||
* @param summonAmount The amount of material needed to summon the entity
|
* @param summonAmount The amount of material needed to summon the entity
|
||||||
*/
|
*/
|
||||||
private void callOfTheWild(EntityType type, int summonAmount) {
|
private void callOfTheWild(EntityType type, int summonAmount) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.callOfTheWild(player)) {
|
if (!Permissions.callOfTheWild(player)) {
|
||||||
@ -213,7 +213,7 @@ public class TamingManager {
|
|||||||
* @param cause The damage cause of the event
|
* @param cause The damage cause of the event
|
||||||
*/
|
*/
|
||||||
private void environmentallyAware(EntityDamageEvent event, DamageCause cause) {
|
private void environmentallyAware(EntityDamageEvent event, DamageCause cause) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.environmentallyAware(player)) {
|
if (!Permissions.environmentallyAware(player)) {
|
||||||
@ -248,7 +248,7 @@ public class TamingManager {
|
|||||||
* @param cause The damage cause of the event
|
* @param cause The damage cause of the event
|
||||||
*/
|
*/
|
||||||
private void thickFur(EntityDamageEvent event, DamageCause cause) {
|
private void thickFur(EntityDamageEvent event, DamageCause cause) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.thickFur(player)) {
|
if (!Permissions.thickFur(player)) {
|
||||||
@ -268,7 +268,7 @@ public class TamingManager {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
private void shockProof(EntityDamageEvent event) {
|
private void shockProof(EntityDamageEvent event) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.shockProof(player)) {
|
if (!Permissions.shockProof(player)) {
|
||||||
|
@ -25,7 +25,7 @@ public class UnarmedManager {
|
|||||||
* @param defender The defending player
|
* @param defender The defending player
|
||||||
*/
|
*/
|
||||||
public void disarmCheck(Player defender) {
|
public void disarmCheck(Player defender) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.disarm(player)) {
|
if (!Permissions.disarm(player)) {
|
||||||
@ -62,7 +62,7 @@ public class UnarmedManager {
|
|||||||
* @param event The event to modify
|
* @param event The event to modify
|
||||||
*/
|
*/
|
||||||
public void deflectCheck(EntityDamageEvent event) {
|
public void deflectCheck(EntityDamageEvent event) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.deflect(player)) {
|
if (!Permissions.deflect(player)) {
|
||||||
@ -92,7 +92,7 @@ public class UnarmedManager {
|
|||||||
* @param event The event to modify.
|
* @param event The event to modify.
|
||||||
*/
|
*/
|
||||||
public void bonusDamage(EntityDamageEvent event) {
|
public void bonusDamage(EntityDamageEvent event) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!Permissions.unarmedBonus(player)) {
|
if (!Permissions.unarmedBonus(player)) {
|
||||||
@ -112,7 +112,7 @@ public class UnarmedManager {
|
|||||||
* @return true if the defender was not disarmed, false otherwise
|
* @return true if the defender was not disarmed, false otherwise
|
||||||
*/
|
*/
|
||||||
private boolean hasIronGrip(Player defender) {
|
private boolean hasIronGrip(Player defender) {
|
||||||
if(defender == null)
|
if (defender == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Permissions.ironGrip(defender)) {
|
if (!Permissions.ironGrip(defender)) {
|
||||||
|
@ -173,7 +173,7 @@ public class BlockChecks {
|
|||||||
* @param block Block to check
|
* @param block Block to check
|
||||||
* @return true if the block is affected, false otherwise
|
* @return true if the block is affected, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean canBeGreenTerra(Block block){
|
public static boolean canBeGreenTerra(Block block) {
|
||||||
switch (block.getType()) {
|
switch (block.getType()) {
|
||||||
case BROWN_MUSHROOM:
|
case BROWN_MUSHROOM:
|
||||||
case CACTUS:
|
case CACTUS:
|
||||||
@ -297,7 +297,7 @@ public class BlockChecks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isLog (Block block){
|
public static boolean isLog (Block block) {
|
||||||
if (block.getType().equals(Material.LOG) || (customBlocksEnabled && ModChecks.isCustomLogBlock(block))) {
|
if (block.getType().equals(Material.LOG) || (customBlocksEnabled && ModChecks.isCustomLogBlock(block))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -66,10 +66,10 @@ public class Database {
|
|||||||
mcMMO.p.getLogger().info("Connection to MySQL was a success!");
|
mcMMO.p.getLogger().info("Connection to MySQL was a success!");
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
connection = null;
|
connection = null;
|
||||||
if(reconnectAttempt == 0 || reconnectAttempt >= 11) mcMMO.p.getLogger().info("Connection to MySQL failed!");
|
if (reconnectAttempt == 0 || reconnectAttempt >= 11) mcMMO.p.getLogger().info("Connection to MySQL failed!");
|
||||||
} catch (ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
connection = null;
|
connection = null;
|
||||||
if(reconnectAttempt == 0 || reconnectAttempt >= 11) mcMMO.p.getLogger().info("MySQL database driver not found!");
|
if (reconnectAttempt == 0 || reconnectAttempt >= 11) mcMMO.p.getLogger().info("MySQL database driver not found!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ public class Database {
|
|||||||
|
|
||||||
PreparedStatement statement = null;
|
PreparedStatement statement = null;
|
||||||
try {
|
try {
|
||||||
if(!checkConnected()) return;
|
if (!checkConnected()) return;
|
||||||
statement = connection.prepareStatement(sql);
|
statement = connection.prepareStatement(sql);
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ public class Leaderboard {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!inserted) {
|
if (!inserted) {
|
||||||
writer.append(ps.name + ":" + ps.statVal).append("\r\n");
|
writer.append(ps.name + ":" + ps.statVal).append("\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ public class Page {
|
|||||||
public static int getTotalPageNumber(String address)
|
public static int getTotalPageNumber(String address)
|
||||||
{
|
{
|
||||||
String[] addressSplit = LocaleLoader.getString(address).split("\n");
|
String[] addressSplit = LocaleLoader.getString(address).split("\n");
|
||||||
if(addressSplit.length <= 8)
|
if (addressSplit.length <= 8)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return (addressSplit.length/8)+1;
|
return (addressSplit.length/8)+1;
|
||||||
@ -24,7 +24,7 @@ public class Page {
|
|||||||
int pageIndexStart = 0;
|
int pageIndexStart = 0;
|
||||||
|
|
||||||
//Determine what string to start at
|
//Determine what string to start at
|
||||||
if(pagenum > 1)
|
if (pagenum > 1)
|
||||||
{
|
{
|
||||||
pageIndexStart = 8*(pagenum-1);
|
pageIndexStart = 8*(pagenum-1);
|
||||||
}
|
}
|
||||||
@ -36,9 +36,9 @@ public class Page {
|
|||||||
|
|
||||||
//Add targeted strings
|
//Add targeted strings
|
||||||
|
|
||||||
while(allStrings.size() < 9)
|
while (allStrings.size() < 9)
|
||||||
{
|
{
|
||||||
if(pageIndexStart+allStrings.size() > split.length)
|
if (pageIndexStart+allStrings.size() > split.length)
|
||||||
allStrings.add("");
|
allStrings.add("");
|
||||||
else
|
else
|
||||||
allStrings.add(split[pageIndexStart+allStrings.size()-1]);
|
allStrings.add(split[pageIndexStart+allStrings.size()-1]);
|
||||||
@ -62,19 +62,19 @@ public class Page {
|
|||||||
player.sendMessage(ChatColor.DARK_AQUA+"Guide for "+capitalized+" available type /"+skilltype.toString().toLowerCase()+" ? [Page#]"); //TODO: Needs more locale.
|
player.sendMessage(ChatColor.DARK_AQUA+"Guide for "+capitalized+" available type /"+skilltype.toString().toLowerCase()+" ? [Page#]"); //TODO: Needs more locale.
|
||||||
if (args.length >= 1)
|
if (args.length >= 1)
|
||||||
{
|
{
|
||||||
if(args[0].equals("?"))
|
if (args[0].equals("?"))
|
||||||
{
|
{
|
||||||
|
|
||||||
String address = "Guides."+capitalized;
|
String address = "Guides."+capitalized;
|
||||||
|
|
||||||
if(args.length > 1 && Misc.isInt(args[1]) && Misc.getInt(args[1]) <= Page.getTotalPageNumber(address))
|
if (args.length > 1 && Misc.isInt(args[1]) && Misc.getInt(args[1]) <= Page.getTotalPageNumber(address))
|
||||||
{
|
{
|
||||||
Page.clearChat(player);
|
Page.clearChat(player);
|
||||||
for(String target : Page.grabPageContents(capitalized+" Guide", address, Misc.getInt(args[1])))
|
for(String target : Page.grabPageContents(capitalized+" Guide", address, Misc.getInt(args[1])))
|
||||||
{
|
{
|
||||||
player.sendMessage(target);
|
player.sendMessage(target);
|
||||||
}
|
}
|
||||||
} else if(args.length == 1)
|
} else if (args.length == 1)
|
||||||
{
|
{
|
||||||
Page.clearChat(player);
|
Page.clearChat(player);
|
||||||
for(String target : Page.grabPageContents(capitalized+" Guide", address, 1))
|
for(String target : Page.grabPageContents(capitalized+" Guide", address, 1))
|
||||||
@ -82,11 +82,11 @@ public class Page {
|
|||||||
player.sendMessage(target);
|
player.sendMessage(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(args.length > 1 && Misc.getInt(args[1]) > Page.getTotalPageNumber(address))
|
else if (args.length > 1 && Misc.getInt(args[1]) > Page.getTotalPageNumber(address))
|
||||||
{
|
{
|
||||||
player.sendMessage("That page doesn't exist, there are only "+Page.getTotalPageNumber(address)+" total pages"); //TODO: Needs more locale.
|
player.sendMessage("That page doesn't exist, there are only "+Page.getTotalPageNumber(address)+" total pages"); //TODO: Needs more locale.
|
||||||
}
|
}
|
||||||
else if(args.length > 1 && !Misc.isInt(args[1]))
|
else if (args.length > 1 && !Misc.isInt(args[1]))
|
||||||
{
|
{
|
||||||
player.sendMessage("Not a valid page number!"); //TODO: Needs more locale.
|
player.sendMessage("Not a valid page number!"); //TODO: Needs more locale.
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
|
|||||||
public class Permissions {
|
public class Permissions {
|
||||||
public static boolean hasPermission(CommandSender sender, String perm)
|
public static boolean hasPermission(CommandSender sender, String perm)
|
||||||
{
|
{
|
||||||
if(sender.hasPermission(perm))
|
if (sender.hasPermission(perm))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -14,7 +14,7 @@ public class Permissions {
|
|||||||
|
|
||||||
public static boolean hasPermission(Player sender, String perm)
|
public static boolean hasPermission(Player sender, String perm)
|
||||||
{
|
{
|
||||||
if(sender.hasPermission(perm))
|
if (sender.hasPermission(perm))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -38,7 +38,7 @@ public class Skills {
|
|||||||
* @param player The player whose cooldown is being checked
|
* @param player The player whose cooldown is being checked
|
||||||
* @return true if the cooldown is over, false otherwise
|
* @return true if the cooldown is over, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean cooldownOver(long oldTime, int cooldown, Player player){
|
public static boolean cooldownOver(long oldTime, int cooldown, Player player) {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
int adjustedCooldown = cooldown;
|
int adjustedCooldown = cooldown;
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ public class Skills {
|
|||||||
* @param ability The ability to watch cooldowns for
|
* @param ability The ability to watch cooldowns for
|
||||||
*/
|
*/
|
||||||
public static void watchCooldown(Player player, PlayerProfile profile, AbilityType ability) {
|
public static void watchCooldown(Player player, PlayerProfile profile, AbilityType ability) {
|
||||||
if(player == null || profile == null || ability == null)
|
if (player == null || profile == null || ability == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!profile.getAbilityInformed(ability) && cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
if (!profile.getAbilityInformed(ability) && cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
|
||||||
@ -510,14 +510,14 @@ public class Skills {
|
|||||||
* @param xp the amount of XP to gain
|
* @param xp the amount of XP to gain
|
||||||
*/
|
*/
|
||||||
public static void xpProcessing(Player player, PlayerProfile profile, SkillType type, int xp) {
|
public static void xpProcessing(Player player, PlayerProfile profile, SkillType type, int xp) {
|
||||||
if(player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (type.getPermissions(player)) {
|
if (type.getPermissions(player)) {
|
||||||
if(Users.getPlayer(player) == null)
|
if (Users.getPlayer(player) == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if((type.getMaxLevel() < profile.getSkillLevel(type) + 1) || (Misc.getPowerLevelCap() < Users.getPlayer(player).getPowerLevel() + 1))
|
if ((type.getMaxLevel() < profile.getSkillLevel(type) + 1) || (Misc.getPowerLevelCap() < Users.getPlayer(player).getPowerLevel() + 1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Users.getPlayer(player).addXP(type, xp);
|
Users.getPlayer(player).addXP(type, xp);
|
||||||
|
@ -6,7 +6,7 @@ public class ChunkletManagerFactory {
|
|||||||
public static ChunkletManager getChunkletManager() {
|
public static ChunkletManager getChunkletManager() {
|
||||||
HiddenConfig hConfig = HiddenConfig.getInstance();
|
HiddenConfig hConfig = HiddenConfig.getInstance();
|
||||||
|
|
||||||
if(hConfig.getChunkletsEnabled()) {
|
if (hConfig.getChunkletsEnabled()) {
|
||||||
return new HashChunkletManager();
|
return new HashChunkletManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,14 +25,14 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
public void loadChunklet(int cx, int cy, int cz, World world) {
|
public void loadChunklet(int cx, int cy, int cz, World world) {
|
||||||
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
if(!cxDir.exists()) return;
|
if (!cxDir.exists()) return;
|
||||||
File czDir = new File(cxDir, "" + cz);
|
File czDir = new File(cxDir, "" + cz);
|
||||||
if(!czDir.exists()) return;
|
if (!czDir.exists()) return;
|
||||||
File yFile = new File(czDir, "" + cy);
|
File yFile = new File(czDir, "" + cy);
|
||||||
if(!yFile.exists()) return;
|
if (!yFile.exists()) return;
|
||||||
|
|
||||||
ChunkletStore in = deserializeChunkletStore(yFile);
|
ChunkletStore in = deserializeChunkletStore(yFile);
|
||||||
if(in != null) {
|
if (in != null) {
|
||||||
store.put(world.getName() + "," + cx + "," + cz + "," + cy, in);
|
store.put(world.getName() + "," + cx + "," + cz + "," + cy, in);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -40,11 +40,11 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
@Override
|
@Override
|
||||||
public void unloadChunklet(int cx, int cy, int cz, World world) {
|
public void unloadChunklet(int cx, int cy, int cz, World world) {
|
||||||
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
||||||
if(store.containsKey(world.getName() + "," + cx + "," + cz + "," + cy)) {
|
if (store.containsKey(world.getName() + "," + cx + "," + cz + "," + cy)) {
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
if(!cxDir.exists()) cxDir.mkdir();
|
if (!cxDir.exists()) cxDir.mkdir();
|
||||||
File czDir = new File(cxDir, "" + cz);
|
File czDir = new File(cxDir, "" + cz);
|
||||||
if(!czDir.exists()) czDir.mkdir();
|
if (!czDir.exists()) czDir.mkdir();
|
||||||
File yFile = new File(czDir, "" + cy);
|
File yFile = new File(czDir, "" + cy);
|
||||||
|
|
||||||
ChunkletStore out = store.get(world.getName() + "," + cx + "," + cz + "," + cy);
|
ChunkletStore out = store.get(world.getName() + "," + cx + "," + cz + "," + cy);
|
||||||
@ -57,18 +57,18 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
public void loadChunk(int cx, int cz, World world) {
|
public void loadChunk(int cx, int cz, World world) {
|
||||||
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
if(!cxDir.exists()) return;
|
if (!cxDir.exists()) return;
|
||||||
File czDir = new File(cxDir, "" + cz);
|
File czDir = new File(cxDir, "" + cz);
|
||||||
if(!czDir.exists()) return;
|
if (!czDir.exists()) return;
|
||||||
|
|
||||||
for(int y = 0; y < 4; y++) {
|
for(int y = 0; y < 4; y++) {
|
||||||
File yFile = new File(czDir, "" + y);
|
File yFile = new File(czDir, "" + y);
|
||||||
if(!yFile.exists()) {
|
if (!yFile.exists()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChunkletStore in = deserializeChunkletStore(yFile);
|
ChunkletStore in = deserializeChunkletStore(yFile);
|
||||||
if(in != null) {
|
if (in != null) {
|
||||||
store.put(world.getName() + "," + cx + "," + cz + "," + y, in);
|
store.put(world.getName() + "," + cx + "," + cz + "," + y, in);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,11 +79,11 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
||||||
|
|
||||||
for(int y = 0; y < 4; y++) {
|
for(int y = 0; y < 4; y++) {
|
||||||
if(store.containsKey(world.getName() + "," + cx + "," + cz + "," + y)) {
|
if (store.containsKey(world.getName() + "," + cx + "," + cz + "," + y)) {
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
if(!cxDir.exists()) cxDir.mkdir();
|
if (!cxDir.exists()) cxDir.mkdir();
|
||||||
File czDir = new File(cxDir, "" + cz);
|
File czDir = new File(cxDir, "" + cz);
|
||||||
if(!czDir.exists()) czDir.mkdir();
|
if (!czDir.exists()) czDir.mkdir();
|
||||||
File yFile = new File(czDir, "" + y);
|
File yFile = new File(czDir, "" + y);
|
||||||
|
|
||||||
ChunkletStore out = store.get(world.getName() + "," + cx + "," + cz + "," + y);
|
ChunkletStore out = store.get(world.getName() + "," + cx + "," + cz + "," + y);
|
||||||
@ -107,16 +107,16 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
public void saveWorld(World world) {
|
public void saveWorld(World world) {
|
||||||
String worldName = world.getName();
|
String worldName = world.getName();
|
||||||
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
|
||||||
if(!dataDir.exists())
|
if (!dataDir.exists())
|
||||||
dataDir.mkdirs();
|
dataDir.mkdirs();
|
||||||
|
|
||||||
for(String key : store.keySet()) {
|
for(String key : store.keySet()) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
if(worldName.equals(info[0])) {
|
if (worldName.equals(info[0])) {
|
||||||
File cxDir = new File(dataDir, "" + info[1]);
|
File cxDir = new File(dataDir, "" + info[1]);
|
||||||
if(!cxDir.exists()) cxDir.mkdir();
|
if (!cxDir.exists()) cxDir.mkdir();
|
||||||
File czDir = new File(cxDir, "" + info[2]);
|
File czDir = new File(cxDir, "" + info[2]);
|
||||||
if(!czDir.exists()) czDir.mkdir();
|
if (!czDir.exists()) czDir.mkdir();
|
||||||
|
|
||||||
File yFile = new File(czDir, "" + info[3]);
|
File yFile = new File(czDir, "" + info[3]);
|
||||||
serializeChunkletStore(store.get(key), yFile);
|
serializeChunkletStore(store.get(key), yFile);
|
||||||
@ -132,7 +132,7 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
|
|
||||||
for(String key : store.keySet()) {
|
for(String key : store.keySet()) {
|
||||||
String tempWorldName = key.split(",")[0];
|
String tempWorldName = key.split(",")[0];
|
||||||
if(tempWorldName.equals(worldName)) {
|
if (tempWorldName.equals(worldName)) {
|
||||||
store.remove(key);
|
store.remove(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -254,21 +254,21 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
@Override
|
@Override
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
for(String key : store.keySet()) {
|
for(String key : store.keySet()) {
|
||||||
if(store.get(key).isEmpty()) {
|
if (store.get(key).isEmpty()) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
File dataDir = new File(Bukkit.getWorld(info[0]).getWorldFolder(), "mcmmo_data");
|
File dataDir = new File(Bukkit.getWorld(info[0]).getWorldFolder(), "mcmmo_data");
|
||||||
|
|
||||||
File cxDir = new File(dataDir, "" + info[1]);
|
File cxDir = new File(dataDir, "" + info[1]);
|
||||||
if(!cxDir.exists()) continue;
|
if (!cxDir.exists()) continue;
|
||||||
File czDir = new File(cxDir, "" + info[2]);
|
File czDir = new File(cxDir, "" + info[2]);
|
||||||
if(!czDir.exists()) continue;
|
if (!czDir.exists()) continue;
|
||||||
|
|
||||||
File yFile = new File(czDir, "" + info[3]);
|
File yFile = new File(czDir, "" + info[3]);
|
||||||
yFile.delete();
|
yFile.delete();
|
||||||
|
|
||||||
//Delete empty directories
|
//Delete empty directories
|
||||||
if(czDir.list().length == 0) czDir.delete();
|
if (czDir.list().length == 0) czDir.delete();
|
||||||
if(cxDir.list().length == 0) cxDir.delete();
|
if (cxDir.list().length == 0) cxDir.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -282,7 +282,7 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
ObjectOutputStream objOut = null;
|
ObjectOutputStream objOut = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(!location.exists())
|
if (!location.exists())
|
||||||
location.createNewFile();
|
location.createNewFile();
|
||||||
fileOut = new FileOutputStream(location);
|
fileOut = new FileOutputStream(location);
|
||||||
objOut = new ObjectOutputStream(fileOut);
|
objOut = new ObjectOutputStream(fileOut);
|
||||||
@ -374,9 +374,9 @@ public class HashChunkletManager implements ChunkletManager {
|
|||||||
// IMPORTANT! If ChunkletStoreFactory is going to be returning something other than PrimitiveEx we need to remove this, as it will be breaking time for old maps
|
// IMPORTANT! If ChunkletStoreFactory is going to be returning something other than PrimitiveEx we need to remove this, as it will be breaking time for old maps
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if(!(storeIn instanceof PrimitiveExChunkletStore)) {
|
if (!(storeIn instanceof PrimitiveExChunkletStore)) {
|
||||||
ChunkletStore tempStore = ChunkletStoreFactory.getChunkletStore();
|
ChunkletStore tempStore = ChunkletStoreFactory.getChunkletStore();
|
||||||
if(storeIn != null) {
|
if (storeIn != null) {
|
||||||
tempStore.copyFrom(storeIn);
|
tempStore.copyFrom(storeIn);
|
||||||
}
|
}
|
||||||
storeIn = tempStore;
|
storeIn = tempStore;
|
||||||
|
@ -26,7 +26,7 @@ public class PrimitiveChunkletStore implements ChunkletStore {
|
|||||||
for(int x = 0; x < 16; x++) {
|
for(int x = 0; x < 16; x++) {
|
||||||
for(int z = 0; z < 16; z++) {
|
for(int z = 0; z < 16; z++) {
|
||||||
for(int y = 0; y < 64; y++) {
|
for(int y = 0; y < 64; y++) {
|
||||||
if(store[x][z][y]) return false;
|
if (store[x][z][y]) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public class PrimitiveExChunkletStore implements ChunkletStore, Externalizable {
|
|||||||
for(int x = 0; x < 16; x++) {
|
for(int x = 0; x < 16; x++) {
|
||||||
for(int z = 0; z < 16; z++) {
|
for(int z = 0; z < 16; z++) {
|
||||||
for(int y = 0; y < 64; y++) {
|
for(int y = 0; y < 64; y++) {
|
||||||
if(store[x][z][y]) return false;
|
if (store[x][z][y]) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ public class PrimitiveExChunkletStore implements ChunkletStore, Externalizable {
|
|||||||
for(int x = 0; x < 16; x++) {
|
for(int x = 0; x < 16; x++) {
|
||||||
for(int z = 0; z < 16; z++) {
|
for(int z = 0; z < 16; z++) {
|
||||||
for(int y = 0; y < 64; y++) {
|
for(int y = 0; y < 64; y++) {
|
||||||
if(store[x][z][y]) {
|
if (store[x][z][y]) {
|
||||||
byte[] temp = constructColumn(x, z);
|
byte[] temp = constructColumn(x, z);
|
||||||
|
|
||||||
for(int i = 0; i < 9; i++) {
|
for(int i = 0; i < 9; i++) {
|
||||||
@ -81,7 +81,7 @@ public class PrimitiveExChunkletStore implements ChunkletStore, Externalizable {
|
|||||||
byte[] temp = new byte[9];
|
byte[] temp = new byte[9];
|
||||||
|
|
||||||
// Could probably reorganize this loop to print nasty things if it does not equal 9 or -1
|
// Could probably reorganize this loop to print nasty things if it does not equal 9 or -1
|
||||||
while(in.read(temp, 0, 9) == 9) {
|
while (in.read(temp, 0, 9) == 9) {
|
||||||
int x = addressByteX(temp[0]);
|
int x = addressByteX(temp[0]);
|
||||||
int z = addressByteZ(temp[0]);
|
int z = addressByteZ(temp[0]);
|
||||||
boolean[] yColumn = new boolean[64];
|
boolean[] yColumn = new boolean[64];
|
||||||
@ -127,13 +127,13 @@ public class PrimitiveExChunkletStore implements ChunkletStore, Externalizable {
|
|||||||
|
|
||||||
column[0] = makeAddressByte(x, z);
|
column[0] = makeAddressByte(x, z);
|
||||||
|
|
||||||
for (int i = 0; i < 8; i++){
|
for (int i = 0; i < 8; i++) {
|
||||||
byte yCompressed = 0x0;
|
byte yCompressed = 0x0;
|
||||||
int subColumnIndex = 8 * i;
|
int subColumnIndex = 8 * i;
|
||||||
int subColumnEnd = subColumnIndex + 8;
|
int subColumnEnd = subColumnIndex + 8;
|
||||||
|
|
||||||
for(int y = subColumnIndex; y < subColumnEnd; y++) {
|
for(int y = subColumnIndex; y < subColumnEnd; y++) {
|
||||||
if(store[x][z][y]) {
|
if (store[x][z][y]) {
|
||||||
yCompressed |= 1 << (y % 8);
|
yCompressed |= 1 << (y % 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ public class ChunkManagerFactory {
|
|||||||
public static ChunkManager getChunkManager() {
|
public static ChunkManager getChunkManager() {
|
||||||
HiddenConfig hConfig = HiddenConfig.getInstance();
|
HiddenConfig hConfig = HiddenConfig.getInstance();
|
||||||
|
|
||||||
if(hConfig.getChunkletsEnabled()) {
|
if (hConfig.getChunkletsEnabled()) {
|
||||||
return new HashChunkManager();
|
return new HashChunkManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,19 +143,19 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void loadChunk(int cx, int cz, World world) {
|
public synchronized void loadChunk(int cx, int cz, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(store.containsKey(world.getName() + "," + cx + "," + cz))
|
if (store.containsKey(world.getName() + "," + cx + "," + cz))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ChunkStore in = null;
|
ChunkStore in = null;
|
||||||
|
|
||||||
UUID key = world.getUID();
|
UUID key = world.getUID();
|
||||||
if(!this.oldData.containsKey(key))
|
if (!this.oldData.containsKey(key))
|
||||||
this.oldData.put(key, (new File(world.getWorldFolder(), "mcmmo_data")).exists());
|
this.oldData.put(key, (new File(world.getWorldFolder(), "mcmmo_data")).exists());
|
||||||
|
|
||||||
if(this.oldData.containsKey(key) && oldData.get(key))
|
if (this.oldData.containsKey(key) && oldData.get(key))
|
||||||
convertChunk(new File(world.getWorldFolder(), "mcmmo_data"), cx, cz, world, true);
|
convertChunk(new File(world.getWorldFolder(), "mcmmo_data"), cx, cz, world, true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -163,20 +163,20 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
}
|
}
|
||||||
catch(Exception e) {}
|
catch(Exception e) {}
|
||||||
|
|
||||||
if(in != null) {
|
if (in != null) {
|
||||||
store.put(world.getName() + "," + cx + "," + cz, in);
|
store.put(world.getName() + "," + cx + "," + cz, in);
|
||||||
|
|
||||||
List<UUID> mobs = in.getSpawnedMobs();
|
List<UUID> mobs = in.getSpawnedMobs();
|
||||||
List<UUID> pets = in.getSpawnedPets();
|
List<UUID> pets = in.getSpawnedPets();
|
||||||
|
|
||||||
if(mobs.isEmpty() && pets.isEmpty())
|
if (mobs.isEmpty() && pets.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(LivingEntity entity : world.getLivingEntities()) {
|
for(LivingEntity entity : world.getLivingEntities()) {
|
||||||
if(mobs.contains(entity.getUniqueId()))
|
if (mobs.contains(entity.getUniqueId()))
|
||||||
addSpawnedMob(entity);
|
addSpawnedMob(entity);
|
||||||
|
|
||||||
if(pets.contains(entity.getUniqueId()))
|
if (pets.contains(entity.getUniqueId()))
|
||||||
addSpawnedPet(entity);
|
addSpawnedPet(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,24 +189,24 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
public synchronized void unloadChunk(int cx, int cz, World world) {
|
public synchronized void unloadChunk(int cx, int cz, World world) {
|
||||||
saveChunk(cx, cz, world);
|
saveChunk(cx, cz, world);
|
||||||
|
|
||||||
if(store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
if (store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
||||||
store.remove(world.getName() + "," + cx + "," + cz);
|
store.remove(world.getName() + "," + cx + "," + cz);
|
||||||
|
|
||||||
for(Entity entity : spawnedMobs) {
|
for(Entity entity : spawnedMobs) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
mobsToRemove.add(entity);
|
mobsToRemove.add(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Entity entity : spawnedPets) {
|
for(Entity entity : spawnedPets) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
mobsToRemove.add(entity);
|
mobsToRemove.add(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(safeToRemoveMobs) {
|
if (safeToRemoveMobs) {
|
||||||
spawnedMobs.remove(mobsToRemove);
|
spawnedMobs.remove(mobsToRemove);
|
||||||
spawnedPets.remove(mobsToRemove);
|
spawnedPets.remove(mobsToRemove);
|
||||||
mobsToRemove.clear();
|
mobsToRemove.clear();
|
||||||
@ -216,14 +216,14 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void saveChunk(int cx, int cz, World world) {
|
public synchronized void saveChunk(int cx, int cz, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
boolean unloaded = false;
|
boolean unloaded = false;
|
||||||
if(!store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
if (!store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
||||||
List<Entity> tempSpawnedMobs = new ArrayList<Entity>(spawnedMobs);
|
List<Entity> tempSpawnedMobs = new ArrayList<Entity>(spawnedMobs);
|
||||||
for(Entity entity : tempSpawnedMobs) {
|
for(Entity entity : tempSpawnedMobs) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
loadChunk(cx, cz, world);
|
loadChunk(cx, cz, world);
|
||||||
@ -231,10 +231,10 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!unloaded) {
|
if (!unloaded) {
|
||||||
List<Entity> tempSpawnedPets = new ArrayList<Entity>(spawnedPets);
|
List<Entity> tempSpawnedPets = new ArrayList<Entity>(spawnedPets);
|
||||||
for(Entity entity : tempSpawnedPets) {
|
for(Entity entity : tempSpawnedPets) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
loadChunk(cx, cz, world);
|
loadChunk(cx, cz, world);
|
||||||
@ -244,17 +244,17 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!store.containsKey(world.getName() + "," + cx + "," + cz) && unloaded) {
|
if (!store.containsKey(world.getName() + "," + cx + "," + cz) && unloaded) {
|
||||||
ChunkStore cStore = ChunkStoreFactory.getChunkStore(world, cx, cz);
|
ChunkStore cStore = ChunkStoreFactory.getChunkStore(world, cx, cz);
|
||||||
store.put(world.getName() + "," + cx + "," + cz, cStore);
|
store.put(world.getName() + "," + cx + "," + cz, cStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
if (store.containsKey(world.getName() + "," + cx + "," + cz)) {
|
||||||
ChunkStore out = store.get(world.getName() + "," + cx + "," + cz);
|
ChunkStore out = store.get(world.getName() + "," + cx + "," + cz);
|
||||||
|
|
||||||
List<Entity> tempSpawnedMobs = new ArrayList<Entity>(spawnedMobs);
|
List<Entity> tempSpawnedMobs = new ArrayList<Entity>(spawnedMobs);
|
||||||
for(Entity entity : tempSpawnedMobs) {
|
for(Entity entity : tempSpawnedMobs) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
out.addSpawnedMob(entity.getUniqueId());
|
out.addSpawnedMob(entity.getUniqueId());
|
||||||
@ -262,13 +262,13 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
List<Entity> tempSpawnedPets = new ArrayList<Entity>(spawnedPets);
|
List<Entity> tempSpawnedPets = new ArrayList<Entity>(spawnedPets);
|
||||||
for(Entity entity : tempSpawnedPets) {
|
for(Entity entity : tempSpawnedPets) {
|
||||||
if(!isEntityInChunk(entity, cx, cz, world))
|
if (!isEntityInChunk(entity, cx, cz, world))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
out.addSpawnedPet(entity.getUniqueId());
|
out.addSpawnedPet(entity.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!out.isDirty())
|
if (!out.isDirty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
writeChunkStore(world, cx, cz, out);
|
writeChunkStore(world, cx, cz, out);
|
||||||
@ -276,16 +276,16 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isEntityInChunk(Entity entity, int cx, int cz, World world) {
|
private boolean isEntityInChunk(Entity entity, int cx, int cz, World world) {
|
||||||
if(entity == null || world == null)
|
if (entity == null || world == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(entity.getLocation().getChunk().getX() != cx)
|
if (entity.getLocation().getChunk().getX() != cx)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(entity.getLocation().getChunk().getZ() != cz)
|
if (entity.getLocation().getChunk().getZ() != cz)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(entity.getWorld() != world)
|
if (entity.getWorld() != world)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -293,7 +293,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized boolean isChunkLoaded(int cx, int cz, World world) {
|
public synchronized boolean isChunkLoaded(int cx, int cz, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return store.containsKey(world.getName() + "," + cx + "," + cz);
|
return store.containsKey(world.getName() + "," + cx + "," + cz);
|
||||||
@ -304,7 +304,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void chunkUnloaded(int cx, int cz, World world) {
|
public synchronized void chunkUnloaded(int cx, int cz, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ChunkletUnloader.addToList(cx, cz, world);
|
ChunkletUnloader.addToList(cx, cz, world);
|
||||||
@ -312,7 +312,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void saveWorld(World world) {
|
public synchronized void saveWorld(World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
closeAll();
|
closeAll();
|
||||||
@ -321,7 +321,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
List<String> keys = new ArrayList<String>(store.keySet());
|
List<String> keys = new ArrayList<String>(store.keySet());
|
||||||
for(String key : keys) {
|
for(String key : keys) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
if(worldName.equals(info[0])) {
|
if (worldName.equals(info[0])) {
|
||||||
int cx = 0;
|
int cx = 0;
|
||||||
int cz = 0;
|
int cz = 0;
|
||||||
|
|
||||||
@ -340,7 +340,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for(Entity entity : tempSpawnedMobs) {
|
for(Entity entity : tempSpawnedMobs) {
|
||||||
World entityWorld = entity.getWorld();
|
World entityWorld = entity.getWorld();
|
||||||
|
|
||||||
if(world != entityWorld)
|
if (world != entityWorld)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int cx = entity.getLocation().getChunk().getX();
|
int cx = entity.getLocation().getChunk().getX();
|
||||||
@ -353,7 +353,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for(Entity entity : tempSpawnedPets) {
|
for(Entity entity : tempSpawnedPets) {
|
||||||
World entityWorld = entity.getWorld();
|
World entityWorld = entity.getWorld();
|
||||||
|
|
||||||
if(world != entityWorld)
|
if (world != entityWorld)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int cx = entity.getLocation().getChunk().getX();
|
int cx = entity.getLocation().getChunk().getX();
|
||||||
@ -365,7 +365,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void unloadWorld(World world) {
|
public synchronized void unloadWorld(World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
closeAll();
|
closeAll();
|
||||||
@ -374,7 +374,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
List<String> keys = new ArrayList<String>(store.keySet());
|
List<String> keys = new ArrayList<String>(store.keySet());
|
||||||
for(String key : keys) {
|
for(String key : keys) {
|
||||||
String[] info = key.split(",");
|
String[] info = key.split(",");
|
||||||
if(worldName.equals(info[0])) {
|
if (worldName.equals(info[0])) {
|
||||||
int cx = 0;
|
int cx = 0;
|
||||||
int cz = 0;
|
int cz = 0;
|
||||||
|
|
||||||
@ -395,7 +395,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for(Entity entity : tempSpawnedMobs) {
|
for(Entity entity : tempSpawnedMobs) {
|
||||||
World entityWorld = entity.getWorld();
|
World entityWorld = entity.getWorld();
|
||||||
|
|
||||||
if(world != entityWorld)
|
if (world != entityWorld)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int cx = entity.getLocation().getChunk().getX();
|
int cx = entity.getLocation().getChunk().getX();
|
||||||
@ -408,7 +408,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
for(Entity entity : tempSpawnedPets) {
|
for(Entity entity : tempSpawnedPets) {
|
||||||
World entityWorld = entity.getWorld();
|
World entityWorld = entity.getWorld();
|
||||||
|
|
||||||
if(world != entityWorld)
|
if (world != entityWorld)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int cx = entity.getLocation().getChunk().getX();
|
int cx = entity.getLocation().getChunk().getX();
|
||||||
@ -447,7 +447,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized boolean isTrue(int x, int y, int z, World world) {
|
public synchronized boolean isTrue(int x, int y, int z, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int cx = x / 16;
|
int cx = x / 16;
|
||||||
@ -471,7 +471,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized boolean isTrue(Block block) {
|
public synchronized boolean isTrue(Block block) {
|
||||||
if(block == null)
|
if (block == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return isTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
return isTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
||||||
@ -479,7 +479,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void setTrue(int x, int y, int z, World world) {
|
public synchronized void setTrue(int x, int y, int z, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int cx = x / 16;
|
int cx = x / 16;
|
||||||
@ -506,7 +506,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void setTrue(Block block) {
|
public synchronized void setTrue(Block block) {
|
||||||
if(block == null)
|
if (block == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
setTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
||||||
@ -514,7 +514,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void setFalse(int x, int y, int z, World world) {
|
public synchronized void setFalse(int x, int y, int z, World world) {
|
||||||
if(world == null)
|
if (world == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int cx = x / 16;
|
int cx = x / 16;
|
||||||
@ -540,7 +540,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void setFalse(Block block) {
|
public synchronized void setFalse(Block block) {
|
||||||
if(block == null)
|
if (block == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setFalse(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
setFalse(block.getX(), block.getY(), block.getZ(), block.getWorld());
|
||||||
@ -554,21 +554,21 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void convertChunk(File dataDir, int cx, int cz, World world, boolean actually) {
|
public synchronized void convertChunk(File dataDir, int cx, int cz, World world, boolean actually) {
|
||||||
if(!actually)
|
if (!actually)
|
||||||
return;
|
return;
|
||||||
if(!dataDir.exists()) return;
|
if (!dataDir.exists()) return;
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
if(!cxDir.exists()) return;
|
if (!cxDir.exists()) return;
|
||||||
File czDir = new File(cxDir, "" + cz);
|
File czDir = new File(cxDir, "" + cz);
|
||||||
if(!czDir.exists()) return;
|
if (!czDir.exists()) return;
|
||||||
|
|
||||||
boolean conversionSet = false;
|
boolean conversionSet = false;
|
||||||
|
|
||||||
for(BlockStoreConversionZDirectory converter : this.converters) {
|
for(BlockStoreConversionZDirectory converter : this.converters) {
|
||||||
if(converter == null)
|
if (converter == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(converter.taskID >= 0)
|
if (converter.taskID >= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
converter.start(world, cxDir, czDir);
|
converter.start(world, cxDir, czDir);
|
||||||
@ -576,7 +576,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!conversionSet) {
|
if (!conversionSet) {
|
||||||
BlockStoreConversionZDirectory converter = new BlockStoreConversionZDirectory();
|
BlockStoreConversionZDirectory converter = new BlockStoreConversionZDirectory();
|
||||||
converter.start(world, cxDir, czDir);
|
converter.start(world, cxDir, czDir);
|
||||||
converters.add(converter);
|
converters.add(converter);
|
||||||
@ -592,22 +592,22 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addSpawnedMob(Entity entity) {
|
public void addSpawnedMob(Entity entity) {
|
||||||
if(!isSpawnedMob(entity))
|
if (!isSpawnedMob(entity))
|
||||||
spawnedMobs.add(entity);
|
spawnedMobs.add(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSpawnedPet(Entity entity) {
|
public void addSpawnedPet(Entity entity) {
|
||||||
if(!isSpawnedPet(entity))
|
if (!isSpawnedPet(entity))
|
||||||
spawnedPets.add(entity);
|
spawnedPets.add(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSpawnedMob(Entity entity) {
|
public void removeSpawnedMob(Entity entity) {
|
||||||
if(isSpawnedMob(entity))
|
if (isSpawnedMob(entity))
|
||||||
spawnedMobs.remove(entity);
|
spawnedMobs.remove(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSpawnedPet(Entity entity) {
|
public void removeSpawnedPet(Entity entity) {
|
||||||
if(isSpawnedPet(entity))
|
if (isSpawnedPet(entity))
|
||||||
spawnedPets.remove(entity);
|
spawnedPets.remove(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ public class PrimitiveChunkStore implements ChunkStore {
|
|||||||
for(int x = 0; x < 16; x++) {
|
for(int x = 0; x < 16; x++) {
|
||||||
for(int z = 0; z < 16; z++) {
|
for(int z = 0; z < 16; z++) {
|
||||||
for(int y = 0; y < this.worldHeight; y++) {
|
for(int y = 0; y < this.worldHeight; y++) {
|
||||||
if(store[x][z][y]) return false;
|
if (store[x][z][y]) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,42 +113,42 @@ public class PrimitiveChunkStore implements ChunkStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addSpawnedMob(UUID id) {
|
public void addSpawnedMob(UUID id) {
|
||||||
if(!isSpawnedMob(id)) {
|
if (!isSpawnedMob(id)) {
|
||||||
spawnedMobs.add(id);
|
spawnedMobs.add(id);
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSpawnedPet(UUID id) {
|
public void addSpawnedPet(UUID id) {
|
||||||
if(!isSpawnedPet(id)) {
|
if (!isSpawnedPet(id)) {
|
||||||
spawnedPets.add(id);
|
spawnedPets.add(id);
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSpawnedMob(UUID id) {
|
public void removeSpawnedMob(UUID id) {
|
||||||
if(isSpawnedMob(id)) {
|
if (isSpawnedMob(id)) {
|
||||||
spawnedMobs.remove(id);
|
spawnedMobs.remove(id);
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSpawnedPet(UUID id) {
|
public void removeSpawnedPet(UUID id) {
|
||||||
if(isSpawnedPet(id)) {
|
if (isSpawnedPet(id)) {
|
||||||
spawnedPets.remove(id);
|
spawnedPets.remove(id);
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearSpawnedMobs() {
|
public void clearSpawnedMobs() {
|
||||||
if(!spawnedMobs.isEmpty()) {
|
if (!spawnedMobs.isEmpty()) {
|
||||||
spawnedMobs.clear();
|
spawnedMobs.clear();
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearSpawnedPets() {
|
public void clearSpawnedPets() {
|
||||||
if(!spawnedPets.isEmpty()) {
|
if (!spawnedPets.isEmpty()) {
|
||||||
spawnedPets.clear();
|
spawnedPets.clear();
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
@ -204,16 +204,16 @@ public class PrimitiveChunkStore implements ChunkStore {
|
|||||||
store = (boolean[][][]) in.readObject();
|
store = (boolean[][][]) in.readObject();
|
||||||
|
|
||||||
if (fileVersionNumber < CURRENT_VERSION) {
|
if (fileVersionNumber < CURRENT_VERSION) {
|
||||||
if(fileVersionNumber < 5)
|
if (fileVersionNumber < 5)
|
||||||
fixArray();
|
fixArray();
|
||||||
if(fileVersionNumber < 6) {
|
if (fileVersionNumber < 6) {
|
||||||
spawnedMobs = new ArrayList<UUID>();
|
spawnedMobs = new ArrayList<UUID>();
|
||||||
spawnedPets = new ArrayList<UUID>();
|
spawnedPets = new ArrayList<UUID>();
|
||||||
}
|
}
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fileVersionNumber >= 6) {
|
if (fileVersionNumber >= 6) {
|
||||||
//What do we want to do about this? These casts are unchecked.
|
//What do we want to do about this? These casts are unchecked.
|
||||||
spawnedMobs = (ArrayList<UUID>) in.readObject();
|
spawnedMobs = (ArrayList<UUID>) in.readObject();
|
||||||
spawnedPets = (ArrayList<UUID>) in.readObject();
|
spawnedPets = (ArrayList<UUID>) in.readObject();
|
||||||
|
Loading…
Reference in New Issue
Block a user