mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
fixed negative effects from potions being applied while pvp off
This commit is contained in:
@@ -35,6 +35,7 @@ public final class TogglePvP extends JavaPlugin {
|
|||||||
getServer().getPluginManager().registerEvents(new PlayerAttackListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerAttackListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByProjectileListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByProjectileListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new AreaEffectCloudApplyListener(), this);
|
getServer().getPluginManager().registerEvents(new AreaEffectCloudApplyListener(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new PlayerHitBySplashPotionListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByLightningListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByLightningListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new LightningBlockIgniteListener(), this);
|
getServer().getPluginManager().registerEvents(new LightningBlockIgniteListener(), this);
|
||||||
getServer().getPluginManager().registerEvents(new PlayerHitByFireworkListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerHitByFireworkListener(), this);
|
||||||
@@ -71,7 +72,4 @@ public final class TogglePvP extends JavaPlugin {
|
|||||||
|
|
||||||
public DatabaseSQLite getSqLite() {return sqLite;}
|
public DatabaseSQLite getSqLite() {return sqLite;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -30,6 +30,7 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
potionEffectType.equals(PotionEffectType.POISON) ||
|
potionEffectType.equals(PotionEffectType.POISON) ||
|
||||||
potionEffectType.equals(PotionEffectType.SLOW_DIGGING) ||
|
potionEffectType.equals(PotionEffectType.SLOW_DIGGING) ||
|
||||||
potionEffectType.equals(PotionEffectType.WEAKNESS) ||
|
potionEffectType.equals(PotionEffectType.WEAKNESS) ||
|
||||||
|
potionEffectType.equals(PotionEffectType.SLOW) ||
|
||||||
potionEffectType.equals(PotionEffectType.WITHER)) {
|
potionEffectType.equals(PotionEffectType.WITHER)) {
|
||||||
|
|
||||||
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
||||||
@@ -43,11 +44,10 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
|
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager);
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager);
|
||||||
|
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim);
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim);
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
|
|||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.config.ConfigCache;
|
||||||
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
public class PlayerHitBySplashPotionListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If thrown potion is applies negative effects and it's thrown by a player it will ahve no effect on player with pvp off
|
||||||
|
*/
|
||||||
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
public void onPlayerHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
|
||||||
|
|
||||||
|
if (!(event.getEntity().getShooter() instanceof Player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
boolean harmful = false;
|
||||||
|
|
||||||
|
for (PotionEffect effect : event.getPotion().getEffects()) {
|
||||||
|
if (effect.getType().equals(PotionEffectType.BLINDNESS) ||
|
||||||
|
effect.getType().equals(PotionEffectType.CONFUSION) ||
|
||||||
|
effect.getType().equals(PotionEffectType.HARM) ||
|
||||||
|
effect.getType().equals(PotionEffectType.HUNGER) ||
|
||||||
|
effect.getType().equals(PotionEffectType.POISON) ||
|
||||||
|
effect.getType().equals(PotionEffectType.SLOW_DIGGING) ||
|
||||||
|
effect.getType().equals(PotionEffectType.WEAKNESS) ||
|
||||||
|
effect.getType().equals(PotionEffectType.SLOW) ||
|
||||||
|
effect.getType().equals(PotionEffectType.WITHER)) {
|
||||||
|
harmful = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!harmful)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (Entity entity : event.getAffectedEntities()) {
|
||||||
|
if (entity instanceof Player) {
|
||||||
|
Player damager = (Player) event.getEntity().getShooter();
|
||||||
|
Player victim = (Player) entity;
|
||||||
|
if (damager == victim)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager);
|
||||||
|
if (!damagerPvpEnabled) {
|
||||||
|
event.setIntensity(victim, 0);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim);
|
||||||
|
if (!victimPvpEnabled) {
|
||||||
|
event.setIntensity(victim, 0);
|
||||||
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user