优化按键处理实现
This commit is contained in:
parent
d6da3afd7c
commit
c08a164e11
3 changed files with 41 additions and 100 deletions
|
@ -2,13 +2,10 @@ package net.mcreator.target.client;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.InputConstants;
|
import com.mojang.blaze3d.platform.InputConstants;
|
||||||
import net.mcreator.target.TargetMod;
|
import net.mcreator.target.TargetMod;
|
||||||
|
import net.mcreator.target.init.TargetModTags;
|
||||||
import net.mcreator.target.network.FireMessage;
|
import net.mcreator.target.network.FireMessage;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.tags.ItemTags;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.client.event.InputEvent;
|
import net.minecraftforge.client.event.InputEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
@ -17,124 +14,68 @@ import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
|
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
|
||||||
public class ClickHandler {
|
public class ClickHandler {
|
||||||
private static boolean isInGame() {
|
private static boolean notInGame() {
|
||||||
Minecraft mc = Minecraft.getInstance();
|
Minecraft mc = Minecraft.getInstance();
|
||||||
if (mc.player == null)
|
if (mc.player == null) return true;
|
||||||
return false;
|
if (mc.getOverlay() != null) return true;
|
||||||
if (mc.getOverlay() != null)
|
if (mc.screen != null) return true;
|
||||||
return false;
|
if (!mc.mouseHandler.isMouseGrabbed()) return true;
|
||||||
if (mc.screen != null)
|
return !mc.isWindowActive();
|
||||||
return false;
|
|
||||||
if (!mc.mouseHandler.isMouseGrabbed())
|
|
||||||
return false;
|
|
||||||
return mc.isWindowActive();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onKeyReleased(InputEvent.MouseButton.Pre event) {
|
public static void onKeyReleased(InputEvent.MouseButton.Pre event) {
|
||||||
if (!isInGame()) {
|
if (notInGame()) return;
|
||||||
return;
|
if (event.getAction() != InputConstants.RELEASE) return;
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getAction() != InputConstants.RELEASE) {
|
Player player = Minecraft.getInstance().player;
|
||||||
return;
|
if (player == null) return;
|
||||||
}
|
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
|
||||||
Player player = mc.player;
|
|
||||||
if (player == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int button = event.getButton();
|
int button = event.getButton();
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||||
TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onKeyPressed(InputEvent.MouseButton.Pre event) {
|
public static void onKeyPressed(InputEvent.MouseButton.Pre event) {
|
||||||
if (!isInGame()) {
|
if (notInGame()) return;
|
||||||
return;
|
if (event.getAction() != InputConstants.PRESS) return;
|
||||||
}
|
|
||||||
|
|
||||||
if (event.getAction() != InputConstants.PRESS) {
|
Player player = Minecraft.getInstance().player;
|
||||||
return;
|
if (player == null) return;
|
||||||
}
|
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
|
||||||
Player player = mc.player;
|
|
||||||
if (player == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack heldItem = player.getMainHandItem();
|
|
||||||
|
|
||||||
int button = event.getButton();
|
int button = event.getButton();
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT && player.getMainHandItem().is(TargetModTags.Items.GUN)) {
|
||||||
if ((player.getMainHandItem()).is(ItemTags.create(new ResourceLocation("target:gun")))) {
|
event.setCanceled(true);
|
||||||
event.setCanceled(true);
|
TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(0));
|
||||||
TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(0));
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setKeyState(int key, int state) {
|
||||||
|
Player player = Minecraft.getInstance().player;
|
||||||
|
if (player == null) return;
|
||||||
|
|
||||||
|
var data = player.getPersistentData();
|
||||||
|
switch (key) {
|
||||||
|
case GLFW.GLFW_KEY_D -> data.putDouble("move_left", state);
|
||||||
|
case GLFW.GLFW_KEY_A -> data.putDouble("move_right", state);
|
||||||
|
case GLFW.GLFW_KEY_W -> data.putDouble("move_forward", state);
|
||||||
|
case GLFW.GLFW_KEY_S -> data.putDouble("move_backward", state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onKeyPressed(InputEvent.Key event) {
|
public static void onKeyPressed(InputEvent.Key event) {
|
||||||
if (!isInGame()) {
|
if (notInGame()) return;
|
||||||
return;
|
if (event.getAction() != InputConstants.PRESS) return;
|
||||||
}
|
setKeyState(event.getKey(), 1);
|
||||||
|
|
||||||
if (event.getAction() != InputConstants.PRESS) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
|
||||||
Player player = mc.player;
|
|
||||||
|
|
||||||
int button = event.getKey();
|
|
||||||
CompoundTag persistentData = player.getPersistentData();
|
|
||||||
if (button == GLFW.GLFW_KEY_D) {
|
|
||||||
persistentData.putDouble("mover", 1);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_A) {
|
|
||||||
persistentData.putDouble("movel", 1);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_W) {
|
|
||||||
persistentData.putDouble("qian", 1);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_W) {
|
|
||||||
persistentData.putDouble("tui", 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onKeyReleased(InputEvent.Key event) {
|
public static void onKeyReleased(InputEvent.Key event) {
|
||||||
if (!isInGame()) {
|
if (notInGame()) return;
|
||||||
return;
|
if (event.getAction() != InputConstants.RELEASE) return;
|
||||||
}
|
setKeyState(event.getKey(), 0);
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getInstance();
|
|
||||||
Player player = mc.player;
|
|
||||||
|
|
||||||
if (event.getAction() != InputConstants.RELEASE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int button = event.getKey();
|
|
||||||
CompoundTag persistentData = player.getPersistentData();
|
|
||||||
if (button == GLFW.GLFW_KEY_D) {
|
|
||||||
persistentData.putDouble("mover", 0);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_A) {
|
|
||||||
persistentData.putDouble("movel", 0);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_W) {
|
|
||||||
persistentData.putDouble("qian", 0);
|
|
||||||
}
|
|
||||||
if (button == GLFW.GLFW_KEY_W) {
|
|
||||||
persistentData.putDouble("tui", 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -47,11 +47,11 @@ public class ClientEventHandler {
|
||||||
entity.getPersistentData().putDouble("move", ((entity.getPersistentData().getDouble("move") - 1 * times * Math.pow(entity.getPersistentData().getDouble("move"), 2) * (1 - 1 * entity.getPersistentData().getDouble("zoomtime")))
|
entity.getPersistentData().putDouble("move", ((entity.getPersistentData().getDouble("move") - 1 * times * Math.pow(entity.getPersistentData().getDouble("move"), 2) * (1 - 1 * entity.getPersistentData().getDouble("zoomtime")))
|
||||||
* (1 - 1 * entity.getPersistentData().getDouble("zoomtime"))));
|
* (1 - 1 * entity.getPersistentData().getDouble("zoomtime"))));
|
||||||
}
|
}
|
||||||
if (entity.getPersistentData().getDouble("movel") == 1) {
|
if (entity.getPersistentData().getDouble("move_right") == 1) {
|
||||||
entity.getPersistentData().putDouble("move",
|
entity.getPersistentData().putDouble("move",
|
||||||
((entity.getPersistentData().getDouble("move") + Math.pow(Math.abs(entity.getPersistentData().getDouble("move")) + 0.05, 2) * 0.2 * times * (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime")))
|
((entity.getPersistentData().getDouble("move") + Math.pow(Math.abs(entity.getPersistentData().getDouble("move")) + 0.05, 2) * 0.2 * times * (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime")))
|
||||||
* (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime"))));
|
* (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime"))));
|
||||||
} else if (entity.getPersistentData().getDouble("mover") == 1) {
|
} else if (entity.getPersistentData().getDouble("move_left") == 1) {
|
||||||
entity.getPersistentData().putDouble("move",
|
entity.getPersistentData().putDouble("move",
|
||||||
((entity.getPersistentData().getDouble("move") - Math.pow(Math.abs(entity.getPersistentData().getDouble("move")) + 0.05, 2) * 0.2 * times * (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime")))
|
((entity.getPersistentData().getDouble("move") - Math.pow(Math.abs(entity.getPersistentData().getDouble("move")) + 0.05, 2) * 0.2 * times * (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime")))
|
||||||
* (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime"))));
|
* (1 - 0.1 * entity.getPersistentData().getDouble("zoomtime"))));
|
||||||
|
|
|
@ -64,8 +64,8 @@ public class GunEventHandler {
|
||||||
double ride = player.isPassenger() ? (-0.5) * basic : 0;
|
double ride = player.isPassenger() ? (-0.5) * basic : 0;
|
||||||
|
|
||||||
double walk;
|
double walk;
|
||||||
if (player.getPersistentData().getDouble("qian") == 1 || player.getPersistentData().getDouble("tui") == 1 ||
|
if (player.getPersistentData().getDouble("move_forward") == 1 || player.getPersistentData().getDouble("move_backward") == 1 ||
|
||||||
player.getPersistentData().getDouble("mover") == 1 || player.getPersistentData().getDouble("movel") == 1) {
|
player.getPersistentData().getDouble("move_left") == 1 || player.getPersistentData().getDouble("move_right") == 1) {
|
||||||
walk = 0.2 * basic;
|
walk = 0.2 * basic;
|
||||||
} else {
|
} else {
|
||||||
walk = 0;
|
walk = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue