修改射速机制

This commit is contained in:
Atsuihsio 2024-05-10 14:26:19 +08:00
parent 6cd3473dab
commit eaad11c7f8
15 changed files with 35 additions and 16 deletions

View file

@ -3,6 +3,7 @@ package net.mcreator.target.event;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.ProjectileEntity; import net.mcreator.target.entity.ProjectileEntity;
import net.mcreator.target.init.TargetModAttributes; import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.ItemNBTTool; import net.mcreator.target.tools.ItemNBTTool;
@ -108,13 +109,17 @@ public class GunEventHandler {
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
if (stack.is(TargetModTags.Items.NORMAL_MAG_GUN)) { if (stack.is(TargetModTags.Items.NORMAL_MAG_GUN)) {
double mode = stack.getOrCreateTag().getDouble("firemode"); double mode = stack.getOrCreateTag().getDouble("firemode");
if (player.getPersistentData().getDouble("firing") == 0 && player.getMainHandItem().getItem() == TargetModItems.DEVOTION.get()) {
stack.getOrCreateTag().putDouble("fire_increase", 0);
}
if (player.getPersistentData().getDouble("firing") == 1 if (player.getPersistentData().getDouble("firing") == 1
&& stack.getOrCreateTag().getDouble("reloading") == 0 && stack.getOrCreateTag().getDouble("reloading") == 0
&& stack.getOrCreateTag().getDouble("ammo") > 0 && stack.getOrCreateTag().getDouble("ammo") > 0
&& !player.getCooldowns().isOnCooldown(stack.getItem()) && !player.getCooldowns().isOnCooldown(stack.getItem())
&& mode != 1 && mode != 1
&& !player.getCooldowns().isOnCooldown(stack.getItem())) { && !player.getCooldowns().isOnCooldown(stack.getItem()))
{
if (stack.getOrCreateTag().getDouble("firemode") == 0) { if (stack.getOrCreateTag().getDouble("firemode") == 0) {
player.getPersistentData().putDouble("firing", 0); player.getPersistentData().putDouble("firing", 0);
@ -135,7 +140,19 @@ public class GunEventHandler {
stack.getOrCreateTag().putDouble("fireanim", 2); stack.getOrCreateTag().putDouble("fireanim", 2);
stack.getOrCreateTag().putDouble("empty", 1); stack.getOrCreateTag().putDouble("empty", 1);
int cooldown = (int) Math.ceil(20 * 60 / ItemNBTTool.getDouble(stack, "rpm", 60)); if (player.getMainHandItem().getItem() == TargetModItems.M_4.get() || player.getMainHandItem().getItem() == TargetModItems.HK_416.get()) {
if (stack.getOrCreateTag().getDouble("fire_sequence") == 1) {
stack.getOrCreateTag().putDouble("fire_sequence", 0);
} else {
stack.getOrCreateTag().putDouble("fire_sequence", 1);
}
}
if (player.getMainHandItem().getItem() == TargetModItems.DEVOTION.get()) {
stack.getOrCreateTag().putDouble("fire_increase", stack.getOrCreateTag().getDouble("fire_increase") + 0.334);
}
int cooldown = (int) stack.getOrCreateTag().getDouble("fire_interval") + (int) stack.getOrCreateTag().getDouble("fire_sequence") - (int) stack.getOrCreateTag().getDouble("fire_increase");
player.getCooldowns().addCooldown(stack.getItem(), cooldown); player.getCooldowns().addCooldown(stack.getItem(), cooldown);
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectileamount"); index0++) { for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectileamount"); index0++) {

View file

@ -9,5 +9,5 @@
"velocity": 16, "velocity": 16,
"mag": 25, "mag": 25,
"projectileamount": 8, "projectileamount": 8,
"rpm": 360 "fire_interval": 4
} }

View file

@ -7,5 +7,6 @@
"damage": 2.5, "damage": 2.5,
"headshot": 1.5, "headshot": 1.5,
"velocity": 15, "velocity": 15,
"mag": 2 "mag": 2,
"fire_interval": 2
} }

View file

@ -9,5 +9,5 @@
"velocity": 30, "velocity": 30,
"mag": 30, "mag": 30,
"projectileamount": 1, "projectileamount": 1,
"rpm": 600 "fire_interval": 2
} }

View file

@ -11,5 +11,5 @@
"mag": 55, "mag": 55,
"firemode": 2, "firemode": 2,
"projectileamount": 1, "projectileamount": 1,
"rpm": 400 "fire_interval": 5
} }

View file

@ -9,5 +9,5 @@
"velocity": 45, "velocity": 45,
"mag": 30, "mag": 30,
"projectileamount": 1, "projectileamount": 1,
"rpm": 800 "fire_interval": 1
} }

View file

@ -9,5 +9,5 @@
"velocity": 45, "velocity": 45,
"mag": 30, "mag": 30,
"projectileamount": 1, "projectileamount": 1,
"rpm": 800 "fire_interval": 1
} }

View file

@ -11,5 +11,5 @@
"mag": 100, "mag": 100,
"firemode": 2, "firemode": 2,
"projectileamount": 1, "projectileamount": 1,
"rpm": 600 "fire_interval": 2
} }

View file

@ -6,5 +6,6 @@
"damage": 8, "damage": 8,
"headshot": 2, "headshot": 2,
"velocity": 40, "velocity": 40,
"firemode": 2 "firemode": 2,
"fire_interval": 1
} }

View file

@ -10,5 +10,5 @@
"velocity": 45, "velocity": 45,
"mag": 20, "mag": 20,
"projectileamount": 1, "projectileamount": 1,
"rpm": 600 "fire_interval": 2
} }

View file

@ -10,5 +10,5 @@
"velocity": 35, "velocity": 35,
"mag": 50, "mag": 50,
"projectileamount": 1, "projectileamount": 1,
"rpm": 600 "fire_interval": 2
} }

View file

@ -9,5 +9,5 @@
"velocity": 40, "velocity": 40,
"mag": 20, "mag": 20,
"projectileamount": 1, "projectileamount": 1,
"rpm": 400 "fire_interval": 3
} }

View file

@ -9,5 +9,5 @@
"velocity": 50, "velocity": 50,
"mag": 10, "mag": 10,
"projectileamount": 1, "projectileamount": 1,
"rpm": 200 "fire_interval": 5
} }

View file

@ -9,5 +9,5 @@
"velocity": 60, "velocity": 60,
"mag": 8, "mag": 8,
"projectileamount": 1, "projectileamount": 1,
"rpm": 240 "fire_interval": 5
} }

View file

@ -9,5 +9,5 @@
"velocity": 22, "velocity": 22,
"mag": 33, "mag": 33,
"projectileamount": 1, "projectileamount": 1,
"rpm": 1200 "fire_interval": 1
} }