package com.nisovin.magicspells.castmodifiers.conditions; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import com.nisovin.magicspells.MagicSpells; import com.nisovin.magicspells.castmodifiers.Condition; import com.nisovin.magicspells.materials.MagicMaterial; public class InBlockCondition extends Condition { Set<Material> types; List<MagicMaterial> mats; MagicMaterial mat; @Override public boolean setVar(String var) { if (var.contains(",")) { types = new HashSet<Material>(); mats = new ArrayList<MagicMaterial>(); String[] split = var.split(","); for (String s : split) { MagicMaterial mat = MagicSpells.getItemNameResolver().resolveBlock(s); if (mat == null) return false; types.add(mat.getMaterial()); mats.add(mat); } return true; } else { mat = MagicSpells.getItemNameResolver().resolveBlock(var); if (mat == null) { return false; } return true; } } @Override public boolean check(Player player) { return check(player, player); } @Override public boolean check(Player player, LivingEntity target) { Block block = target.getLocation().getBlock(); if (mat != null) { return mat.equals(block); } else { if (types.contains(block.getType())) { for (MagicMaterial m : mats) { if (m.equals(block)) return true; } } return false; } } @Override public boolean check(Player player, Location location) { return false; } }