2
0
Эх сурвалжийг харах

Merge pull request #3 from gmcferrin/patch-4

Patch 4
gmcferrin 13 жил өмнө
parent
commit
6f95d6b60d

+ 1 - 1
pom.xml

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

+ 36 - 10
src/main/java/com/gmail/nossr50/Combat.java

@@ -16,6 +16,7 @@
 */
 package com.gmail.nossr50;
 
+import org.bukkit.Bukkit;
 import org.bukkit.World;
 import org.bukkit.entity.*;
 import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -352,17 +353,42 @@ public class Combat
     		Skills.XpCheckSkill(SkillType.ARCHERY, attacker);
     	}
     }
-    public static void dealDamage(Entity target, int dmg){
-    	if(target instanceof Player){
-    		((Player) target).damage(dmg);
-    	}
-    	if(target instanceof Animals){
-    		((Animals) target).damage(dmg);
-    	}
-    	if(target instanceof Monster){
-    		((Monster) 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);
+    }
+    
+    /**
+     * Attempt to damage target for value dmg with reason cause
+     * 
+     * @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)
     {
     	if(!event.getEntity().getWorld().getPVP())

+ 55 - 0
src/main/java/com/gmail/nossr50/events/McMMOPlayerLevelUpEvent.java

@@ -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;
+	}
+}

+ 2 - 1
src/main/java/com/gmail/nossr50/runnables/mcTimer.java

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

+ 3 - 2
src/main/java/com/gmail/nossr50/skills/Axes.java

@@ -25,6 +25,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.plugin.Plugin;
 
 import com.gmail.nossr50.locale.mcLocale;
+import com.gmail.nossr50.Combat;
 import com.gmail.nossr50.Users;
 import com.gmail.nossr50.m;
 import com.gmail.nossr50.mcPermissions;
@@ -152,7 +153,7 @@ public class Axes {
 		    					continue;
 		    				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!");
 		    					targets--;
 		    					continue;
@@ -161,7 +162,7 @@ public class Axes {
 	    				else
 		    			{			
 		    				LivingEntity target = (LivingEntity)derp;
-		    				target.damage(event.getDamage() / 2);
+	    					Combat.dealDamage(target, event.getDamage() / 2, attacker);
 		    				targets--;
 		    			}
 	    			}

+ 2 - 1
src/main/java/com/gmail/nossr50/skills/Fishing.java

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

+ 4 - 4
src/main/java/com/gmail/nossr50/skills/Repair.java

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

+ 5 - 0
src/main/java/com/gmail/nossr50/skills/Skills.java

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

+ 5 - 5
src/main/java/com/gmail/nossr50/skills/Swords.java

@@ -151,7 +151,7 @@ public class Swords
 		    					continue;
 		    				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!");
 		        				Users.getProfile(target).addBleedTicks(5);
 		    					targets--;
@@ -164,7 +164,7 @@ public class Swords
 		    					pluginx.misc.addToBleedQue((LivingEntity)derp);
 		    				
 		    				LivingEntity target = (LivingEntity)derp;
-		    				target.damage(event.getDamage() / 4);
+	    					Combat.dealDamage(target, event.getDamage() / 4, attacker);
 		    				targets--;
 		    			}
 	    			}
@@ -193,7 +193,7 @@ public class Swords
 		    		{
 		    			if(Math.random() * 2000 <= 600)
 		    			{
-			    			Combat.dealDamage(f, event.getDamage() / 2);
+			    			Combat.dealDamage((LivingEntity) f, event.getDamage() / 2);
 		    				defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
 			    			if(f instanceof Player)
 		    				((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))
 		    		{
-			    		Combat.dealDamage(f, event.getDamage() / 2);
+			    		Combat.dealDamage((LivingEntity) f, event.getDamage() / 2);
 			    		defender.sendMessage(ChatColor.GREEN+"**COUNTER-ATTACKED**");
 		    			if(f instanceof Player)
 		    				((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
@@ -245,7 +245,7 @@ public class Swords
         	}
         	else
         	{
-        		x.damage(2);
+				Combat.dealDamage(x, 2);
         	}
         }
     }

+ 0 - 1
src/main/java/com/gmail/nossr50/skills/Taming.java

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

+ 2 - 2
src/main/resources/plugin.yml

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