让大栓狙通用开火流程,分离开火和拉栓步骤,各种微调

This commit is contained in:
Atsuihsio 2024-05-18 00:10:22 +08:00
parent 8899deaea0
commit fc2e747813
93 changed files with 305 additions and 444 deletions

View file

@ -88,7 +88,7 @@ public class AK47ItemModel extends GeoModel<AK47Item> {
shuan.setPosZ(2.4f * (float) fp);
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -72,7 +72,7 @@ public class Aa12ItemModel extends GeoModel<Aa12Item> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -64,7 +64,7 @@ public class AbekiriItemModel extends GeoModel<Abekiri> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -95,7 +95,8 @@ public class DevotionItemModel extends GeoModel<Devotion> {
number.setScaleX(0);
number.setScaleY(0);
}
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -37,7 +37,7 @@ public class Hk416ItemModel extends GeoModel<Hk416Item> {
Player player = Minecraft.getInstance().player;
ItemStack stack = player.getMainHandItem();
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -71,7 +71,7 @@ public class HuntingRifleItemModel extends GeoModel<HuntingRifle> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -84,7 +84,7 @@ public class KraberItemModel extends GeoModel<Kraber> {
scope.setScaleZ(1f - (0.9f * (float) p));
if (stack.getOrCreateTag().getDouble("fireanim") > 37) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -69,7 +69,7 @@ public class M4ItemModel extends GeoModel<M4Item> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -112,7 +112,7 @@ public class M60ItemModel extends GeoModel<M60Item> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -84,7 +84,8 @@ public class M98bItemModel extends GeoModel<M98bItem> {
qiang.setScaleX(1);
qiang.setScaleY(1);
}
if (stack.getOrCreateTag().getDouble("fireanim") > 14) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -101,9 +101,9 @@ public class Mk14ItemModel extends GeoModel<Mk14Item> {
bolt.setPosZ(6);
}
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
flare.setScaleX((float) (2 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (2 + 0.5 * (Math.random() - 0.5)));
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
} else {
flare.setScaleX(0);

View file

@ -100,7 +100,7 @@ public class RpkItemModel extends GeoModel<RpkItem> {
shuan.setPosZ(2.4f * (float) fp);
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -163,7 +163,7 @@ public class SentinelItemModel extends GeoModel<SentinelItem> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
@ -173,8 +173,8 @@ public class SentinelItemModel extends GeoModel<SentinelItem> {
flare.setRotZ(0);
}
if ((stack.getOrCreateTag().getInt("ammo") <= 5)) {
ammo.setScaleX((float) (stack.getOrCreateTag().getInt("ammo") / 5));
if ((stack.getOrCreateTag().getDouble("ammo") <= 5)) {
ammo.setScaleX((float) (stack.getOrCreateTag().getDouble("ammo") / 5));
}
}
}

View file

@ -85,7 +85,7 @@ public class SksItemModel extends GeoModel<SksItem> {
shuan.setPosZ(2.5f * (float) fp);
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -108,7 +108,7 @@ public class SvdItemModel extends GeoModel<SvdItem> {
shuan.setPosZ(2.4f * (float) fp);
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -65,7 +65,7 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));

View file

@ -110,7 +110,7 @@ public class GunEventHandler {
private static void handleGunFire(Player player) {
ItemStack stack = player.getMainHandItem();
if (stack.is(TargetModTags.Items.NORMAL_MAG_GUN)) {
if (stack.is(TargetModTags.Items.NORMAL_GUN)) {
double mode = stack.getOrCreateTag().getInt("firemode");
if (player.getPersistentData().getDouble("firing") == 0 && player.getMainHandItem().getItem() == TargetModItems.DEVOTION.get()) {
stack.getOrCreateTag().putDouble("fire_increase", 0);
@ -120,7 +120,10 @@ public class GunEventHandler {
&& stack.getOrCreateTag().getDouble("reloading") == 0
&& stack.getOrCreateTag().getInt("ammo") > 0
&& !player.getCooldowns().isOnCooldown(stack.getItem())
&& mode != 1) {
&& mode != 1
&& stack.getOrCreateTag().getDouble("need_bolt_action") == 0) {
playGunSounds(player);
if (stack.getOrCreateTag().getInt("firemode") == 0) {
player.getPersistentData().putDouble("firing", 0);
@ -135,10 +138,16 @@ public class GunEventHandler {
if (stack.getOrCreateTag().getInt("ammo") == 1) {
stack.getOrCreateTag().putDouble("gj", 1);
}
/**
* 判断是否为栓动武器bolt_action_time > 0并在开火后给一个需要上膛的状态
*/
if (stack.getOrCreateTag().getDouble("bolt_action_time") > 0 && stack.getOrCreateTag().getInt("ammo") > 1) {
stack.getOrCreateTag().putDouble("need_bolt_action", 1);
}
stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1));
stack.getOrCreateTag().putDouble("firecooldown", 7);
stack.getOrCreateTag().putDouble("fireanim", 2);
stack.getOrCreateTag().putDouble("fireanim", stack.getOrCreateTag().getDouble("fire_interval"));
stack.getOrCreateTag().putDouble("flash_time", 2);
stack.getOrCreateTag().putDouble("empty", 1);
if (player.getMainHandItem().getItem() == TargetModItems.M_4.get() || player.getMainHandItem().getItem() == TargetModItems.HK_416.get()) {
@ -164,13 +173,41 @@ public class GunEventHandler {
}
}
if (player.getMainHandItem().getItem() == TargetModItems.SENTINEL.get()) {
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) {
stack.getOrCreateTag().putBoolean("zoom_fire", true);
} else {
stack.getOrCreateTag().putBoolean("zoom_fire", false);
}
if (stack.getOrCreateTag().getDouble("power") > 20) {
stack.getOrCreateTag().putDouble("power", (stack.getOrCreateTag().getDouble("power") - 20));
} else {
stack.getOrCreateTag().putDouble("power", 0);
}
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");
player.getCooldowns().addCooldown(stack.getItem(), cooldown);
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectileamount"); index0++) {
gunShoot(player);
}
playGunSounds(player);
}
/**
* 在开火动画的最后1tick设置需要拉栓上膛的武器拉栓动画的倒计时为data里的拉栓时间
*/
if (stack.getOrCreateTag().getDouble("fireanim") == 1 && stack.getOrCreateTag().getDouble("need_bolt_action") == 1) {
stack.getOrCreateTag().putDouble("bolt_action_anim", stack.getOrCreateTag().getDouble("bolt_action_time"));
player.getCooldowns().addCooldown(stack.getItem(), (int) stack.getOrCreateTag().getDouble("bolt_action_time"));
playGunBoltSounds(player);
}
if (stack.getOrCreateTag().getDouble("bolt_action_anim") > 0) {
stack.getOrCreateTag().putDouble("bolt_action_anim", stack.getOrCreateTag().getDouble("bolt_action_anim") -1);
}
if (stack.getOrCreateTag().getDouble("bolt_action_anim") == 1) {
stack.getOrCreateTag().putDouble("need_bolt_action", 0);
}
}
}
@ -188,29 +225,74 @@ public class GunEventHandler {
String origin = stack.getItem().getDescriptionId();
String name = origin.substring(origin.lastIndexOf(".") + 1);
SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_fire_1p"));
if (sound1p != null && player instanceof ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(sound1p),
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 2f, 1f, serverPlayer.level().random.nextLong()));
}
if (player.getMainHandItem().getItem() == TargetModItems.SENTINEL.get() && stack.getOrCreateTag().getDouble("power") > 0) {
SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_fire_1p"));
if (sound1p != null && player instanceof ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(sound1p),
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 2f, 1f, serverPlayer.level().random.nextLong()));
}
SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_fire_3p"));
if (sound3p != null) {
player.playSound(sound3p, 4f, 1f);
}
SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "v_fire_3p"));
if (sound3p != null) {
player.playSound(sound3p, 4f, 1f);
}
SoundEvent soundFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_far"));
if (soundFar != null) {
player.playSound(soundFar, 12f, 1f);
}
SoundEvent soundFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_far"));
if (soundFar != null) {
player.playSound(soundFar, 12f, 1f);
}
SoundEvent soundVeryFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_charge_veryfar"));
if (soundVeryFar != null) {
player.playSound(soundVeryFar, 24f, 1f);
}
} else {
SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_fire_1p"));
if (sound1p != null && player instanceof ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(sound1p),
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 2f, 1f, serverPlayer.level().random.nextLong()));
}
SoundEvent sound3p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_fire_3p"));
if (sound3p != null) {
player.playSound(sound3p, 4f, 1f);
}
SoundEvent soundFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_far"));
if (soundFar != null) {
player.playSound(soundFar, 12f, 1f);
}
SoundEvent soundVeryFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_veryfar"));
if (soundVeryFar != null) {
player.playSound(soundVeryFar, 24f, 1f);
}
SoundEvent soundVeryFar = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_veryfar"));
if (soundVeryFar != null) {
player.playSound(soundVeryFar, 24f, 1f);
}
}
}
public static void playGunBoltSounds(Player player) {
ItemStack stack = player.getMainHandItem();
if (!stack.is(TargetModTags.Items.GUN)) {
return;
}
if (!player.level().isClientSide) {
String origin = stack.getItem().getDescriptionId();
String name = origin.substring(origin.lastIndexOf(".") + 1);
SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(TargetMod.MODID, name + "_bolt"));
if (sound1p != null && player instanceof ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(sound1p),
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 2f, 1f, serverPlayer.level().random.nextLong()));
}
}
}
public static void gunShoot(Player player) {
ItemStack heldItem = player.getMainHandItem();
if (Math.random() < 0.5) {
@ -233,8 +315,7 @@ public class GunEventHandler {
if (!player.level().isClientSide()) {
float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot");
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("adddamage"))
* (float) heldItem.getOrCreateTag().getDouble("damageadd");
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("adddamage")) * (float) heldItem.getOrCreateTag().getDouble("damageadd");
ProjectileEntity projectile = new ProjectileEntity(player.level())
.shooter(player)

View file

@ -197,6 +197,9 @@ public class LivingEntityEventHandler {
});
player.getPersistentData().putDouble("zoompos", 0);
player.getPersistentData().putDouble("zoom_time", 0);
if (newStack.getOrCreateTag().getDouble("bolt_action_time") > 0) {
newStack.getOrCreateTag().putDouble("bolt_action_anim", 0);
}
}
}
}

View file

@ -114,6 +114,7 @@ public class TargetModSounds {
public static final RegistryObject<SoundEvent> KRABER_VERYFAR = REGISTRY.register("kraber_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "kraber_veryfar")));
public static final RegistryObject<SoundEvent> KRABER_RELOAD_NORMAL = REGISTRY.register("kraber_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "kraber_reload_normal")));
public static final RegistryObject<SoundEvent> KRABER_RELOAD_EMPTY = REGISTRY.register("kraber_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "kraber_reload_empty")));
public static final RegistryObject<SoundEvent> KRABER_BOLT = REGISTRY.register("kraber_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "kraber_bolt")));
public static final RegistryObject<SoundEvent> VECTOR_FIRE_1P = REGISTRY.register("vector_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "vector_fire_1p")));
public static final RegistryObject<SoundEvent> VECTOR_FIRE_3P = REGISTRY.register("vector_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "vector_fire_3p")));
public static final RegistryObject<SoundEvent> VECTOR_FAR = REGISTRY.register("vector_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "vector_far")));
@ -143,6 +144,7 @@ public class TargetModSounds {
public static final RegistryObject<SoundEvent> SENTINEL_RELOAD_NORMAL = REGISTRY.register("sentinel_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "sentinel_reload_normal")));
public static final RegistryObject<SoundEvent> SENTINEL_RELOAD_EMPTY = REGISTRY.register("sentinel_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "sentinel_reload_empty")));
public static final RegistryObject<SoundEvent> SENTINEL_CHARGE = REGISTRY.register("sentinel_charge", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "sentinel_charge")));
public static final RegistryObject<SoundEvent> SENTINEL_BOLT = REGISTRY.register("sentinel_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "sentinel_bolt")));
public static final RegistryObject<SoundEvent> M_60_FIRE_1P = REGISTRY.register("m_60_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_60_fire_1p")));
public static final RegistryObject<SoundEvent> M_60_FIRE_3P = REGISTRY.register("m_60_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_60_fire_3p")));
public static final RegistryObject<SoundEvent> M_60_FAR = REGISTRY.register("m_60_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_60_far")));
@ -162,6 +164,7 @@ public class TargetModSounds {
public static final RegistryObject<SoundEvent> M_98B_VERYFAR = REGISTRY.register("m_98b_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_98b_veryfar")));
public static final RegistryObject<SoundEvent> M_98B_RELOAD_NORMAL = REGISTRY.register("m_98b_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_98b_reload_normal")));
public static final RegistryObject<SoundEvent> M_98B_RELOAD_EMPTY = REGISTRY.register("m_98b_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_98b_reload_empty")));
public static final RegistryObject<SoundEvent> M_98B_BOLT = REGISTRY.register("m_98b_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "m_98b_bolt")));
public static final RegistryObject<SoundEvent> MARLIN_FIRE_1P = REGISTRY.register("marlin_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "marlin_fire_1p")));
public static final RegistryObject<SoundEvent> MARLIN_FIRE_3P = REGISTRY.register("marlin_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "marlin_fire_3p")));
public static final RegistryObject<SoundEvent> MARLIN_FAR = REGISTRY.register("marlin_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("target", "marlin_far")));

View file

@ -16,7 +16,7 @@ public class TargetModTags {
public static final TagKey<Item> SHOTGUN = tag("shotgun");
public static final TagKey<Item> SNIPER_RIFLE = tag("sniper_rifle");
public static final TagKey<Item> SMG = tag("smg");
public static final TagKey<Item> NORMAL_MAG_GUN = tag("normal_mag_gun");
public static final TagKey<Item> NORMAL_GUN = tag("normal_gun");
public static final TagKey<Item> LEGENDARY_GUN = tag("legendary_gun");
public static final TagKey<Item> SPECIAL_GUN = tag("special_gun");

View file

@ -5,7 +5,6 @@ import com.google.common.collect.Multimap;
import net.mcreator.target.client.renderer.item.BocekItemRenderer;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.procedures.WeaponDrawProcedure;
import net.mcreator.target.tools.GunsTool;
import net.mcreator.target.tools.RarityTool;
import net.mcreator.target.tools.TooltipTool;
@ -165,7 +164,6 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
if (tag.getDouble("arrowempty") > 0) {
tag.putDouble("arrowempty", tag.getDouble("arrowempty") - 1);
}
WeaponDrawProcedure.execute(entity, itemstack);
}
protected static boolean check(ItemStack stack) {

View file

@ -7,7 +7,6 @@ import net.mcreator.target.client.renderer.item.DevotionItemRenderer;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.procedures.WeaponDrawProcedure;
import net.mcreator.target.tools.GunInfo;
import net.mcreator.target.tools.GunReload;
import net.mcreator.target.tools.GunsTool;
@ -218,7 +217,6 @@ public class Devotion extends GunItem implements GeoItem, AnimatedItem {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
@Override

View file

@ -1,11 +1,15 @@
package net.mcreator.target.item.gun;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.mcreator.target.tools.ItemNBTTool;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -31,6 +35,8 @@ public abstract class GunItem extends Item {
@Override
public void inventoryTick(ItemStack itemstack, Level level, Entity entity, int slot, boolean selected) {
super.inventoryTick(itemstack, level, entity, slot, selected);
Item mainHandItem = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem();
CompoundTag tag = itemstack.getOrCreateTag();
if (!ItemNBTTool.getBoolean(itemstack, "init", false)) {
GunsTool.initGun(level, itemstack, this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1));
@ -38,6 +44,47 @@ public abstract class GunItem extends Item {
ItemNBTTool.setBoolean(itemstack, "init", true);
}
GunsTool.pvpModeCheck(itemstack, level);
if (tag.getDouble("draw") == 1) {
tag.putDouble("draw", 0);
tag.putDouble("drawtime", 0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.zooming = false;
capability.syncPlayerVariables(entity);
});
if (entity instanceof Player _player) {
if (tag.getDouble("weight") == 0) {
_player.getCooldowns().addCooldown(itemstack.getItem(), 12);
} else if (tag.getDouble("weight") == 1) {
_player.getCooldowns().addCooldown(itemstack.getItem(), 17);
} else if (tag.getDouble("weight") == 2) {
_player.getCooldowns().addCooldown(itemstack.getItem(), 30);
}
}
if (itemstack.getItem() == TargetModItems.RPG.get() && tag.getInt("ammo") == 0) {
tag.putDouble("empty", 1);
}
if (itemstack.getItem() == TargetModItems.SKS.get() && tag.getInt("ammo") == 0) {
tag.putDouble("gj", 1);
}
if (itemstack.getItem() == TargetModItems.M_60.get() && tag.getInt("ammo") <= 5) {
tag.putDouble("empty", 1);
}
}
if (mainHandItem == itemstack.getItem()) {
if (tag.getDouble("drawtime") < 50) {
tag.putDouble("drawtime", (tag.getDouble("drawtime") + 1));
}
}
if (tag.getDouble("fireanim") > 0) {
tag.putDouble("fireanim", (tag.getDouble("fireanim") - 1));
}
if (tag.getDouble("flash_time") > 0) {
tag.putDouble("flash_time", (tag.getDouble("flash_time") - 1));
}
}
public Set<SoundEvent> getReloadSound() {

View file

@ -7,7 +7,6 @@ import net.mcreator.target.client.renderer.item.HuntingRifleItemRenderer;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.procedures.WeaponDrawProcedure;
import net.mcreator.target.tools.GunInfo;
import net.mcreator.target.tools.GunReload;
import net.mcreator.target.tools.GunsTool;
@ -198,7 +197,6 @@ public class HuntingRifle extends GunItem implements GeoItem, AnimatedItem {
GunReload.reload(entity, GunInfo.Type.SNIPER);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
public static ItemStack getGunInstance() {

View file

@ -89,12 +89,12 @@ public class Kraber extends GunItem implements GeoItem, AnimatedItem {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.kraber.draw"));
}
if (stack.getOrCreateTag().getDouble("fireanim") > 30) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.kraber.fire"));
if (stack.getOrCreateTag().getDouble("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.kraber.shift"));
}
if (stack.getOrCreateTag().getDouble("fireanim") < 30 && stack.getOrCreateTag().getDouble("fireanim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.kraber.shift"));
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.kraber.fire"));
}
if (stack.getOrCreateTag().getDouble("reloading") == 1 && stack.getOrCreateTag().getDouble("emptyreload") == 1) {

View file

@ -81,12 +81,12 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m98b.draw"));
}
if (stack.getOrCreateTag().getDouble("fireanim") > 16) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.fire"));
if (stack.getOrCreateTag().getDouble("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.shift"));
}
if (stack.getOrCreateTag().getDouble("fireanim") < 16 && stack.getOrCreateTag().getDouble("fireanim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.shift"));
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.fire"));
}
if (stack.getOrCreateTag().getDouble("reloading") == 1 && stack.getOrCreateTag().getDouble("emptyreload") == 1) {

View file

@ -102,6 +102,14 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sentinel.draw"));
}
if (stack.getOrCreateTag().getBoolean("zoom_fire") == true && stack.getOrCreateTag().getDouble("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift2"));
}
if (stack.getOrCreateTag().getBoolean("zoom_fire") == false && stack.getOrCreateTag().getDouble("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift"));
}
if (stack.getOrCreateTag().getDouble("fireanim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.fire"));
}
@ -114,14 +122,6 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.reload2"));
}
if (stack.getOrCreateTag().getDouble("firing") > 0 && stack.getOrCreateTag().getDouble("firing") < 23) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift"));
}
if (stack.getOrCreateTag().getDouble("zoomfiring") > 0 && stack.getOrCreateTag().getDouble("zoomfiring") < 23) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift2"));
}
if (stack.getOrCreateTag().getDouble("chargingtime") > 127 && stack.getOrCreateTag().getDouble("charging") == 1) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.chargep"));
}

