Skip to content

Commit

Permalink
Add bed matcher
Browse files Browse the repository at this point in the history
  • Loading branch information
pop4959 committed Jan 16, 2020
1 parent 6fa2e7c commit 59b2359
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/main/java/com/griefcraft/util/ProtectionFinder.java
Expand Up @@ -31,6 +31,7 @@
import com.griefcraft.cache.ProtectionCache;
import com.griefcraft.lwc.LWC;
import com.griefcraft.model.Protection;
import com.griefcraft.util.matchers.BedMatcher;
import com.griefcraft.util.matchers.DoorMatcher;
import com.griefcraft.util.matchers.DoubleChestMatcher;
import com.griefcraft.util.matchers.GravityMatcher;
Expand Down Expand Up @@ -186,6 +187,13 @@ else if (DoorMatcher.PROTECTABLES_DOORS.contains(material)) {
};
}

// Beds
else if (BedMatcher.BEDS.contains(material)) {
return new Matcher[]{
new BedMatcher()
};
}

// Anything else
else {
return new Matcher[]{
Expand Down
40 changes: 40 additions & 0 deletions src/main/java/com/griefcraft/util/matchers/BedMatcher.java
@@ -0,0 +1,40 @@
package com.griefcraft.util.matchers;

import com.griefcraft.util.ProtectionFinder;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.data.type.Bed;

import java.util.EnumSet;
import java.util.Set;

/**
* Matches beds
*/
public class BedMatcher implements ProtectionFinder.Matcher {

public static final Set<Material> BEDS = EnumSet.of(Material.BLACK_BED, Material.BLUE_BED, Material.BROWN_BED,
Material.CYAN_BED, Material.GRAY_BED, Material.GREEN_BED, Material.LIGHT_BLUE_BED, Material.LIGHT_GRAY_BED,
Material.LIME_BED, Material.MAGENTA_BED, Material.ORANGE_BED, Material.PINK_BED, Material.PURPLE_BED,
Material.RED_BED, Material.WHITE_BED, Material.YELLOW_BED);

@Override
public boolean matches(ProtectionFinder finder) {
BlockState baseBlockState = finder.getBaseBlock();
Block baseBlock = baseBlockState.getBlock();
Bed baseBlockData;
try {
baseBlockData = (Bed) baseBlockState.getBlockData();
if (baseBlockData.getPart() == Bed.Part.FOOT) {
finder.addBlock(baseBlock.getRelative(baseBlockData.getFacing()));
} else {
finder.addBlock(baseBlock.getRelative(baseBlockData.getFacing().getOppositeFace()));
}
return true;
} catch (ClassCastException e) {
return false;
}
}

}

0 comments on commit 59b2359

Please sign in to comment.