mirror of
https://github.com/TotalFreedomMC/VulnerabilityPatcher.git
synced 2024-05-26 14:41:19 +00:00
116 lines
4.3 KiB
Java
116 lines
4.3 KiB
Java
package me.cooljwb.vulnerabilitypatcher.patches;
|
|
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
import me.cooljwb.vulnerabilitypatcher.SMG;
|
|
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
|
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.EventPriority;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.entity.LingeringPotionSplashEvent;
|
|
import org.bukkit.event.entity.PotionSplashEvent;
|
|
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
|
import org.bukkit.inventory.meta.PotionMeta;
|
|
import org.bukkit.potion.PotionEffect;
|
|
|
|
/*
|
|
* Copyright 2019 CoolJWB
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @author CoolJWB
|
|
*/
|
|
|
|
public class Death_Potions extends Patches implements Listener {
|
|
|
|
private Logger log = Logger.getLogger("Minecraft");
|
|
|
|
public Death_Potions() {}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void consumePotionEvent(PlayerItemConsumeEvent event) {
|
|
if(event.getItem().getType().name().equalsIgnoreCase("POTION")) {
|
|
PotionMeta meta = (PotionMeta) event.getItem().getItemMeta();
|
|
if(isDeathPotion(meta.getCustomEffects())) {
|
|
event.setCancelled(true);
|
|
|
|
Player player = event.getPlayer();
|
|
msg(player, SMG.ITEM.msg);
|
|
notifyViolation(event.getPlayer(), "drink", "death potion", event.getPlayer().getLocation());
|
|
}
|
|
}
|
|
|
|
if(devmode)
|
|
log.log(Level.INFO, String.format("[%s] Event: %s", pluginName, ReflectionToStringBuilder.toString(event)));
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void splashEvent(PotionSplashEvent event) {
|
|
if(isDeathPotion(event.getPotion().getEffects())) {
|
|
event.setCancelled(true);
|
|
|
|
Player player = null;
|
|
if(event.getPotion().getShooter() instanceof CraftPlayer) {
|
|
player = (Player) event.getEntity().getShooter();
|
|
msg(player, SMG.ITEM.msg);
|
|
}
|
|
|
|
notifyViolation(player, "splash", "death potion", player.getLocation());
|
|
}
|
|
|
|
if(devmode)
|
|
log.log(Level.INFO, String.format("[%s] Event: %s", pluginName, ReflectionToStringBuilder.toString(event)));
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void lingeringSplashEvent(LingeringPotionSplashEvent event) {
|
|
if(isDeathPotion(event.getAreaEffectCloud().getCustomEffects())) {
|
|
event.setCancelled(true);
|
|
|
|
Player player = null;
|
|
if(event.getEntity().getShooter() instanceof CraftPlayer) {
|
|
player = (Player) event.getEntity().getShooter();
|
|
msg(player, SMG.ITEM.msg);
|
|
}
|
|
|
|
notifyViolation(player, "splash", "death potion", player.getLocation());
|
|
}
|
|
|
|
if(devmode)
|
|
log.log(Level.INFO, String.format("[%s] Event: %s", pluginName, ReflectionToStringBuilder.toString(event)));
|
|
}
|
|
|
|
public static boolean isDeathPotion(List<PotionEffect> effects) {
|
|
for(PotionEffect effect : effects) {
|
|
if(effect.getType().getName().equalsIgnoreCase("HEAL") && (effect.getAmplifier() == 125 || effect.getAmplifier() == 93 || effect.getAmplifier() == 61 || effect.getAmplifier() == 29))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static boolean isDeathPotion(Collection<PotionEffect> effects) {
|
|
for(PotionEffect effect : effects) {
|
|
if(effect.getType().getName().equalsIgnoreCase("HEAL") && (effect.getAmplifier() >= 125 || effect.getAmplifier() == 93 || effect.getAmplifier() == 61 || effect.getAmplifier() == 29))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|