Merge pull request #3 from gmcferrin/patch-4

Patch 4
This commit is contained in:
gmcferrin 2012-01-29 19:57:10 -08:00
commit 6f95d6b60d
11 changed files with 115 additions and 27 deletions

View File

@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId> <groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId> <artifactId>mcMMO</artifactId>
<version>1.2.08</version> <version>1.2.09-dev</version>
<name>mcMMO</name> <name>mcMMO</name>
<url>https://github.com/TheYeti/mcMMO</url> <url>https://github.com/TheYeti/mcMMO</url>
<issueManagement> <issueManagement>

View File

@ -16,6 +16,7 @@
*/ */
package com.gmail.nossr50; package com.gmail.nossr50;
import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
@ -352,17 +353,42 @@ public class Combat
Skills.XpCheckSkill(SkillType.ARCHERY, attacker); Skills.XpCheckSkill(SkillType.ARCHERY, attacker);
} }
} }
public static void dealDamage(Entity target, int dmg){
if(target instanceof Player){ /**
((Player) target).damage(dmg); * Attempt to damage target for value dmg with reason CUSTOM
*
* @param target LivingEntity which to attempt to damage
* @param dmg Amount of damage to attempt to do
*/
public static void dealDamage(LivingEntity target, int dmg){
EntityDamageEvent ede = new EntityDamageEvent(target, EntityDamageEvent.DamageCause.CUSTOM, dmg);
Bukkit.getPluginManager().callEvent(ede);
} }
if(target instanceof Animals){
((Animals) target).damage(dmg); /**
} * Attempt to damage target for value dmg with reason cause
if(target instanceof Monster){ *
((Monster) target).damage(dmg); * @param target LivingEntity which to attempt to damage
* @param dmg Amount of damage to attempt to do
* @param cause DamageCause to pass to damage event
*/
public static void dealDamage(LivingEntity target, int dmg, DamageCause cause) {
EntityDamageEvent ede = new EntityDamageEvent(target, cause, dmg);
Bukkit.getPluginManager().callEvent(ede);
} }
/**
* Attempt to damage target for value dmg with reason ENTITY_ATTACK with damager attacker
*
* @param target LivingEntity which to attempt to damage
* @param dmg Amount of damage to attempt to do
* @param attacker Player to pass to event as damager
*/
public static void dealDamage(LivingEntity target, int dmg, Player attacker) {
EntityDamageEvent ede = new EntityDamageByEntityEvent(attacker, target, EntityDamageEvent.DamageCause.ENTITY_ATTACK, dmg);
Bukkit.getPluginManager().callEvent(ede);
} }
public static boolean pvpAllowed(EntityDamageByEntityEvent event, World world) public static boolean pvpAllowed(EntityDamageByEntityEvent event, World world)
{ {
if(!event.getEntity().getWorld().getPVP()) if(!event.getEntity().getWorld().getPVP())

View File

@ -0,0 +1,55 @@
package com.gmail.nossr50.events;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.gmail.nossr50.datatypes.SkillType;
/**
* Called when a user levels up in a skill
*/
@SuppressWarnings("serial")
public class McMMOPlayerLevelUpEvent extends Event {
private Player player;
private SkillType skill;
private int levelsGained;
public McMMOPlayerLevelUpEvent(Player player, SkillType skill) {
this.player = player;
this.skill = skill;
this.levelsGained = 1; // Always 1 for now as we call in the loop where the levelups are calculated, could change later!
}
/**
* @return Player leveling up
*/
public Player getPlayer() {
return player;
}
/**
* @return SkillType that is being leveled up
*/
public SkillType getSkill() {
return skill;
}
/**
* @return The number of levels gained in this event
*/
public int getLevelsGained() {
return levelsGained;
}
/** Rest of file is required boilerplate for custom events **/
private static final HandlerList handlers = new HandlerList();
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View File

@ -17,6 +17,7 @@
package com.gmail.nossr50.runnables; package com.gmail.nossr50.runnables;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
@ -60,7 +61,7 @@ public class mcTimer implements Runnable
*/ */
if(thecount % 2 == 0 && PP.getBleedTicks() >= 1) if(thecount % 2 == 0 && PP.getBleedTicks() >= 1)
{ {
player.damage(2); Combat.dealDamage(player, 2);
PP.decreaseBleedTicks(); PP.decreaseBleedTicks();
} }

View File

@ -25,6 +25,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcPermissions;
@ -152,7 +153,7 @@ public class Axes {
continue; continue;
if(targets >= 1 && derp.getWorld().getPVP()) if(targets >= 1 && derp.getWorld().getPVP())
{ {
target.damage(event.getDamage() / 2); Combat.dealDamage(target, event.getDamage() / 2, attacker);
target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!"); target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
targets--; targets--;
continue; continue;
@ -161,7 +162,7 @@ public class Axes {
else else
{ {
LivingEntity target = (LivingEntity)derp; LivingEntity target = (LivingEntity)derp;
target.damage(event.getDamage() / 2); Combat.dealDamage(target, event.getDamage() / 2, attacker);
targets--; targets--;
} }
} }

View File

@ -9,6 +9,7 @@ import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Wool; import org.bukkit.material.Wool;
import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
@ -671,7 +672,7 @@ public class Fishing {
if(le instanceof Player) if(le instanceof Player)
return; return;
le.damage(1); Combat.dealDamage(le, 1, event.getPlayer());
World world = le.getWorld(); World world = le.getWorld();
/* Neutral Mobs */ /* Neutral Mobs */

View File

@ -192,7 +192,7 @@ public class Repair {
removeItem(player, rIron); removeItem(player, rIron);
repairItem(player, enchants, enchantsLevel); repairItem(player, enchants, enchantsLevel);
durabilityAfter = (short) (player.getItemInHand().getDurability()-getRepairAmount(is, player)); durabilityAfter = player.getItemInHand().getDurability();
dif = (short) (durabilityBefore - durabilityAfter); dif = (short) (durabilityBefore - durabilityAfter);
if(m.isShovel(is)) if(m.isShovel(is))
dif = (short) (dif / 3); dif = (short) (dif / 3);
@ -315,7 +315,7 @@ public class Repair {
if(rank == 0) if(rank == 0)
{ {
if(LoadProperties.mayLoseEnchants()) if(LoadProperties.mayLoseEnchants)
{ {
player.sendMessage(mcLocale.getString("Repair.LostEnchants")); player.sendMessage(mcLocale.getString("Repair.LostEnchants"));
for(Enchantment x : enchants) for(Enchantment x : enchants)
@ -328,7 +328,7 @@ public class Repair {
boolean failure = false, downgrade = false; boolean failure = false, downgrade = false;
if(LoadProperties.mayLoseEnchants()) if(LoadProperties.mayLoseEnchants)
{ {
for(Enchantment x : enchants) for(Enchantment x : enchants)
{ {
@ -341,7 +341,7 @@ public class Repair {
{ {
if(enchantsLvl[pos] > 1) if(enchantsLvl[pos] > 1)
{ {
if(LoadProperties.mayDowngradeEnchants()) if(LoadProperties.mayDowngradeEnchants)
{ {
if(Math.random() * 100 <= getDowngradeChance(rank)) if(Math.random() * 100 <= getDowngradeChance(rank))
{ {

View File

@ -18,6 +18,7 @@ package com.gmail.nossr50.skills;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -35,6 +36,7 @@ import com.gmail.nossr50.spout.SpoutStuff;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.PlayerStat; import com.gmail.nossr50.datatypes.PlayerStat;
import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.events.McMMOPlayerLevelUpEvent;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
@ -326,6 +328,9 @@ public class Skills
skillups++; skillups++;
PP.removeXP(skillType, PP.getXpToLevel(skillType)); PP.removeXP(skillType, PP.getXpToLevel(skillType));
PP.skillUp(skillType, 1); PP.skillUp(skillType, 1);
McMMOPlayerLevelUpEvent eventToFire = new McMMOPlayerLevelUpEvent(player, skillType);
Bukkit.getPluginManager().callEvent(eventToFire);
} }
if(!LoadProperties.useMySQL) if(!LoadProperties.useMySQL)

View File

@ -151,7 +151,7 @@ public class Swords
continue; continue;
if(targets >= 1 && derp.getWorld().getPVP()) if(targets >= 1 && derp.getWorld().getPVP())
{ {
target.damage(event.getDamage() / 4); Combat.dealDamage(target, event.getDamage() / 4, attacker);
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!"); target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!");
Users.getProfile(target).addBleedTicks(5); Users.getProfile(target).addBleedTicks(5);
targets--; targets--;
@ -164,7 +164,7 @@ public class Swords
pluginx.misc.addToBleedQue((LivingEntity)derp); pluginx.misc.addToBleedQue((LivingEntity)derp);
LivingEntity target = (LivingEntity)derp; LivingEntity target = (LivingEntity)derp;
target.damage(event.getDamage() / 4); Combat.dealDamage(target, event.getDamage() / 4, attacker);
targets--; targets--;
} }
} }
@ -193,7 +193,7 @@ public class Swords
{ {
if(Math.random() * 2000 <= 600) if(Math.random() * 2000 <= 600)
{ {
Combat.dealDamage(f, event.getDamage() / 2); Combat.dealDamage((LivingEntity) f, event.getDamage() / 2);
defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**"); defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
if(f instanceof Player) if(f instanceof Player)
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!"); ((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
@ -201,7 +201,7 @@ public class Swords
} }
else if (Math.random() * 2000 <= PPd.getSkillLevel(SkillType.SWORDS)) else if (Math.random() * 2000 <= PPd.getSkillLevel(SkillType.SWORDS))
{ {
Combat.dealDamage(f, event.getDamage() / 2); Combat.dealDamage((LivingEntity) f, event.getDamage() / 2);
defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**"); defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
if(f instanceof Player) if(f instanceof Player)
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!"); ((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
@ -245,7 +245,7 @@ public class Swords
} }
else else
{ {
x.damage(2); Combat.dealDamage(x, 2);
} }
} }
} }

View File

@ -16,7 +16,6 @@
*/ */
package com.gmail.nossr50.skills; package com.gmail.nossr50.skills;
import org.bukkit.craftbukkit.CraftOfflinePlayer;
import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -1,6 +1,6 @@
name: mcMMO name: mcMMO
main: com.gmail.nossr50.mcMMO main: com.gmail.nossr50.mcMMO
version: 1.2.08 version: 1.2.09-dev
softdepend: [Spout] softdepend: [Spout]
author: TheYeti author: TheYeti
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. 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.