ForgePatch/src/main/java/net/minecraftforge/client/event/InputEvent.java

256 lines
6.9 KiB
Java
Raw Normal View History

2019-04-16 01:50:18 +00:00
/*
* Minecraft Forge
* Copyright (c) 2016-2019.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.minecraftforge.client.event;
import net.minecraft.client.util.InputMappings;
import net.minecraftforge.eventbus.api.Cancelable;
2019-04-16 01:50:18 +00:00
import net.minecraftforge.eventbus.api.Event;
import org.lwjgl.glfw.GLFW;
public class InputEvent extends Event
{
/**
* A cancellable mouse event fired before key bindings are updated
*/
public static class RawMouseEvent extends InputEvent
{
private final int button;
private final int action;
private final int mods;
public RawMouseEvent(int button, int action, int mods)
{
this.button = button;
this.action = action;
this.mods = mods;
}
/**
* The mouse button that triggered this event.
* https://www.glfw.org/docs/latest/group__buttons.html
*
* @see GLFW mouse constants starting with "GLFW_MOUSE_BUTTON_"
*/
public int getButton()
{
return this.button;
}
/**
* Integer representing the mouse button's action.
*
* @see GLFW#GLFW_PRESS
* @see GLFW#GLFW_RELEASE
*/
public int getAction()
{
return this.action;
}
/**
* Bit field representing the modifier keys pressed.
* https://www.glfw.org/docs/latest/group__mods.html
*
* @see GLFW#GLFW_MOD_SHIFT
* @see GLFW#GLFW_MOD_CONTROL
* @see GLFW#GLFW_MOD_ALT
* @see GLFW#GLFW_MOD_SUPER
*/
public int getMods()
{
return this.mods;
}
}
2019-04-16 01:50:18 +00:00
/**
2019-07-09 02:47:06 +00:00
* This event fires when a mouse input is detected.
2019-04-16 01:50:18 +00:00
*/
public static class MouseInputEvent extends InputEvent
{
private final int button;
private final int action;
private final int mods;
public MouseInputEvent(int button, int action, int mods)
{
this.button = button;
this.action = action;
this.mods = mods;
}
2019-07-09 02:47:06 +00:00
/**
* The mouse button that triggered this event.
* https://www.glfw.org/docs/latest/group__buttons.html
*
* @see GLFW mouse constants starting with "GLFW_MOUSE_BUTTON_"
*/
2019-04-16 01:50:18 +00:00
public int getButton()
{
return this.button;
}
2019-07-09 02:47:06 +00:00
/**
* Integer representing the mouse button's action.
*
* @see GLFW#GLFW_PRESS
* @see GLFW#GLFW_RELEASE
*/
2019-04-16 01:50:18 +00:00
public int getAction()
{
return this.action;
}
2019-07-09 02:47:06 +00:00
/**
* Bit field representing the modifier keys pressed.
* https://www.glfw.org/docs/latest/group__mods.html
*
* @see GLFW#GLFW_MOD_SHIFT
* @see GLFW#GLFW_MOD_CONTROL
* @see GLFW#GLFW_MOD_ALT
* @see GLFW#GLFW_MOD_SUPER
*/
2019-04-16 01:50:18 +00:00
public int getMods()
{
return this.mods;
}
}
/**
* This event fires when the mouse scroll wheel is used outside of a gui.
*/
@Cancelable
public static class MouseScrollEvent extends InputEvent
{
private final double scrollDelta;
private final double mouseX;
private final double mouseY;
private final boolean leftDown;
private final boolean middleDown;
private final boolean rightDown;
public MouseScrollEvent(double scrollDelta, boolean leftDown, boolean middleDown, boolean rightDown, double mouseX, double mouseY)
{
this.scrollDelta = scrollDelta;
this.leftDown = leftDown;
this.middleDown = middleDown;
this.rightDown = rightDown;
this.mouseX = mouseX;
this.mouseY = mouseY;
}
public double getScrollDelta()
{
return this.scrollDelta;
}
public boolean isLeftDown()
{
return this.leftDown;
}
public boolean isRightDown()
{
return this.rightDown;
}
public boolean isMiddleDown()
{
return this.middleDown;
}
public double getMouseX()
{
return this.mouseX;
}
public double getMouseY()
{
return this.mouseY;
}
}
2019-04-16 01:50:18 +00:00
/**
2019-07-09 02:47:06 +00:00
* This event fires when a keyboard input is detected.
2019-04-16 01:50:18 +00:00
*/
public static class KeyInputEvent extends InputEvent
{
private final int key;
private final int scanCode;
private final int action;
private final int modifiers;
public KeyInputEvent(int key, int scanCode, int action, int modifiers)
{
this.key = key;
this.scanCode = scanCode;
this.action = action;
this.modifiers = modifiers;
}
/**
2019-07-09 02:47:06 +00:00
* The keyboard key that triggered this event.
2019-04-16 01:50:18 +00:00
* https://www.glfw.org/docs/latest/group__keys.html
*
* @see GLFW key constants starting with "GLFW_KEY_"
*/
public int getKey()
{
return this.key;
}
/**
* Platform-specific scan code.
* Used for {@link InputMappings#getInputByCode(int, int)}
*
* The scan code is unique for every key, regardless of whether it has a key code.
* Scan codes are platform-specific but consistent over time, so keys will have different scan codes depending
* on the platform but they are safe to save to disk as custom key bindings.
*/
public int getScanCode()
{
return this.scanCode;
}
2019-07-09 02:47:06 +00:00
/**
* Integer representing the key's action.
*
* @see GLFW#GLFW_PRESS
* @see GLFW#GLFW_RELEASE
* @see GLFW#GLFW_REPEAT
*/
2019-04-16 01:50:18 +00:00
public int getAction()
{
return this.action;
}
/**
* Bit field representing the modifier keys pressed.
2019-07-09 02:47:06 +00:00
* https://www.glfw.org/docs/latest/group__mods.html
2019-04-16 01:50:18 +00:00
*
* @see GLFW#GLFW_MOD_SHIFT
* @see GLFW#GLFW_MOD_CONTROL
* @see GLFW#GLFW_MOD_ALT
* @see GLFW#GLFW_MOD_SUPER
*/
public int getModifiers()
{
return this.modifiers;
}
}
}