设置开火键的键位
This commit is contained in:
parent
f8d4460cdc
commit
f73d7b86f9
7 changed files with 92 additions and 56 deletions
|
@ -55,10 +55,8 @@ public class ClickHandler {
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|
||||||
int button = event.getButton();
|
int button = event.getButton();
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
if (button == ModKeyMappings.FIRE.getKey().getValue()) {
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
handleWeaponFireRelease();
|
||||||
ClientEventHandler.holdFire = false;
|
|
||||||
ClientEventHandler.customRpm = 0;
|
|
||||||
}
|
}
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
|
@ -82,48 +80,17 @@ public class ClickHandler {
|
||||||
|
|
||||||
int button = event.getButton();
|
int button = event.getButton();
|
||||||
|
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
if (player.getMainHandItem().is(ModTags.Items.GUN)
|
||||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
|| stack.is(ModItems.MONITOR.get())
|
||||||
|
|| player.hasEffect(ModMobEffects.SHOCK.get())
|
||||||
|
|| (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem)) {
|
||||||
|
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get())) {
|
}
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new SetFiringParametersMessage(0));
|
|
||||||
}
|
|
||||||
if (stack.is(ModItems.MONITOR.get())) {
|
|
||||||
event.setCanceled(true);
|
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new DroneFireMessage(0));
|
|
||||||
}
|
|
||||||
if (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem) {
|
|
||||||
event.setCanceled(true);
|
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (player.getMainHandItem().is(ModTags.Items.GUN)) {
|
|
||||||
event.setCanceled(true);
|
|
||||||
|
|
||||||
if (stack.is(ModTags.Items.GUN) && (!(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))
|
if (button == ModKeyMappings.FIRE.getKey().getValue()) {
|
||||||
&& !stack.getOrCreateTag().getBoolean("reloading")
|
handleWeaponFirePress(player, stack);
|
||||||
&& !stack.getOrCreateTag().getBoolean("charging")
|
|
||||||
&& !stack.getOrCreateTag().getBoolean("need_bolt_action"))
|
|
||||||
&& cantFireTime == 0
|
|
||||||
&& drawTime < 0.01
|
|
||||||
&& !notInGame()) {
|
|
||||||
player.playSound(ModSounds.TRIGGER_CLICK.get(), 1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stack.is(ModTags.Items.GUN) && !stack.is(ModTags.Items.CANNOT_RELOAD) && stack.getOrCreateTag().getInt("ammo") <= 0) {
|
|
||||||
if (ReloadConfig.LEFT_CLICK_RELOAD.get()) {
|
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new ReloadMessage(0));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(0));
|
|
||||||
ClientEventHandler.holdFire = true;
|
|
||||||
if (GunsTool.getGunIntTag(stack, "FireMode") == 1 && ClientEventHandler.burstFireSize == 0) {
|
|
||||||
ClientEventHandler.burstFireSize = (int) stack.getOrCreateTag().getDouble("burst_size");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||||
|
@ -233,7 +200,65 @@ public class ClickHandler {
|
||||||
if (key == ModKeyMappings.SENSITIVITY_REDUCE.getKey().getValue()) {
|
if (key == ModKeyMappings.SENSITIVITY_REDUCE.getKey().getValue()) {
|
||||||
ModUtils.PACKET_HANDLER.sendToServer(new SensitivityMessage(false));
|
ModUtils.PACKET_HANDLER.sendToServer(new SensitivityMessage(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key == ModKeyMappings.FIRE.getKey().getValue()) {
|
||||||
|
handleWeaponFirePress(player, stack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.getAction() == GLFW.GLFW_RELEASE) {
|
||||||
|
handleWeaponFireRelease();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handleWeaponFirePress (Player player, ItemStack stack) {
|
||||||
|
|
||||||
|
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get())) {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new SetFiringParametersMessage(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack.is(ModItems.MONITOR.get())) {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new DroneFireMessage(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem) {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.getMainHandItem().is(ModTags.Items.GUN)) {
|
||||||
|
if (stack.is(ModTags.Items.GUN) && (!(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))
|
||||||
|
&& !stack.getOrCreateTag().getBoolean("reloading")
|
||||||
|
&& !stack.getOrCreateTag().getBoolean("charging")
|
||||||
|
&& !stack.getOrCreateTag().getBoolean("need_bolt_action"))
|
||||||
|
&& cantFireTime == 0
|
||||||
|
&& drawTime < 0.01
|
||||||
|
&& !notInGame()) {
|
||||||
|
player.playSound(ModSounds.TRIGGER_CLICK.get(), 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stack.is(ModTags.Items.GUN) && !stack.is(ModTags.Items.CANNOT_RELOAD) && stack.getOrCreateTag().getInt("ammo") <= 0) {
|
||||||
|
if (ReloadConfig.LEFT_CLICK_RELOAD.get()) {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new ReloadMessage(0));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(0));
|
||||||
|
ClientEventHandler.holdFire = true;
|
||||||
|
if (GunsTool.getGunIntTag(stack, "FireMode") == 1 && ClientEventHandler.burstFireSize == 0) {
|
||||||
|
ClientEventHandler.burstFireSize = (int) stack.getOrCreateTag().getDouble("burst_size");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handleWeaponFireRelease () {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
||||||
|
ClientEventHandler.holdFire = false;
|
||||||
|
ClientEventHandler.customRpm = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void editModelShake() {
|
private static void editModelShake() {
|
||||||
|
|
|
@ -18,7 +18,6 @@ import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
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.entity.Entity;
|
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
||||||
|
@ -27,7 +26,6 @@ import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.BellBlock;
|
import net.minecraft.world.level.block.BellBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.EntityHitResult;
|
|
||||||
import net.minecraft.world.phys.HitResult;
|
import net.minecraft.world.phys.HitResult;
|
||||||
import net.minecraftforge.network.NetworkHooks;
|
import net.minecraftforge.network.NetworkHooks;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
|
@ -82,14 +80,12 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
|
||||||
if (state.getBlock() instanceof BellBlock bell) {
|
if (state.getBlock() instanceof BellBlock bell) {
|
||||||
bell.attemptToRing(this.level(), resultPos, blockResult.getDirection());
|
bell.attemptToRing(this.level(), resultPos, blockResult.getDirection());
|
||||||
}
|
}
|
||||||
ProjectileTool.causeCustomExplode(this, 135f, 6.75f, 1.5f);
|
if (this.tickCount > 2) {
|
||||||
|
ProjectileTool.causeCustomExplode(this, 135f, 6.75f, 1.5f);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ENTITY:
|
case ENTITY:
|
||||||
EntityHitResult entityResult = (EntityHitResult) result;
|
|
||||||
Entity entity = entityResult.getEntity();
|
|
||||||
|
|
||||||
if (entity == this.getOwner()) return;
|
|
||||||
|
|
||||||
if (this.getOwner() instanceof LivingEntity living) {
|
if (this.getOwner() instanceof LivingEntity living) {
|
||||||
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
||||||
living.level().playSound(null, living.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1);
|
living.level().playSound(null, living.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1);
|
||||||
|
@ -97,7 +93,9 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
|
||||||
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5));
|
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ProjectileTool.causeCustomExplode(this, 150f, 4.75f, 2f);
|
if (this.tickCount > 2) {
|
||||||
|
ProjectileTool.causeCustomExplode(this, 150f, 4.75f, 2f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -243,7 +243,7 @@ public class ClientEventHandler {
|
||||||
|
|
||||||
double spread = stack.is(ModTags.Items.SHOTGUN) || stack.is(ModItems.MINIGUN.get()) ? 1.2 * zoomSpread * (basicDev + 0.2 * (walk + sprint + crouching + prone + jump + ride) + fireSpread) : zoomSpread * (0.7 * basicDev + walk + sprint + crouching + prone + jump + ride + 0.8 * fireSpread);
|
double spread = stack.is(ModTags.Items.SHOTGUN) || stack.is(ModItems.MINIGUN.get()) ? 1.2 * zoomSpread * (basicDev + 0.2 * (walk + sprint + crouching + prone + jump + ride) + fireSpread) : zoomSpread * (0.7 * basicDev + walk + sprint + crouching + prone + jump + ride + 0.8 * fireSpread);
|
||||||
|
|
||||||
gunSpread = Mth.lerp(0.07 * times, gunSpread, spread);
|
gunSpread = Mth.lerp(0.14 * times, gunSpread, spread);
|
||||||
|
|
||||||
// 开火部分
|
// 开火部分
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,8 @@ public class ModKeyMappings {
|
||||||
public static final KeyMapping EDIT_GRIP = new KeyMapping("key.superbwarfare.edit_grip", KeyConflictContext.IN_GAME,
|
public static final KeyMapping EDIT_GRIP = new KeyMapping("key.superbwarfare.edit_grip", KeyConflictContext.IN_GAME,
|
||||||
KeyModifier.SHIFT, InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_DOWN, "key.categories.superbwarfare");
|
KeyModifier.SHIFT, InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_DOWN, "key.categories.superbwarfare");
|
||||||
|
|
||||||
|
public static final KeyMapping FIRE = new KeyMapping("key.superbwarfare.fire", InputConstants.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_LEFT, "key.categories.superbwarfare");
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
||||||
event.register(RELOAD);
|
event.register(RELOAD);
|
||||||
|
@ -94,6 +96,7 @@ public class ModKeyMappings {
|
||||||
event.register(EDIT_MAGAZINE);
|
event.register(EDIT_MAGAZINE);
|
||||||
event.register(EDIT_STOCK);
|
event.register(EDIT_STOCK);
|
||||||
event.register(EDIT_GRIP);
|
event.register(EDIT_GRIP);
|
||||||
|
event.register(FIRE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
||||||
|
|
|
@ -28,6 +28,7 @@ import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Monitor extends Item {
|
public class Monitor extends Item {
|
||||||
|
private static CameraType lastCameraType;
|
||||||
public static final String LINKED = "Linked";
|
public static final String LINKED = "Linked";
|
||||||
public static final String LINKED_DRONE = "LinkedDrone";
|
public static final String LINKED_DRONE = "LinkedDrone";
|
||||||
|
|
||||||
|
@ -67,11 +68,14 @@ public class Monitor extends Item {
|
||||||
if (stack.getOrCreateTag().getBoolean("Using")) {
|
if (stack.getOrCreateTag().getBoolean("Using")) {
|
||||||
stack.getOrCreateTag().putBoolean("Using", false);
|
stack.getOrCreateTag().putBoolean("Using", false);
|
||||||
if (world.isClientSide) {
|
if (world.isClientSide) {
|
||||||
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
|
if (lastCameraType != null) {
|
||||||
|
Minecraft.getInstance().options.setCameraType(lastCameraType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
stack.getOrCreateTag().putBoolean("Using", true);
|
stack.getOrCreateTag().putBoolean("Using", true);
|
||||||
if (world.isClientSide) {
|
if (world.isClientSide) {
|
||||||
|
lastCameraType = Minecraft.getInstance().options.getCameraType();
|
||||||
Minecraft.getInstance().options.setCameraType(CameraType.THIRD_PERSON_BACK);
|
Minecraft.getInstance().options.setCameraType(CameraType.THIRD_PERSON_BACK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,7 +124,9 @@ public class Monitor extends Item {
|
||||||
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
||||||
itemstack.getOrCreateTag().putBoolean("Using", false);
|
itemstack.getOrCreateTag().putBoolean("Using", false);
|
||||||
if (entity.level().isClientSide) {
|
if (entity.level().isClientSide) {
|
||||||
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
|
if (lastCameraType != null) {
|
||||||
|
Minecraft.getInstance().options.setCameraType(lastCameraType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.resetDroneData(drone);
|
this.resetDroneData(drone);
|
||||||
|
@ -128,7 +134,9 @@ public class Monitor extends Item {
|
||||||
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
||||||
itemstack.getOrCreateTag().putBoolean("Using", false);
|
itemstack.getOrCreateTag().putBoolean("Using", false);
|
||||||
if (entity.level().isClientSide) {
|
if (entity.level().isClientSide) {
|
||||||
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
|
if (lastCameraType != null) {
|
||||||
|
Minecraft.getInstance().options.setCameraType(lastCameraType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -333,6 +333,7 @@
|
||||||
"entity.superbwarfare.drone": "Drone",
|
"entity.superbwarfare.drone": "Drone",
|
||||||
|
|
||||||
"key.categories.superbwarfare": "Superb Warfare",
|
"key.categories.superbwarfare": "Superb Warfare",
|
||||||
|
"key.superbwarfare.fire": "Fire",
|
||||||
"key.superbwarfare.reload": "Reload",
|
"key.superbwarfare.reload": "Reload",
|
||||||
"key.superbwarfare.fire_mode": "Fire Mode",
|
"key.superbwarfare.fire_mode": "Fire Mode",
|
||||||
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
||||||
|
|
|
@ -333,6 +333,7 @@
|
||||||
"entity.superbwarfare.drone": "无人机",
|
"entity.superbwarfare.drone": "无人机",
|
||||||
|
|
||||||
"key.categories.superbwarfare": "卓越前线",
|
"key.categories.superbwarfare": "卓越前线",
|
||||||
|
"key.superbwarfare.fire": "开火",
|
||||||
"key.superbwarfare.reload": "装填子弹",
|
"key.superbwarfare.reload": "装填子弹",
|
||||||
"key.superbwarfare.fire_mode": "开火模式",
|
"key.superbwarfare.fire_mode": "开火模式",
|
||||||
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
||||||
|
|
Loading…
Add table
Reference in a new issue