View file

@ -7,7 +7,6 @@ import net.mcreator.target.client.renderer.item.TracheliumItemRenderer;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.procedures.WeaponDrawLightProcedure;
import net.mcreator.target.tools.*;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
@ -194,7 +193,6 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
GunReload.reload(entity, GunInfo.Type.HANDGUN);
}
}
WeaponDrawLightProcedure.execute(entity, itemstack);
}
@Override

View file

@ -8,7 +8,6 @@ import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.procedures.WeaponDrawLightProcedure;
import net.mcreator.target.tools.GunInfo;
import net.mcreator.target.tools.GunReload;
import net.mcreator.target.tools.GunsTool;
@ -289,7 +288,5 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
GunReload.reload(entity, GunInfo.Type.HANDGUN, true);
}
}
WeaponDrawLightProcedure.execute(entity, itemStack);
}
}

View file

@ -67,6 +67,5 @@ public class AK47WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -64,6 +64,5 @@ public class Aa12WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.SHOTGUN, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -1,6 +1,8 @@
package net.mcreator.target.procedures;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunInfo;
import net.mcreator.target.tools.GunReload;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -42,28 +44,7 @@ public class AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
itemstack.getOrCreateTag().putDouble("reloadtime", 0);
}
if (itemstack.getOrCreateTag().getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) {
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo >= ammo1) {
{
int _setval = (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo - ammo1;
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.shotgunAmmo = _setval;
capability.syncPlayerVariables(entity);
});
}
itemstack.getOrCreateTag().putInt("ammo", (itemstack.getOrCreateTag().getInt("ammo") + ammo1));
itemstack.getOrCreateTag().putDouble("reloading", 0);
itemstack.getOrCreateTag().putDouble("emptyreload", 0);
} else {
{
int _setval = itemstack.getOrCreateTag().getInt("ammo") + (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo;
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.shotgunAmmo = _setval;
capability.syncPlayerVariables(entity);
});
}
itemstack.getOrCreateTag().putInt("maxammo", 0);
itemstack.getOrCreateTag().putDouble("reloading", 0);
}
GunReload.reload(entity, GunInfo.Type.SHOTGUN);
}
} else if (itemstack.getOrCreateTag().getDouble("reloading") == 1 && itemstack.getOrCreateTag().getInt("ammo") == 1) {
if (itemstack.getOrCreateTag().getDouble("reloadtime") == 83) {
@ -86,30 +67,8 @@ public class AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
itemstack.getOrCreateTag().putDouble("reloadtime", 0);
}
if (itemstack.getOrCreateTag().getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) {
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo >= ammo1) {
{
int _setval = (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo - ammo1;
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.shotgunAmmo = _setval;
capability.syncPlayerVariables(entity);
});
}
itemstack.getOrCreateTag().putInt("ammo", (itemstack.getOrCreateTag().getInt("ammo") + ammo1));
itemstack.getOrCreateTag().putDouble("reloading", 0);
itemstack.getOrCreateTag().putDouble("emptyreload", 0);
} else {
{
int _setval = itemstack.getOrCreateTag().getInt("ammo") + (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo;
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.shotgunAmmo = _setval;
capability.syncPlayerVariables(entity);
});
}
itemstack.getOrCreateTag().putInt("maxammo", 0);
itemstack.getOrCreateTag().putDouble("reloading", 0);
}
GunReload.reload(entity, GunInfo.Type.SHOTGUN);
}
}
WeaponDrawLightProcedure.execute(entity, itemstack);
}
}

View file

@ -67,6 +67,5 @@ public class Hk416WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -67,6 +67,5 @@ public class KraberWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.SNIPER, true);
}
}
WeapondrawhaveyProcedure.execute(entity, itemstack);
}
}

View file

@ -1,35 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
public class KraberfireProcedure {
public static void execute(Player player) {
if (player.isSpectator()) return;
ItemStack usehand = player.getMainHandItem();
if (usehand.getItem() == TargetModItems.KRABER.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !player.getCooldowns().isOnCooldown(usehand.getItem())
&& usehand.getOrCreateTag().getInt("ammo") > 0) {
usehand.getOrCreateTag().putDouble("fireanim", 40);
GunsTool.spawnBullet(player);
player.getCooldowns().addCooldown(usehand.getItem(), 40);
if (!player.level().isClientSide() && player.getServer() != null) {
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:kraber_fire_1p player @s ~ ~ ~ 2 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:kraber_fire_3p player @a ~ ~ ~ 4 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:kraber_far player @a ~ ~ ~ 12 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:kraber_veryfar player @a ~ ~ ~ 24 1");
}
usehand.getOrCreateTag().putInt("ammo", (usehand.getOrCreateTag().getInt("ammo") - 1));
}
}
}

View file

@ -67,6 +67,5 @@ public class M4WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -70,6 +70,5 @@ public class M60WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE);
}
}
WeapondrawhaveyProcedure.execute(entity, itemstack);
}
}

View file

@ -60,6 +60,5 @@ public class M79WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
}
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -94,6 +94,5 @@ public class M870WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
if (itemstack.getOrCreateTag().getDouble("firing") > 0) {
itemstack.getOrCreateTag().putDouble("firing", (itemstack.getOrCreateTag().getDouble("firing") - 1));
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -71,6 +71,5 @@ public class M98bWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.SNIPER, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -1,35 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
public class M98bfireProcedure {
public static void execute(Player player) {
if (player.isSpectator()) return;
ItemStack usehand = player.getMainHandItem();
if (usehand.getItem() == TargetModItems.M_98B.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !(player.getCooldowns().isOnCooldown(usehand.getItem()))
&& usehand.getOrCreateTag().getInt("ammo") > 0) {
usehand.getOrCreateTag().putDouble("fireanim", 17);
GunsTool.spawnBullet(player);
player.getCooldowns().addCooldown(usehand.getItem(), 17);
if (!player.level().isClientSide() && player.getServer() != null) {
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:m_98b_fire_1p player @s ~ ~ ~ 2 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:m_98b_fire_3p player @a ~ ~ ~ 4 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:m_98b_far player @a ~ ~ ~ 12 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:m_98b_veryfar player @a ~ ~ ~ 24 1");
}
usehand.getOrCreateTag().putInt("ammo", (usehand.getOrCreateTag().getInt("ammo") - 1));
}
}
}

View file

@ -86,6 +86,5 @@ public class MarlinWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
if (itemstack.getOrCreateTag().getDouble("firing") > 0) {
itemstack.getOrCreateTag().putDouble("firing", (itemstack.getOrCreateTag().getDouble("firing") - 1));
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -24,6 +24,5 @@ public class MiniguninbackpackProcedure {
entity.getPersistentData().putDouble("minifiring", 0);
itemstack.getOrCreateTag().putDouble("overheat", (itemstack.getOrCreateTag().getDouble("overheat") - 1));
}
WeapondrawhaveyProcedure.execute(entity, itemstack);
}
}

