Skip to content

Instantly share code, notes, and snippets.

@Cewlt
Last active October 24, 2015 22:18
Show Gist options
  • Save Cewlt/2fca8df63de9f557f58e to your computer and use it in GitHub Desktop.
Save Cewlt/2fca8df63de9f557f58e to your computer and use it in GitHub Desktop.
package com.colt.irondooropener;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.DefaultFlag;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.logging.Level;
public class IronDoorOpener extends JavaPlugin implements Listener {
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
private WorldGuardPlugin getWorldGuard() {
Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
// WorldGuard may not be loaded
if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
return null; // Maybe you want throw an exception instead
}
return (WorldGuardPlugin) plugin;
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Block eventBlock = event.getClickedBlock();
if(event.getPlayer().hasPermission("irondoor.open") &&
event.getAction() == Action.RIGHT_CLICK_BLOCK &&
event.useInteractedBlock() == Event.Result.ALLOW &&
canUseBlock(event.getPlayer(), eventBlock)) {
if (eventBlock.getType() == Material.IRON_DOOR_BLOCK) {
if (eventBlock.getData() >= 8) {
eventBlock = eventBlock.getRelative(BlockFace.DOWN);
}
if (eventBlock.getType() == Material.IRON_DOOR_BLOCK) {
if (eventBlock.getData() < 4) {
eventBlock.setData((byte) (eventBlock.getData() + 4));
eventBlock.getWorld().playEffect(eventBlock.getLocation(), Effect.DOOR_TOGGLE, 0);
} else {
eventBlock.setData((byte) (eventBlock.getData() - 4));
eventBlock.getWorld().playEffect(eventBlock.getLocation(), Effect.DOOR_TOGGLE, 0);
}
}
event.setUseItemInHand(Event.Result.DENY);
}
}
}
public boolean canUseBlock(Player player, Block block) {
return getWorldGuard().canBuild(player, block);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment