Added protection for plates and buttons from arrows

Added button text for flag.
This commit is contained in:
tastybento 2018-07-04 18:32:43 -07:00
parent 3657dda094
commit 66f3b5032d
3 changed files with 44 additions and 28 deletions

View File

@ -11,30 +11,9 @@
banner: "BANNER:1:BLUE:STRIPE_DOWNLEFT:WHITE:STRIPE_DOWNRIGHT:WHITE:STRIPE_CENTER:WHITE:STRIPE_MIDDLE:WHITE:STRAIGHT_CROSS:RED:CROSS:RED"
not-setup:
header: |-
More set up is required before the plugin can start...
Edit config.yml. Then restart server.
distance: "Make sure you set island distance. If upgrading, set it to what it was before."
generator: |-
The world generator for the island world is not registered.
Potential reasons are:
1. If you are configuring the island world as the only server world
Make sure you have added the world to bukkit.yml
2. You reloaded instead of restarting the server. Reboot and try again.
generator-multiverse: " 3. Your Multiverse plugin is out of date. Upgrade to the latest version."
world-name: |-
The world name in config.yml is different to the world name in islands.yml.
If this is intentional, we assume you are doing a full reset.
If so, delete islands.yml and the previous world.
If not, correct the world name in config.yml and restart. This is probably the case if you are upgrading.
config-outdated: |-
The config.yml file looks outdated.
Make sure you updated your configuration after upgrading.
If this error is still happening, you probably edited the old config rather than editing the new one.
If so, please remove the current config.yml, work on config.new.yml and rename it to config.yml.
general:
success: "Success!"
errors:
no-permission: "You don't have permission to execute this command."
protection:
flags:
ARMOR_STAND:
description: "Toggle interaction"
name: "Armour stands"
hint: "Armour stand use disabled"

View File

@ -307,6 +307,10 @@ protection:
description: "Toggle interaction"
name: Buckets
hint: "No bucket use allowed"
BUTTON:
description: "Toggle button use"
name: Buttons
hint: "No button use allowed"
CHEST:
description: "Toggle chest access"
name: Chests

View File

@ -1,11 +1,15 @@
package us.tastybento.bskyblock.listeners.flags;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import us.tastybento.bskyblock.api.flags.AbstractFlagListener;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.lists.Flags;
/**
@ -20,7 +24,7 @@ public class PhysicalInteractionListener extends AbstractFlagListener {
* @param e - event
*/
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onPlayerInteract(final PlayerInteractEvent e) {
public void onPlayerInteract(PlayerInteractEvent e) {
if (!e.getAction().equals(Action.PHYSICAL)) {
return;
}
@ -41,4 +45,33 @@ public class PhysicalInteractionListener extends AbstractFlagListener {
}
}
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onProjectileHit(EntityInteractEvent e) {
if (e.getEntity() == null || !(e.getEntity() instanceof Projectile)) {
return;
}
Projectile p = (Projectile)e.getEntity();
if (p.getShooter() != null && p.getShooter() instanceof Player && e.getBlock() != null) {
// Set the user to the shooter
setUser(User.getInstance((Player)p.getShooter()));
switch(e.getBlock().getType()) {
case WOOD_BUTTON:
case STONE_BUTTON:
checkIsland(e, e.getBlock().getLocation(), Flags.BUTTON);
break;
case WOOD_PLATE:
case STONE_PLATE:
case GOLD_PLATE:
case IRON_PLATE:
// Pressure plates
checkIsland(e, e.getBlock().getLocation(), Flags.PRESSURE_PLATE);
break;
default:
break;
}
}
}
}