View file

@ -70,6 +70,5 @@ public class Mk14WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -7,16 +7,14 @@ import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
import net.mcreator.target.event.GunEventHandler;
public class PressFireProcedure {
public static void execute(Player player) {
TaserfireProcedure.execute(player);
M79fireProcedure.execute(player);
M98bfireProcedure.execute(player);
RpgFireProcedure.execute(player);
KraberfireProcedure.execute(player);
MinigunfireProcedure.execute(player);
SentinelFireProcedure.execute(player);
MarlinfireProcedure.execute(player);
M870fireProcedure.execute(player);
VectorFireProcedure.execute(player);
@ -49,5 +47,14 @@ public class PressFireProcedure {
if (tag.getInt("ammo") == 0) {
PlayerReloadProcedure.execute(player);
}
/**
* 栓动武器左键手动拉栓
*/
if (mainHandItem.is(TargetModTags.Items.GUN) && tag.getDouble("bolt_action_time") > 0 && tag.getInt("ammo") > 0) {
if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) {
mainHandItem.getOrCreateTag().putDouble("bolt_action_anim", mainHandItem.getOrCreateTag().getDouble("bolt_action_time"));
GunEventHandler.playGunBoltSounds(player);
}
}
}
}

View file

@ -52,6 +52,5 @@ public class RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
}
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -61,6 +61,5 @@ public class RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -1,64 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
public class SentinelFireProcedure {
public static void execute(Player player) {
if (player.isSpectator()) return;
ItemStack usehand = player.getMainHandItem();
if (usehand.getItem() == TargetModItems.SENTINEL.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !player.getCooldowns().isOnCooldown(usehand.getItem())
&& usehand.getOrCreateTag().getInt("ammo") > 0) {
if (usehand.getOrCreateTag().getDouble("power") > 0) {
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) {
usehand.getOrCreateTag().putDouble("zoomfiring", 24);
} else {
usehand.getOrCreateTag().putDouble("firing", 24);
}
if (!player.level().isClientSide() && player.getServer() != null) {
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_charge_fire_1p player @s ~ ~ ~ 2 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_charge_fire_3p player @a ~ ~ ~ 4 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_charge_far player @s ~ ~ ~ 12 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_charge_veryfar player @a ~ ~ ~ 24 1");
}
if (usehand.getOrCreateTag().getDouble("power") > 20) {
usehand.getOrCreateTag().putDouble("power", (usehand.getOrCreateTag().getDouble("power") - 20));
} else {
usehand.getOrCreateTag().putDouble("power", 0);
}
} else {
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) {
usehand.getOrCreateTag().putDouble("zoomfiring", 24);
} else {
usehand.getOrCreateTag().putDouble("firing", 24);
}
if (!player.level().isClientSide() && player.getServer() != null) {
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_fire_1p player @s ~ ~ ~ 2 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_fire_3p player @a ~ ~ ~ 4 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_far player @s ~ ~ ~ 12 1");
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_veryfar player @a ~ ~ ~ 24 1");
}
}
GunsTool.spawnBullet(player);
usehand.getOrCreateTag().putDouble("crot", 20);
player.getCooldowns().addCooldown(usehand.getItem(), 23);
usehand.getOrCreateTag().putInt("ammo", (usehand.getOrCreateTag().getInt("ammo") - 1));
usehand.getOrCreateTag().putDouble("fireanim", 2);
}
}
}

