فهرست منبع

Update to the new ProjectileSource API

TfT_02 11 سال پیش
والد
کامیت
09557e378b

+ 1 - 1
pom.xml

@@ -121,7 +121,7 @@
         <dependency>
             <groupId>org.bukkit</groupId>
             <artifactId>bukkit</artifactId>
-            <version>1.6.4-R2.0</version>
+            <version>LATEST</version>
             <type>jar</type>
             <scope>compile</scope>
         </dependency>

+ 6 - 1
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -35,6 +35,7 @@ import org.bukkit.inventory.meta.PotionMeta;
 import org.bukkit.metadata.FixedMetadataValue;
 import org.bukkit.potion.PotionEffect;
 import org.bukkit.potion.PotionEffectType;
+import org.bukkit.projectiles.ProjectileSource;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.AdvancedConfig;
@@ -169,7 +170,11 @@ public class EntityListener implements Listener {
         }
 
         if (attacker instanceof Projectile) {
-            attacker = ((Projectile) attacker).getShooter();
+            ProjectileSource projectileSource = ((Projectile) attacker).getShooter();
+
+            if (projectileSource instanceof LivingEntity) {
+                attacker = (LivingEntity) projectileSource;
+            }
         }
         else if (attacker instanceof Tameable) {
             AnimalTamer animalTamer = ((Tameable) attacker).getOwner();

+ 4 - 3
src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java

@@ -16,6 +16,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.event.entity.EntityDamageEvent;
 import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 import org.bukkit.inventory.ItemStack;
+import org.bukkit.projectiles.ProjectileSource;
 
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.config.Config;
@@ -262,10 +263,10 @@ public final class CombatUtils {
         }
         else if (entityType == EntityType.ARROW) {
             Arrow arrow = (Arrow) damager;
-            LivingEntity shooter = arrow.getShooter();
+            ProjectileSource projectileSource = arrow.getShooter();
 
-            if (shooter != null && shooter instanceof Player && SkillType.ARCHERY.shouldProcess(target)) {
-                Player player = (Player) shooter;
+            if (projectileSource != null && projectileSource instanceof Player && SkillType.ARCHERY.shouldProcess(target)) {
+                Player player = (Player) projectileSource;
 
                 if (!Misc.isNPCEntity(player) && SkillType.ARCHERY.getPermissions(player)) {
                     processArcheryCombat(target, player, event, arrow);