TotalFreedomMod/src/main/java/me/totalfreedom/totalfreedommod/blocking/PotionBlocker.java
spacerocket62 3c22de71de A lot of re-organization included in this. This is a combination of Video's 1.17 update with my structural changes and NMS removals. This technically isn't a Jira issue so I wasn't aware what to call it, so I'll call it 1.17.
- NMS has been removed for now. SignBlocker.java has to be finished and moved to kyori's component system instead of NMS, but at this moment it is commented out.
- The main class uses proper variable naming conventions, as do the command classes.
- I've also incorporated manual verification into /verify, and commented out /manuallyverify. The new usage for /verify is /verify [-m] <code | player>, -m being a manual verification.
2021-12-04 23:01:02 -08:00

85 lines
2.5 KiB
Java

package me.totalfreedom.totalfreedommod.blocking;
import java.util.Collection;
import me.totalfreedom.totalfreedommod.services.AbstractService;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.entity.ThrownPotion;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.LingeringPotionSplashEvent;
import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.projectiles.ProjectileSource;
public class PotionBlocker extends AbstractService
{
public static final int POTION_BLOCK_RADIUS_SQUARED = 20 * 20;
@Override
public void onStart()
{
}
@Override
public void onStop()
{
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onThrowPotion(PotionSplashEvent event)
{
ThrownPotion potion = event.getEntity();
ProjectileSource projectileSource = potion.getShooter();
Player player = null;
if (projectileSource instanceof Player)
{
player = (Player)projectileSource;
}
if (isDeathPotion(potion.getEffects()))
{
if (player != null)
{
player.sendMessage(ChatColor.RED + "You are not allowed to use death potions.");
}
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onThrowLingeringPotion(LingeringPotionSplashEvent event)
{
ThrownPotion potion = event.getEntity();
ProjectileSource projectileSource = potion.getShooter();
Player player = null;
if (projectileSource instanceof Player)
{
player = (Player)projectileSource;
}
if (isDeathPotion(potion.getEffects()))
{
if (player != null)
{
player.sendMessage(ChatColor.RED + "You are not allowed to use death potions.");
}
event.setCancelled(true);
}
}
public boolean isDeathPotion(Collection<PotionEffect> effects)
{
for (PotionEffect effect : effects)
{
int amplifier = effect.getAmplifier();
if (effect.getType().equals(PotionEffectType.HEAL) && (amplifier == 29 || amplifier == 61 || amplifier == 93 || amplifier == 125))
{
return true;
}
}
return false;
}
}