Package com.sijobe.spc.worldedit

Source Code of com.sijobe.spc.worldedit.WorldEditEvents

package com.sijobe.spc.worldedit;

import com.sijobe.spc.core.PlayerSP;
import com.sijobe.spc.wrapper.Coordinate;
import com.sijobe.spc.wrapper.Minecraft;
import com.sijobe.spc.wrapper.Player;

import java.util.HashMap;
import java.util.Map;

import org.lwjgl.input.Mouse;

/**
* Handles the client-side events that occur such as mouse events for
* WorldEdit. When the events are detected they are passed to the
* WorldEditCommandSet class.
*
* @author simo_415
* @version 1.0
*/
public class WorldEditEvents extends PlayerSP {

   private Map<String,Coordinate> left;
   private Map<String,Coordinate> right;
   private String lastCrash = "";
   private static boolean handleEvents = true;

   /**
    * The max range that the mouse methods trace the blocks for
    */
   private static final int TRACE_RANGE = 128;

   public WorldEditEvents() {
      left = new HashMap<String,Coordinate>();
      right = new HashMap<String,Coordinate>();
   }

   /*
    * Disable WorldEdit event handling. This is done when WorldEdit
    * hasn't been loaded, so that possible exceptions are avoided.
   */
   public static void disableHandleEvents() {
      handleEvents = false;
   }
  
   /**
    * Returns whether or not WorldEdit event handling is enabled
    *
    * @return True if WE event handling enabled, false otherwise
    */
   public static boolean getHandleEvents() {
      return handleEvents;
   }
  
   @Override
   public void onTick(Player player) {
      if (Minecraft.isGuiScreenOpen()) {
         return;
      }
      if(!handleEvents) {
         return;
      }
      try {
         // Check left button down
         checkLeftButton(player);

         // Check right button down
         checkRightButton(player);
      } catch (Throwable t) {
         String currentCrash = t.toString();
         if(currentCrash.equals(lastCrash)) {
            return;
         } else {
            lastCrash = currentCrash;
         }
         t.printStackTrace();
      }
   }

   /**
    * Checks if the left mouse button was pressed, if so then it will call the
    * appropriate WorldEdit method for arm swinging or block hitting if they
    * occur.
    *
    * @param player - The player that triggered the mouse button
    */
   private void checkLeftButton(Player player) {
      if (Mouse.isButtonDown(0)) {
         Coordinate hit = null;
         if ((hit = player.trace(TRACE_RANGE)) != null) {
            WorldEditCommandSet.getCurrentInstance().handleArmSwing(player);
            if (!hit.equals(left.get(player.getPlayerName()))) {
               left.put(player.getPlayerName(), hit);
               WorldEditCommandSet.getCurrentInstance().handleBlockLeftClick(player, hit);
            }
         }
      }
   }

   /**
    * Checks if the right mouse button was pressed, if so then it will call the
    * appropriate WorldEdit method for arm swinging or block hitting if they
    * occur.
    *
    * @param player - The player that triggered the mouse button
    */
   private void checkRightButton(Player player) {
      if (Mouse.isButtonDown(1)) {
         Coordinate hit = null;
         if ((hit = player.trace(TRACE_RANGE)) != null) {
            WorldEditCommandSet.getCurrentInstance().handleRightClick(player);
            if (!hit.equals(right.get(player.getPlayerName()))) {
               right.put(player.getPlayerName(), hit);
               WorldEditCommandSet.getCurrentInstance().handleBlockRightClick(player, hit);
            }
         }
      }
   }
}
TOP

Related Classes of com.sijobe.spc.worldedit.WorldEditEvents

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.