Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ItemLists overhaul #5737

Merged
merged 5 commits into from
Feb 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 3 additions & 13 deletions src/com/palmergames/bukkit/towny/TownySettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
Expand Down Expand Up @@ -323,7 +324,7 @@ private static void loadSwitchAndItemUseMaterialsLists() {
List<String> switches = getStrArr(ConfigNodes.PROT_SWITCH_MAT);
for (String matName : switches) {
if (ItemLists.GROUPS.contains(matName)) {
switchUseMaterials.addAll(toMaterialSet(ItemLists.getGrouping(matName)));
switchUseMaterials.addAll(ItemLists.getGrouping(matName));
} else {
Material material = Material.matchMaterial(matName);
if (material != null)
Expand All @@ -339,7 +340,7 @@ private static void loadSwitchAndItemUseMaterialsLists() {
List<String> items = getStrArr(ConfigNodes.PROT_ITEM_USE_MAT);
for (String matName : items) {
if (ItemLists.GROUPS.contains(matName)) {
itemUseMaterials.addAll(toMaterialSet(ItemLists.getGrouping(matName)));
itemUseMaterials.addAll(ItemLists.getGrouping(matName));
} else {
Material material = Material.matchMaterial(matName);
if (material != null)
Expand Down Expand Up @@ -368,17 +369,6 @@ public static EnumSet<Material> toMaterialEnumSet(List<String> materialList) {

return materials;
}

public static Set<Material> toMaterialSet(List<String> materialList) {
Set<Material> materials = new HashSet<>();
for (String materialName : materialList) {
Material material = Material.matchMaterial(materialName);
if (material != null)
materials.add(material);
}

return materials;
}

public static void sendError(String msg) {
Towny.getPlugin().getLogger().warning(() -> String.format("Error could not read %s",msg));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ private static boolean isAllowedBurn(Block block) {
}

private static boolean isNotCampfire(Block block) {
return !ItemLists.CAMPFIRES.contains(block.getType().name());
return !ItemLists.CAMPFIRES.contains(block.getType());
}

private static boolean isNotPortal(Block block) {
return block.getRelative(BlockFace.DOWN).getType() != Material.OBSIDIAN;
}

private static boolean isNotCandle(Block block) {
return !ItemLists.CANDLES.contains(block.getType().name());
return !ItemLists.CANDLES.contains(block.getType());
}

private static boolean isNotFireSpreadBypassMat(Block block) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -369,10 +369,10 @@ public void onBlockDispense(BlockDispenseEvent event) {

Material mat = event.getItem().getType();

if (ItemLists.BUCKETS.contains(mat.name()) && !TownySettings.getPreventFluidGriefingEnabled())
if (ItemLists.BUCKETS.contains(mat) && !TownySettings.getPreventFluidGriefingEnabled())
return;

if (!ItemLists.BUCKETS.contains(mat.name()) && mat != Material.BONE_MEAL && mat != Material.HONEYCOMB)
if (!ItemLists.BUCKETS.contains(mat) && mat != Material.BONE_MEAL && mat != Material.HONEYCOMB)
return;

if (!canBlockMove(event.getBlock(), event.getBlock().getRelative(((Directional) event.getBlock().getBlockData()).getFacing()), true))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -772,7 +772,7 @@ public void onProjectileHitEventButtonOrPlate(ProjectileHitEvent event) {

Block block = event.getHitBlock().getRelative(event.getHitBlockFace());
Material material = block.getType();
if (ItemLists.PROJECTILE_TRIGGERED_REDSTONE.contains(material.name()) && TownySettings.isSwitchMaterial(material, block.getLocation())) {
if (ItemLists.PROJECTILE_TRIGGERED_REDSTONE.contains(material) && TownySettings.isSwitchMaterial(material, block.getLocation())) {
//Make decision on whether this is allowed using the PlayerCache and then a cancellable event.
if (!TownyActionEventExecutor.canSwitch((Player) event.getEntity().getShooter(), block.getLocation(), material)) {
/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,10 +314,8 @@ public void onPlayerInteract(PlayerInteractEvent event) {
*
* Treat interaction as a Destroy test.
*/
if ((ItemLists.AXES.contains(item.name()) && Tag.LOGS.isTagged(clickedMat)) || // This will also catched already stripped logs but it is cleaner than anything else.
(ItemLists.AXES.contains(item.name()) && ItemLists.WAXED_BLOCKS.contains(clickedMat.name())) || // Prevents players scraping wax off of copper blocks.
(ItemLists.AXES.contains(item.name()) && ItemLists.WEATHERABLE_BLOCKS.contains(clickedMat.name())) || // Prevents players scraping oxidation off of copper blocks.
(ItemLists.DYES.contains(item.name()) && Tag.SIGNS.isTagged(clickedMat)) ||
if ((ItemLists.AXES.contains(item) && (ItemLists.UNSTRIPPED_WOOD.contains(clickedMat) || ItemLists.WAXED_BLOCKS.contains(clickedMat) || ItemLists.WEATHERABLE_BLOCKS.contains(clickedMat))) ||
(ItemLists.DYES.contains(item) && Tag.SIGNS.isTagged(clickedMat)) ||
(item == Material.FLINT_AND_STEEL && clickedMat == Material.TNT) ||
((item == Material.GLASS_BOTTLE || item == Material.SHEARS) && (clickedMat == Material.BEE_NEST || clickedMat == Material.BEEHIVE || clickedMat == Material.PUMPKIN))) {

Expand All @@ -333,13 +331,13 @@ public void onPlayerInteract(PlayerInteractEvent event) {
/*
* Test putting candles on cakes. Treat interaction as a Build test.
*/
if (ItemLists.CANDLES.contains(item.name()) && clickedMat == Material.CAKE)
if (ItemLists.CANDLES.contains(item) && clickedMat == Material.CAKE)
event.setCancelled(!TownyActionEventExecutor.canBuild(player, loc, item));

/*
* Test wax usage. Treat interaction as a Build test.
*/
if (item == Material.HONEYCOMB && ItemLists.WEATHERABLE_BLOCKS.contains(clickedMat.name()))
if (item == Material.HONEYCOMB && ItemLists.WEATHERABLE_BLOCKS.contains(clickedMat))
event.setCancelled(!TownyActionEventExecutor.canBuild(player, loc, item));

/*
Expand Down Expand Up @@ -372,10 +370,10 @@ public void onPlayerInteract(PlayerInteractEvent event) {
*
* Test interaction as a Destroy test. (These used to be switches pre-0.96.3.1)
*/
if (ItemLists.POTTED_PLANTS.contains(clickedMat.name()) ||
ItemLists.HARVESTABLE_BERRIES.contains(clickedMat.name()) ||
ItemLists.REDSTONE_INTERACTABLES.contains(clickedMat.name()) ||
ItemLists.CANDLES.contains(clickedMat.name()) ||
if (ItemLists.POTTED_PLANTS.contains(clickedMat) ||
ItemLists.HARVESTABLE_BERRIES.contains(clickedMat) ||
ItemLists.REDSTONE_INTERACTABLES.contains(clickedMat) ||
ItemLists.CANDLES.contains(clickedMat) ||
clickedMat == Material.BEACON || clickedMat == Material.DRAGON_EGG ||
clickedMat == Material.COMMAND_BLOCK){

Expand Down Expand Up @@ -543,7 +541,7 @@ public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
case SHEEP:
case WOLF:
if (item != null) {
if (ItemLists.DYES.contains(item.name())) {
if (ItemLists.DYES.contains(item)) {
mat = item;
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public void onVehicleCollide(VehicleBlockCollisionEvent event) {
if (plugin.isError() || !TownyAPI.getInstance().isTownyWorld(event.getVehicle().getWorld()))
return;

if (event.getVehicle() instanceof Minecart && ItemLists.MINECART_KILLERS.contains(event.getBlock().getType().name())) {
if (event.getVehicle() instanceof Minecart && ItemLists.MINECART_KILLERS.contains(event.getBlock().getType())) {
event.getVehicle().remove();
event.getBlock().getWorld().dropItemNaturally(event.getVehicle().getLocation(), new ItemStack(EntityTypeUtil.parseEntityToMaterial(event.getVehicle().getType())));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,7 @@ private static EnumSet<Material> loadMaterialList(String listName, String materi
EnumSet<Material> set = EnumSet.noneOf(Material.class);
for (String materialName : materialList.split(",")) {
if (ItemLists.GROUPS.contains(materialName)) {
for (String groupedItem : ItemLists.getGrouping(materialName)) {
Material material = matchMaterial(groupedItem, listName, typeName);
if (material != null)
set.add(material);
}
set.addAll(ItemLists.getGrouping(materialName));
continue;
}

Expand Down
30 changes: 15 additions & 15 deletions src/com/palmergames/bukkit/towny/utils/EntityTypeUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,31 @@
import com.palmergames.bukkit.towny.TownyMessaging;

public class EntityTypeUtil {
private static List<EntityType> ExplosiveEntityTypes = new ArrayList<>(Arrays.asList(
private static final List<EntityType> ExplosiveEntityTypes = Arrays.asList(
EntityType.CREEPER,
EntityType.DRAGON_FIREBALL,
EntityType.FIREBALL,
EntityType.SMALL_FIREBALL,
EntityType.FIREWORK,
EntityType.MINECART_TNT,
EntityType.PRIMED_TNT,
EntityType.WITHER,
EntityType.FIREWORK,
EntityType.MINECART_TNT,
EntityType.PRIMED_TNT,
EntityType.WITHER,
EntityType.WITHER_SKULL,
EntityType.ENDER_CRYSTAL));
EntityType.ENDER_CRYSTAL);

private static List<EntityType> ExplosivePVMEntityTypes = new ArrayList<>(Arrays.asList(
private static final List<EntityType> ExplosivePVMEntityTypes = Arrays.asList(
EntityType.CREEPER,
EntityType.DRAGON_FIREBALL,
EntityType.FIREBALL,
EntityType.DRAGON_FIREBALL,
EntityType.FIREBALL,
EntityType.SMALL_FIREBALL,
EntityType.WITHER,
EntityType.WITHER,
EntityType.WITHER_SKULL,
EntityType.ENDER_CRYSTAL));
EntityType.ENDER_CRYSTAL);

private static List<EntityType> ExplosivePVPEntityTypes = new ArrayList<>(Arrays.asList(
EntityType.FIREWORK,
EntityType.MINECART_TNT,
EntityType.PRIMED_TNT));
private static final List<EntityType> ExplosivePVPEntityTypes = Arrays.asList(
EntityType.FIREWORK,
EntityType.MINECART_TNT,
EntityType.PRIMED_TNT);

public static boolean isInstanceOfAny(List<Class<?>> classes, Object obj) {

Expand Down
Loading