修改二段跳的实现方式
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.entity.MortarEntity;
|
||||||
import net.mcreator.superbwarfare.init.ModItems;
|
import net.mcreator.superbwarfare.init.ModItems;
|
||||||
import net.mcreator.superbwarfare.init.ModMobEffects;
|
import net.mcreator.superbwarfare.init.ModMobEffects;
|
||||||
|
import net.mcreator.superbwarfare.init.ModSounds;
|
||||||
import net.mcreator.superbwarfare.init.ModTags;
|
import net.mcreator.superbwarfare.init.ModTags;
|
||||||
import net.mcreator.superbwarfare.network.ModVariables;
|
import net.mcreator.superbwarfare.network.ModVariables;
|
||||||
import net.mcreator.superbwarfare.network.message.*;
|
import net.mcreator.superbwarfare.network.message.*;
|
||||||
import net.mcreator.superbwarfare.tools.TraceTool;
|
import net.mcreator.superbwarfare.tools.TraceTool;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
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.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;
|
||||||
|
@ -44,7 +48,7 @@ public class ClickHandler {
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
||||||
}
|
}
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +63,6 @@ public class ClickHandler {
|
||||||
|
|
||||||
Player player = Minecraft.getInstance().player;
|
Player player = Minecraft.getInstance().player;
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|
||||||
if (player.isSpectator()) return;
|
if (player.isSpectator()) return;
|
||||||
|
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
|
@ -67,7 +70,7 @@ public class ClickHandler {
|
||||||
int button = event.getButton();
|
int button = event.getButton();
|
||||||
|
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +78,7 @@ public class ClickHandler {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new DroneFireMessage(0));
|
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);
|
event.setCanceled(true);
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
|
ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
|
||||||
return;
|
return;
|
||||||
|
@ -87,17 +90,17 @@ public class ClickHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
event.setCanceled(true);
|
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);
|
event.setCanceled(true);
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new ZoomMessage(0));
|
ModUtils.PACKET_HANDLER.sendToServer(new ZoomMessage(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_MIDDLE) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_MIDDLE) {
|
||||||
if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) {
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +117,7 @@ public class ClickHandler {
|
||||||
|
|
||||||
double scroll = event.getScrollDelta();
|
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();
|
var tag = stack.getOrCreateTag();
|
||||||
if (tag.getDouble("min_zoom") != 0 && tag.getDouble("max_zoom") != 0) {
|
if (tag.getDouble("min_zoom") != 0 && tag.getDouble("max_zoom") != 0) {
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new AdjustZoomFovMessage(scroll));
|
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;
|
Player player = Minecraft.getInstance().player;
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|
||||||
|
@ -151,16 +164,34 @@ public class ClickHandler {
|
||||||
public static void onKeyPressed(InputEvent.Key event) {
|
public static void onKeyPressed(InputEvent.Key event) {
|
||||||
if (notInGame()) return;
|
if (notInGame()) return;
|
||||||
|
|
||||||
boolean clicked;
|
Player player = Minecraft.getInstance().player;
|
||||||
if (event.getAction() == InputConstants.PRESS) {
|
if (player == null) return;
|
||||||
clicked = true;
|
if (player.isSpectator()) return;
|
||||||
} else if (event.getAction() == InputConstants.RELEASE) {
|
|
||||||
clicked = false;
|
setKeyState(event);
|
||||||
} else {
|
|
||||||
|
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;
|
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);
|
handlePlayerSprint(player);
|
||||||
handleWeaponLevel(player);
|
handleWeaponLevel(player);
|
||||||
handleAmmoCount(player);
|
handleAmmoCount(player);
|
||||||
handleGround(player);
|
|
||||||
handlePrepareZoom(player);
|
handlePrepareZoom(player);
|
||||||
handleSpecialWeaponAmmo(player);
|
handleSpecialWeaponAmmo(player);
|
||||||
handleChangeFireRate(player);
|
handleChangeFireRate(player);
|
||||||
handleBocekPulling(player);
|
handleBocekPulling(player);
|
||||||
handleGunRecoil(player);
|
handleGunRecoil(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleGround(player);
|
||||||
handleDistantRange(player);
|
handleDistantRange(player);
|
||||||
handleSimulationDistance(player);
|
handleSimulationDistance(player);
|
||||||
handleCannonTime(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") {
|
public static final KeyMapping FIRE_MODE = new KeyMapping("key.superbwarfare.fire_mode", GLFW.GLFW_KEY_N, "key.categories.superbwarfare") {
|
||||||
private boolean isDownOld = false;
|
private boolean isDownOld = false;
|
||||||
|
|
||||||
|
@ -201,7 +185,6 @@ public class ModKeyMappings {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
||||||
event.register(RELOAD);
|
event.register(RELOAD);
|
||||||
event.register(DOUBLE_JUMP);
|
|
||||||
event.register(FIRE_MODE);
|
event.register(FIRE_MODE);
|
||||||
event.register(SENSITIVITY_INCREASE);
|
event.register(SENSITIVITY_INCREASE);
|
||||||
event.register(SENSITIVITY_REDUCE);
|
event.register(SENSITIVITY_REDUCE);
|
||||||
|
@ -221,7 +204,6 @@ public class ModKeyMappings {
|
||||||
public static void onClientTick(TickEvent.ClientTickEvent event) {
|
public static void onClientTick(TickEvent.ClientTickEvent event) {
|
||||||
if (Minecraft.getInstance().screen == null) {
|
if (Minecraft.getInstance().screen == null) {
|
||||||
RELOAD.consumeClick();
|
RELOAD.consumeClick();
|
||||||
DOUBLE_JUMP.consumeClick();
|
|
||||||
FIRE_MODE.consumeClick();
|
FIRE_MODE.consumeClick();
|
||||||
SENSITIVITY_INCREASE.consumeClick();
|
SENSITIVITY_INCREASE.consumeClick();
|
||||||
SENSITIVITY_REDUCE.consumeClick();
|
SENSITIVITY_REDUCE.consumeClick();
|
||||||
|
|
|
@ -7,24 +7,23 @@ import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.sounds.SoundSource;
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.phys.Vec3;
|
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class DoubleJumpMessage {
|
public class DoubleJumpMessage {
|
||||||
private final int type;
|
private final boolean canDoubleJump;
|
||||||
|
|
||||||
public DoubleJumpMessage(int type) {
|
public DoubleJumpMessage(boolean canDoubleJump) {
|
||||||
this.type = type;
|
this.canDoubleJump = canDoubleJump;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DoubleJumpMessage decode(FriendlyByteBuf buffer) {
|
public static DoubleJumpMessage decode(FriendlyByteBuf buffer) {
|
||||||
return new DoubleJumpMessage(buffer.readInt());
|
return new DoubleJumpMessage(buffer.readBoolean());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void encode(DoubleJumpMessage message, FriendlyByteBuf buffer) {
|
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) {
|
public static void handler(DoubleJumpMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
|
@ -42,21 +41,12 @@ public class DoubleJumpMessage {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.type == 0) {
|
level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1);
|
||||||
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 -> {
|
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||||
capability.playerDoubleJump = false;
|
capability.playerDoubleJump = message.canDoubleJump;
|
||||||
capability.syncPlayerVariables(player);
|
capability.syncPlayerVariables(player);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
context.setPacketHandled(true);
|
context.setPacketHandled(true);
|
||||||
|
|
|
@ -268,7 +268,6 @@
|
||||||
|
|
||||||
"key.categories.superbwarfare": "Superb Warfare",
|
"key.categories.superbwarfare": "Superb Warfare",
|
||||||
"key.superbwarfare.reload": "Reload",
|
"key.superbwarfare.reload": "Reload",
|
||||||
"key.superbwarfare.double_jump": "Double Jump",
|
|
||||||
"key.superbwarfare.fire_mode": "Fire Mode",
|
"key.superbwarfare.fire_mode": "Fire Mode",
|
||||||
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
||||||
"key.superbwarfare.sensitivity_reduce": "Reduce Sensitivity",
|
"key.superbwarfare.sensitivity_reduce": "Reduce Sensitivity",
|
||||||
|
|
|
@ -268,7 +268,6 @@
|
||||||
|
|
||||||
"key.categories.superbwarfare": "卓越前线",
|
"key.categories.superbwarfare": "卓越前线",
|
||||||
"key.superbwarfare.reload": "装填子弹",
|
"key.superbwarfare.reload": "装填子弹",
|
||||||
"key.superbwarfare.double_jump": "二段跳",
|
|
||||||
"key.superbwarfare.fire_mode": "开火模式",
|
"key.superbwarfare.fire_mode": "开火模式",
|
||||||
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
||||||
"key.superbwarfare.sensitivity_reduce": "减少灵敏度",
|
"key.superbwarfare.sensitivity_reduce": "减少灵敏度",
|
||||||
|
|
Loading…
Add table
Reference in a new issue