Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.tobast.bukkit.chainbrewing;
- import java.util.logging.Logger;
- import org.bukkit.event.Listener;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockFace;
- import org.bukkit.material.Diode;
- import org.bukkit.Material;
- import org.bukkit.event.EventException;
- import fr.tobast.bukkit.chainbrewing.BrewingStandBlock;
- import fr.tobast.bukkit.chainbrewing.MiscFunc;
- import fr.tobast.bukkit.chainbrewing.ScheduleWatcher;
- public class PlacementListener implements Listener
- {
- Logger log;
- ScheduleWatcher watcher=new ScheduleWatcher();
- public PlacementListener(Logger iLog)
- {
- log=iLog;
- }
- /// handles events to check for a brewing stand interaction
- @EventHandler(priority=EventPriority.MONITOR)
- public void onPlayerInteractEvent(PlayerInteractEvent event)
- {
- Block clicked=event.getClickedBlock();
- if(clicked.getType() == Material.BREWING_STAND) // Brewing stand
- {
- BrewingStandBlock brewingBlock=makeBrewingBlock(clicked);
- if(brewingBlock.hasRepeaters())
- addBrewingChain(brewingBlock);
- }
- }
- private void addBrewingChain(BrewingStandBlock enterBlock)
- {
- }
- private BrewingStandBlock makeBrewingBlock(Block block)
- {
- BrewingStandBlock stand=new BrewingStandBlock();
- stand.block=block;
- for(int i=0;i<4;i++)
- {
- Block relativeBlock=block.getRelative(MiscFunc.idToFace(i));
- if(relativeBlock.getType() == Material.DIODE_BLOCK_OFF || relativeBlock.getType() == Material.DIODE_BLOCK_ON) // Is a diode
- stand.repeaters[i]=diodeRole(MiscFunc.idToFace(i), relativeBlock.getData());
- }
- return stand;
- }
- private byte diodeRole(BlockFace originFace, byte data)
- {
- BlockFace facing=getDiodeFacing(data);
- if(facing==originFace)
- return 2;
- else if(facing==MiscFunc.opposedFace(originFace))
- return 1;
- return 0;
- }
- private BlockFace getDiodeFacing(int diodeData)
- {
- int delayData = diodeData >> 2;
- int faceData = diodeData-(delayData<<2)+1;
- while(faceData>3) // bug forces that
- faceData-=4;
- return MiscFunc.idToFace(faceData);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment