Initial Release

main
Nichole Mattera 14 years ago
commit d34eca1d2d
  1. 29
      src/net/mcbat/doorsopendoors/DoorsOpenDoors.java
  2. 97
      src/net/mcbat/doorsopendoors/listeners/DoorsOpenDoorsPlayerListener.java
  3. 5
      src/plugin.yml

@ -0,0 +1,29 @@
package net.mcbat.doorsopendoors;
import java.util.logging.Logger;
import net.mcbat.doorsopendoors.listeners.DoorsOpenDoorsPlayerListener;
import org.bukkit.plugin.java.JavaPlugin;
public class DoorsOpenDoors extends JavaPlugin {
private final Logger _logger = Logger.getLogger("minecraft");
@Override
public void onEnable() {
_logger.info("[Doors Open Doors] v"+this.getDescription().getVersion()+" (Helium) enabled.");
_logger.info("[Doors Open Doors] Developed by: [Mattera, Steven (IchigoKyger)].");
_logger.info("[Doors Open Doors] Based on: Kassoon's single player mod.");
(new DoorsOpenDoorsPlayerListener(this)).registerEvents();
}
@Override
public void onDisable() {
_logger.info("[Doors Open Doors] v"+this.getDescription().getVersion()+" (Helium) disabled.");
}
public Logger getMinecraftLogger() {
return _logger;
}
}

@ -0,0 +1,97 @@
package net.mcbat.doorsopendoors.listeners;
import net.mcbat.doorsopendoors.DoorsOpenDoors;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerListener;
public class DoorsOpenDoorsPlayerListener extends PlayerListener {
private final DoorsOpenDoors _plugin;
public DoorsOpenDoorsPlayerListener(DoorsOpenDoors plugin) {
_plugin = plugin;
}
public void registerEvents() {
_plugin.getServer().getPluginManager().registerEvent(Event.Type.PLAYER_INTERACT, this, Priority.Highest, _plugin);
}
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.isCancelled())
return;
if (event.getClickedBlock().getType() == Material.WOODEN_DOOR) {
Block doorBlock = event.getClickedBlock();
Block otherDoorTopBlock = null;
Block otherDoorBottomBlock = null;
if (this.doorIsTopHalf(doorBlock.getData()))
doorBlock = doorBlock.getRelative(BlockFace.DOWN);
if (doorBlock.getRelative(BlockFace.NORTH).getType() == Material.WOODEN_DOOR && doorIsConnected(doorBlock.getData(), doorBlock.getRelative(BlockFace.NORTH).getData())) {
otherDoorBottomBlock = doorBlock.getRelative(BlockFace.NORTH);
}
else if (doorBlock.getRelative(BlockFace.SOUTH).getType() == Material.WOODEN_DOOR && doorIsConnected(doorBlock.getData(), doorBlock.getRelative(BlockFace.SOUTH).getData())) {
otherDoorBottomBlock = doorBlock.getRelative(BlockFace.SOUTH);
}
else if (doorBlock.getRelative(BlockFace.EAST).getType() == Material.WOODEN_DOOR && doorIsConnected(doorBlock.getData(), doorBlock.getRelative(BlockFace.EAST).getData())) {
otherDoorBottomBlock = doorBlock.getRelative(BlockFace.EAST);
}
else if (doorBlock.getRelative(BlockFace.WEST).getType() == Material.WOODEN_DOOR && doorIsConnected(doorBlock.getData(), doorBlock.getRelative(BlockFace.WEST).getData())) {
otherDoorBottomBlock = doorBlock.getRelative(BlockFace.WEST);
}
if (otherDoorBottomBlock != null) {
otherDoorTopBlock = otherDoorBottomBlock.getRelative(BlockFace.UP);
if (this.doorIsOpen(doorBlock.getData()) != this.doorIsOpen(otherDoorTopBlock.getData())) {
otherDoorTopBlock.setData(flipDoor(otherDoorTopBlock.getData()));
otherDoorBottomBlock.setData(flipDoor(otherDoorBottomBlock.getData()));
}
}
}
}
private boolean doorIsConnected(byte data, byte data2) {
int f1 = -1, f2 = -1, h1 = -1, h2 = -1;
f1 = (data & 0x3);
f2 = (data2 & 0x3);
if ((data & 0x3) == 0x3) h1 = 3;
else if ((data & 0x1) == 0x1) h1 = 1;
else if ((data & 0x2) == 0x2) h1 = 2;
else h1 = 0;
if ((data2 & 0x3) == 0x3) h2 = 3;
else if ((data2 & 0x1) == 0x1) h2 = 1;
else if ((data2 & 0x2) == 0x2) h2 = 2;
else h2 = 0;
if (f1 == f2 && f2 == h1 && h1 == h2)
return false;
if (f1 == h1 && f2 == h2)
return true;
return false;
}
private boolean doorIsTopHalf(byte data) {
return ((data & 0x8) == 0x8);
}
private boolean doorIsOpen(byte data) {
return ((data & 0x4) == 0x4);
}
private byte flipDoor(byte data) {
return (byte) (doorIsOpen(data) ? (data & ~0x4) : (data | 0x4));
}
}

@ -0,0 +1,5 @@
name: Doors Open Doors
main: net.mcbat.doorsopendoors.DoorsOpenDoors
version: 1.0
website: http://mc-bat.net
author: Steven Mattera
Loading…
Cancel
Save