Skip to content

Instantly share code, notes, and snippets.

@NeatMonster
Created August 22, 2013 00:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NeatMonster/6302034 to your computer and use it in GitHub Desktop.
Save NeatMonster/6302034 to your computer and use it in GitHub Desktop.
package fr.neatmonster.offsetters;
import java.util.Arrays;
import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockRedstoneEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.material.Diode;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.java.JavaPlugin;
public class Offsetters extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(final PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK
&& event.getClickedBlock().getState().getData() instanceof Diode) {
final Diode diode = (Diode) event.getClickedBlock().getState().getData();
if (diode.getDelay() == 4) {
final boolean offset = event.getClickedBlock().hasMetadata("offset") ? event
.getClickedBlock().getMetadata("offset").get(0).asBoolean() : false;
event.getClickedBlock()
.setMetadata("offset", new FixedMetadataValue(this, !offset));
event.getPlayer().sendMessage(
ChatColor.YELLOW + (offset ? "Exiting" : "Entering") + " offset mode.");
}
}
}
@EventHandler(priority = EventPriority.MONITOR)
public void onBlockRedstone(final BlockRedstoneEvent event) {
for (BlockFace face : Arrays.asList(new BlockFace[] { BlockFace.NORTH, BlockFace.SOUTH,
BlockFace.EAST, BlockFace.WEST })) {
final Block block = event.getBlock().getLocation()
.add(face.getModX(), face.getModY(), face.getModZ()).getBlock();
if (block.getState().getData() instanceof Diode) {
final Diode diode = (Diode) block.getState().getData();
if (face.getOppositeFace() == diode.getFacing() && block.hasMetadata("offset")
&& block.getMetadata("offset").get(0).asBoolean()) {
final Block input = block.getLocation()
.add(face.getModX(), face.getModY(), face.getModZ()).getBlock();
event.setNewCurrent((int) input.getData() + diode.getDelay());
}
}
}
}
}
name: Offsetters
version: 1.0
author: NeatMonster
main: fr.neatmonster.offsetters.Offsetters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment