Version 1.1.17

This commit is contained in:
nossr50 2011-11-04 05:37:48 -07:00
parent 12e7277f6f
commit bb276209b5
17 changed files with 153 additions and 80 deletions

View File

@ -1,7 +1,16 @@
Changelog:
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code
Version 1.1.17
XP gained in combat is now softcapped by the remaining health of the entity you are damaging, preventing many exploits.
Compiled against latest Spout & CraftBukkit
Added World PVP check to Ignition, should no longer ignore PVP settings
Enemies should no longer grant XP when hit during their death
Fixed an exploit that led to unlimited ability use
Possibly fixed a bug where the same player would be listed multiple times in mctop
Added author and description to plugin.yml
/mmoedit and /addxp are useable from the console now
Swearword's statistics tracking removed (He stopped the service, so its gone now.. On a positive note, I did find out 1000-1500 servers installed mcMMO a day)
Version 1.1.16
Added Melons to Herbalism xp tables

View File

@ -102,48 +102,69 @@ public class Combat
&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()
&& defender.getHealth() >= 1)
{
int xp = (int) (event.getDamage() * 2 * LoadProperties.pvpxprewardmodifier);
//Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
int hpLeft = defender.getHealth(), xpinc = 0;
if(hpLeft < event.getDamage())
xpinc = event.getDamage();
else
xpinc = hpLeft;
int xp = (int) (xpinc * 2 * LoadProperties.pvpxprewardmodifier);
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
PPa.addXP(SkillType.AXES, xp*10);
PPa.addXP(SkillType.AXES, xp*10, attacker);
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
PPa.addXP(SkillType.SWORDS, xp*10);
PPa.addXP(SkillType.SWORDS, xp*10, attacker);
if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
PPa.addXP(SkillType.UNARMED, xp*10);
PPa.addXP(SkillType.UNARMED, xp*10, attacker);
}
}
}
if(event.getEntity() instanceof Monster && !pluginx.misc.mobSpawnerList.contains(event.getEntity()))
{
//Prevent XP from being handed out if the Monster is dead
Monster monster = (Monster)event.getEntity();
if(monster.getHealth() < 1)
return;
//Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
int hpLeft = monster.getHealth(), xpinc = 0;
if(hpLeft < event.getDamage())
xpinc = event.getDamage();
else
xpinc = hpLeft;
int xp = 0;
if(event.getEntity() instanceof Enderman)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Creeper)
xp = (event.getDamage() * 4);
xp = (xpinc * 4);
if(event.getEntity() instanceof Silverfish)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof CaveSpider)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Spider)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Skeleton)
xp = (event.getDamage() * 2);
xp = (xpinc * 2);
if(event.getEntity() instanceof Zombie)
xp = (event.getDamage() * 2);
xp = (xpinc * 2);
if(event.getEntity() instanceof PigZombie)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Slime)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Ghast)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
PPa.addXP(SkillType.SWORDS, xp*10);
PPa.addXP(SkillType.SWORDS, xp*10, attacker);
else if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
PPa.addXP(SkillType.AXES, xp*10);
PPa.addXP(SkillType.AXES, xp*10, attacker);
else if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
PPa.addXP(SkillType.UNARMED, xp*10);
PPa.addXP(SkillType.UNARMED, xp*10, attacker);
}
Skills.XpCheckAll(attacker);
@ -214,32 +235,45 @@ public class Combat
int xp = 0;
if(event.getEntity() instanceof Monster)
{
//Prevent XP from being handed out if the Monster is dead
Monster monster = (Monster)event.getEntity();
if(monster.getHealth() < 1)
return;
//Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
int hpLeft = monster.getHealth(), xpinc = 0;
if(hpLeft < event.getDamage())
xpinc = event.getDamage();
else
xpinc = hpLeft;
if(event.getEntity() instanceof Creeper)
xp = (event.getDamage() * 6);
xp = (xpinc * 6);
if(event.getEntity() instanceof Enderman)
xp = (event.getDamage() * 5);
xp = (xpinc * 5);
if(event.getEntity() instanceof Silverfish)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof CaveSpider)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Spider)
xp = (event.getDamage() * 5);
xp = (xpinc * 5);
if(event.getEntity() instanceof Skeleton)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof Zombie)
xp = (event.getDamage() * 3);
xp = (xpinc * 3);
if(event.getEntity() instanceof PigZombie)
xp = (event.getDamage() * 4);
xp = (xpinc * 4);
if(event.getEntity() instanceof Slime)
xp = (event.getDamage() * 4);
xp = (xpinc * 4);
if(event.getEntity() instanceof Ghast)
xp = (event.getDamage() * 4);
Users.getProfile(master).addXP(SkillType.TAMING, xp*10);
xp = (xpinc * 4);
Users.getProfile(master).addXP(SkillType.TAMING, xp*10, master);
}
if(event.getEntity() instanceof Player)
{
xp = (event.getDamage() * 2);
Users.getProfile(master).addXP(SkillType.TAMING, xp*10);
Users.getProfile(master).addXP(SkillType.TAMING, xp*10, master);
}
Skills.XpCheckSkill(SkillType.TAMING, master);
}
@ -348,27 +382,40 @@ public class Combat
*/
if(!pluginx.misc.mobSpawnerList.contains(x) && x instanceof Monster)
{
//Prevent XP from being handed out if the Monster is dead
Monster monster = (Monster)x;
if(monster.getHealth() < 1)
return;
//Prevent a ridiculous amount of XP being granted by capping it at the remaining health of the mob
int hpLeft = monster.getHealth(), xpinc = 0;
if(hpLeft < event.getDamage())
xpinc = event.getDamage();
else
xpinc = hpLeft;
//XP
if(x instanceof Creeper)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 4)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 4)*10, attacker);
if(x instanceof Enderman)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
if(x instanceof Silverfish)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 2)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 2)*10, attacker);
if(x instanceof CaveSpider)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
if(x instanceof Spider)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
if(x instanceof Skeleton)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 2)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 2)*10, attacker);
if(x instanceof Zombie)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 2)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 2)*10, attacker);
if(x instanceof PigZombie)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
if(x instanceof Slime)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
if(x instanceof Ghast)
PPa.addXP(SkillType.ARCHERY, (event.getDamage() * 3)*10);
PPa.addXP(SkillType.ARCHERY, (xpinc * 3)*10, attacker);
}
/*
* Attacker is Player
@ -394,7 +441,7 @@ public class Combat
&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis() && !attacker.getName().equals(defender.getName()))
{
int xp = (int) ((event.getDamage() * 2) * 10);
PPa.addXP(SkillType.ARCHERY, xp);
PPa.addXP(SkillType.ARCHERY, xp, attacker);
}
/*
* DAZE PROC

View File

@ -21,6 +21,7 @@ import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -59,11 +60,17 @@ public class Leaderboard
FileReader file = new FileReader(location);
BufferedReader in = new BufferedReader(file);
String line = ""; //$NON-NLS-1$
ArrayList<String> players = new ArrayList<String>();
while((line = in.readLine()) != null)
{
String[] character = line.split(":"); //$NON-NLS-1$
String p = character[0];
//Prevent the same player from being added multiple times
if(players.contains(p))
continue;
else
players.add(p);
int Plvl = 0;

View File

@ -953,7 +953,7 @@ public class Commands
if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
{
int newvalue = Integer.valueOf(split[3]);
Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue);
Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue, getPlayer(split[1]));
getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!");
player.sendMessage(ChatColor.RED+split[2]+" has been modified.");
Skills.XpCheckAll(getPlayer(split[1]));
@ -962,7 +962,7 @@ public class Commands
else if(split.length == 3 && m.isInt(split[2]) && Skills.isSkill(split[1]))
{
int newvalue = Integer.valueOf(split[2]);
Users.getProfile(player).addXP(Skills.getSkillType(split[1]), newvalue);
Users.getProfile(player).addXP(Skills.getSkillType(split[1]), newvalue, player);
player.sendMessage(ChatColor.RED+split[1]+" has been modified.");
} else {
player.sendMessage(ChatColor.RED+"Usage is /"+LoadProperties.addxp+" playername skillname xp");
@ -977,7 +977,7 @@ public class Commands
if(isPlayer(split[1]) && m.isInt(split[3]) && Skills.isSkill(split[2]))
{
int newvalue = Integer.valueOf(split[3]);
Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue);
Users.getProfile(getPlayer(split[1])).addXP(Skills.getSkillType(split[2]), newvalue, getPlayer(split[1]));
getPlayer(split[1]).sendMessage(ChatColor.GREEN+"Experience granted!");
System.out.println(split[2]+" has been modified for "+getPlayer(split[1]).getName()+".");
Skills.XpCheckAll(getPlayer(split[1]));

View File

@ -27,6 +27,7 @@ import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.gmail.nossr50.config.LoadProperties;
@ -949,8 +950,10 @@ public class PlayerProfile
* @param skillType The skill to add XP to
* @param newvalue The amount of XP to add
*/
public void addXP(SkillType skillType, int newvalue)
public void addXP(SkillType skillType, int newvalue, Player thisplayer)
{
if(thisplayer.getGameMode() == GameMode.CREATIVE)
return;
if(skillType == SkillType.ALL)
{
for(SkillType x : SkillType.values())

View File

@ -171,13 +171,13 @@ public class mcBlockListener extends BlockListener
WoodCutting.woodCuttingProcCheck(player, block);
//Default
if(block.getData() == (byte)0)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
//Spruce
if(block.getData() == (byte)1)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
//Birch
if(block.getData() == (byte)2)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
}
}
} else
@ -187,13 +187,13 @@ public class mcBlockListener extends BlockListener
WoodCutting.woodCuttingProcCheck(player, block);
//Default
if(block.getData() == (byte)0)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
//Spruce
if(block.getData() == (byte)1)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mspruce, player);
//Birch
if(block.getData() == (byte)2)
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mbirch, player);
}
}
Skills.XpCheckSkill(SkillType.WOODCUTTING, player);
@ -226,7 +226,7 @@ public class mcBlockListener extends BlockListener
if(!plugin.misc.blockWatchList.contains(block))
{
WoodCutting.woodCuttingProcCheck(player, blockx);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine);
PP.addXP(SkillType.WOODCUTTING, LoadProperties.mpine, player);
}
}
if(blockx.getTypeId() == 18)

View File

@ -16,6 +16,7 @@
*/
package com.gmail.nossr50.listeners;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
@ -259,6 +260,8 @@ public class mcPlayerListener extends PlayerListener
{
ColouredConsoleSender ccs = (ColouredConsoleSender) Bukkit.getServer();
ccs.sendMessage(ChatColor.AQUA+"[A]"+format); //Colors, woot!
} else {
log.log(Level.INFO, "[A]"+format);
}
}
}

View File

@ -29,7 +29,6 @@ import com.gmail.nossr50.party.Party;
import com.gmail.nossr50.skills.*;
import com.nijikokun.bukkit.Permissions.Permissions;
import org.blockface.bukkitstats.CallHome;
import org.bukkit.Bukkit;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
@ -190,7 +189,6 @@ public class mcMMO extends JavaPlugin
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this, mcMMO_Timer, 0, 20);
CallHome.load(this); //Swearword's blockface usage statistics, only dials home once
}
public PlayerProfile getPlayerProfile(Player player)

View File

@ -52,7 +52,7 @@ public class Acrobatics {
*/
if(player.getHealth() - newDamage >= 1){
if(!event.isCancelled())
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8)*10);
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8)*10, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
event.setDamage(newDamage);
if(event.getDamage() <= 0)
@ -65,7 +65,7 @@ public class Acrobatics {
}
} else if (!event.isCancelled()){
if(player.getHealth() - event.getDamage() >= 1){
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10);
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
}
}
@ -80,7 +80,7 @@ public class Acrobatics {
if(Math.random() * 4000 <= PPd.getSkillLevel(SkillType.ACROBATICS)){
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*1);
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*1, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
@ -91,7 +91,7 @@ public class Acrobatics {
} else if(Math.random() * 4000 <= 800) {
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10);
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);

View File

@ -17,6 +17,7 @@
package com.gmail.nossr50.skills;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@ -58,6 +59,10 @@ public class Archery
}
public static void ignitionCheck(Entity x, EntityDamageByEntityEvent event, Player attacker)
{
//Check to see if PVP for this world is disabled before executing
if(!x.getWorld().getPVP())
return;
PlayerProfile PPa = Users.getProfile(attacker);
if(Math.random() * 100 >= 75)
{

View File

@ -273,7 +273,7 @@ public class Excavation
}
//Handle XP related tasks
PP.addXP(SkillType.EXCAVATION, xp);
PP.addXP(SkillType.EXCAVATION, xp, player);
Skills.XpCheckSkill(SkillType.EXCAVATION, player);
}
}

View File

@ -81,7 +81,7 @@ public class Herbalism
Material mat = Material.getMaterial(296);
Location loc = block.getLocation();
ItemStack is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat, player);
loc.getWorld().dropItemNaturally(loc, is);
//DROP SOME SEEDS
@ -161,7 +161,7 @@ public class Herbalism
{
mat = Material.getMaterial(296);
is = new ItemStack(mat, 1, (byte)0, (byte)0);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat);
PP.addXP(SkillType.HERBALISM, LoadProperties.mwheat, player);
if(player != null)
{
if(Math.random() * 1000 <= PP.getSkillLevel(SkillType.HERBALISM))
@ -235,7 +235,7 @@ public class Herbalism
{
loc.getWorld().dropItemNaturally(target.getLocation(), is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mcactus);
PP.addXP(SkillType.HERBALISM, LoadProperties.mcactus, player);
}
}
x++;
@ -274,7 +274,7 @@ public class Herbalism
{
loc.getWorld().dropItemNaturally(target.getLocation(), is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.msugar);
PP.addXP(SkillType.HERBALISM, LoadProperties.msugar, player);
}
}
x++;
@ -293,7 +293,7 @@ public class Herbalism
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mpumpkin);
PP.addXP(SkillType.HERBALISM, LoadProperties.mpumpkin, player);
}
//Melon
if(type == 103)
@ -305,7 +305,7 @@ public class Herbalism
{
loc.getWorld().dropItemNaturally(loc, is);
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mmelon);
PP.addXP(SkillType.HERBALISM, LoadProperties.mmelon, player);
}
//Mushroom
if(type == 39 || type == 40)
@ -319,7 +319,7 @@ public class Herbalism
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mmushroom);
PP.addXP(SkillType.HERBALISM, LoadProperties.mmushroom, player);
}
//Flower
if(type == 37 || type == 38){
@ -330,7 +330,7 @@ public class Herbalism
loc.getWorld().dropItemNaturally(loc, is);
}
}
PP.addXP(SkillType.HERBALISM, LoadProperties.mflower);
PP.addXP(SkillType.HERBALISM, LoadProperties.mflower, player);
}
}
Skills.XpCheckSkill(SkillType.HERBALISM, player);

View File

@ -233,7 +233,7 @@ public class Mining
else
blockProcCheck(block, player);
}
PP.addXP(SkillType.MINING, xp);
PP.addXP(SkillType.MINING, xp, player);
Skills.XpCheckSkill(SkillType.MINING, player);
}
/*
@ -422,7 +422,7 @@ public class Mining
block.setType(Material.AIR);
}
if(block.getData() != (byte) 5)
PP.addXP(SkillType.MINING, xp);
PP.addXP(SkillType.MINING, xp, player);
if(LoadProperties.spoutEnabled)
SpoutStuff.playSoundForPlayer(SoundEffect.POP, player, block.getLocation());

View File

@ -70,7 +70,7 @@ public class Repair {
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 6); //Boost XP
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
@ -85,7 +85,7 @@ public class Repair {
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 2); //Boost XP
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
@ -97,7 +97,7 @@ public class Repair {
durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter);
dif = (short) (dif * 4); //Boost XP of Gold to around Iron
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
@ -135,7 +135,7 @@ public class Repair {
//STONE NERF
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
} else if(isWoodTools(is) && hasItem(player,rWood)){
removeItem(player,rWood);
/*
@ -153,7 +153,7 @@ public class Repair {
//WOOD NERF
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
} else if(isIronTools(is) && hasItem(player, rIron)){
removeItem(player, rIron);
/*
@ -168,7 +168,7 @@ public class Repair {
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
@ -187,7 +187,7 @@ public class Repair {
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)
@ -204,7 +204,7 @@ public class Repair {
dif = (short) (dif / 2);
if(m.isHoe(is))
dif = (short) (dif / 2);
PP.addXP(SkillType.REPAIR, dif*10);
PP.addXP(SkillType.REPAIR, dif*10, player);
//CLANG CLANG
if(LoadProperties.spoutEnabled)

View File

@ -226,7 +226,7 @@ public class Skills
PlayerProfile PP = Users.getProfile(player);
if(PP != null)
{
if(!PP.getAbilityUse())
if(!PP.getAbilityUse() || PP.getSuperBreakerMode() || PP.getSerratedStrikesMode() || PP.getTreeFellerMode() || PP.getGreenTerraMode() || PP.getBerserkMode() || PP.getGigaDrillBreakerMode())
return;
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode())
{

View File

@ -52,6 +52,7 @@ public class Taming
return x;
}
}
return null;
}
return null;
}

View File

@ -1,6 +1,6 @@
name: mcMMO
main: com.gmail.nossr50.mcMMO
version: 1.1.17 ALPHA WIP #1
version: 1.1.17
softdepend: [Spout]
author: nossr50
description: mcMMO takes core Minecraft game mechanics and expands them to add an extensive RPG experience, the goal of the project has always been a quality RPG experience. Everything in mcMMO is carefully thought out and is constantly improving. mcMMO adds eleven skills to train in and level in, while also offering a high level of customization for server admins. There are countless features, including custom sounds, graphical elements, and more added when running mcMMO in conjunction with Spout. I carefully read feedback and evaluate the mechanics of mcMMO in every update to provide an ever-evolving experience.