VulnerabilityPatcher/src/main/java/me/cooljwb/vulnerabilitypatcher/patches/Crash_Egg.java
2019-01-20 01:33:46 +01:00

75 lines
2.6 KiB
Java

package me.cooljwb.vulnerabilitypatcher.patches;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.bukkit.block.Container;
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockDispenseEvent;
import org.bukkit.inventory.ItemStack;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
* 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 Crash_Egg extends Patches implements Listener {
private Logger log = Logger.getLogger("Minecraft");
@EventHandler(priority = EventPriority.HIGHEST)
public void onBlockDispenseEvent(BlockDispenseEvent event) {
ItemStack item = event.getItem();
if(item != null) {
if (isCrashEgg(item)) {
event.setCancelled(true);
Container container = (Container) event.getBlock().getState();
for(int c = 0; c < container.getInventory().getSize(); c++) {
if(container.getInventory().getItem(c) != null) {
if (container.getInventory().getItem(c).isSimilar(event.getItem()))
container.getInventory().getItem(c).setItemMeta(null);
}
}
notifyViolation(event.getBlock().getType().name(), "drop", "crash egg", event.getBlock().getLocation());
}
}
if(devmode)
log.log(Level.INFO, String.format("[%s] Event: %s", pluginName, ReflectionToStringBuilder.toString(event)));
}
public boolean isCrashEgg(ItemStack item) {
if(item != null) {
net.minecraft.server.v1_13_R2.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(item);
if(nmsItemStack != null && nmsItemStack.getTag() != null) {
if(nmsItemStack.getTag().getCompound("EntityTag").getString("id").equalsIgnoreCase("minecraft:lightning_bolt"))
return true;
}
}
return false;
}
}