tobast

Untitled

Feb 12th, 2012
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. package fr.tobast.bukkit.chainbrewing;
  2.  
  3. import java.util.logging.Logger;
  4. import org.bukkit.event.Listener;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.EventPriority;
  7. import org.bukkit.event.block.BlockPlaceEvent;
  8. import org.bukkit.event.player.PlayerInteractEvent;
  9. import org.bukkit.block.Block;
  10. import org.bukkit.block.BlockFace;
  11. import org.bukkit.material.Diode;
  12. import org.bukkit.Material;
  13. import org.bukkit.event.EventException;
  14.  
  15. import fr.tobast.bukkit.chainbrewing.BrewingStandBlock;
  16. import fr.tobast.bukkit.chainbrewing.MiscFunc;
  17. import fr.tobast.bukkit.chainbrewing.ScheduleWatcher;
  18.  
  19. public class PlacementListener implements Listener
  20. {
  21.     Logger log;
  22.     ScheduleWatcher watcher=new ScheduleWatcher();
  23.     public PlacementListener(Logger iLog)
  24.     {
  25.         log=iLog;
  26.     }
  27.  
  28.     /// handles events to check for a brewing stand interaction
  29.     @EventHandler(priority=EventPriority.MONITOR)
  30.         public void onPlayerInteractEvent(PlayerInteractEvent event)
  31.         {
  32.             Block clicked=event.getClickedBlock();
  33.             if(clicked.getType() == Material.BREWING_STAND) // Brewing stand
  34.             {
  35.                 BrewingStandBlock brewingBlock=makeBrewingBlock(clicked);
  36.                 if(brewingBlock.hasRepeaters())
  37.                     addBrewingChain(brewingBlock);
  38.             }
  39.         }
  40.  
  41.     private void addBrewingChain(BrewingStandBlock enterBlock)
  42.     {
  43.  
  44.     }
  45.  
  46.     private BrewingStandBlock makeBrewingBlock(Block block)
  47.     {
  48.         BrewingStandBlock stand=new BrewingStandBlock();
  49.         stand.block=block;
  50.         for(int i=0;i<4;i++)
  51.         {
  52.             Block relativeBlock=block.getRelative(MiscFunc.idToFace(i));
  53.             if(relativeBlock.getType() == Material.DIODE_BLOCK_OFF || relativeBlock.getType() == Material.DIODE_BLOCK_ON) // Is a diode
  54.                 stand.repeaters[i]=diodeRole(MiscFunc.idToFace(i), relativeBlock.getData());
  55.         }
  56.         return stand;
  57.     }
  58.  
  59.     private byte diodeRole(BlockFace originFace, byte data)
  60.     {
  61.         BlockFace facing=getDiodeFacing(data);
  62.  
  63.         if(facing==originFace)
  64.             return 2;
  65.         else if(facing==MiscFunc.opposedFace(originFace))
  66.             return 1;
  67.         return 0;
  68.     }
  69.  
  70.     private BlockFace getDiodeFacing(int diodeData)
  71.     {
  72.         int delayData = diodeData >> 2;
  73.         int faceData = diodeData-(delayData<<2)+1;
  74.  
  75.         while(faceData>3) // bug forces that
  76.             faceData-=4;
  77.  
  78.         return MiscFunc.idToFace(faceData);
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment