设置开火键的键位
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;
|
||||
|
||||
int button = event.getButton();
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1));
|
||||
ClientEventHandler.holdFire = false;
|
||||
ClientEventHandler.customRpm = 0;
|
||||
if (button == ModKeyMappings.FIRE.getKey().getValue()) {
|
||||
handleWeaponFireRelease();
|
||||
}
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
|
@ -82,48 +80,17 @@ public class ClickHandler {
|
|||
|
||||
int button = event.getButton();
|
||||
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
|
||||
if (player.hasEffect(ModMobEffects.SHOCK.get())) {
|
||||
if (player.getMainHandItem().is(ModTags.Items.GUN)
|
||||
|| 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);
|
||||
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"))
|
||||
&& !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");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (button == ModKeyMappings.FIRE.getKey().getValue()) {
|
||||
handleWeaponFirePress(player, stack);
|
||||
}
|
||||
|
||||
if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
|
||||
|
@ -233,7 +200,65 @@ public class ClickHandler {
|
|||
if (key == ModKeyMappings.SENSITIVITY_REDUCE.getKey().getValue()) {
|
||||
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() {
|
||||
|
|
|
@ -18,7 +18,6 @@ import net.minecraft.network.syncher.SynchedEntityData;
|
|||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
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.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.network.PacketDistributor;
|
||||
|
@ -82,14 +80,12 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
|
|||
if (state.getBlock() instanceof BellBlock bell) {
|
||||
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;
|
||||
case ENTITY:
|
||||
EntityHitResult entityResult = (EntityHitResult) result;
|
||||
Entity entity = entityResult.getEntity();
|
||||
|
||||
if (entity == this.getOwner()) return;
|
||||
|
||||
if (this.getOwner() instanceof LivingEntity living) {
|
||||
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
ProjectileTool.causeCustomExplode(this, 150f, 4.75f, 2f);
|
||||
if (this.tickCount > 2) {
|
||||
ProjectileTool.causeCustomExplode(this, 150f, 4.75f, 2f);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
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);
|
||||
|
||||
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,
|
||||
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
|
||||
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
||||
event.register(RELOAD);
|
||||
|
@ -94,6 +96,7 @@ public class ModKeyMappings {
|
|||
event.register(EDIT_MAGAZINE);
|
||||
event.register(EDIT_STOCK);
|
||||
event.register(EDIT_GRIP);
|
||||
event.register(FIRE);
|
||||
}
|
||||
|
||||
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.text.DecimalFormat;
|
|||
import java.util.List;
|
||||
|
||||
public class Monitor extends Item {
|
||||
private static CameraType lastCameraType;
|
||||
public static final String LINKED = "Linked";
|
||||
public static final String LINKED_DRONE = "LinkedDrone";
|
||||
|
||||
|
@ -67,11 +68,14 @@ public class Monitor extends Item {
|
|||
if (stack.getOrCreateTag().getBoolean("Using")) {
|
||||
stack.getOrCreateTag().putBoolean("Using", false);
|
||||
if (world.isClientSide) {
|
||||
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
|
||||
if (lastCameraType != null) {
|
||||
Minecraft.getInstance().options.setCameraType(lastCameraType);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
stack.getOrCreateTag().putBoolean("Using", true);
|
||||
if (world.isClientSide) {
|
||||
lastCameraType = Minecraft.getInstance().options.getCameraType();
|
||||
Minecraft.getInstance().options.setCameraType(CameraType.THIRD_PERSON_BACK);
|
||||
}
|
||||
}
|
||||
|
@ -120,7 +124,9 @@ public class Monitor extends Item {
|
|||
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
||||
itemstack.getOrCreateTag().putBoolean("Using", false);
|
||||
if (entity.level().isClientSide) {
|
||||
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
|
||||
if (lastCameraType != null) {
|
||||
Minecraft.getInstance().options.setCameraType(lastCameraType);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.resetDroneData(drone);
|
||||
|
@ -128,7 +134,9 @@ public class Monitor extends Item {
|
|||
if (itemstack.getOrCreateTag().getBoolean("Using")) {
|
||||
itemstack.getOrCreateTag().putBoolean("Using", false);
|
||||
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",
|
||||
|
||||
"key.categories.superbwarfare": "Superb Warfare",
|
||||
"key.superbwarfare.fire": "Fire",
|
||||
"key.superbwarfare.reload": "Reload",
|
||||
"key.superbwarfare.fire_mode": "Fire Mode",
|
||||
"key.superbwarfare.sensitivity_increase": "Increase Sensitivity",
|
||||
|
|
|
@ -333,6 +333,7 @@
|
|||
"entity.superbwarfare.drone": "无人机",
|
||||
|
||||
"key.categories.superbwarfare": "卓越前线",
|
||||
"key.superbwarfare.fire": "开火",
|
||||
"key.superbwarfare.reload": "装填子弹",
|
||||
"key.superbwarfare.fire_mode": "开火模式",
|
||||
"key.superbwarfare.sensitivity_increase": "增加灵敏度",
|
||||
|
|
Loading…
Add table
Reference in a new issue