View file

@ -76,7 +76,7 @@ public class SentinelWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
if (itemstack.getOrCreateTag().getDouble("zoomfiring") > 0) {
itemstack.getOrCreateTag().putDouble("zoomfiring", (itemstack.getOrCreateTag().getDouble("zoomfiring") - 1));
}
WeaponDrawProcedure.execute(entity, itemstack);
cid = itemstack.getOrCreateTag().getDouble("cid");
if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("cid") != itemstack.getOrCreateTag().getDouble("cid")) {
itemstack.getOrCreateTag().putDouble("charging", 0);

View file

@ -72,6 +72,5 @@ public class SksWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.RIFLE, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -72,6 +72,5 @@ public class SvdWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure {
GunReload.reload(entity, GunInfo.Type.SNIPER, true);
}
}
WeaponDrawProcedure.execute(entity, itemstack);
}
}

View file

@ -53,6 +53,5 @@ public class TasercooldownProcedure {
}
}
}
WeaponDrawLightProcedure.execute(entity, itemstack);
}
}

View file

@ -1,36 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
public class WeaponDrawLightProcedure {
public static void execute(Entity entity, ItemStack itemStack) {
if (entity == null) return;
CompoundTag tag = itemStack.getOrCreateTag();
Item mainHandItem = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem();
if (tag.getDouble("draw") == 1) {
tag.putDouble("draw", 0);
tag.putDouble("drawtime", 0);
if (entity instanceof Player _player)
_player.getCooldowns().addCooldown(itemStack.getItem(), 11);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.zooming = false;
capability.syncPlayerVariables(entity);
});
}
if (mainHandItem == itemStack.getItem()) {
if (tag.getDouble("drawtime") < 11) {
tag.putDouble("drawtime", (tag.getDouble("drawtime") + 1));
}
}
if (tag.getDouble("fireanim") > 0) {
tag.putDouble("fireanim", (tag.getDouble("fireanim") - 1));
}
}
}

View file

@ -1,43 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
public class WeaponDrawProcedure {
public static void execute(Entity entity, ItemStack itemStack) {
if (entity == null) return;
CompoundTag tag = itemStack.getOrCreateTag();
Item mainHandItem = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem();
if (tag.getDouble("draw") == 1) {
tag.putDouble("draw", 0);
tag.putDouble("drawtime", 0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.zooming = false;
capability.syncPlayerVariables(entity);
});
if (entity instanceof Player _player)
_player.getCooldowns().addCooldown(itemStack.getItem(), 16);
if (itemStack.getItem() == TargetModItems.RPG.get() && tag.getInt("ammo") == 0) {
tag.putDouble("empty", 1);
}
if (itemStack.getItem() == TargetModItems.SKS.get() && tag.getInt("ammo") == 0) {
tag.putDouble("gj", 1);
}
}
if (mainHandItem == itemStack.getItem()) {
if (tag.getDouble("drawtime") < 16) {
tag.putDouble("drawtime", (tag.getDouble("drawtime") + 1));
}
}
if (tag.getDouble("fireanim") > 0) {
tag.putDouble("fireanim", (tag.getDouble("fireanim") - 1));
}
}
}

View file

@ -1,40 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
public class WeapondrawhaveyProcedure {
public static void execute(Entity entity, ItemStack itemStack) {
if (entity == null) return;
CompoundTag tag = itemStack.getOrCreateTag();
Item mainHandItem = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem();
if (tag.getDouble("draw") == 1) {
tag.putDouble("draw", 0);
tag.putDouble("drawtime", 0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.zooming = false;
capability.syncPlayerVariables(entity);
});
if (entity instanceof Player _player)
_player.getCooldowns().addCooldown(itemStack.getItem(), 29);
if (itemStack.getItem() == TargetModItems.M_60.get() && tag.getInt("ammo") <= 5) {
tag.putDouble("empty", 1);
}
}
if (mainHandItem == itemStack.getItem()) {
if (tag.getDouble("drawtime") < 29) {
tag.putDouble("drawtime", (tag.getDouble("drawtime") + 1));
}
}
if (tag.getDouble("fireanim") > 0) {
tag.putDouble("fireanim", (tag.getDouble("fireanim") - 1));
}
}
}

View file

