移除vector爆发开火procedure,,添加了射击模式选择的data和通用的射击模式切换的方法
This commit is contained in:
parent
9bb6400b55
commit
e6f6bd0679
29 changed files with 221 additions and 114 deletions
|
@ -111,23 +111,35 @@ public class GunEventHandler {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (stack.is(TargetModTags.Items.NORMAL_GUN)) {
|
||||
double mode = stack.getOrCreateTag().getInt("fire_mode");
|
||||
|
||||
int interval = stack.getOrCreateTag().getInt("fire_interval");
|
||||
|
||||
if (!player.getPersistentData().getBoolean("firing") && player.getMainHandItem().getItem() == TargetModItems.DEVOTION.get()) {
|
||||
stack.getOrCreateTag().putDouble("fire_increase", 0);
|
||||
}
|
||||
|
||||
if (player.getPersistentData().getBoolean("firing")
|
||||
if (stack.getOrCreateTag().getInt("ammo") == 0) {
|
||||
stack.getOrCreateTag().putInt("burst_fire", 0);
|
||||
}
|
||||
|
||||
if ((player.getPersistentData().getBoolean("firing") || stack.getOrCreateTag().getInt("burst_fire") > 0)
|
||||
&& !stack.getOrCreateTag().getBoolean("reloading")
|
||||
&& stack.getOrCreateTag().getInt("ammo") > 0
|
||||
&& !player.getCooldowns().isOnCooldown(stack.getItem())
|
||||
&& mode != 1
|
||||
&& stack.getOrCreateTag().getDouble("need_bolt_action") == 0) {
|
||||
|
||||
playGunSounds(player);
|
||||
|
||||
if (stack.getOrCreateTag().getInt("fire_mode") == 0) {
|
||||
if (mode == 0) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
}
|
||||
|
||||
int burst_cooldown = 0;
|
||||
if (mode == 1) {
|
||||
stack.getOrCreateTag().putInt("burst_fire", (stack.getOrCreateTag().getInt("burst_fire") - 1));
|
||||
burst_cooldown = stack.getOrCreateTag().getInt("burst_fire") == 0 ? interval + 4 : 0;
|
||||
}
|
||||
|
||||
if (stack.getOrCreateTag().getDouble("animindex") == 1) {
|
||||
stack.getOrCreateTag().putDouble("animindex", 0);
|
||||
} else {
|
||||
|
@ -145,8 +157,8 @@ public class GunEventHandler {
|
|||
}
|
||||
|
||||
stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1));
|
||||
stack.getOrCreateTag().putInt("fire_animation", stack.getOrCreateTag().getInt("fire_interval"));
|
||||
player.getPersistentData().putInt("noRun_time", stack.getOrCreateTag().getInt("fire_interval") + 2);
|
||||
stack.getOrCreateTag().putInt("fire_animation", interval);
|
||||
player.getPersistentData().putInt("noRun_time", interval + 2);
|
||||
stack.getOrCreateTag().putDouble("flash_time", 2);
|
||||
stack.getOrCreateTag().putDouble("empty", 1);
|
||||
|
||||
|
@ -183,7 +195,7 @@ public class GunEventHandler {
|
|||
stack.getOrCreateTag().putDouble("crot", 20);
|
||||
}
|
||||
|
||||
int cooldown = (int) stack.getOrCreateTag().getDouble("fire_interval") + (int) stack.getOrCreateTag().getDouble("fire_sequence") - (int) stack.getOrCreateTag().getDouble("fire_increase");
|
||||
int cooldown = interval + (int) stack.getOrCreateTag().getDouble("fire_sequence") - (int) stack.getOrCreateTag().getDouble("fire_increase") + burst_cooldown;
|
||||
player.getCooldowns().addCooldown(stack.getItem(), cooldown);
|
||||
|
||||
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) {
|
||||
|
|
|
@ -84,42 +84,6 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
transformType = type;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void handleBurstFire(TickEvent.PlayerTickEvent event) {
|
||||
if (event.phase != TickEvent.Phase.END) return;
|
||||
|
||||
var player = event.player;
|
||||
ItemStack mainHandItem = player.getMainHandItem();
|
||||
CompoundTag tag = mainHandItem.getOrCreateTag();
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)) {
|
||||
if (tag.getInt("fire_mode") == 1) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
}
|
||||
if (tag.getInt("ammo") == 0) {
|
||||
tag.putDouble("burst", 0);
|
||||
}
|
||||
}
|
||||
Item item = mainHandItem.getItem();
|
||||
if (item == TargetModItems.VECTOR.get()
|
||||
&& !tag.getBoolean("reloading")
|
||||
&& tag.getInt("ammo") > 0
|
||||
&& !player.getCooldowns().isOnCooldown(item)
|
||||
&& tag.getDouble("burst") > 0
|
||||
) {
|
||||
player.getCooldowns().addCooldown(item, tag.getDouble("burst") == 1 ? 5 : 1);
|
||||
tag.putDouble("burst", tag.getDouble("burst") - 1);
|
||||
tag.putInt("fire_animation", 2);
|
||||
tag.putInt("ammo", (tag.getInt("ammo") - 1));
|
||||
|
||||
GunsTool.spawnBullet(player);
|
||||
|
||||
player.level().playSound(null, player.blockPosition(), TargetModSounds.VECTOR_FIRE_1P.get(), SoundSource.PLAYERS, 2, 1);
|
||||
player.level().playSound(null, player.blockPosition(), TargetModSounds.VECTOR_FIRE_1P.get(), SoundSource.PLAYERS, 4, 1);
|
||||
player.level().playSound(null, player.blockPosition(), TargetModSounds.VECTOR_FAR.get(), SoundSource.PLAYERS, 6, 1);
|
||||
player.level().playSound(null, player.blockPosition(), TargetModSounds.VECTOR_VERYFAR.get(), SoundSource.PLAYERS, 12, 1);
|
||||
}
|
||||
}
|
||||
|
||||
private PlayState procedurePredicate(AnimationState<VectorItem> event) {
|
||||
if (transformType != null && transformType.firstPerson()) {
|
||||
if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package net.mcreator.target.network.message;
|
|||
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.init.TargetModTags;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
|
@ -48,21 +49,12 @@ public class FireModeMessage {
|
|||
}
|
||||
}
|
||||
|
||||
private static void setFireMode(Player player, CompoundTag tag, int mode) {
|
||||
if (player.getServer() == null) return;
|
||||
var text = switch (mode) {
|
||||
case 0 -> "Semi";
|
||||
case 1 -> "Burst";
|
||||
case 2 -> "Auto";
|
||||
default -> "";
|
||||
};
|
||||
private static void setFireMode(Player player, CompoundTag tag) {
|
||||
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(TargetModSounds.FIRE_RATE.get()),
|
||||
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 1f, 1f, serverPlayer.level().random.nextLong()));
|
||||
}
|
||||
|
||||
tag.putInt("fire_mode", mode);
|
||||
tag.putDouble("cg", 10);
|
||||
}
|
||||
|
||||
|
@ -72,17 +64,56 @@ public class FireModeMessage {
|
|||
Item item = mainHandItem.getItem();
|
||||
int fireMode = tag.getInt("fire_mode");
|
||||
|
||||
if (item == TargetModItems.AK_47.get()
|
||||
|| item == TargetModItems.M_4.get()
|
||||
|| item == TargetModItems.AA_12.get()
|
||||
|| item == TargetModItems.HK_416.get()
|
||||
|| item == TargetModItems.RPK.get()
|
||||
|| item == TargetModItems.MK_14.get()) {
|
||||
setFireMode(player, tag, fireMode == 0 ? 2 : 0);
|
||||
}
|
||||
if (item == TargetModItems.VECTOR.get()) {
|
||||
setFireMode(player, tag, (fireMode + 1) % 3);
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)) {
|
||||
if (tag.getInt("fire_mode") == 0) {
|
||||
if (tag.getDouble("burst") == 1) {
|
||||
tag.putInt("fire_mode", 1);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
if (tag.getDouble("auto") == 1) {
|
||||
tag.putInt("fire_mode", 2);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (tag.getInt("fire_mode") == 1) {
|
||||
if (tag.getDouble("auto") == 1) {
|
||||
tag.putInt("fire_mode", 2);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
if (tag.getDouble("semi") == 1) {
|
||||
tag.putInt("fire_mode", 0);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (tag.getInt("fire_mode") == 2) {
|
||||
if (tag.getDouble("semi") == 1) {
|
||||
tag.putInt("fire_mode", 0);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
if (tag.getDouble("burst") == 1) {
|
||||
tag.putInt("fire_mode", 1);
|
||||
setFireMode(player, tag);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (item == TargetModItems.AK_47.get()
|
||||
// || item == TargetModItems.M_4.get()
|
||||
// || item == TargetModItems.AA_12.get()
|
||||
// || item == TargetModItems.HK_416.get()
|
||||
// || item == TargetModItems.RPK.get()
|
||||
// || item == TargetModItems.MK_14.get()) {
|
||||
// setFireMode(player, tag, fireMode == 0 ? 2 : 0);
|
||||
// }
|
||||
// if (item == TargetModItems.VECTOR.get()) {
|
||||
// setFireMode(player, tag, (fireMode + 1) % 3);
|
||||
// }
|
||||
if (item == TargetModItems.SENTINEL.get() && !(player.getCooldowns().isOnCooldown(item)) && tag.getDouble("charging") == 0) {
|
||||
tag.putDouble("charging", 1);
|
||||
tag.putDouble("cid", (Mth.nextDouble(RandomSource.create(), 1, 1919810)));
|
||||
|
|
|
@ -10,17 +10,25 @@ import net.minecraft.world.entity.player.Player;
|
|||
|
||||
public class PressFireProcedure {
|
||||
public static void execute(Player player) {
|
||||
var mainHandItem = player.getMainHandItem();
|
||||
var tag = mainHandItem.getOrCreateTag();
|
||||
|
||||
TaserfireProcedure.execute(player);
|
||||
M79fireProcedure.execute(player);
|
||||
RpgFireProcedure.execute(player);
|
||||
|
||||
MarlinfireProcedure.execute(player);
|
||||
M870fireProcedure.execute(player);
|
||||
VectorFireProcedure.execute(player);
|
||||
player.getPersistentData().putBoolean("firing", true);
|
||||
|
||||
var mainHandItem = player.getMainHandItem();
|
||||
var tag = mainHandItem.getOrCreateTag();
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)) {
|
||||
|
||||
if (tag.getInt("fire_mode") == 1) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
tag.putInt("burst_fire", (int) tag.getDouble("burst_size"));
|
||||
} else {
|
||||
player.getPersistentData().putBoolean("firing", true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)
|
||||
&& !(mainHandItem.getItem() == TargetModItems.BOCEK.get())
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class VectorFireProcedure {
|
||||
public static void execute(Player entity) {
|
||||
if (entity.isSpectator()) return;
|
||||
|
||||
ItemStack mainHandItem = entity.getMainHandItem();
|
||||
if (mainHandItem.getItem() != TargetModItems.VECTOR.get()) return;
|
||||
|
||||
CompoundTag tag = mainHandItem.getOrCreateTag();
|
||||
if (tag.getInt("fire_mode") == 1 && tag.getDouble("burst") == 0) {
|
||||
tag.putDouble("burst", 3);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 25,
|
||||
"projectile_amount": 8,
|
||||
"fire_interval": 4,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
||||
|
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 2,
|
||||
"projectile_amount": 8,
|
||||
"fire_interval": 2,
|
||||
"weight": 0
|
||||
"weight": 0,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,11 @@
|
|||
"mag": 30,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 2,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
|
||||
}
|
|
@ -6,6 +6,5 @@
|
|||
"recoil_y": 0.003,
|
||||
"headshot": 1.5,
|
||||
"damage": 24,
|
||||
"weight": 1,
|
||||
"weight": 1
|
||||
}
|
|
@ -9,8 +9,12 @@
|
|||
"headshot": 2,
|
||||
"velocity": 40,
|
||||
"mag": 55,
|
||||
"fire_mode": 2,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 5,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 0,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 30,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 1,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -9,5 +9,10 @@
|
|||
"velocity": 50,
|
||||
"mag": 1,
|
||||
"projectile_amount": 1,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -12,5 +12,10 @@
|
|||
"mag": 4,
|
||||
"fire_interval": 10,
|
||||
"bolt_action_time": 30,
|
||||
"weight": 2
|
||||
"weight": 2,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 30,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 1,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -9,8 +9,12 @@
|
|||
"headshot": 2,
|
||||
"velocity": 40,
|
||||
"mag": 100,
|
||||
"fire_mode": 2,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 2,
|
||||
"weight": 2
|
||||
"weight": 2,
|
||||
"fire_mode": 2,
|
||||
"semi": 0,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -7,5 +7,10 @@
|
|||
"damage": 40,
|
||||
"velocity": 3.75,
|
||||
"mag": 1,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -8,5 +8,10 @@
|
|||
"headshot": 1.5,
|
||||
"velocity": 20,
|
||||
"mag": 8,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -11,5 +11,10 @@
|
|||
"mag": 5,
|
||||
"fire_interval": 6,
|
||||
"bolt_action_time": 18,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -8,5 +8,10 @@
|
|||
"headshot": 2.5,
|
||||
"velocity": 27,
|
||||
"mag": 8,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -6,7 +6,11 @@
|
|||
"damage": 8,
|
||||
"headshot": 2,
|
||||
"velocity": 40,
|
||||
"fire_mode": 2,
|
||||
"fire_interval": 1,
|
||||
"weight": 2
|
||||
"weight": 2,
|
||||
"fire_mode": 2,
|
||||
"semi": 0,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -11,5 +11,10 @@
|
|||
"mag": 20,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 2,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -7,5 +7,10 @@
|
|||
"damage": 150,
|
||||
"velocity": 5.75,
|
||||
"mag": 1,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -11,5 +11,10 @@
|
|||
"mag": 75,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 2,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 1,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -11,5 +11,10 @@
|
|||
"velocity": 50,
|
||||
"fire_interval": 2,
|
||||
"bolt_action_time": 22,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 20,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 3,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 10,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 5,
|
||||
"weight": 1
|
||||
"weight": 1,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -7,5 +7,10 @@
|
|||
"damage": 5,
|
||||
"velocity": 3,
|
||||
"mag": 1,
|
||||
"weight": 0
|
||||
"weight": 0,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 8,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 5,
|
||||
"weight": 0
|
||||
"weight": 0,
|
||||
"fire_mode": 0,
|
||||
"semi": 1,
|
||||
"burst": 0,
|
||||
"auto": 0,
|
||||
"burst_size": 1
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
"mag": 33,
|
||||
"projectile_amount": 1,
|
||||
"fire_interval": 1,
|
||||
"weight": 0
|
||||
"weight": 0,
|
||||
"fire_mode": 2,
|
||||
"semi": 1,
|
||||
"burst": 1,
|
||||
"auto": 1,
|
||||
"burst_size": 3
|
||||
}
|
Loading…
Add table
Reference in a new issue