diff --git a/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 b/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 index 9698e6add..f45dbbac6 100644 --- a/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 +++ b/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-30T03:13:00.7790602 Tags for minecraft:item mod id superbwarfare +// 1.20.1 2024-11-06T16:27:03.7101082 Tags for minecraft:item mod id superbwarfare cf8d49a8d2872286d1a9c3d4a7e1c2b7690db0b8 data/forge/tags/items/dusts.json 0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json 295ddf906b7133a0558d03e9a60eea18281fe430 data/forge/tags/items/dusts/iron.json @@ -36,6 +36,7 @@ af6fd64b4a685c353f243763db268f7b2304c009 data/forge/tags/items/storage_blocks/le dff9ff6d6637951191906cb55a210ae5a3ad5cd6 data/superbwarfare/tags/items/extra_one_ammo.json 52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json 62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json +49fbb8c030fdfafec1f291acc1cdff406c777c7e data/superbwarfare/tags/items/has_shell_effect.json dae3f86663e841d336efff9d23d8910aa7247be5 data/superbwarfare/tags/items/is_auto_weapon.json 68ec25b0ccd68abbbe2f33ab7097572c2140c9da data/superbwarfare/tags/items/launcher.json b404c6fd99d2ca68c6738f225cb7d68ee443c10a data/superbwarfare/tags/items/machine_gun.json diff --git a/src/generated/resources/data/superbwarfare/tags/items/has_shell_effect.json b/src/generated/resources/data/superbwarfare/tags/items/has_shell_effect.json new file mode 100644 index 000000000..6e863343a --- /dev/null +++ b/src/generated/resources/data/superbwarfare/tags/items/has_shell_effect.json @@ -0,0 +1,20 @@ +{ + "values": [ + "superbwarfare:ak_47", + "superbwarfare:ak_12", + "superbwarfare:svd", + "superbwarfare:m_60", + "superbwarfare:mk_14", + "superbwarfare:vector", + "superbwarfare:sks", + "superbwarfare:rpk", + "superbwarfare:hk_416", + "superbwarfare:aa_12", + "superbwarfare:m_4", + "superbwarfare:devotion", + "superbwarfare:glock_17", + "superbwarfare:glock_18", + "superbwarfare:m_1911", + "superbwarfare:qbz_95" + ] +} \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/ModUtils.java b/src/main/java/net/mcreator/superbwarfare/ModUtils.java index 4fd0c766d..a0fa98f79 100644 --- a/src/main/java/net/mcreator/superbwarfare/ModUtils.java +++ b/src/main/java/net/mcreator/superbwarfare/ModUtils.java @@ -83,11 +83,16 @@ public class ModUtils { } private static final Collection> workQueue = new ConcurrentLinkedQueue<>(); + private static final Collection> workQueueC = new ConcurrentLinkedQueue<>(); public static void queueServerWork(int tick, Runnable action) { workQueue.add(new AbstractMap.SimpleEntry<>(action, tick)); } + public static void queueClientWork(int tick, Runnable action) { + workQueueC.add(new AbstractMap.SimpleEntry<>(action, tick)); + } + @SubscribeEvent public void tick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.END) { @@ -102,6 +107,20 @@ public class ModUtils { } } + @SubscribeEvent + public void tick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + List> actions = new ArrayList<>(); + workQueueC.forEach(work -> { + work.setValue(work.getValue() - 1); + if (work.getValue() == 0) + actions.add(work); + }); + actions.forEach(e -> e.getKey().run()); + workQueueC.removeAll(actions); + } + } + public void onCommonSetup(final FMLCommonSetupEvent event) { addNetworkMessage(ZoomMessage.class, ZoomMessage::encode, ZoomMessage::decode, ZoomMessage::handler); addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::encode, DoubleJumpMessage::decode, DoubleJumpMessage::handler); diff --git a/src/main/java/net/mcreator/superbwarfare/datagen/ModItemTagProvider.java b/src/main/java/net/mcreator/superbwarfare/datagen/ModItemTagProvider.java index fc24aea4c..77548e561 100644 --- a/src/main/java/net/mcreator/superbwarfare/datagen/ModItemTagProvider.java +++ b/src/main/java/net/mcreator/superbwarfare/datagen/ModItemTagProvider.java @@ -110,6 +110,10 @@ public class ModItemTagProvider extends ItemTagsProvider { ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(),ModItems.NTW_20.get(), ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.GLOCK_17.get(),ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get()); + this.tag(ModTags.Items.HAS_SHELL_EFFECT).add(ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.SVD.get(), ModItems.M_60.get(), ModItems.MK_14.get(), ModItems.VECTOR.get(), + ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.GLOCK_17.get(), + ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get()); + this.tag(ModTags.Items.MILITARY_ARMOR).add(ModItems.RU_CHEST_6B43.get(), ModItems.US_CHEST_IOTV.get()); this.tag(ModTags.Items.CAN_CUSTOM_GUN).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get()); diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index bcd92441b..8db81b4da 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -18,6 +18,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.util.Mth; @@ -280,6 +281,11 @@ public class ClientEventHandler { if (stack.getItem() == ModItems.DEVOTION.get() && (stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))) { customRpm = 0; } + + double block_range = player.getEyePosition().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(player.getEyePosition(), player.getEyePosition().add(new Vec3(0, -1 , 0).scale(10)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); + + player.displayClientMessage(Component.literal(new java.text.DecimalFormat("##.#").format(block_range)), true); } public static void shootClient(Player player) { @@ -402,6 +408,20 @@ public class ClientEventHandler { if (sound1p != null) { player.playSound(sound1p, 2, 1); } + + double shooterHeight = player.getEyePosition().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(player.getEyePosition(), player.getEyePosition().add(new Vec3(0, -1 , 0).scale(10)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); + + ModUtils.queueClientWork((int) (1 + 1.5 * shooterHeight), () -> { + if (stack.is(ModTags.Items.HAS_SHELL_EFFECT)) { + if (stack.is(ModTags.Items.SHOTGUN)) { + player.playSound(ModSounds.SHELL_CASING_SHOTGUN.get(), (float) Math.max(0.75 - 0.12 * shooterHeight, 0), 1); + } else { + player.playSound(ModSounds.SHELL_CASING_NORMAL.get(), (float) Math.max(1.5 - 0.2 * shooterHeight, 0), 1); + } + + } + }); } @SubscribeEvent diff --git a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java index 9db48d57a..57c58b0c8 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java @@ -21,6 +21,8 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.event.TickEvent; @@ -174,6 +176,17 @@ public class GunEventHandler { SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(ModUtils.MODID, name + "_bolt")); if (sound1p != null && player instanceof ServerPlayer serverPlayer) { SoundTool.playLocalSound(serverPlayer, sound1p, 2f, 1f); + + double shooterHeight = player.getEyePosition().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(player.getEyePosition(), player.getEyePosition().add(new Vec3(0, -1 , 0).scale(10)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos()))); + + ModUtils.queueServerWork((int) (stack.getOrCreateTag().getDouble("bolt_action_time") / 2 + 1.5 * shooterHeight), () -> { + if (stack.is(ModTags.Items.SHOTGUN)) { + SoundTool.playLocalSound(serverPlayer, ModSounds.SHELL_CASING_SHOTGUN.get(), (float) Math.max(0.75 - 0.12 * shooterHeight, 0), 1); + } else { + SoundTool.playLocalSound(serverPlayer,ModSounds.SHELL_CASING_NORMAL.get(), (float) Math.max(1.5 - 0.2 * shooterHeight, 0), 1); + } + }); } } } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java b/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java index 934943b7f..991652d99 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java @@ -311,4 +311,6 @@ public class ModSounds { public static final RegistryObject EDIT_MODE = REGISTRY.register("edit_mode", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "edit_mode"))); public static final RegistryObject EDIT = REGISTRY.register("edit", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "edit"))); + public static final RegistryObject SHELL_CASING_NORMAL = REGISTRY.register("shell_casing_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "shell_casing_normal"))); + public static final RegistryObject SHELL_CASING_SHOTGUN = REGISTRY.register("shell_casing_shotgun", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "shell_casing_shotgun"))); } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModTags.java b/src/main/java/net/mcreator/superbwarfare/init/ModTags.java index 6c38e81f3..7f247f42e 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModTags.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModTags.java @@ -39,6 +39,8 @@ public class ModTags { public static final TagKey CAN_APPLY_MAGAZINE = tag("can_apply_magazine"); public static final TagKey CAN_APPLY_STOCK= tag("can_apply_stock"); + public static final TagKey HAS_SHELL_EFFECT= tag("has_shell_effect"); + public static final TagKey MILITARY_ARMOR = tag("military_armor"); public static final TagKey MILITARY_ARMOR_HEAVY = tag("military_armor_heavy"); diff --git a/src/main/resources/assets/superbwarfare/geo/m4.geo.json b/src/main/resources/assets/superbwarfare/geo/m4.geo.json index 9edce42df..1057c8e51 100644 --- a/src/main/resources/assets/superbwarfare/geo/m4.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/m4.geo.json @@ -10376,13 +10376,13 @@ { "name": "CrossAlt", "parent": "Cross", - "pivot": [0, 6.00078, -96], + "pivot": [0, 5.95391, -96], "cubes": [ { - "origin": [-0.20958, 5.7912, -96], - "size": [0.41917, 0.41917, 0], + "origin": [-0.36509, 5.58882, -96], + "size": [0.73019, 0.73019, 0], "uv": { - "south": {"uv": [80.2627, 62.97217], "uv_size": [16.25, 16.25]} + "south": {"uv": [100.0127, 61.72217], "uv_size": [16.25, 16.25]} } } ] diff --git a/src/main/resources/assets/superbwarfare/sounds.json b/src/main/resources/assets/superbwarfare/sounds.json index 5ecb99192..ee282e73b 100644 --- a/src/main/resources/assets/superbwarfare/sounds.json +++ b/src/main/resources/assets/superbwarfare/sounds.json @@ -2165,5 +2165,53 @@ "stream": false } ] + }, + "shell_casing_normal": { + "sounds": [ + { + "name": "superbwarfare:shells/shell_casing_normal_1", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_normal_2", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_normal_3", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_normal_4", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_normal_5", + "stream": false + } + ] + }, + "shell_casing_shotgun": { + "sounds": [ + { + "name": "superbwarfare:shells/shell_casing_shotgun_1", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_shotgun_2", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_shotgun_3", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_shotgun_4", + "stream": false + }, + { + "name": "superbwarfare:shells/shell_casing_shotgun_5", + "stream": false + } + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_1.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_1.ogg new file mode 100644 index 000000000..d02473a27 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_1.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_2.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_2.ogg new file mode 100644 index 000000000..3d14f90ab Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_2.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_3.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_3.ogg new file mode 100644 index 000000000..e5252d6d1 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_3.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_4.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_4.ogg new file mode 100644 index 000000000..1ad03ebae Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_4.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_5.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_5.ogg new file mode 100644 index 000000000..243dfcbc7 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_normal_5.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_1.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_1.ogg new file mode 100644 index 000000000..a29b56710 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_1.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_2.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_2.ogg new file mode 100644 index 000000000..4e53a962b Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_2.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_3.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_3.ogg new file mode 100644 index 000000000..3fa4f6a4d Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_3.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_4.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_4.ogg new file mode 100644 index 000000000..52a412526 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_4.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_5.ogg b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_5.ogg new file mode 100644 index 000000000..3bb9c1f0d Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/shells/shell_casing_shotgun_5.ogg differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/m4.png b/src/main/resources/assets/superbwarfare/textures/item/m4.png index e69c3afdf..d2adf062e 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/m4.png and b/src/main/resources/assets/superbwarfare/textures/item/m4.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/m4_e.png b/src/main/resources/assets/superbwarfare/textures/item/m4_e.png index adace6fdc..80b08be67 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/m4_e.png and b/src/main/resources/assets/superbwarfare/textures/item/m4_e.png differ