@ -1,5 +1,6 @@
package net.mcreator.target.tools;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
@ -18,6 +19,12 @@ public class GunReload {
int mag = tag.getInt("mag");
int ammo = tag.getInt("ammo");
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
/**
* 空仓换弹的栓动武器应该在换单后取消待上膛标记
*/
if (ammo ==0 && tag.getDouble("bolt_action_time") > 0) {
tag.putDouble("need_bolt_action", 0);
}
int playerAmmo = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) {
case RIFLE -> c.rifleAmmo;

View file

@ -104,16 +104,6 @@
"vector": [0, 0, 0]
}
}
},
"bolt": {
"position": {
"0.0": {
"vector": [0, 0, 3.25]
},
"0.05": {
"vector": [0, 0, 0]
}
}
}
}
},
@ -130,16 +120,6 @@
"vector": [0, 0, 0]
}
}
},
"bolt": {
"position": {
"0.0": {
"vector": [0, 0, 3.25]
},
"0.05": {
"vector": [0, 0, 0]
}
}
}
}
},

View file

@ -677,6 +677,14 @@
}
]
},
"kraber_bolt": {
"sounds": [
{
"name": "target:kraber/kraber_bolt",
"stream": false
}
]
},
"vector_fire_1p": {
"sounds": [
@ -913,6 +921,14 @@
}
]
},
"sentinel_bolt": {
"sounds": [
{
"name": "target:sentinel/sentinel_bolt",
"stream": false
}
]
},
"m_60_fire_1p": {
"sounds": [
@ -1060,6 +1076,14 @@
}
]
},
"m_98b_bolt": {
"sounds": [
{
"name": "target:m_98b/m_98b_bolt",
"stream": false
}
]
},
"marlin_fire_1p": {
"sounds": [
@ -1427,14 +1451,6 @@
}
]
},
"shift": {
"sounds": [
{
"name": "target:shift",
"stream": false
}
]
},
"headshot": {
"sounds": [
{

View file

@ -9,5 +9,6 @@
"velocity": 16,
"mag": 25,
"projectileamount": 8,
"fire_interval": 4
}
"fire_interval": 4,
"weight": 1
}

View file

@ -9,5 +9,6 @@
"velocity": 15,
"mag": 2,
"projectileamount": 8,
"fire_interval": 2
"fire_interval": 2,
"weight": 0
}

View file

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

View file

@ -5,5 +5,7 @@
"recoilx": 0.005,
"recoily": 0.003,
"headshot": 1.5,
"damage": 24
"damage": 24,
"weight": 1,
"weight": 1
}

View file

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

View file

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

View file

@ -8,5 +8,6 @@
"headshot": 3,
"velocity": 50,
"mag": 1,
"projectileamount": 1
"projectileamount": 1,
"weight": 1
}

View file

@ -8,5 +8,9 @@
"damage": 70,
"headshot": 3,
"velocity": 40,
"mag": 4
"projectileamount": 1,
"mag": 4,
"fire_interval": 10,
"bolt_action_time": 30,
"weight": 2
}

View file

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

View file

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

View file

@ -6,5 +6,6 @@
"recoily": 0.023,
"damage": 40,
"velocity": 3.75,
"mag": 1
"mag": 1,
"weight": 1
}

View file

@ -7,5 +7,6 @@
"damage": 2,
"headshot": 1.5,
"velocity": 20,
"mag": 8
"mag": 8,
"weight": 1
}

View file

@ -7,5 +7,9 @@
"damage": 28,
"headshot": 3,
"velocity": 55,
"mag": 5
"projectileamount": 1,
"mag": 5,
"fire_interval": 6,
"bolt_action_time": 18,
"weight": 1
}

View file

@ -7,5 +7,6 @@
"damage": 16,
"headshot": 2.5,
"velocity": 27,
"mag": 8
"mag": 8,
"weight": 1
}

View file

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

View file

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

View file

@ -6,5 +6,6 @@
"recoily": 0.018,
"damage": 150,
"velocity": 5.75,
"mag": 1
"mag": 1,
"weight": 1
}

View file

@ -10,5 +10,6 @@
"velocity": 35,
"mag": 75,
"projectileamount": 1,
"fire_interval": 2
"fire_interval": 2,
"weight": 1
}

View file

@ -6,6 +6,10 @@
"recoily": 0.018,
"damage": 25,
"mag": 5,
"projectileamount": 1,
"headshot": 2,
"velocity": 50
"velocity": 50,
"fire_interval": 2,
"bolt_action_time": 22,
"weight": 1
}

View file

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

View file

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

View file

@ -6,5 +6,6 @@
"zoom": 1.25,
"damage": 5,
"velocity": 3,
"mag": 1
"mag": 1,
"weight": 0
}

View file

@ -9,5 +9,6 @@
"velocity": 60,
"mag": 8,
"projectileamount": 1,
"fire_interval": 5
"fire_interval": 5,
"weight": 0
}

View file

@ -9,5 +9,6 @@
"velocity": 22,
"mag": 33,
"projectileamount": 1,
"fire_interval": 1
"fire_interval": 1,
"weight": 0
}

View file

@ -14,6 +14,9 @@
"target:m_4",
"target:devotion",
"target:trachelium",
"target:hunting_rifle"
"target:hunting_rifle",
"target:kraber",
"target:m_98b",
"target:sentinel"
]
}