Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bukkit.Matthijs.RedstoneSponge;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import org.bukkit.Material;
- import org.bukkit.Server;
- import org.bukkit.World;
- import org.bukkit.block.*;
- import org.bukkit.block.Sign;
- import org.bukkit.event.block.*;
- import org.bukkit.material.*;
- public class RedstoneSpongeBlockListener extends BlockListener
- {
- private final RedstoneSponge plugin;
- private final Server server;
- final Logger logger = Logger.getLogger("Minecraft");
- private final int SPONGE = 19;
- private static World world;
- private int radius;
- public RedstoneSpongeBlockListener(RedstoneSponge instance)
- {
- this.plugin = instance;
- this.server = plugin.getServer();
- radius = plugin.getRadius();
- System.out.println("raduis: " + radius);
- }
- public void onBlockPlace(BlockPlaceEvent event)
- {
- Block blockPlaced = event.getBlock();
- World world = blockPlaced.getWorld();
- if (blockPlaced.getTypeId() == SPONGE)
- {
- int blockX = blockPlaced.getX();
- int blockY = blockPlaced.getY();
- int blockZ = blockPlaced.getZ();
- // int radius = plugin.getRadius();
- radius = plugin.getRadius();
- boolean waterSponge = plugin.isWaterSpongeEnabled();
- boolean lavaSponge = plugin.isLavaSpongeEnabled();
- for (int radX = 0 - radius; radX <= radius; radX++)
- {
- for (int radY = 0 - radius; radY <= radius; radY++)
- {
- for (int radZ = 0 - radius; radZ <= radius; radZ++)
- {
- int id = world.getBlockTypeIdAt(blockX + radX, blockY + radY, blockZ + radZ);
- if (lavaSponge && (id == 10 || id == 11))
- {
- world.getBlockAt(blockX + radX, blockY + radY, blockZ + radZ).setTypeId(0);
- }
- else if (waterSponge && (id == 8 || id == 9))
- {
- world.getBlockAt(blockX + radX, blockY + radY, blockZ + radZ).setTypeId(0);
- }
- }
- }
- }
- }
- }
- public void onBlockRedstoneChange(BlockFromToEvent event)
- {
- // System.out.println("redstonechange");
- logger.log(Level.INFO, "onredstonechange");
- world = event.getBlock().getWorld();
- Block blockFrom = event.getBlock();
- // Block blockTo = event.getToBlock();
- Material north = event.getBlock().getFace(BlockFace.NORTH).getType();
- Material east = event.getBlock().getFace(BlockFace.EAST).getType();
- Material south = event.getBlock().getFace(BlockFace.SOUTH).getType();
- Material west = event.getBlock().getFace(BlockFace.WEST).getType();
- Material spons = Material.SPONGE;
- Material wool = Material.WOOL;
- if (north == spons || east == spons || south == spons || west == spons)
- {
- if (isBlockIndirectlyPowered(blockFrom) || isBlockPowered2(blockFrom))
- {
- System.out.println("SPONS isindirect: " + isBlockIndirectlyPowered(blockFrom) + " is direct " + isBlockPowered2(blockFrom));
- spongeToWool(event);
- }
- }
- if ((north == wool || east == wool || south == wool || west == wool))
- {
- System.out.println("wool if dinges");
- System.out.println("123WOOL isindirect: " + !isBlockIndirectlyPowered(blockFrom) + " is direct " + !isBlockPowered2(blockFrom));
- boolean test = !isBlockIndirectlyPowered(blockFrom) && !isBlockPowered2(blockFrom);
- if (test == false)
- {
- System.out.println("WOOL isindirect: " + !isBlockIndirectlyPowered(blockFrom) + " is direct " + !isBlockPowered2(blockFrom));
- woolToSponge(event);
- }
- }
- // System.out.println("blockfrom: " + blockFrom.getType());
- // System.out.println("blockTo: " + blockTo.getType());
- }
- public void spongeToWool(BlockFromToEvent event)
- {
- logger.log(Level.INFO, "IF SPONS");
- if (event.getBlock().getFace(BlockFace.NORTH).getType() == Material.SPONGE)
- {
- Block despons = event.getBlock().getRelative(BlockFace.NORTH);
- despons.setTypeId(35);
- despons.setData((byte) 4);//set yellow
- }
- if (event.getBlock().getFace(BlockFace.EAST).getType() == Material.SPONGE)
- {
- Block despons = event.getBlock().getRelative(BlockFace.EAST);
- despons.setTypeId(35);
- despons.setData((byte) 4);//set yellow
- }
- if (event.getBlock().getFace(BlockFace.SOUTH).getType() == Material.SPONGE)
- {
- Block despons = event.getBlock().getRelative(BlockFace.SOUTH);
- despons.setTypeId(35);
- despons.setData((byte) 4);//set yellow
- }
- if (event.getBlock().getFace(BlockFace.WEST).getType() == Material.SPONGE)
- {
- Block despons = event.getBlock().getRelative(BlockFace.WEST);
- despons.setTypeId(35);
- despons.setData((byte) 4);//set yellow
- }
- }
- public void woolToSponge(BlockFromToEvent event)
- {
- logger.log(Level.INFO, "ELSE IF WOOL");
- if (event.getBlock().getFace(BlockFace.NORTH).getType() == Material.WOOL)
- {
- Block despons = event.getBlock().getRelative(BlockFace.NORTH);
- despons.setTypeId(SPONGE);
- }
- if (event.getBlock().getFace(BlockFace.EAST).getType() == Material.WOOL)
- {
- Block despons = event.getBlock().getRelative(BlockFace.EAST);
- despons.setTypeId(SPONGE);
- }
- if (event.getBlock().getFace(BlockFace.SOUTH).getType() == Material.WOOL)
- {
- Block despons = event.getBlock().getRelative(BlockFace.SOUTH);
- despons.setTypeId(SPONGE);
- }
- if (event.getBlock().getFace(BlockFace.WEST).getType() == Material.WOOL)
- {
- Block despons = event.getBlock().getRelative(BlockFace.WEST);
- despons.setTypeId(SPONGE);
- }
- }
- public static World getWorld()
- {
- return world;
- }
- /**
- ** Returns true if the block at the given x, y, z coordinates is indirectly
- * powered
- **
- * @param x
- * coordinate
- ** @param y
- * coordinate
- ** @param z
- * coordinate
- **/
- public static boolean isBlockIndirectlyPowered(Block b)
- {
- int x = b.getX();
- int y = b.getY();
- int z = b.getZ();
- return isBlockPowered(x + 1, y, z) || isBlockPowered(x - 1, y, z) || isBlockPowered(x, y, z + 1) || isBlockPowered(x, y, z - 1) || isBlockPowered(x, y - 1, z);
- }
- /**
- ** Returns true if the block at the given x, y, z coordinates is directly
- * powered
- **
- * @param x
- * coordinate
- ** @param y
- * coordinate
- ** @param z
- * coordinate
- **/
- public static boolean isBlockPowered(int x, int y, int z)
- {
- MaterialData md = getWorld().getBlockAt(x, y, z).getState().getData();
- if (md instanceof Redstone)
- {
- return ((Redstone) md).isPowered();
- }
- return false;
- }
- public static boolean isBlockPowered2(Block b)
- {
- int x = b.getX();
- int y = b.getY();
- int z = b.getZ();
- MaterialData md = getWorld().getBlockAt(x, y, z).getState().getData();
- if (md instanceof Redstone)
- {
- return ((Redstone) md).isPowered();
- }
- return false;
- }
- public void onBlockFlow(BlockFromToEvent event)
- {
- World world = event.getBlock().getWorld();
- Block blockFrom = event.getBlock();
- Block blockTo = event.getToBlock();
- boolean isLava = blockFrom.getTypeId() == 10 || blockFrom.getTypeId() == 11;
- boolean isWater = blockFrom.getTypeId() == 8 || blockFrom.getTypeId() == 9;
- boolean waterSponge = plugin.isWaterSpongeEnabled();
- boolean lavaSponge = plugin.isLavaSpongeEnabled();
- // int radius = plugin.getRadius();
- if (lavaSponge && isLava || waterSponge && isWater)
- {
- int blockX = blockTo.getX();
- int blockY = blockTo.getY();
- int blockZ = blockTo.getZ();
- for (int radX = 0 - radius; radX <= radius; radX++)
- {
- for (int radY = 0 - radius; radY <= radius; radY++)
- {
- for (int radZ = 0 - radius; radZ <= radius; radZ++)
- {
- int id = world.getBlockTypeIdAt(blockX + radX, blockY + radY, blockZ + radZ);
- if (id == SPONGE)
- {
- event.setCancelled(true);
- return;
- }
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment