Merge branch master into dev

This commit is contained in:
GeorgH93 2021-03-18 21:33:14 +01:00
commit 77163441a7
No known key found for this signature in database
GPG Key ID: D1630D37F9E4B3C8
2 changed files with 9 additions and 31 deletions

View File

@ -4,7 +4,7 @@ language: java
jdk: jdk:
- openjdk8 - openjdk8
- openjdk11 - openjdk11
- openjdk14 - openjdk15
cache: cache:
directories: directories:

View File

@ -39,22 +39,20 @@
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
public class ItemFilter extends MinepacksListener implements at.pcgamingfreaks.Minepacks.Bukkit.API.ItemFilter public class ItemFilter extends MinepacksListener implements at.pcgamingfreaks.Minepacks.Bukkit.API.ItemFilter
{ {
public final Message messageNotAllowedInBackpack; public final Message messageNotAllowedInBackpack;
public final ItemNameResolver itemNameResolver; public final ItemNameResolver itemNameResolver;
private final boolean whitelistMode; private final at.pcgamingfreaks.Bukkit.ItemFilter filter;
private final Collection<MinecraftMaterial> filteredMaterials = new HashSet<>();
private final Set<String> filteredNames, filteredLore;
public ItemFilter(final Minepacks plugin) public ItemFilter(final Minepacks plugin)
{ {
super(plugin); super(plugin);
whitelistMode = plugin.getConfiguration().isItemFilterModeWhitelist(); boolean whitelistMode = plugin.getConfiguration().isItemFilterModeWhitelist();
filter = new at.pcgamingfreaks.Bukkit.ItemFilter(whitelistMode);
Collection<MinecraftMaterial> filteredMaterials = plugin.getConfiguration().getItemFilterMaterials();
if(plugin.getConfiguration().isShulkerboxesPreventInBackpackEnabled() && !whitelistMode) if(plugin.getConfiguration().isShulkerboxesPreventInBackpackEnabled() && !whitelistMode)
{ {
for(Material mat : DisableShulkerboxes.SHULKER_BOX_MATERIALS) for(Material mat : DisableShulkerboxes.SHULKER_BOX_MATERIALS)
@ -62,9 +60,9 @@ public ItemFilter(final Minepacks plugin)
filteredMaterials.add(new MinecraftMaterial(mat, (short) -1)); filteredMaterials.add(new MinecraftMaterial(mat, (short) -1));
} }
} }
filteredMaterials.addAll(plugin.getConfiguration().getItemFilterMaterials()); filter.addFilteredMaterials(filteredMaterials);
filteredNames = plugin.getConfiguration().getItemFilterNames(); filter.addFilteredNames(plugin.getConfiguration().getItemFilterNames());
filteredLore = plugin.getConfiguration().getItemFilterLore(); filter.addFilteredLore(plugin.getConfiguration().getItemFilterLore());
messageNotAllowedInBackpack = plugin.getLanguage().getMessage("Ingame.NotAllowedInBackpack").replaceAll("\\{ItemName}", "%s"); messageNotAllowedInBackpack = plugin.getLanguage().getMessage("Ingame.NotAllowedInBackpack").replaceAll("\\{ItemName}", "%s");
@ -93,27 +91,7 @@ public ItemFilter(final Minepacks plugin)
@Contract("null->false") @Contract("null->false")
public boolean isItemBlocked(final @Nullable ItemStack item) public boolean isItemBlocked(final @Nullable ItemStack item)
{ {
if(item == null) return false; return filter.isItemBlocked(item);
if(filteredMaterials.contains(new MinecraftMaterial(item))) return !whitelistMode;
if(item.hasItemMeta())
{
ItemMeta meta = item.getItemMeta();
assert meta != null; //TODO remove after testing
if(meta.hasDisplayName() && filteredNames.contains(meta.getDisplayName())) return !whitelistMode;
if(meta.hasLore() && !filteredLore.isEmpty())
{
StringBuilder loreBuilder = new StringBuilder();
//noinspection ConstantConditions
for(String loreLine : meta.getLore())
{
if(filteredLore.contains(loreLine)) return !whitelistMode;
if(loreBuilder.length() > 0) loreBuilder.append("\n");
loreBuilder.append(loreLine);
}
if(filteredLore.contains(loreBuilder.toString())) return !whitelistMode;
}
}
return whitelistMode;
} }
@Override @Override