修改二段跳的实现方式
This commit is contained in:
parent
b79a67cf60
commit
15f2319ea6
6 changed files with 59 additions and 57 deletions
|
@ -6,14 +6,18 @@ import net.mcreator.superbwarfare.entity.ICannonEntity;
|
|||
import net.mcreator.superbwarfare.entity.MortarEntity;
|
||||
import net.mcreator.superbwarfare.init.ModItems;
|
||||
import net.mcreator.superbwarfare.init.ModMobEffects;
|
||||
import net.mcreator.superbwarfare.init.ModSounds;
|
||||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.mcreator.superbwarfare.network.ModVariables;
|
||||
import net.mcreator.superbwarfare.network.message.*;
|
||||
import net.mcreator.superbwarfare.tools.TraceTool;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.InputEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -44,7 +48,7 @@ public class ClickHandler {
|
|||
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
||||
}
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
|
||||
|
@ -59,7 +63,6 @@ public class ClickHandler {
|
|||
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
|
||||
if (player.isSpectator()) return;
|
||||
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
@ -67,7 +70,7 @@ public class ClickHandler {
|
|||
int button = event.getButton();
|
||||
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
event.setCanceled(true);
|
||||
return;
|
||||
}
|
||||
|
@ -75,7 +78,7 @@ public class ClickHandler {
|
|||
event.setCanceled(true);
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new DroneFireMessage(0));
|
||||
}
|
||||
if (player.getVehicle() != null && (player.getVehicle() instanceof ICannonEntity)) {
|
||||
if (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity) {
|
||||
event.setCanceled(true);
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
|
||||
return;
|
||||
|
@ -87,17 +90,17 @@ public class ClickHandler {
|
|||
}
|
||||
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.isPassenger() && (player.getVehicle() instanceof ICannonEntity))) {
|
||||
if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.isPassenger() && player.getVehicle() instanceof ICannonEntity)) {
|
||||
event.setCanceled(true);
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new ZoomMessage(0));
|
||||
}
|
||||
}
|
||||
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_MIDDLE) {
|
||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
@ -114,7 +117,7 @@ public class ClickHandler {
|
|||
|
||||
double scroll = event.getScrollDelta();
|
||||
|
||||
if (stack.is(ModTags.Items.GUN) && (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) {
|
||||
if (stack.is(ModTags.Items.GUN) && player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom) {
|
||||
var tag = stack.getOrCreateTag();
|
||||
if (tag.getDouble("min_zoom") != 0 && tag.getDouble("max_zoom") != 0) {
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new AdjustZoomFovMessage(scroll));
|
||||
|
@ -134,7 +137,17 @@ public class ClickHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private static void setKeyState(int key, int state) {
|
||||
private static void setKeyState(InputEvent.Key event) {
|
||||
int key = event.getKey();
|
||||
int state;
|
||||
if (event.getAction() == InputConstants.PRESS) {
|
||||
state = 1;
|
||||
} else if (event.getAction() == InputConstants.RELEASE) {
|
||||
state = 0;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
|
||||
|
@ -151,16 +164,34 @@ public class ClickHandler {
|
|||
public static void onKeyPressed(InputEvent.Key event) {
|
||||
if (notInGame()) return;
|
||||
|
||||
boolean clicked;
|
||||
if (event.getAction() == InputConstants.PRESS) {
|
||||
clicked = true;
|
||||
} else if (event.getAction() == InputConstants.RELEASE) {
|
||||
clicked = false;
|
||||
} else {
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
if (player.isSpectator()) return;
|
||||
|
||||
setKeyState(event);
|
||||
|
||||
int key = event.getKey();
|
||||
if (key == Minecraft.getInstance().options.keyJump.getKey().getValue()) {
|
||||
handleDoubleJump(player);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleDoubleJump(Player player) {
|
||||
Level level = player.level();
|
||||
double x = player.getX();
|
||||
double y = player.getY();
|
||||
double z = player.getZ();
|
||||
|
||||
if (!level.isLoaded(player.blockPosition())) {
|
||||
return;
|
||||
}
|
||||
|
||||
setKeyState(event.getKey(), clicked ? 1 : 0);
|
||||
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).playerDoubleJump) {
|
||||
player.setDeltaMovement(new Vec3(player.getLookAngle().x, 0.8, player.getLookAngle().z));
|
||||
level.playLocalSound(x, y, z, ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1, false);
|
||||
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(false));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -87,13 +87,14 @@ public class PlayerEventHandler {
|
|||
handlePlayerSprint(player);
|
||||
handleWeaponLevel(player);
|
||||
handleAmmoCount(player);
|
||||
handleGround(player);
|
||||
handlePrepareZoom(player);
|
||||
handleSpecialWeaponAmmo(player);
|
||||
handleChangeFireRate(player);
|
||||
handleBocekPulling(player);
|
||||
handleGunRecoil(player);
|
||||
}
|
||||
|
||||
handleGround(player);
|
||||
handleDistantRange(player);
|
||||
handleSimulationDistance(player);
|
||||
handleCannonTime(player);
|
||||
|
|
|
@ -26,22 +26,6 @@ public class ModKeyMappings {
|
|||
}
|
||||
};
|
||||
|
||||
public static final KeyMapping DOUBLE_JUMP = new KeyMapping("key.superbwarfare.double_jump", GLFW.GLFW_KEY_SPACE, "key.categories.superbwarfare") {
|
||||
private boolean isDownOld = false;
|
||||
|
||||
@Override
|
||||
public void setDown(boolean isDown) {
|
||||
super.setDown(isDown);
|
||||
if (isDownOld != isDown && isDown) {
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(0));
|
||||
// if (Minecraft.getInstance().player != null) {
|
||||
// DoubleJumpMessage.pressAction(Minecraft.getInstance().player, 0);
|
||||
// }
|
||||
}
|
||||
isDownOld = isDown;
|
||||
}
|
||||
};
|
||||
|
||||
public static final KeyMapping FIRE_MODE = new KeyMapping("key.superbwarfare.fire_mode", GLFW.GLFW_KEY_N, "key.categories.superbwarfare") {
|
||||
private boolean isDownOld = false;
|
||||
|
||||
|
@ -201,7 +185,6 @@ public class ModKeyMappings {
|
|||
@SubscribeEvent
|
||||
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
||||
event.register(RELOAD);
|
||||
event.register(DOUBLE_JUMP);
|
||||
event.register(FIRE_MODE);
|
||||
event.register(SENSITIVITY_INCREASE);
|
||||
event.register(SENSITIVITY_REDUCE);
|
||||
|
@ -221,7 +204,6 @@ public class ModKeyMappings {
|
|||
public static void onClientTick(TickEvent.ClientTickEvent event) {
|
||||
if (Minecraft.getInstance().screen == null) {
|
||||
RELOAD.consumeClick();
|
||||
DOUBLE_JUMP.consumeClick();
|
||||
FIRE_MODE.consumeClick();
|
||||
SENSITIVITY_INCREASE.consumeClick();
|
||||
SENSITIVITY_REDUCE.consumeClick();
|
||||
|
|
|
@ -7,24 +7,23 @@ import net.minecraft.network.FriendlyByteBuf;
|
|||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class DoubleJumpMessage {
|
||||
private final int type;
|
||||
private final boolean canDoubleJump;
|
||||
|
||||
public DoubleJumpMessage(int type) {
|
||||
this.type = type;
|
||||
public DoubleJumpMessage(boolean canDoubleJump) {
|
||||
this.canDoubleJump = canDoubleJump;
|
||||
}
|
||||
|
||||
public static DoubleJumpMessage decode(FriendlyByteBuf buffer) {
|
||||
return new DoubleJumpMessage(buffer.readInt());
|
||||
return new DoubleJumpMessage(buffer.readBoolean());
|
||||
}
|
||||
|
||||
public static void encode(DoubleJumpMessage message, FriendlyByteBuf buffer) {
|
||||
buffer.writeInt(message.type);
|
||||
buffer.writeBoolean(message.canDoubleJump);
|
||||
}
|
||||
|
||||
public static void handler(DoubleJumpMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
|
||||
|
@ -42,22 +41,13 @@ public class DoubleJumpMessage {
|
|||
return;
|
||||
}
|
||||
|
||||
if (message.type == 0) {
|
||||
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).playerDoubleJump) {
|
||||
player.setDeltaMovement(new Vec3(player.getLookAngle().x, 0.8, player.getLookAngle().z));
|
||||
if (!level.isClientSide()) {
|
||||
level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1);
|
||||
} else {
|
||||
level.playLocalSound(x, y, z, ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1, false);
|
||||
}
|
||||
|
||||
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.playerDoubleJump = false;
|
||||
capability.playerDoubleJump = message.canDoubleJump;
|
||||
capability.syncPlayerVariables(player);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
context.setPacketHandled(true);
|
||||
}
|
||||
|
|
|
@ -268,7 +268,6 @@
|
|||
|
||||
"key.categories.superbwarfare": "Superb Warfare",
|
||||
"key.superbwarfare.reload": "Reload",
|
||||
"key.superbwarfare.double_jump": "Double Jump",
|
||||
"key.superbwarfare.fire_mode": "Fire Mode",
|
||||
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
||||
"key.superbwarfare.sensitivity_reduce": "Reduce Sensitivity",
|
||||
|
|
|
@ -268,7 +268,6 @@
|
|||
|
||||
"key.categories.superbwarfare": "卓越前线",
|
||||
"key.superbwarfare.reload": "装填子弹",
|
||||
"key.superbwarfare.double_jump": "二段跳",
|
||||
"key.superbwarfare.fire_mode": "开火模式",
|
||||
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
||||
"key.superbwarfare.sensitivity_reduce": "减少灵敏度",
|
||||
|
|
Loading…
Add table
Reference in a new issue