All changes up to 0.9

This commit is contained in:
nossr50 2011-03-16 23:35:25 -07:00
parent ff1e6e5ba4
commit 8a5560b711
11 changed files with 223 additions and 92 deletions

View File

@ -13,6 +13,7 @@ Unarmed now has the "Deflect Arrows" passive skill
Chimaera Wing Item Added
--CHANGES--
HP Regen & Bleed are back
Woodcutting will drop the appropriate log on double drop procs
Herbalism now applies double drops to herbs
/<skillname> now shows much more information to the player regarding their stats
@ -22,9 +23,13 @@ Unarmed disarm chance is now based directly on your skill level
Acrobatics now gives XP when you roll
--BUGFIXES--
Memory Leak Fixed
Axes not doing critical strikes
Gold Armor repair
Capped skills now have the correct proc chance
/mmoedit is no longer case sensitive
More NPE errors fixed
Many bugs I forgot to write down
--PLUGIN COMPATABILITY FIXES--
If combat interactions are cancelled by other plugins mcMMO should ignore the event

View File

@ -37,8 +37,8 @@ public class mcBlockListener extends BlockListener {
Block block = event.getBlock();
Player player = event.getPlayer();
ItemStack is = player.getItemInHand();
if(mcPermissions.getInstance().unarmed(player)){
mcSkills.getInstance().berserkActivationCheck(player, block);
if(mcPermissions.getInstance().unarmed(player) && player.getItemInHand().getTypeId() == 0 && mcm.getInstance().abilityBlockCheck(block)){
mcSkills.getInstance().abilityActivationCheck(player, block);
}
if(block != null && player != null && mcPermissions.getInstance().repair(player) && event.getBlock().getTypeId() == 42){
mcRepair.getInstance().repairCheck(player, is, event.getBlock());
@ -55,7 +55,17 @@ public class mcBlockListener extends BlockListener {
Block block = event.getBlock();
Location loc = block.getLocation();
int dmg = event.getDamageLevel().getLevel();
/*
* ABILITY PREPARATION CHECKS
*/
if(mcUsers.getProfile(player).getAxePreparationMode() && block.getTypeId() == 17)
mcWoodCutting.getInstance().treeFellerCheck(player, block);
if(mcUsers.getProfile(player).getPickaxePreparationMode())
mcMining.getInstance().superBreakerCheck(player, block);
if(mcUsers.getProfile(player).getShovelPreparationMode() && mcExcavation.getInstance().canBeGigaDrillBroken(block))
mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
if(mcUsers.getProfile(player).getFistsPreparationMode() && mcExcavation.getInstance().canBeGigaDrillBroken(block))
mcSkills.getInstance().berserkActivationCheck(player);
/*
* GIGA DRILL BREAKER CHECKS
*/
@ -119,9 +129,6 @@ public class mcBlockListener extends BlockListener {
* WOOD CUTTING
*/
//Check for axe prep
if(mcUsers.getProfile(player).getAxePreparationMode())
mcWoodCutting.getInstance().treeFellerCheck(player, block);
if(player != null && block.getTypeId() == 17 && mcPermissions.getInstance().woodcutting(player)){
if(mcLoadProperties.woodcuttingrequiresaxe){
if(mcm.getInstance().isAxes(inhand)){

View File

@ -498,7 +498,7 @@ public class mcCombat {
}
public void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Entity x){
for(Entity derp : x.getWorld().getEntities()){
if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){
if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 5){
if(derp instanceof Player){
Player target = (Player)derp;
if(mcParty.getInstance().inSameParty(attacker, target))
@ -521,14 +521,14 @@ public class mcCombat {
}
public void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, Entity x){
for(Entity derp : x.getWorld().getEntities()){
if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){
if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 5){
if(derp instanceof Player){
Player target = (Player)derp;
if(mcParty.getInstance().inSameParty(attacker, target))
continue;
if(!target.getName().equals(attacker.getName())){
target.damage(event.getDamage() / 4);
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strike!");
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!");
if(!mcConfig.getInstance().isBleedTracked(derp)){
mcConfig.getInstance().addBleedTrack(x);
mcUsers.getProfile(target).setBleedTicks(12);
@ -554,20 +554,20 @@ public class mcCombat {
if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
if(mcUsers.getProfile(attacker).getAxesInt() >= 750){
if(Math.random() * 1000 <= 750){
event.setDamage(event.getDamage() * 2);
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
if(x instanceof Player){
Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
event.setDamage(event.getDamage() * 2);
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
}
} else if(Math.random() * 1000 <= mcUsers.getProfile(attacker).getAxesInt()){
if(x instanceof Player){
Player player = (Player)x;
event.setDamage(event.getDamage() * 2);
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
event.setDamage(event.getDamage() * 2);
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
}
}
}

View File

@ -96,6 +96,10 @@ public class mcEntityListener extends EntityListener {
Player attacker = (Player)f;
if(mcUsers.getProfile(attacker).getAxePreparationMode())
mcSkills.getInstance().skullSplitterCheck(attacker);
if(mcUsers.getProfile(attacker).getSwordsPreparationMode())
mcSkills.getInstance().serratedStrikesActivationCheck(attacker);
if(mcUsers.getProfile(attacker).getFistsPreparationMode())
mcSkills.getInstance().berserkActivationCheck(attacker);
/*
* BERSERK DAMAGE MODIFIER
*/

View File

@ -50,9 +50,6 @@ public class mcExcavation {
mcUsers.getProfile(player).setGigaDrillBreakerMode(true);
}
if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
}
}
public boolean canBeGigaDrillBroken(Block block){

View File

@ -50,9 +50,6 @@ public class mcMining {
mcUsers.getProfile(player).setSuperBreakerMode(true);
}
if(!mcUsers.getProfile(player).getSuperBreakerMode() && mcUsers.getProfile(player).getSuperBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
}
}
public void blockProcSimulate(Block block){

View File

@ -288,29 +288,41 @@ public class mcRepair {
switch(is.getTypeId())
{
case 306:
durability -= 27;
break;
durability -= 27;
break;
case 310:
durability -= 55;
break;
durability -= 55;
break;
case 307:
durability -= 24;
break;
durability -= 24;
break;
case 311:
durability -= 48;
break;
durability -= 48;
break;
case 308:
durability -= 27;
break;
durability -= 27;
break;
case 312:
durability -= 53;
break;
durability -= 53;
break;
case 309:
durability -= 40;
break;
durability -= 40;
break;
case 313:
durability -= 80;
break;
durability -= 80;
break;
case 314:
durability -= 13;
break;
case 315:
durability -= 12;
break;
case 316:
durability -= 14;
break;
case 317:
durability -= 20;
break;
}
if(durability < 0)
durability = 0;

View File

@ -72,39 +72,56 @@ public class mcSkills {
}
}
}
public void axeActivationCheck(Player player, Block block){
if(mcPermissions.getInstance().axes(player) && mcPermissions.getInstance().woodcutting(player)){
public void abilityActivationCheck(Player player, Block block){
if(mcPermissions.getInstance().miningAbility(player) && mcm.getInstance().isMiningPick(player.getItemInHand()) && !mcUsers.getProfile(player).getPickaxePreparationMode()){
if(!mcUsers.getProfile(player).getSuperBreakerMode() && mcUsers.getProfile(player).getSuperBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
return;
}
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR PICKAXE**");
mcUsers.getProfile(player).setPickaxePreparationTicks(2);
mcUsers.getProfile(player).setPickaxePreparationMode(true);
}
if(mcPermissions.getInstance().excavationAbility(player) && mcm.getInstance().isShovel(player.getItemInHand()) && !mcUsers.getProfile(player).getShovelPreparationMode()){
if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
return;
}
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR SHOVEL**");
mcUsers.getProfile(player).setShovelPreparationTicks(2);
mcUsers.getProfile(player).setShovelPreparationMode(true);
}
if(mcPermissions.getInstance().swordsAbility(player) && mcm.getInstance().isSwords(player.getItemInHand()) && !mcUsers.getProfile(player).getSwordsPreparationMode()){
if(!mcUsers.getProfile(player).getSerratedStrikesMode() && mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
return;
}
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR SWORD**");
mcUsers.getProfile(player).setSwordsPreparationTicks(2);
mcUsers.getProfile(player).setSwordsPreparationMode(true);
}
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !mcUsers.getProfile(player).getFistsPreparationMode()){
if(!mcUsers.getProfile(player).getBerserkMode() && mcUsers.getProfile(player).getBerserkCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
return;
}
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR FISTS**");
mcUsers.getProfile(player).setFistsPreparationTicks(2);
mcUsers.getProfile(player).setFistsPreparationMode(true);
}
if((mcPermissions.getInstance().axes(player) || mcPermissions.getInstance().woodcutting(player)) && !mcUsers.getProfile(player).getAxePreparationMode()){
if(!mcUsers.getProfile(player).getAxePreparationMode() && mcm.getInstance().isAxes(player.getItemInHand())){
if(!mcUsers.getProfile(player).getSkullSplitterMode() && mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
player.sendMessage(ChatColor.GREEN+"**YOU READY YOUR AXE**");
mcUsers.getProfile(player).setAxePreparationTicks(2);
mcUsers.getProfile(player).setAxePreparationMode(true);
}
} else if(mcPermissions.getInstance().woodcutting(player)){
mcWoodCutting.getInstance().treeFellerCheck(player, block);
} else if (mcPermissions.getInstance().axes(player)){
/*
*
*/
}
}
public void abilityActivationCheck(Player player, Block block){
if(mcPermissions.getInstance().miningAbility(player)){
mcMining.getInstance().superBreakerCheck(player, block);
}
if(mcPermissions.getInstance().excavationAbility(player)){
mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
}
if(mcPermissions.getInstance().swords(player)){
serratedStrikesActivationCheck(player, block);
}
axeActivationCheck(player, block);
}
public void serratedStrikesActivationCheck(Player player, Block block){
public void serratedStrikesActivationCheck(Player player){
if(mcm.getInstance().isSwords(player.getItemInHand())){
if(block != null){
if(!mcm.getInstance().abilityBlockCheck(block))
return;
}
int ticks = 2;
if(mcUsers.getProfile(player).getSwordsInt() >= 50)
@ -130,17 +147,10 @@ public class mcSkills {
mcUsers.getProfile(player).setSerratedStrikesMode(true);
}
if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
}
}
public void berserkActivationCheck(Player player, Block block){
public void berserkActivationCheck(Player player){
if(player.getItemInHand().getTypeId() == 0){
if(block != null){
if(!mcm.getInstance().abilityBlockCheck(block))
return;
}
int ticks = 2;
if(mcUsers.getProfile(player).getUnarmedInt() >= 50)
@ -166,9 +176,6 @@ public class mcSkills {
mcUsers.getProfile(player).setBerserkMode(true);
}
if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
}
}
public void skullSplitterCheck(Player player){
@ -203,23 +210,45 @@ public class mcSkills {
mcUsers.getProfile(player).setSkullSplitterTicks(ticks);
mcUsers.getProfile(player).setSkullSplitterMode(true);
}
if(!mcUsers.getProfile(player).getSkullSplitterMode() && mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
}
}
}
public void monitorSkills(Player player){
/*
* AXE PREPARATION MODE
*/
if(mcPermissions.getInstance().woodCuttingAbility(player) && mcPermissions.getInstance().axes(player)){
//Monitor the length of TreeFeller mode
if(mcUsers.getProfile(player).getAxePreparationMode()){
mcUsers.getProfile(player).decreaseAxePreparationTicks();
if(mcUsers.getProfile(player).getAxePreparationTicks() <= 0){
mcUsers.getProfile(player).setAxePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR AXE**");
}
if(mcUsers.getProfile(player).getAxePreparationMode()){
mcUsers.getProfile(player).decreaseAxePreparationTicks();
if(mcUsers.getProfile(player).getAxePreparationTicks() <= 0){
mcUsers.getProfile(player).setAxePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR AXE**");
}
}
if(mcUsers.getProfile(player).getPickaxePreparationMode()){
mcUsers.getProfile(player).decreasePickaxePreparationTicks();
if(mcUsers.getProfile(player).getPickaxePreparationTicks() <= 0){
mcUsers.getProfile(player).setPickaxePreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR PICKAXE**");
}
}
if(mcUsers.getProfile(player).getSwordsPreparationMode()){
mcUsers.getProfile(player).decreaseSwordsPreparationTicks();
if(mcUsers.getProfile(player).getSwordsPreparationTicks() <= 0){
mcUsers.getProfile(player).setSwordsPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR SWORD**");
}
}
if(mcUsers.getProfile(player).getFistsPreparationMode()){
mcUsers.getProfile(player).decreaseFistsPreparationTicks();
if(mcUsers.getProfile(player).getFistsPreparationTicks() <= 0){
mcUsers.getProfile(player).setFistsPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR FISTS**");
}
}
if(mcUsers.getProfile(player).getShovelPreparationMode()){
mcUsers.getProfile(player).decreaseShovelPreparationTicks();
if(mcUsers.getProfile(player).getShovelPreparationTicks() <= 0){
mcUsers.getProfile(player).setShovelPreparationMode(false);
player.sendMessage(ChatColor.GRAY+"**YOU LOWER YOUR SHOVEL**");
}
}
/*
@ -232,7 +261,7 @@ public class mcSkills {
if(mcUsers.getProfile(player).getSkullSplitterTicks() <= 0){
mcUsers.getProfile(player).setSkullSplitterMode(false);
mcUsers.getProfile(player).setSkullSplitterCooldown(120);
player.sendMessage(ChatColor.GRAY+"**You feel strength leaving you**");
player.sendMessage(ChatColor.GRAY+"**Skull Splitter has worn off**");
}
}
}
@ -245,7 +274,7 @@ public class mcSkills {
if(mcUsers.getProfile(player).getTreeFellerTicks() <= 0){
mcUsers.getProfile(player).setTreeFellerMode(false);
mcUsers.getProfile(player).setTreeFellerCooldown(120);
player.sendMessage(ChatColor.GRAY+"**You feel strength leaving you**");
player.sendMessage(ChatColor.GRAY+"**Tree Feller has worn off**");
}
}
}
@ -258,7 +287,7 @@ public class mcSkills {
if(mcUsers.getProfile(player).getSuperBreakerTicks() <= 0){
mcUsers.getProfile(player).setSuperBreakerMode(false);
mcUsers.getProfile(player).setSuperBreakerCooldown(120);
player.sendMessage(ChatColor.GRAY+"**You feel strength leaving you**");
player.sendMessage(ChatColor.GRAY+"**Super Breaker has worn off**");
}
}
}
@ -284,7 +313,7 @@ public class mcSkills {
if(mcUsers.getProfile(player).getSerratedStrikesTicks() <= 0){
mcUsers.getProfile(player).setSerratedStrikesMode(false);
mcUsers.getProfile(player).setSerratedStrikesCooldown(120);
player.sendMessage(ChatColor.GRAY+"**You feel spiral energy leaving you**");
player.sendMessage(ChatColor.GRAY+"**Serrated Strikes has worn off**");
}
}
}
@ -297,7 +326,7 @@ public class mcSkills {
if(mcUsers.getProfile(player).getBerserkTicks() <= 0){
mcUsers.getProfile(player).setBerserkMode(false);
mcUsers.getProfile(player).setBerserkCooldown(120);
player.sendMessage(ChatColor.GRAY+"**You feel spiral energy leaving you**");
player.sendMessage(ChatColor.GRAY+"**Berserk has worn off**");
}
}
}

View File

@ -156,10 +156,10 @@ class PlayerList
protected final Logger log = Logger.getLogger("Minecraft");
private String playerName, gather, wgather, woodcutting, repair, mining, party, myspawn, myspawnworld, unarmed, herbalism, excavation,
archery, swords, axes, invite, acrobatics, repairgather, unarmedgather, herbalismgather, excavationgather, archerygather, swordsgather, axesgather, acrobaticsgather;
private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode, berserkMode;
private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, shovelPreparationMode, swordsPreparationMode, fistsPreparationMode, pickaxePreparationMode, axePreparationMode, skullSplitterMode, berserkMode;
private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, berserkTicks = 0, berserkCooldown = 0, superBreakerTicks = 0, superBreakerCooldown = 0,
serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
axePreparationTicks = 0;
axePreparationTicks = 0, pickaxePreparationTicks = 0, fistsPreparationTicks = 0, shovelPreparationTicks = 0, swordsPreparationTicks = 0;
Player thisplayer;
char defaultColor;
@ -442,6 +442,66 @@ class PlayerList
return false;
}
}
/*
* SWORDS PREPARATION
*/
public boolean getSwordsPreparationMode(){
return swordsPreparationMode;
}
public void setSwordsPreparationMode(Boolean bool){
swordsPreparationMode = bool;
}
public Integer getSwordsPreparationTicks(){
return swordsPreparationTicks;
}
public void setSwordsPreparationTicks(Integer newvalue){
swordsPreparationTicks = newvalue;
}
public void decreaseSwordsPreparationTicks(){
if(swordsPreparationTicks >= 1){
swordsPreparationTicks--;
}
}
/*
* SHOVEL PREPARATION
*/
public boolean getShovelPreparationMode(){
return shovelPreparationMode;
}
public void setShovelPreparationMode(Boolean bool){
shovelPreparationMode = bool;
}
public Integer getShovelPreparationTicks(){
return shovelPreparationTicks;
}
public void setShovelPreparationTicks(Integer newvalue){
shovelPreparationTicks = newvalue;
}
public void decreaseShovelPreparationTicks(){
if(shovelPreparationTicks >= 1){
shovelPreparationTicks--;
}
}
/*
* FISTS PREPARATION
*/
public boolean getFistsPreparationMode(){
return fistsPreparationMode;
}
public void setFistsPreparationMode(Boolean bool){
fistsPreparationMode = bool;
}
public Integer getFistsPreparationTicks(){
return fistsPreparationTicks;
}
public void setFistsPreparationTicks(Integer newvalue){
fistsPreparationTicks = newvalue;
}
public void decreaseFistsPreparationTicks(){
if(fistsPreparationTicks >= 1){
fistsPreparationTicks--;
}
}
/*
* AXE PREPARATION
*/
@ -462,6 +522,26 @@ class PlayerList
axePreparationTicks--;
}
}
/*
* PICKAXE PREPARATION
*/
public boolean getPickaxePreparationMode(){
return pickaxePreparationMode;
}
public void setPickaxePreparationMode(Boolean bool){
pickaxePreparationMode = bool;
}
public Integer getPickaxePreparationTicks(){
return pickaxePreparationTicks;
}
public void setPickaxePreparationTicks(Integer newvalue){
pickaxePreparationTicks = newvalue;
}
public void decreasePickaxePreparationTicks(){
if(pickaxePreparationTicks >= 1){
pickaxePreparationTicks--;
}
}
/*
* BERSERK MODE
*/

View File

@ -37,7 +37,7 @@ public class mcm {
}
public boolean abilityBlockCheck(Block block){
int i = block.getTypeId();
if(i == 58 || i == 61 || i == 42 || i == 71 || i == 64 || i == 84 || i == 324 || i == 330){
if(i == 25 || i == 54 || i == 69 || i == 92 || i == 77 || i == 58 || i == 61 || i == 62 || i == 42 || i == 71 || i == 64 || i == 84 || i == 324 || i == 330){
return false;
} else {
return true;

View File

@ -1,3 +1,3 @@
name: mcMMO
main: com.gmail.nossr50.mcMMO
version: 0.9 WIP
version: 0.9