주로
Fabric 키 바인딩의 예시와 함수화 본문
반응형
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import org.lwjgl.glfw.GLFW;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
public class Client implements ClientModInitializer {
private static final MinecraftClient client = MinecraftClient.getInstance();
private static KeyBinding exampleKeyBinding;
@Override
public void onInitializeClient() {
// 키바인딩 등록 (GLFW.GLFW_KEY_G는 기본 G 키)
exampleKeyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding(
"key.examplemod.example_action", // 키바인딩 이름 (번역 키)
InputUtil.Type.KEYSYM, // 입력 타입 (키보드, 마우스 등)
GLFW.GLFW_KEY_G, // 기본 키 값 (여기서는 G)
"category.examplemod.bindings" // 카테고리 이름 (설정 메뉴에서 나타나는 위치)
));
// 클라이언트 틱 이벤트 등록
ClientTickEvents.END_CLIENT_TICK.register(client -> {
// 키가 눌렸는지 확인
if (exampleKeyBinding.wasPressed()) {
// 키가 눌렸을 때 실행할 코드
client.player.sendMessage(Text.literal("G key was pressed!"), false);
}
});
}
}
함수화(?), 클래스화.
KeyBindingManager.java
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
public class KeyBindingManager {
@FunctionalInterface
public interface KeyAction {
void execute();
}
public static void registerKeyBinding(String description, int keyType, KeyAction action) {
// 키 바인딩을 생성
KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding(
description, // 키 설명
InputUtil.Type.KEYSYM, // 키 타입
keyType, // 키 번호 (예: GLFW.GLFW_KEY_O)
"Category" // 카테고리
));
// Fabric API를 통해 키 이벤트 처리
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (keyBinding.wasPressed()) {
action.execute(); // 키가 눌렸을 때 전달된 함수 실행
}
});
}
}
MainClient.java
package com.mineplanetmod.main.client;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.MinecraftClient;
import org.lwjgl.glfw.GLFW;
public class mainClient implements ClientModInitializer {
private static final MinecraftClient client = MinecraftClient.getInstance();
@Override
public void onInitializeClient() {
KeyBindingManager.registerKeyBinding("ALERT 'G' PRESSED",GLFW.GLFW_KEY_G, XarvisalphaClient::f);
}
private static void f()
{
Utilities.sendClientChatMessage(client, "'G' KEY PRESSED");
}
}
반응형
'게임 > 마인크래프트' 카테고리의 다른 글
[fabric] 윈도우 메시지를 통한 키보드/마우스 간단한 제어 예시 (0) | 2024.10.01 |
---|---|
JAVA(fabric) 특정 문자열을 포함한 윈도우 핸들 구하기 (0) | 2024.10.01 |
[명령어] 인챈트 코드 및 설명 (1.20.5 버전 이상) (3) | 2024.07.22 |
[명령어] 1.13 이상 커멘드블록(반응형) 사용법 (0) | 2021.05.02 |
[명령어] 인챈트 코드 및 설명 (1.13 버전 이상) (19) | 2019.08.27 |
Comments