From 8d006728062db331b249abb09907cbf0730f6282 Mon Sep 17 00:00:00 2001 From: bruno Date: Mon, 29 Jul 2024 15:19:28 +0200 Subject: [PATCH] Stuff go brr --- build.gradle | 13 +++- gradle.properties | 5 +- .../systems/brn/plasticgun/PlasticGun.java | 58 ++++++++++++--- .../brn/plasticgun/bullets/BulletEntity.java | 10 ++- .../brn/plasticgun/bullets/BulletItem.java | 3 - .../brn/plasticgun/defence/WeaponArmor.java | 38 ++++++++++ .../FragmentationExplosionBehavior.java | 59 ++++++++++++++- .../plasticgun/grenades/GrenadeEntity.java | 2 +- .../grenades/GrenadeExplosionBehavior.java | 22 ++++++ .../brn/plasticgun/grenades/GrenadeItem.java | 5 +- .../java/systems/brn/plasticgun/guns/Gun.java | 31 +++++++- .../brn/plasticgun/lib/CraftingItem.java | 15 ++++ .../brn/plasticgun/lib/ItemGroups.java | 27 ++++++- .../plasticgun/lib/TrinketPolymerItem.java | 70 ++++++++++++++++++ .../java/systems/brn/plasticgun/lib/Util.java | 43 +++++++++++ .../brn/plasticgun/lib/WeaponDamageType.java | 8 ++ .../plasticgun/shurikens/ShurikenEntity.java | 15 +++- .../plasticgun/shurikens/ShurikenItem.java | 6 +- .../throwables/ThrowableProjectile.java | 2 +- .../assets/plasticgun/lang/en_us.json | 41 +++++++++- .../models/item/advanced_circuit.json | 6 ++ .../plasticgun/models/item/alloy_wheel.json | 6 ++ .../models/item/ceramic_mixture.json | 6 ++ .../plasticgun/models/item/ceramic_plate.json | 6 ++ .../models/item/composite_frame.json | 6 ++ .../models/item/composite_resin.json | 6 ++ .../plasticgun/models/item/copper_wiring.json | 6 ++ .../models/item/enhanced_gunpowder.json | 6 ++ .../models/item/explosive_powder.json | 6 ++ .../plasticgun/models/item/flak_vest.json | 6 ++ .../models/item/graphene_sheet.json | 6 ++ .../plasticgun/models/item/grenade_m34.json | 6 ++ .../models/item/hardened_steel.json | 6 ++ .../plasticgun/models/item/hyperalloy.json | 6 ++ .../plasticgun/models/item/kevlar_sheet.json | 6 ++ .../plasticgun/models/item/kevlar_vest.json | 6 ++ .../plasticgun/models/item/magnetic_coil.json | 6 ++ .../plasticgun/models/item/microchip.json | 6 ++ .../plasticgun/models/item/nano_tubes.json | 6 ++ .../plasticgun/models/item/plasma_core.json | 6 ++ .../plasticgun/models/item/power_cell.json | 6 ++ .../models/item/precision_gear.json | 6 ++ .../models/item/reinforced_fiber.json | 6 ++ .../models/item/silicon_mixture.json | 6 ++ .../plasticgun/models/item/silicon_wafer.json | 6 ++ .../models/item/titanium_alloy.json | 6 ++ .../models/item/trigger_mechanism.json | 6 ++ .../textures/gui/slots/vest_slot.png | Bin 0 -> 379 bytes .../plasticgun/textures/item/32_acp.png | Bin 166 -> 386 bytes .../textures/item/32_acp_high_velocity.png | Bin 166 -> 386 bytes .../plasticgun/textures/item/357_magnum.png | Bin 150 -> 365 bytes .../plasticgun/textures/item/357_revolver.png | Bin 610 -> 762 bytes .../plasticgun/textures/item/357_standard.png | Bin 150 -> 365 bytes .../plasticgun/textures/item/38_special.png | Bin 170 -> 386 bytes .../plasticgun/textures/item/38_special_p.png | Bin 170 -> 386 bytes .../plasticgun/textures/item/45_acp.png | Bin 170 -> 391 bytes .../textures/item/45_acp_hollow_point.png | Bin 170 -> 391 bytes .../plasticgun/textures/item/762_tokarev.png | Bin 153 -> 371 bytes .../textures/item/762_tokarev_ap.png | Bin 153 -> 371 bytes .../plasticgun/textures/item/9mm_jhp.png | Bin 175 -> 391 bytes .../textures/item/9mm_parabellum.png | Bin 175 -> 391 bytes .../textures/item/advanced_circuit.png | Bin 0 -> 387 bytes .../assets/plasticgun/textures/item/ak_47.png | Bin 245 -> 440 bytes .../plasticgun/textures/item/alloy_wheel.png | Bin 0 -> 431 bytes .../assets/plasticgun/textures/item/awp.png | Bin 225 -> 459 bytes .../textures/item/ceramic_mixture.png | Bin 0 -> 461 bytes .../textures/item/ceramic_plate.png | Bin 0 -> 687 bytes .../plasticgun/textures/item/colt_1903.png | Bin 669 -> 818 bytes .../plasticgun/textures/item/colt_45.png | Bin 642 -> 792 bytes .../textures/item/colt_peacemaker.png | Bin 594 -> 745 bytes .../textures/item/composite_frame.png | Bin 0 -> 567 bytes .../textures/item/composite_resin.png | Bin 0 -> 338 bytes .../textures/item/copper_wiring.png | Bin 0 -> 348 bytes .../textures/item/diamond_shuriken.png | Bin 589 -> 548 bytes .../textures/item/enhanced_gunpowder.png | Bin 0 -> 434 bytes .../textures/item/explosive_powder.png | Bin 0 -> 420 bytes .../plasticgun/textures/item/flak_vest.png | Bin 0 -> 496 bytes .../textures/item/force_container.png | Bin 154 -> 365 bytes .../plasticgun/textures/item/forcegun.png | Bin 388 -> 451 bytes .../textures/item/golden_shuriken.png | Bin 535 -> 532 bytes .../textures/item/graphene_sheet.png | Bin 0 -> 322 bytes .../textures/item/grenade_an_m14.png | Bin 179 -> 388 bytes .../plasticgun/textures/item/grenade_f1.png | Bin 175 -> 389 bytes .../plasticgun/textures/item/grenade_k417.png | Bin 191 -> 399 bytes .../plasticgun/textures/item/grenade_m18.png | Bin 292 -> 437 bytes .../plasticgun/textures/item/grenade_m34.png | Bin 155 -> 368 bytes .../plasticgun/textures/item/grenade_m7a3.png | Bin 179 -> 388 bytes .../plasticgun/textures/item/grenade_m84.png | Bin 334 -> 445 bytes .../textures/item/grenade_mk3a2.png | Bin 373 -> 460 bytes .../textures/item/grenade_no_69.png | Bin 249 -> 459 bytes .../textures/item/grenade_rgd_5.png | Bin 201 -> 404 bytes .../plasticgun/textures/item/grenade_rgo.png | Bin 296 -> 407 bytes .../textures/item/grenade_thermite.png | Bin 179 -> 388 bytes .../textures/item/hardened_steel.png | Bin 0 -> 655 bytes .../plasticgun/textures/item/hyperalloy.png | Bin 0 -> 659 bytes .../textures/item/iron_shuriken.png | Bin 579 -> 548 bytes .../plasticgun/textures/item/kevlar_sheet.png | Bin 0 -> 610 bytes .../plasticgun/textures/item/kevlar_vest.png | Bin 0 -> 608 bytes .../textures/item/magnetic_coil.png | Bin 0 -> 369 bytes .../plasticgun/textures/item/microchip.png | Bin 0 -> 387 bytes .../plasticgun/textures/item/nano_tubes.png | Bin 0 -> 348 bytes .../textures/item/netherite_shuriken.png | Bin 529 -> 514 bytes .../assets/plasticgun/textures/item/p2022.png | Bin 677 -> 829 bytes .../plasticgun/textures/item/plasma_core.png | Bin 0 -> 781 bytes .../plasticgun/textures/item/power_cell.png | Bin 0 -> 359 bytes .../textures/item/precision_gear.png | Bin 0 -> 455 bytes .../assets/plasticgun/textures/item/rpg9.png | Bin 245 -> 470 bytes .../plasticgun/textures/item/rpg_shell.png | Bin 153 -> 371 bytes .../textures/item/rpg_shell_incendiary.png | Bin 153 -> 371 bytes .../textures/item/silicon_mixture.png | Bin 0 -> 466 bytes .../textures/item/silicon_wafer.png | Bin 0 -> 831 bytes .../textures/item/snub_nosed_revolver.png | Bin 663 -> 811 bytes .../textures/item/stone_shuriken.png | Bin 502 -> 452 bytes .../textures/item/titanium_alloy.png | Bin 0 -> 591 bytes .../textures/item/tokarev_tt_33.png | Bin 628 -> 767 bytes .../textures/item/wooden_shuriken.png | Bin 617 -> 547 bytes .../data/plasticgun/recipe/32_acp.json | 11 +++ .../recipe/32_acp_high_velocity.json | 12 +++ .../data/plasticgun/recipe/357_magnum.json | 12 +++ .../data/plasticgun/recipe/357_revolver.json | 18 +++++ .../data/plasticgun/recipe/357_standard.json | 18 +++++ .../data/plasticgun/recipe/38_special.json | 11 +++ .../data/plasticgun/recipe/38_special_p.json | 12 +++ .../data/plasticgun/recipe/45_acp.json | 11 +++ .../recipe/45_acp_hollow_point.json | 12 +++ .../data/plasticgun/recipe/762_tokarev.json | 11 +++ .../plasticgun/recipe/762_tokarev_ap.json | 12 +++ .../data/plasticgun/recipe/9mm_jhp.json | 12 +++ .../plasticgun/recipe/9mm_parabellum.json | 11 +++ .../plasticgun/recipe/advanced_circuit.json | 18 +++++ .../data/plasticgun/recipe/ak_47.json | 20 +++++ .../data/plasticgun/recipe/alloy_wheel.json | 16 ++++ .../resources/data/plasticgun/recipe/awp.json | 20 +++++ .../plasticgun/recipe/ceramic_mixture.json | 11 +++ .../data/plasticgun/recipe/ceramic_plate.json | 11 +++ .../data/plasticgun/recipe/colt_1903.json | 19 +++++ .../data/plasticgun/recipe/colt_45.json | 20 +++++ .../plasticgun/recipe/colt_peacemaker.json | 18 +++++ .../plasticgun/recipe/composite_frame.json | 16 ++++ .../plasticgun/recipe/composite_resin.json | 11 +++ .../data/plasticgun/recipe/copper_wiring.json | 15 ++++ .../plasticgun/recipe/diamond_shuriken.json | 14 ++++ .../plasticgun/recipe/enhanced_gunpowder.json | 11 +++ .../plasticgun/recipe/explosive_powder.json | 12 +++ .../data/plasticgun/recipe/flak_vest.json | 24 ++++++ .../plasticgun/recipe/force_container.json | 17 +++++ .../data/plasticgun/recipe/forcegun.json | 18 +++++ .../plasticgun/recipe/golden_shuriken.json | 14 ++++ .../plasticgun/recipe/graphene_sheet.json | 11 +++ .../plasticgun/recipe/grenade_an_m14.json | 18 +++++ .../data/plasticgun/recipe/grenade_f1.json | 18 +++++ .../data/plasticgun/recipe/grenade_k417.json | 18 +++++ .../data/plasticgun/recipe/grenade_m18.json | 18 +++++ .../data/plasticgun/recipe/grenade_m34.json | 18 +++++ .../data/plasticgun/recipe/grenade_m7a3.json | 18 +++++ .../data/plasticgun/recipe/grenade_m84.json | 18 +++++ .../data/plasticgun/recipe/grenade_mk3a2.json | 18 +++++ .../data/plasticgun/recipe/grenade_no_69.json | 18 +++++ .../data/plasticgun/recipe/grenade_rgd_5.json | 18 +++++ .../data/plasticgun/recipe/grenade_rgo.json | 18 +++++ .../plasticgun/recipe/grenade_thermite.json | 18 +++++ .../plasticgun/recipe/hardened_steel.json | 11 +++ .../data/plasticgun/recipe/hyperalloy.json | 17 +++++ .../data/plasticgun/recipe/iron_shuriken.json | 14 ++++ .../data/plasticgun/recipe/kevlar_sheet.json | 16 ++++ .../data/plasticgun/recipe/kevlar_vest.json | 16 ++++ .../data/plasticgun/recipe/magnetic_coil.json | 23 ++++++ .../data/plasticgun/recipe/microchip.json | 17 +++++ .../data/plasticgun/recipe/nano_tubes.json | 15 ++++ .../plasticgun/recipe/netherite_shuriken.json | 16 ++++ .../data/plasticgun/recipe/p2022.json | 19 +++++ .../data/plasticgun/recipe/plasma_core.json | 17 +++++ .../data/plasticgun/recipe/power_cell.json | 11 +++ .../plasticgun/recipe/precision_gear.json | 17 +++++ .../plasticgun/recipe/reinforced_fiber.json | 17 +++++ .../data/plasticgun/recipe/rpg9.json | 18 +++++ .../data/plasticgun/recipe/rpg_shell.json | 17 +++++ .../recipe/rpg_shell_incendiary.json | 17 +++++ .../plasticgun/recipe/silicon_mixture.json | 36 +++++++++ .../data/plasticgun/recipe/silicon_wafer.json | 11 +++ .../recipe/snub_nosed_revolver.json | 17 +++++ .../plasticgun/recipe/stone_shuriken.json | 14 ++++ .../plasticgun/recipe/titanium_alloy.json | 16 ++++ .../data/plasticgun/recipe/tokarev_tt_33.json | 19 +++++ .../plasticgun/recipe/trigger_mechanism.json | 19 +++++ .../plasticgun/recipe/wooden_shuriken.json | 16 ++++ .../data/trinkets/entities/plasticgun.json | 8 ++ .../data/trinkets/slots/chest/vest.json | 6 ++ .../data/trinkets/tags/item/chest/vest.json | 7 ++ 189 files changed, 1733 insertions(+), 44 deletions(-) create mode 100644 src/main/java/systems/brn/plasticgun/defence/WeaponArmor.java create mode 100644 src/main/java/systems/brn/plasticgun/grenades/GrenadeExplosionBehavior.java create mode 100644 src/main/java/systems/brn/plasticgun/lib/CraftingItem.java create mode 100644 src/main/java/systems/brn/plasticgun/lib/TrinketPolymerItem.java create mode 100644 src/main/java/systems/brn/plasticgun/lib/WeaponDamageType.java create mode 100644 src/main/resources/assets/plasticgun/models/item/advanced_circuit.json create mode 100644 src/main/resources/assets/plasticgun/models/item/alloy_wheel.json create mode 100644 src/main/resources/assets/plasticgun/models/item/ceramic_mixture.json create mode 100644 src/main/resources/assets/plasticgun/models/item/ceramic_plate.json create mode 100644 src/main/resources/assets/plasticgun/models/item/composite_frame.json create mode 100644 src/main/resources/assets/plasticgun/models/item/composite_resin.json create mode 100644 src/main/resources/assets/plasticgun/models/item/copper_wiring.json create mode 100644 src/main/resources/assets/plasticgun/models/item/enhanced_gunpowder.json create mode 100644 src/main/resources/assets/plasticgun/models/item/explosive_powder.json create mode 100644 src/main/resources/assets/plasticgun/models/item/flak_vest.json create mode 100644 src/main/resources/assets/plasticgun/models/item/graphene_sheet.json create mode 100644 src/main/resources/assets/plasticgun/models/item/grenade_m34.json create mode 100644 src/main/resources/assets/plasticgun/models/item/hardened_steel.json create mode 100644 src/main/resources/assets/plasticgun/models/item/hyperalloy.json create mode 100644 src/main/resources/assets/plasticgun/models/item/kevlar_sheet.json create mode 100644 src/main/resources/assets/plasticgun/models/item/kevlar_vest.json create mode 100644 src/main/resources/assets/plasticgun/models/item/magnetic_coil.json create mode 100644 src/main/resources/assets/plasticgun/models/item/microchip.json create mode 100644 src/main/resources/assets/plasticgun/models/item/nano_tubes.json create mode 100644 src/main/resources/assets/plasticgun/models/item/plasma_core.json create mode 100644 src/main/resources/assets/plasticgun/models/item/power_cell.json create mode 100644 src/main/resources/assets/plasticgun/models/item/precision_gear.json create mode 100644 src/main/resources/assets/plasticgun/models/item/reinforced_fiber.json create mode 100644 src/main/resources/assets/plasticgun/models/item/silicon_mixture.json create mode 100644 src/main/resources/assets/plasticgun/models/item/silicon_wafer.json create mode 100644 src/main/resources/assets/plasticgun/models/item/titanium_alloy.json create mode 100644 src/main/resources/assets/plasticgun/models/item/trigger_mechanism.json create mode 100644 src/main/resources/assets/plasticgun/textures/gui/slots/vest_slot.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/advanced_circuit.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/alloy_wheel.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/ceramic_mixture.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/ceramic_plate.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/composite_frame.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/composite_resin.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/copper_wiring.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/enhanced_gunpowder.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/explosive_powder.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/flak_vest.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/graphene_sheet.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/hardened_steel.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/hyperalloy.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/kevlar_sheet.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/kevlar_vest.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/magnetic_coil.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/microchip.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/nano_tubes.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/plasma_core.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/power_cell.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/precision_gear.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/silicon_mixture.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/silicon_wafer.png create mode 100644 src/main/resources/assets/plasticgun/textures/item/titanium_alloy.png create mode 100644 src/main/resources/data/plasticgun/recipe/32_acp.json create mode 100644 src/main/resources/data/plasticgun/recipe/32_acp_high_velocity.json create mode 100644 src/main/resources/data/plasticgun/recipe/357_magnum.json create mode 100644 src/main/resources/data/plasticgun/recipe/357_revolver.json create mode 100644 src/main/resources/data/plasticgun/recipe/357_standard.json create mode 100644 src/main/resources/data/plasticgun/recipe/38_special.json create mode 100644 src/main/resources/data/plasticgun/recipe/38_special_p.json create mode 100644 src/main/resources/data/plasticgun/recipe/45_acp.json create mode 100644 src/main/resources/data/plasticgun/recipe/45_acp_hollow_point.json create mode 100644 src/main/resources/data/plasticgun/recipe/762_tokarev.json create mode 100644 src/main/resources/data/plasticgun/recipe/762_tokarev_ap.json create mode 100644 src/main/resources/data/plasticgun/recipe/9mm_jhp.json create mode 100644 src/main/resources/data/plasticgun/recipe/9mm_parabellum.json create mode 100644 src/main/resources/data/plasticgun/recipe/advanced_circuit.json create mode 100644 src/main/resources/data/plasticgun/recipe/ak_47.json create mode 100644 src/main/resources/data/plasticgun/recipe/alloy_wheel.json create mode 100644 src/main/resources/data/plasticgun/recipe/awp.json create mode 100644 src/main/resources/data/plasticgun/recipe/ceramic_mixture.json create mode 100644 src/main/resources/data/plasticgun/recipe/ceramic_plate.json create mode 100644 src/main/resources/data/plasticgun/recipe/colt_1903.json create mode 100644 src/main/resources/data/plasticgun/recipe/colt_45.json create mode 100644 src/main/resources/data/plasticgun/recipe/colt_peacemaker.json create mode 100644 src/main/resources/data/plasticgun/recipe/composite_frame.json create mode 100644 src/main/resources/data/plasticgun/recipe/composite_resin.json create mode 100644 src/main/resources/data/plasticgun/recipe/copper_wiring.json create mode 100644 src/main/resources/data/plasticgun/recipe/diamond_shuriken.json create mode 100644 src/main/resources/data/plasticgun/recipe/enhanced_gunpowder.json create mode 100644 src/main/resources/data/plasticgun/recipe/explosive_powder.json create mode 100644 src/main/resources/data/plasticgun/recipe/flak_vest.json create mode 100644 src/main/resources/data/plasticgun/recipe/force_container.json create mode 100644 src/main/resources/data/plasticgun/recipe/forcegun.json create mode 100644 src/main/resources/data/plasticgun/recipe/golden_shuriken.json create mode 100644 src/main/resources/data/plasticgun/recipe/graphene_sheet.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_an_m14.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_f1.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_k417.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_m18.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_m34.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_m7a3.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_m84.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_mk3a2.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_no_69.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_rgd_5.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_rgo.json create mode 100644 src/main/resources/data/plasticgun/recipe/grenade_thermite.json create mode 100644 src/main/resources/data/plasticgun/recipe/hardened_steel.json create mode 100644 src/main/resources/data/plasticgun/recipe/hyperalloy.json create mode 100644 src/main/resources/data/plasticgun/recipe/iron_shuriken.json create mode 100644 src/main/resources/data/plasticgun/recipe/kevlar_sheet.json create mode 100644 src/main/resources/data/plasticgun/recipe/kevlar_vest.json create mode 100644 src/main/resources/data/plasticgun/recipe/magnetic_coil.json create mode 100644 src/main/resources/data/plasticgun/recipe/microchip.json create mode 100644 src/main/resources/data/plasticgun/recipe/nano_tubes.json create mode 100644 src/main/resources/data/plasticgun/recipe/netherite_shuriken.json create mode 100644 src/main/resources/data/plasticgun/recipe/p2022.json create mode 100644 src/main/resources/data/plasticgun/recipe/plasma_core.json create mode 100644 src/main/resources/data/plasticgun/recipe/power_cell.json create mode 100644 src/main/resources/data/plasticgun/recipe/precision_gear.json create mode 100644 src/main/resources/data/plasticgun/recipe/reinforced_fiber.json create mode 100644 src/main/resources/data/plasticgun/recipe/rpg9.json create mode 100644 src/main/resources/data/plasticgun/recipe/rpg_shell.json create mode 100644 src/main/resources/data/plasticgun/recipe/rpg_shell_incendiary.json create mode 100644 src/main/resources/data/plasticgun/recipe/silicon_mixture.json create mode 100644 src/main/resources/data/plasticgun/recipe/silicon_wafer.json create mode 100644 src/main/resources/data/plasticgun/recipe/snub_nosed_revolver.json create mode 100644 src/main/resources/data/plasticgun/recipe/stone_shuriken.json create mode 100644 src/main/resources/data/plasticgun/recipe/titanium_alloy.json create mode 100644 src/main/resources/data/plasticgun/recipe/tokarev_tt_33.json create mode 100644 src/main/resources/data/plasticgun/recipe/trigger_mechanism.json create mode 100644 src/main/resources/data/plasticgun/recipe/wooden_shuriken.json create mode 100644 src/main/resources/data/trinkets/entities/plasticgun.json create mode 100644 src/main/resources/data/trinkets/slots/chest/vest.json create mode 100644 src/main/resources/data/trinkets/tags/item/chest/vest.json diff --git a/build.gradle b/build.gradle index 47e5a52..32b58cf 100644 --- a/build.gradle +++ b/build.gradle @@ -18,6 +18,11 @@ repositories { // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. maven { url 'https://maven.nucleoid.xyz' } // You should have it + maven { url = "https://maven.terraformersmc.com/" } + maven { + name = "Ladysnake Mods" + url = 'https://maven.ladysnake.org/releases' + } } dependencies { @@ -31,7 +36,7 @@ dependencies { modImplementation include("eu.pb4:polymer-blocks:${project.polymer_version}") modImplementation include("eu.pb4:polymer-resource-pack:${project.polymer_version}") modImplementation include("eu.pb4:polymer-autohost:${project.polymer_version}") - + modImplementation "eu.pb4.polyport:trinkets:${project.trinkets_version}" modImplementation include("xyz.nucleoid:server-translations-api:${project.server_translations_api_version}") @@ -64,6 +69,12 @@ tasks.withType(JavaCompile).configureEach { } } +tasks.withType(JavaExec).configureEach { + if (name == 'runServer') { + jvmArgs '-Dfabric-tag-conventions-v2.missingTagTranslationWarning=VERBOSE' + } +} + java { def javaVersion = JavaVersion.toVersion(targetJavaVersion) if (JavaVersion.current() < javaVersion) { diff --git a/gradle.properties b/gradle.properties index 0a39148..9109b3f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.21 yarn_mappings=1.21+build.9 loader_version=0.16.0 # Mod Properties -mod_version=1.4 +mod_version=1.5 maven_group=systems.brn archives_base_name=plasticgun # Dependencies @@ -14,4 +14,5 @@ archives_base_name=plasticgun fabric_version=0.100.7+1.21 polymer_version=0.9.4+1.21 -server_translations_api_version=2.3.1+1.21-pre2 \ No newline at end of file +server_translations_api_version=2.3.1+1.21-pre2 +trinkets_version=3.10.0+polymerport.2 diff --git a/src/main/java/systems/brn/plasticgun/PlasticGun.java b/src/main/java/systems/brn/plasticgun/PlasticGun.java index b612153..bc68df5 100644 --- a/src/main/java/systems/brn/plasticgun/PlasticGun.java +++ b/src/main/java/systems/brn/plasticgun/PlasticGun.java @@ -15,9 +15,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import systems.brn.plasticgun.bullets.BulletEntity; import systems.brn.plasticgun.bullets.BulletItem; +import systems.brn.plasticgun.defence.WeaponArmor; import systems.brn.plasticgun.grenades.GrenadeEntity; import systems.brn.plasticgun.grenades.GrenadeItem; import systems.brn.plasticgun.guns.Gun; +import systems.brn.plasticgun.lib.CraftingItem; import systems.brn.plasticgun.lib.EventHandler; import systems.brn.plasticgun.lib.ItemGroups; import systems.brn.plasticgun.shurikens.ShurikenEntity; @@ -40,10 +42,14 @@ public class PlasticGun implements ModInitializer { public static final ArrayList shurikens = new ArrayList<>(); + public static final ArrayList craftingItems = new ArrayList<>(); + public static EntityType BULLET_ENTITY_TYPE; public static EntityType GRENADE_ENTITY_TYPE; + public static final ArrayList weaponArmors = new ArrayList<>(); + public static EntityType SHURIKEN_ENTITY_TYPE; public static EntityType DAMAGE_TESTER_ENTITY_TYPE; @@ -74,23 +80,24 @@ public class PlasticGun implements ModInitializer { bullets.add(new BulletItem("force_container", 99, 0, 888, false, 0, 1)); // Guns - guns.add(new Gun("357_revolver", 1, 8, 5, 6, 45, 357, 14, 0, 0)); - guns.add(new Gun("colt_1903", 0.3, 10, 5, 8, 38, 32, 5, 0, 0)); - guns.add(new Gun("colt_45", 0.4, 9, 5, 7, 48, 45, 5, 0, 0)); - guns.add(new Gun("colt_peacemaker", 0.6, 8, 5, 6, 43, 45, 5, 0, 0)); - guns.add(new Gun("p2022", 0.2, 12, 5, 10, 41, 9, 5, 0, 0)); - guns.add(new Gun("snub_nosed_revolver", 0.4, 7, 3, 5, 36, 38, 14, 0, 0)); - guns.add(new Gun("tokarev_tt_33", 0.7, 10, 5, 8, 45, 762, 5, 0, 0)); - guns.add(new Gun("ak_47", 0.2, 4, 5, 30, 45, 762, 0, 0, 0)); - guns.add(new Gun("awp", 1, 4, 20, 1, 75, 762, 20, 0, 0)); + guns.add(new Gun("357_revolver", 1, 8, 5, 6, 45, 357, 14, 0, 0, 2, 4, 0.2f, 0.5f, -1, 1)); + guns.add(new Gun("colt_1903", 0.3, 10, 5, 8, 38, 32, 5, 0, 0, 1, 3, 0.1f, 0.3f, -1, 1)); + guns.add(new Gun("colt_45", 0.4, 9, 5, 7, 48, 45, 5, 0, 0, 1.5f, 2, 0.15f, 0.4f, -1, 1)); + guns.add(new Gun("colt_peacemaker", 0.6, 8, 5, 6, 43, 45, 5, 0, 0, 0.9f, 2, 0.2f, 0.5f, -1, 1)); + guns.add(new Gun("p2022", 0.2, 12, 5, 10, 41, 9, 5, 0, 0, 1f, 4, 0.1f, 0.25f, -1, 1)); + guns.add(new Gun("snub_nosed_revolver", 0.4, 7, 3, 5, 36, 38, 14, 0, 0, 1f, 2, 0.2f, 0.45f, -1, 1)); + guns.add(new Gun("tokarev_tt_33", 0.7, 10, 5, 8, 45, 762, 5, 0, 0, 1.5f, 2.5f, 0.25f, 0.5f, -1, 1)); + guns.add(new Gun("ak_47", 0.2, 4, 5, 30, 45, 762, 0, 0, 0, 1f, 2, 0.2f, 0.4f, -1, 1)); + guns.add(new Gun("awp", 1, 4, 20, 1, 75, 762, 20, 0, 0, 2f, 8, 0.3f, 0.6f, -1, 1)); - guns.add(new Gun("rpg9", 2, 4, 20, 1, 10, 999, 8, 20, 0)); - guns.add(new Gun("forcegun", 0, 2, 5, 20, 10, 888, 0, 0, 20)); + guns.add(new Gun("rpg9", 2, 4, 20, 1, 10, 999, 8, 20, 0, 3f, 0.5f, 1, 2, -1, 1)); + guns.add(new Gun("forcegun", 0, 2, 5, 20, 10, 888, 0, 0, 20, 0f, 0f, 5f, 10f, 0, 0)); grenades.add(new GrenadeItem("grenade_an_m14", 1, 5f, 0.5f, 40, true, false, 0, 0, 0, 8, 0)); // AN-M14 Incendiary Grenade grenades.add(new GrenadeItem("grenade_m34", 1, 10f, 0.5f, 60, true, true, 0, 0, 0, 10, 0)); // M34 White Phosphorus Incendiary Fragmentation Grenade - grenades.add(new GrenadeItem("grenade_m18", 1, 0.1f, 0.2f, 50, false, false, 0, 0, 100, 15, 0)); // M18 Smoke Grenadegrenades.add(new GrenadeItem("grenade_m84", 1, 0.5f, 0.2f, 120, false, false, 10, 10, 5, 12, 10)); // M84 Stun Grenade (Flashbang) + grenades.add(new GrenadeItem("grenade_m18", 1, 0.1f, 0.2f, 50, false, false, 0, 0, 100, 15, 30)); // M18 Smoke Grenade + grenades.add(new GrenadeItem("grenade_m84", 1, 0.5f, 0.2f, 120, false, false, 10, 10, 5, 12, 10)); // M84 Stun Grenade (Flashbang) grenades.add(new GrenadeItem("grenade_rgd_5", 1, 6.5f, 0.5f, 60, false, true, 0, 0, 0, 10, 0)); // RGD-5 Fragmentation Grenade grenades.add(new GrenadeItem("grenade_thermite", 1, 4f, 0.3f, 80, true, false, 0, 0, 0, 8, 15)); // Thermite Grenade grenades.add(new GrenadeItem("grenade_f1", 1, 7f, 0.5f, 60, false, true, 0, 0, 0, 10, 0)); // F1 Soviet Fragmentation Grenade @@ -100,6 +107,8 @@ public class PlasticGun implements ModInitializer { grenades.add(new GrenadeItem("grenade_rgo", 1, 6.5f, 0.5f, 90, false, true, 0, 0, 0, 10, 0)); // RGO Fragmentation Grenade grenades.add(new GrenadeItem("grenade_k417", 1, 7f, 0.5f, 70, false, true, 0, 0, 0, 10, 0)); // K417 Fragmentation Grenade + weaponArmors.add(new WeaponArmor("kevlar_vest", 200, 0.8, 0.8, 0.4, 0.3)); + weaponArmors.add(new WeaponArmor("flak_vest", 500, 0.8, 0.4, 0.8, 0.2)); shurikens.add(new ShurikenItem("wooden_shuriken", 1, 5, 4f)); shurikens.add(new ShurikenItem("stone_shuriken", 2, 5, 4f)); @@ -108,6 +117,31 @@ public class PlasticGun implements ModInitializer { shurikens.add(new ShurikenItem("diamond_shuriken", 4, 5, 4f)); shurikens.add(new ShurikenItem("netherite_shuriken", 8, 5, 4f)); + craftingItems.add(new CraftingItem("advanced_circuit")); + craftingItems.add(new CraftingItem("alloy_wheel")); + craftingItems.add(new CraftingItem("ceramic_mixture")); + craftingItems.add(new CraftingItem("ceramic_plate")); + craftingItems.add(new CraftingItem("composite_frame")); + craftingItems.add(new CraftingItem("composite_resin")); + craftingItems.add(new CraftingItem("copper_wiring")); + craftingItems.add(new CraftingItem("enhanced_gunpowder")); + craftingItems.add(new CraftingItem("explosive_powder")); + craftingItems.add(new CraftingItem("graphene_sheet")); + craftingItems.add(new CraftingItem("hardened_steel")); + craftingItems.add(new CraftingItem("hyperalloy")); + craftingItems.add(new CraftingItem("kevlar_sheet")); + craftingItems.add(new CraftingItem("magnetic_coil")); + craftingItems.add(new CraftingItem("microchip")); + craftingItems.add(new CraftingItem("nano_tubes")); + craftingItems.add(new CraftingItem("plasma_core")); + craftingItems.add(new CraftingItem("power_cell")); + craftingItems.add(new CraftingItem("precision_gear")); + craftingItems.add(new CraftingItem("reinforced_fiber")); + craftingItems.add(new CraftingItem("silicon_mixture")); + craftingItems.add(new CraftingItem("silicon_wafer")); + craftingItems.add(new CraftingItem("titanium_alloy")); + craftingItems.add(new CraftingItem("trigger_mechanism")); + GRENADE_ENTITY_TYPE = Registry.register( Registries.ENTITY_TYPE, diff --git a/src/main/java/systems/brn/plasticgun/bullets/BulletEntity.java b/src/main/java/systems/brn/plasticgun/bullets/BulletEntity.java index d92494f..613ad26 100644 --- a/src/main/java/systems/brn/plasticgun/bullets/BulletEntity.java +++ b/src/main/java/systems/brn/plasticgun/bullets/BulletEntity.java @@ -2,6 +2,7 @@ package systems.brn.plasticgun.bullets; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.data.DataTracker; import net.minecraft.entity.projectile.PersistentProjectileEntity; import net.minecraft.item.ItemStack; @@ -16,12 +17,12 @@ import net.minecraft.util.hit.HitResult; import eu.pb4.polymer.core.api.entity.PolymerEntity; import net.minecraft.world.World; import systems.brn.plasticgun.guns.Gun; +import systems.brn.plasticgun.lib.WeaponDamageType; import java.lang.reflect.Method; import java.util.List; -import static systems.brn.plasticgun.PlasticGun.BULLET_ENTITY_TYPE; -import static systems.brn.plasticgun.PlasticGun.bullets; +import static systems.brn.plasticgun.PlasticGun.*; import static systems.brn.plasticgun.lib.Util.*; public class BulletEntity extends PersistentProjectileEntity implements PolymerEntity { @@ -42,7 +43,7 @@ public class BulletEntity extends PersistentProjectileEntity implements PolymerE this.gun = gun; this.scale = scale; this.setCustomPierceLevel((byte) 1); - this.setItemStack(stack); + this.setItemStack(stack.copy()); this.explosionPower = explosionPower; this.repulsionPower = repulsionPower; this.isIncendiary = isIncendiary; @@ -113,6 +114,9 @@ public class BulletEntity extends PersistentProjectileEntity implements PolymerE setSilent(false); playSound(SoundEvents.BLOCK_BAMBOO_HIT, 4.0F, 1.0F); setSilent(true); + if (entityHitResult.getEntity() instanceof LivingEntity livingEntity) { + this.setDamage(getFinalDamage(livingEntity, WeaponDamageType.BULLET, this.getDamage())); + } super.onEntityHit(entityHitResult); hitDamage(entityHitResult.getPos(), explosionPower, repulsionPower, getWorld(), this, isIncendiary, 5, null); diff --git a/src/main/java/systems/brn/plasticgun/bullets/BulletItem.java b/src/main/java/systems/brn/plasticgun/bullets/BulletItem.java index efeebbf..cc49203 100644 --- a/src/main/java/systems/brn/plasticgun/bullets/BulletItem.java +++ b/src/main/java/systems/brn/plasticgun/bullets/BulletItem.java @@ -1,14 +1,11 @@ package systems.brn.plasticgun.bullets; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.text.Text; -import systems.brn.plasticgun.lib.ItemGroups; import systems.brn.plasticgun.lib.SimpleItem; import java.util.List; diff --git a/src/main/java/systems/brn/plasticgun/defence/WeaponArmor.java b/src/main/java/systems/brn/plasticgun/defence/WeaponArmor.java new file mode 100644 index 0000000..c1d6311 --- /dev/null +++ b/src/main/java/systems/brn/plasticgun/defence/WeaponArmor.java @@ -0,0 +1,38 @@ +package systems.brn.plasticgun.defence; + +import dev.emi.trinkets.api.TrinketsApi; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.LoreComponent; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.text.Text; +import systems.brn.plasticgun.lib.TrinketPolymerItem; +import systems.brn.plasticgun.lib.WeaponDamageType; + +import java.util.HashMap; +import java.util.List; + +import static systems.brn.plasticgun.lib.Util.id; + +public class WeaponArmor extends TrinketPolymerItem { + public final HashMap resistances = new HashMap<>(); + + public WeaponArmor(String name, int durability, double grenadeDamageCoefficient, double fragmentationDamageCoefficient, double bulletDamageCoefficient, double shurikenDamageCoefficient) { + super( + new Item.Settings().maxDamage(durability).maxCount(1).component(DataComponentTypes.LORE, new LoreComponent(List.of( + Text.translatable("gun.description.armor.bullet", (int) ((1 - bulletDamageCoefficient) * 100)), + Text.translatable("gun.description.armor.grenade", (int) ((1 - grenadeDamageCoefficient) * 100)), + Text.translatable("gun.description.armor.fragmentation_grenade", (int) ((1 - fragmentationDamageCoefficient) * 100)), + Text.translatable("gun.description.armor.shuriken", (int) ((1 - shurikenDamageCoefficient) * 100)) + ))) + , name) + ; + Registry.register(Registries.ITEM, id(name), this); + TrinketsApi.registerTrinket(this, this); + resistances.put(WeaponDamageType.BULLET, bulletDamageCoefficient); + resistances.put(WeaponDamageType.FRAGMENTATION_GRENADE, fragmentationDamageCoefficient); + resistances.put(WeaponDamageType.GRENADE, grenadeDamageCoefficient); + resistances.put(WeaponDamageType.SHURIKEN, shurikenDamageCoefficient); + } +} \ No newline at end of file diff --git a/src/main/java/systems/brn/plasticgun/grenades/FragmentationExplosionBehavior.java b/src/main/java/systems/brn/plasticgun/grenades/FragmentationExplosionBehavior.java index 2a41da6..c324b4d 100644 --- a/src/main/java/systems/brn/plasticgun/grenades/FragmentationExplosionBehavior.java +++ b/src/main/java/systems/brn/plasticgun/grenades/FragmentationExplosionBehavior.java @@ -1,15 +1,72 @@ package systems.brn.plasticgun.grenades; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.minecraft.world.explosion.Explosion; import net.minecraft.world.explosion.ExplosionBehavior; +import systems.brn.plasticgun.lib.WeaponDamageType; + +import java.util.ArrayList; + +import static systems.brn.plasticgun.lib.Util.getFinalDamage; public class FragmentationExplosionBehavior extends ExplosionBehavior { + final static ArrayList blocks = new ArrayList<>() {{ + add(Blocks.AIR); + add(Blocks.WHITE_STAINED_GLASS); + add(Blocks.ORANGE_STAINED_GLASS); + add(Blocks.MAGENTA_STAINED_GLASS); + add(Blocks.LIGHT_BLUE_STAINED_GLASS); + add(Blocks.YELLOW_STAINED_GLASS); + add(Blocks.LIME_STAINED_GLASS); + add(Blocks.PINK_STAINED_GLASS); + add(Blocks.GRAY_STAINED_GLASS); + add(Blocks.LIGHT_GRAY_STAINED_GLASS); + add(Blocks.CYAN_STAINED_GLASS); + add(Blocks.PURPLE_STAINED_GLASS); + add(Blocks.BLUE_STAINED_GLASS); + add(Blocks.BROWN_STAINED_GLASS); + add(Blocks.GREEN_STAINED_GLASS); + add(Blocks.RED_STAINED_GLASS); + add(Blocks.BLACK_STAINED_GLASS); + add(Blocks.TINTED_GLASS); + + add(Blocks.WHITE_STAINED_GLASS_PANE); + add(Blocks.ORANGE_STAINED_GLASS_PANE); + add(Blocks.MAGENTA_STAINED_GLASS_PANE); + add(Blocks.LIGHT_BLUE_STAINED_GLASS_PANE); + add(Blocks.YELLOW_STAINED_GLASS_PANE); + add(Blocks.LIME_STAINED_GLASS_PANE); + add(Blocks.PINK_STAINED_GLASS_PANE); + add(Blocks.GRAY_STAINED_GLASS_PANE); + add(Blocks.LIGHT_GRAY_STAINED_GLASS_PANE); + add(Blocks.CYAN_STAINED_GLASS_PANE); + add(Blocks.PURPLE_STAINED_GLASS_PANE); + add(Blocks.BLUE_STAINED_GLASS_PANE); + add(Blocks.BROWN_STAINED_GLASS_PANE); + add(Blocks.GREEN_STAINED_GLASS_PANE); + add(Blocks.RED_STAINED_GLASS_PANE); + add(Blocks.BLACK_STAINED_GLASS_PANE); + + }}; + @Override public boolean canDestroyBlock(Explosion explosion, BlockView world, BlockPos pos, BlockState state, float power) { - return state.getBlock() == Blocks.AIR; + Block block = state.getBlock(); + return blocks.contains(block); + } + + @Override + public float calculateDamage(Explosion explosion, Entity entity) { + float original = super.calculateDamage(explosion, entity); + if (entity instanceof LivingEntity livingEntity) { + original = (float) getFinalDamage(livingEntity, WeaponDamageType.FRAGMENTATION_GRENADE, original); + } + return original; } } diff --git a/src/main/java/systems/brn/plasticgun/grenades/GrenadeEntity.java b/src/main/java/systems/brn/plasticgun/grenades/GrenadeEntity.java index 8c7159b..9700e73 100644 --- a/src/main/java/systems/brn/plasticgun/grenades/GrenadeEntity.java +++ b/src/main/java/systems/brn/plasticgun/grenades/GrenadeEntity.java @@ -113,7 +113,7 @@ public class GrenadeEntity extends ThrowableProjectile implements PolymerEntity } private void explode() { - hitDamage(getPos(), explosionPower, repulsionPower, getWorld(), this, isIncendiary, effectRadius, isFragmentation ? new FragmentationExplosionBehavior() : null); + hitDamage(getPos(), explosionPower, repulsionPower, getWorld(), this, isIncendiary, effectRadius, isFragmentation ? new FragmentationExplosionBehavior() : new GrenadeExplosionBehavior()); List nearbyEntities = getEntitiesAround(this, effectRadius); if (stunDuration > 0) { for (Entity entity : nearbyEntities) { diff --git a/src/main/java/systems/brn/plasticgun/grenades/GrenadeExplosionBehavior.java b/src/main/java/systems/brn/plasticgun/grenades/GrenadeExplosionBehavior.java new file mode 100644 index 0000000..15aaea6 --- /dev/null +++ b/src/main/java/systems/brn/plasticgun/grenades/GrenadeExplosionBehavior.java @@ -0,0 +1,22 @@ +package systems.brn.plasticgun.grenades; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.world.explosion.Explosion; +import net.minecraft.world.explosion.ExplosionBehavior; +import systems.brn.plasticgun.lib.WeaponDamageType; + +import static systems.brn.plasticgun.lib.Util.getFinalDamage; + +public class GrenadeExplosionBehavior extends ExplosionBehavior { + + + @Override + public float calculateDamage(Explosion explosion, Entity entity) { + float original = super.calculateDamage(explosion, entity); + if (entity instanceof LivingEntity livingEntity) { + original = (float) getFinalDamage(livingEntity, WeaponDamageType.GRENADE, original); + } + return original; + } +} diff --git a/src/main/java/systems/brn/plasticgun/grenades/GrenadeItem.java b/src/main/java/systems/brn/plasticgun/grenades/GrenadeItem.java index 0439545..597e5e0 100644 --- a/src/main/java/systems/brn/plasticgun/grenades/GrenadeItem.java +++ b/src/main/java/systems/brn/plasticgun/grenades/GrenadeItem.java @@ -1,7 +1,6 @@ package systems.brn.plasticgun.grenades; import eu.pb4.polymer.core.api.item.PolymerItem; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; import net.minecraft.entity.player.PlayerEntity; @@ -62,7 +61,7 @@ public class GrenadeItem extends SimpleItem implements PolymerItem { ); this.explosionTarget = explosionTarget; this.isIncendiary = isIncendiary; - Item item = Registry.register(Registries.ITEM, id(path), this); + Registry.register(Registries.ITEM, id(path), this); this.speed = speed; this.explosionPower = explosionPower; this.repulsionPower = repulsionPower; @@ -100,7 +99,7 @@ public class GrenadeItem extends SimpleItem implements PolymerItem { ItemStack stack = user.getStackInHand(hand); int timer = stack.getOrDefault(GRENADE_TIMER_COMPONENT, -1); if (timer > 0) { - turnIntoEntity(player, stack, speed, timer); + turnIntoEntity(player, stack.copy(), speed, timer); if (!player.isCreative()) { stack.decrement(1); } diff --git a/src/main/java/systems/brn/plasticgun/guns/Gun.java b/src/main/java/systems/brn/plasticgun/guns/Gun.java index 1a4de96..79d2164 100644 --- a/src/main/java/systems/brn/plasticgun/guns/Gun.java +++ b/src/main/java/systems/brn/plasticgun/guns/Gun.java @@ -1,7 +1,6 @@ package systems.brn.plasticgun.guns; import eu.pb4.polymer.core.api.item.PolymerItem; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; import net.minecraft.entity.player.PlayerEntity; @@ -16,6 +15,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; import net.minecraft.world.World; import systems.brn.plasticgun.bullets.BulletEntity; import systems.brn.plasticgun.bullets.BulletItem; @@ -41,7 +41,16 @@ public class Gun extends SimpleItem implements PolymerItem { private final int cooldownTarget; private final int reloadTarget; - public Gun(String path, double damage, int reloadCount, int reloadTarget, int clipSize, int speed, int caliber, int cooldownTarget, double explosionPowerGun, double repulsionPowerGun) { + private final float verticalRecoilMin; + private final float verticalRecoilMax; + + private final float velocityRecoilMin; + private final float velocityRecoilMax; + + private final double horizontalRecoilMin; + private final double horizontalRecoilMax; + + public Gun(String path, double damage, int reloadCount, int reloadTarget, int clipSize, int speed, int caliber, int cooldownTarget, double explosionPowerGun, double repulsionPowerGun, float verticalRecoilMin, float verticalRecoilMax, float velocityRecoilMin, float velocityRecoilMax, double horizontalRecoilMin, double horizontalRecoilMax) { super( new Settings() .maxCount(1) @@ -51,6 +60,12 @@ public class Gun extends SimpleItem implements PolymerItem { .maxDamage(clipSize + 1) , id(path), Items.WOODEN_SWORD ); + this.verticalRecoilMin = verticalRecoilMin; + this.verticalRecoilMax = verticalRecoilMax; + this.velocityRecoilMin = velocityRecoilMin; + this.velocityRecoilMax = velocityRecoilMax; + this.horizontalRecoilMin = horizontalRecoilMin; + this.horizontalRecoilMax = horizontalRecoilMax; Registry.register(Registries.ITEM, id(path), this); this.damage = damage; this.reloadCount = reloadCount; @@ -163,6 +178,7 @@ public class Gun extends SimpleItem implements PolymerItem { loreList.add(Text.translatable("gun.description.magazine_count", numBullets, clipSize)); if (!chamber.isEmpty() && bulletItem != null) { loreList.add(Text.translatable("gun.description.damage_with_coefficient", damage * bulletItem.damageCoefficient)); + loreList.add(Text.translatable("gun.description.damage_with_coefficient_muzzle_speed", speed, speed * damage * bulletItem.damageCoefficient)); loreList.add(Text.translatable("gun.description.magazine_bullet", bulletItem.getName())); loreList.add(Text.translatable("gun.description.damage_coefficient", bulletItem.damageCoefficient)); loreList.add(Text.translatable("gun.description.explosion_coefficient", bulletItem.explosionPowerCoefficient)); @@ -179,14 +195,21 @@ public class Gun extends SimpleItem implements PolymerItem { } public void doRecoil(ServerPlayerEntity player) { + Random rng = player.getServerWorld().getRandom(); // Get the player's current position and yaw Vec3d pos = player.getPos(); float yaw = player.getYaw(); float newPitch = player.getPitch(); - newPitch -= player.getServerWorld().getRandom().nextBetween(1, 4); - yaw -= player.getServerWorld().getRandom().nextBetween(-2, 2); + Vec3d currentLook = player.getRotationVector().multiply(-1); + newPitch -= verticalRecoilMin + rng.nextFloat() * (verticalRecoilMax - verticalRecoilMin); + yaw -= (float) (horizontalRecoilMin + rng.nextFloat() * (horizontalRecoilMax - horizontalRecoilMin)); + player.teleport(player.getServerWorld(), pos.x, pos.y, pos.z, PositionFlag.ROT, yaw, newPitch); + double velocityRecoil = rng.nextDouble() * (velocityRecoilMax - velocityRecoilMin); + if (velocityRecoil > 0) { + player.setVelocity(currentLook.multiply(velocityRecoil)); + } } public void shoot(ServerWorld world, PlayerEntity user, Hand hand) { diff --git a/src/main/java/systems/brn/plasticgun/lib/CraftingItem.java b/src/main/java/systems/brn/plasticgun/lib/CraftingItem.java new file mode 100644 index 0000000..db9e52c --- /dev/null +++ b/src/main/java/systems/brn/plasticgun/lib/CraftingItem.java @@ -0,0 +1,15 @@ +package systems.brn.plasticgun.lib; + +import net.minecraft.item.Items; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; + +import static systems.brn.plasticgun.lib.Util.id; + +public class CraftingItem extends SimpleItem{ + + public CraftingItem(String name) { + super(new Settings(), id(name), Items.STICK); + Registry.register(Registries.ITEM, id(name), this); + } +} diff --git a/src/main/java/systems/brn/plasticgun/lib/ItemGroups.java b/src/main/java/systems/brn/plasticgun/lib/ItemGroups.java index dd616e4..96d4949 100644 --- a/src/main/java/systems/brn/plasticgun/lib/ItemGroups.java +++ b/src/main/java/systems/brn/plasticgun/lib/ItemGroups.java @@ -1,19 +1,16 @@ package systems.brn.plasticgun.lib; import eu.pb4.polymer.core.api.item.PolymerItemGroupUtils; -import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import systems.brn.plasticgun.PlasticGun; import systems.brn.plasticgun.bullets.BulletItem; +import systems.brn.plasticgun.defence.WeaponArmor; import systems.brn.plasticgun.grenades.GrenadeItem; import systems.brn.plasticgun.guns.Gun; import systems.brn.plasticgun.shurikens.ShurikenItem; -import java.util.ArrayList; -import java.util.Collection; - import static systems.brn.plasticgun.lib.Util.id; public class ItemGroups { @@ -57,10 +54,32 @@ public class ItemGroups { })) .build(); + public static final ItemGroup MATERIALS_GROUPS = PolymerItemGroupUtils.builder() + .icon(() -> new ItemStack(PlasticGun.craftingItems.getFirst())) + .displayName(Text.translatable("guns.groups.materials")) + .entries(((context, entries) -> { + for (CraftingItem craftingItem : PlasticGun.craftingItems) { + entries.add(craftingItem); + } + })) + .build(); + + public static final ItemGroup DEFENSE = PolymerItemGroupUtils.builder() + .icon(() -> new ItemStack(PlasticGun.weaponArmors.getFirst())) + .displayName(Text.translatable("guns.groups.defense")) + .entries(((context, entries) -> { + for (WeaponArmor weaponArmor : PlasticGun.weaponArmors) { + entries.add(weaponArmor); + } + })) + .build(); + public static void register() { PolymerItemGroupUtils.registerPolymerItemGroup(id("guns"), GUNS_GROUP); PolymerItemGroupUtils.registerPolymerItemGroup(id("ammo"), AMMO_GROUP); PolymerItemGroupUtils.registerPolymerItemGroup(id("shurikens"), SHURIKEN_GROUP); PolymerItemGroupUtils.registerPolymerItemGroup(id("grenades"), GRENADES_GROUP); + PolymerItemGroupUtils.registerPolymerItemGroup(id("materials"), MATERIALS_GROUPS); + PolymerItemGroupUtils.registerPolymerItemGroup(id("defense"), DEFENSE); } } \ No newline at end of file diff --git a/src/main/java/systems/brn/plasticgun/lib/TrinketPolymerItem.java b/src/main/java/systems/brn/plasticgun/lib/TrinketPolymerItem.java new file mode 100644 index 0000000..41fb75f --- /dev/null +++ b/src/main/java/systems/brn/plasticgun/lib/TrinketPolymerItem.java @@ -0,0 +1,70 @@ +package systems.brn.plasticgun.lib; + +import dev.emi.trinkets.TrinketSlot; +import dev.emi.trinkets.api.*; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; +import net.minecraft.world.event.GameEvent; + +import java.util.Map; +import java.util.Optional; + +import static systems.brn.plasticgun.lib.Util.id; + +public class TrinketPolymerItem extends SimpleItem implements Trinket { + + public TrinketPolymerItem(Item.Settings settings, String name) { + super(settings, id(name), Items.STICK); + TrinketsApi.registerTrinket(this, this); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + ItemStack stack = user.getStackInHand(hand); + if (equipItem(user, stack)) { + return TypedActionResult.success(stack, world.isClient()); + } + return super.use(world, user, hand); + } + + public static boolean equipItem(PlayerEntity user, ItemStack stack) { + return equipItem((LivingEntity) user, stack); + } + + public static boolean equipItem(LivingEntity user, ItemStack stack) { + Optional optional = TrinketsApi.getTrinketComponent(user); + if (optional.isPresent()) { + TrinketComponent comp = optional.get(); + for (Map group : comp.getInventory().values()) { + for (TrinketInventory inv : group.values()) { + for (int i = 0; i < inv.size(); i++) { + if (inv.getStack(i).isEmpty()) { + SlotReference ref = new SlotReference(inv, i); + if (TrinketSlot.canInsert(stack, ref, user)) { + ItemStack newStack = stack.copy(); + inv.setStack(i, newStack); + Trinket trinket = TrinketsApi.getTrinket(stack.getItem()); + RegistryEntry soundEvent = trinket.getEquipSound(stack, ref, user); + if (!stack.isEmpty() && soundEvent != null) { + user.emitGameEvent(GameEvent.EQUIP); + user.playSound(soundEvent.value(), 1.0F, 1.0F); + } + stack.setCount(0); + return true; + } + } + } + } + } + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/systems/brn/plasticgun/lib/Util.java b/src/main/java/systems/brn/plasticgun/lib/Util.java index 23d82b1..c9c2fa1 100644 --- a/src/main/java/systems/brn/plasticgun/lib/Util.java +++ b/src/main/java/systems/brn/plasticgun/lib/Util.java @@ -1,5 +1,9 @@ package systems.brn.plasticgun.lib; +import dev.emi.trinkets.api.SlotReference; +import dev.emi.trinkets.api.TrinketComponent; +import dev.emi.trinkets.api.TrinketInventory; +import dev.emi.trinkets.api.TrinketsApi; import eu.pb4.polymer.virtualentity.api.tracker.DisplayTrackedData; import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.entity.Entity; @@ -14,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; +import net.minecraft.util.Pair; import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; @@ -22,12 +27,15 @@ import net.minecraft.world.explosion.Explosion; import net.minecraft.world.explosion.ExplosionBehavior; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; +import systems.brn.plasticgun.defence.WeaponArmor; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import static net.minecraft.world.explosion.Explosion.getExposure; import static systems.brn.plasticgun.PlasticGun.MOD_ID; +import static systems.brn.plasticgun.PlasticGun.weaponArmors; public class Util { @@ -177,4 +185,39 @@ public class Util { } } + public static double getFinalDamage(LivingEntity livingEntity, WeaponDamageType damageType, double damage) { + Optional trinketComponentTemp = TrinketsApi.getTrinketComponent(livingEntity); + if (trinketComponentTemp.isPresent()) { + TrinketComponent trinketComponent = trinketComponentTemp.get(); + for (WeaponArmor weaponArmor : weaponArmors) { + if (weaponArmor.resistances.containsKey(damageType)) { + + List> vestsComponents = trinketComponent.getEquipped(weaponArmor); + if (!vestsComponents.isEmpty()) { + Pair vestComponent = vestsComponents.getFirst(); + TrinketInventory trinketInventory = vestComponent.getLeft().inventory(); + int currentDamage = vestComponent.getRight().getDamage(); + int maxDamage = vestComponent.getRight().getMaxDamage(); + double reducedDamage = 0; + if (currentDamage < maxDamage) { + double coefficient = weaponArmor.resistances.get(damageType); + reducedDamage = (1 - coefficient) * damage; + damage *= coefficient; + } + + int nextDamage = currentDamage + (int) reducedDamage; + int inventoryIndex = vestComponent.getLeft().index(); + ItemStack vestStack = trinketInventory.getStack(inventoryIndex); + if (nextDamage >= maxDamage) { + vestStack.setCount(0); + } else { + vestStack.setDamage(nextDamage); + } + trinketInventory.setStack(inventoryIndex, vestStack); + } + } + } + } + return damage; + } } diff --git a/src/main/java/systems/brn/plasticgun/lib/WeaponDamageType.java b/src/main/java/systems/brn/plasticgun/lib/WeaponDamageType.java new file mode 100644 index 0000000..fe00981 --- /dev/null +++ b/src/main/java/systems/brn/plasticgun/lib/WeaponDamageType.java @@ -0,0 +1,8 @@ +package systems.brn.plasticgun.lib; + +public enum WeaponDamageType { + BULLET, + GRENADE, + FRAGMENTATION_GRENADE, + SHURIKEN +} diff --git a/src/main/java/systems/brn/plasticgun/shurikens/ShurikenEntity.java b/src/main/java/systems/brn/plasticgun/shurikens/ShurikenEntity.java index 86c2e6b..4614ff0 100644 --- a/src/main/java/systems/brn/plasticgun/shurikens/ShurikenEntity.java +++ b/src/main/java/systems/brn/plasticgun/shurikens/ShurikenEntity.java @@ -3,16 +3,20 @@ package systems.brn.plasticgun.shurikens; import eu.pb4.polymer.core.api.entity.PolymerEntity; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundEvent; import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import systems.brn.plasticgun.lib.WeaponDamageType; import systems.brn.plasticgun.throwables.ThrowableProjectile; -import static systems.brn.plasticgun.PlasticGun.SHURIKEN_ENTITY_TYPE; +import static systems.brn.plasticgun.PlasticGun.*; +import static systems.brn.plasticgun.lib.Util.getFinalDamage; public class ShurikenEntity extends ThrowableProjectile implements PolymerEntity { public ShurikenEntity(ServerPlayerEntity player, ItemStack itemStack, float speed, double damage) { @@ -45,4 +49,13 @@ public class ShurikenEntity extends ThrowableProjectile implements PolymerEntity } super.onBlockHit(blockHitResult); } + + @Override + protected void onEntityHit(EntityHitResult entityHitResult) { + if (entityHitResult.getEntity() instanceof LivingEntity livingEntity) { + this.setDamage(getFinalDamage(livingEntity, WeaponDamageType.SHURIKEN, this.getDamage())); + } + + super.onEntityHit(entityHitResult); + } } diff --git a/src/main/java/systems/brn/plasticgun/shurikens/ShurikenItem.java b/src/main/java/systems/brn/plasticgun/shurikens/ShurikenItem.java index 284ebd8..abb032e 100644 --- a/src/main/java/systems/brn/plasticgun/shurikens/ShurikenItem.java +++ b/src/main/java/systems/brn/plasticgun/shurikens/ShurikenItem.java @@ -1,12 +1,9 @@ package systems.brn.plasticgun.shurikens; import eu.pb4.polymer.core.api.item.PolymerItem; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.LoreComponent; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroups; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.registry.Registries; @@ -35,7 +32,8 @@ public class ShurikenItem extends SimpleItem implements PolymerItem { .maxDamage(durability) .component(DataComponentTypes.LORE, new LoreComponent(List.of( Text.translatable("gun.description.damage", damage), - Text.translatable("gun.description.speed", speed) + Text.translatable("gun.description.speed", speed), + Text.translatable("gun.description.damage_with_coefficient_max_speed", speed, speed * damage) ))) , id(path), Items.WOODEN_PICKAXE ); diff --git a/src/main/java/systems/brn/plasticgun/throwables/ThrowableProjectile.java b/src/main/java/systems/brn/plasticgun/throwables/ThrowableProjectile.java index 73c399b..f6e5685 100644 --- a/src/main/java/systems/brn/plasticgun/throwables/ThrowableProjectile.java +++ b/src/main/java/systems/brn/plasticgun/throwables/ThrowableProjectile.java @@ -26,7 +26,7 @@ public class ThrowableProjectile extends PersistentProjectileEntity implements P this.setSilent(true); this.scale = scale; this.setCustomPierceLevel(penetration); - this.setItemStack(itemStack); + this.setItemStack(itemStack.copy()); } public ThrowableProjectile(EntityType entityType, ServerPlayerEntity player, ItemStack itemStack, float scale, float speed, double damage, PickupPermission pickupPermission, byte penetration) { diff --git a/src/main/resources/assets/plasticgun/lang/en_us.json b/src/main/resources/assets/plasticgun/lang/en_us.json index 3b5bff0..e2cccdb 100644 --- a/src/main/resources/assets/plasticgun/lang/en_us.json +++ b/src/main/resources/assets/plasticgun/lang/en_us.json @@ -1,4 +1,28 @@ { + "item.plasticgun.advanced_circuit": "Advanced Circuit", + "item.plasticgun.alloy_wheel": "Alloy Wheel", + "item.plasticgun.ceramic_mixture": "Ceramic Mixture", + "item.plasticgun.ceramic_plate": "Ceramic Plate", + "item.plasticgun.composite_frame": "Composite Frame", + "item.plasticgun.composite_resin": "Composite Resin", + "item.plasticgun.copper_wiring": "Copper Wiring", + "item.plasticgun.enhanced_gunpowder": "Enhanced Gunpowder", + "item.plasticgun.explosive_powder": "Explosive Powder", + "item.plasticgun.graphene_sheet": "Graphene Sheet", + "item.plasticgun.hardened_steel": "Hardened Steel", + "item.plasticgun.hyperalloy": "Hyperalloy", + "item.plasticgun.kevlar_sheet": "Kevlar Sheet", + "item.plasticgun.magnetic_coil": "Magnetic Coil", + "item.plasticgun.microchip": "Microchip", + "item.plasticgun.nano_tubes": "Nano Tubes", + "item.plasticgun.plasma_core": "Plasma Core", + "item.plasticgun.power_cell": "Power Cell", + "item.plasticgun.precision_gear": "Precision Gear", + "item.plasticgun.reinforced_fiber": "Reinforced Fiber", + "item.plasticgun.silicon_mixture": "Silicon Mixture", + "item.plasticgun.silicon_wafer": "Silicon Wafer", + "item.plasticgun.titanium_alloy": "Titanium Alloy", + "item.plasticgun.trigger_mechanism": "Trigger Mechanism", "item.plasticgun.357_magnum": "357 Magnum", "item.plasticgun.32_acp_high_velocity": "32 ACP High Velocity", "item.plasticgun.45_acp_hollow_point": "45 ACP Hollow Point", @@ -49,7 +73,10 @@ "item.plasticgun.golden_shuriken": "Golden Shuriken", "item.plasticgun.diamond_shuriken": "Diamond Shuriken", "item.plasticgun.netherite_shuriken": "Netherite Shuriken", - + "item.plasticgun.kevlar_vest": "Kevlar vest", + "item.plasticgun.flak_vest": "Flak vest", + "trinkets.slot.chest.vest": "Vest", + "tag.item.trinkets.chest.vest": "Vest slot compatible", "gun.description.damage_coefficient": "Damage coefficient: %d", "gun.description.explosion_coefficient": "Explosion coefficient: %d", "gun.description.repulsion_efficient": "Repulsion coefficient: %d", @@ -59,6 +86,8 @@ "gun.description.caliber": "Caliber: %d", "gun.description.damage_absolute": "Gun damage (speed 1): %d hp", "gun.description.damage_with_coefficient": "Gun damage with coefficient (speed 1): %d hp", + "gun.description.damage_with_coefficient_muzzle_speed": "Gun damage with coefficient and muzzle speed (speed %d): %d hp", + "gun.description.damage_with_coefficient_max_speed": "Gun damage with coefficient and maximal throwing speed (speed %d): %d hp", "gun.description.damage": "Damage: %d hp", "gun.description.speed": "Speed: %d b/t", "gun.description.clip_size": "Magazine size: %d rounds", @@ -70,16 +99,20 @@ "gun.description.magazine_count": "Magazine: %d/%d", "gun.description.magazine_bullet": "Magazine bullet: %s", "gun.description.explosion_time": "Fuse: %d ticks", - "gun.description.flashbang_duration": "Flashbang: %d seconds", "gun.description.stun_duration": "Stun: %d seconds", "gun.description.smoke_ticks": "Smoke: %d ticks", "gun.description.effect_radius": "Radius: %d blocks", "gun.description.particle_count": "Particles per tick: %d particles", "gun.description.fragmentation_grenade": "Fragmentation: %d", - + "gun.description.armor.bullet": "Bullet damage reduction: %d%%", + "gun.description.armor.grenade": "Grenade damage reduction: %d%%", + "gun.description.armor.fragmentation_grenade": "Fragmentation grenade damage reduction: %d%%", + "gun.description.armor.shuriken": "Shuriken damage reduction: %d%%", "guns.groups.guns": "Guns", "guns.groups.ammo": "Ammo", "guns.groups.grenades": "Grenades", - "guns.groups.shurikens": "Shurikens" + "guns.groups.shurikens": "Shurikens", + "guns.groups.materials": "Weapon materials", + "guns.groups.defense": "Defensive" } \ No newline at end of file diff --git a/src/main/resources/assets/plasticgun/models/item/advanced_circuit.json b/src/main/resources/assets/plasticgun/models/item/advanced_circuit.json new file mode 100644 index 0000000..879f85f --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/advanced_circuit.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/advanced_circuit" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/alloy_wheel.json b/src/main/resources/assets/plasticgun/models/item/alloy_wheel.json new file mode 100644 index 0000000..974c88a --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/alloy_wheel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/alloy_wheel" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/ceramic_mixture.json b/src/main/resources/assets/plasticgun/models/item/ceramic_mixture.json new file mode 100644 index 0000000..b10d063 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/ceramic_mixture.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/ceramic_mixture" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/ceramic_plate.json b/src/main/resources/assets/plasticgun/models/item/ceramic_plate.json new file mode 100644 index 0000000..b223f74 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/ceramic_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/ceramic_plate" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/composite_frame.json b/src/main/resources/assets/plasticgun/models/item/composite_frame.json new file mode 100644 index 0000000..38d6baf --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/composite_frame.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/composite_frame" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/composite_resin.json b/src/main/resources/assets/plasticgun/models/item/composite_resin.json new file mode 100644 index 0000000..94c0cad --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/composite_resin.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/composite_resin" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/copper_wiring.json b/src/main/resources/assets/plasticgun/models/item/copper_wiring.json new file mode 100644 index 0000000..9697627 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/copper_wiring.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/copper_wiring" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/enhanced_gunpowder.json b/src/main/resources/assets/plasticgun/models/item/enhanced_gunpowder.json new file mode 100644 index 0000000..87ff060 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/enhanced_gunpowder.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/enhanced_gunpowder" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/explosive_powder.json b/src/main/resources/assets/plasticgun/models/item/explosive_powder.json new file mode 100644 index 0000000..4f97929 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/explosive_powder.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/explosive_powder" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/flak_vest.json b/src/main/resources/assets/plasticgun/models/item/flak_vest.json new file mode 100644 index 0000000..7ea06d5 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/flak_vest.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/flak_vest" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/graphene_sheet.json b/src/main/resources/assets/plasticgun/models/item/graphene_sheet.json new file mode 100644 index 0000000..c2d9715 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/graphene_sheet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/graphene_sheet" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/grenade_m34.json b/src/main/resources/assets/plasticgun/models/item/grenade_m34.json new file mode 100644 index 0000000..33e1c94 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/grenade_m34.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/grenade_m34" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/hardened_steel.json b/src/main/resources/assets/plasticgun/models/item/hardened_steel.json new file mode 100644 index 0000000..689ea39 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/hardened_steel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/hardened_steel" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/hyperalloy.json b/src/main/resources/assets/plasticgun/models/item/hyperalloy.json new file mode 100644 index 0000000..9a8c21e --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/hyperalloy.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/hyperalloy" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/kevlar_sheet.json b/src/main/resources/assets/plasticgun/models/item/kevlar_sheet.json new file mode 100644 index 0000000..6b1c1d7 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/kevlar_sheet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/kevlar_sheet" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/kevlar_vest.json b/src/main/resources/assets/plasticgun/models/item/kevlar_vest.json new file mode 100644 index 0000000..e47a5b6 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/kevlar_vest.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/kevlar_vest" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/magnetic_coil.json b/src/main/resources/assets/plasticgun/models/item/magnetic_coil.json new file mode 100644 index 0000000..f650fb3 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/magnetic_coil.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/magnetic_coil" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/microchip.json b/src/main/resources/assets/plasticgun/models/item/microchip.json new file mode 100644 index 0000000..b25198e --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/microchip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/microchip" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/nano_tubes.json b/src/main/resources/assets/plasticgun/models/item/nano_tubes.json new file mode 100644 index 0000000..dc910cc --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/nano_tubes.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/nano_tubes" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/plasma_core.json b/src/main/resources/assets/plasticgun/models/item/plasma_core.json new file mode 100644 index 0000000..9b609da --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/plasma_core.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/plasma_core" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/power_cell.json b/src/main/resources/assets/plasticgun/models/item/power_cell.json new file mode 100644 index 0000000..c8ea7ad --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/power_cell.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/power_cell" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/precision_gear.json b/src/main/resources/assets/plasticgun/models/item/precision_gear.json new file mode 100644 index 0000000..62b0423 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/precision_gear.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/precision_gear" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/reinforced_fiber.json b/src/main/resources/assets/plasticgun/models/item/reinforced_fiber.json new file mode 100644 index 0000000..3d93f4e --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/reinforced_fiber.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/reinforced_fiber" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/silicon_mixture.json b/src/main/resources/assets/plasticgun/models/item/silicon_mixture.json new file mode 100644 index 0000000..0ee0f92 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/silicon_mixture.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/silicon_mixture" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/silicon_wafer.json b/src/main/resources/assets/plasticgun/models/item/silicon_wafer.json new file mode 100644 index 0000000..80ce699 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/silicon_wafer.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/silicon_wafer" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/titanium_alloy.json b/src/main/resources/assets/plasticgun/models/item/titanium_alloy.json new file mode 100644 index 0000000..32ddd77 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/titanium_alloy.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/titanium_alloy" + } +} diff --git a/src/main/resources/assets/plasticgun/models/item/trigger_mechanism.json b/src/main/resources/assets/plasticgun/models/item/trigger_mechanism.json new file mode 100644 index 0000000..14c1dc9 --- /dev/null +++ b/src/main/resources/assets/plasticgun/models/item/trigger_mechanism.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "plasticgun:item/trigger_mechanism" + } +} diff --git a/src/main/resources/assets/plasticgun/textures/gui/slots/vest_slot.png b/src/main/resources/assets/plasticgun/textures/gui/slots/vest_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..84446348189b0936728398980d87d69cc1267522 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UA6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDI0I6bN5HFasE6@fg!Bi6D7tFv=Hu# z1-mSl1h?I}B~n14Ku;IP5Q)ok`*w34FyL{Sue@FIfOE!wN0SzDftA5GggOmb7Cn0> z_v>J|sK^0@-nQ_2iCMCfm)$53c42Y!J1_jUs9~C<#Wnl7h8VFRxh46#^A}F%>JOiI zgAHi7YKdz^NlIc#s#S7PDv)9@GB7gHH89sTvJ5dWwKB1^GBMURFt9Q(_|7Un2Sr0} zeoAIqCAtO!D?oGL2GBU9;G=%7x9NDD;)WhKE L>gTe~DWM4f#~f{d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/32_acp.png b/src/main/resources/assets/plasticgun/textures/item/32_acp.png index 1b2de519b5fc87b232feacb097f3ad939791697c..b5f2f55fa605fd703ca56788bfb7e1ca019201d1 100644 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN%#*+cuzoXG$G|NB*mvjc?~OM?7@ z862M7NCR<_yxm<``ZI0@0y*p@p1!W^FW64|A_Ie` LtDnm{r-UW|aQbKk delta 150 zcmZo-UdA{RtF%}28J29*~C-V}>;R)~waRt)J9@-C6z37T1&m+ao?>qooptgYDnnX#^g;e8;#orf3D5C%_IKbLh*2~7YHO*G8_ diff --git a/src/main/resources/assets/plasticgun/textures/item/32_acp_high_velocity.png b/src/main/resources/assets/plasticgun/textures/item/32_acp_high_velocity.png index edc4c3cbe101484eb15af99592fc08bd78d7500b..aeb7e90d5541ddab51c28f203ec0d7466cd0f7ac 100644 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN`*1ajC*Jbhi+U$Dz^iAyhexMCwv$llY%F@)oKazX>MBO}LI z4UH8HsT|UdlE;n-C?+N+cTCu17}9Z4V)g_<9}h{bl$Ir2Ng~1_3>r%qQVk4&4%6u1 zu>C3|`4DK7YKdz^NlIc#s#S7PDv)9@GB7gHH89sTG7m8_v@*1`GBMURFt9Q(XlH-z zhoT`jKP5A*61RqLQNf>p8Z_WGlw{_n7MCRE79jLkh8P-H85vs{nL{j@b89g$5E&Re MUHx3vIVCg!08>tB0ssI2 delta 150 zcmZo-UdA{RtF%}28J29*~C-V}>;R)~waRt%>7EJ0*9LpXm&Wcgo z0_3xl1o;Is{Qv)dv#vu2kZ`*1ajC*Jbhi+U$Dz^iAyhexMCwvNXyg3F@)oKa)LlY1B08R zhI2pwqn1(*i)fHp8<(MEu-=j$O%~C_gd_%rL<3gC!#6wofx1*nTq8xvr6Uh@qvGk+GGDskVWEm4Sgz={=C25gKyyQ!>*kaci*ENZSU~paHj` pBr`X)xFj*R0HMb+#Lxg_iIF+Pk~y~)1H+4f!PC{xWt~$(69C$yU%UVS delta 133 zcmaFMG>vhBL>&h+0|SGGE`KnPVk{1FcVbv~PUa<$!xP{W;tHe%ESS`rIF>zBoE4+E z1;}S93GxeO`2YX^W?hF4AYa4N#W6%;YH~tCLYf2XnKNfz)TFtY2&$=t2)ZphsCLMs fM~W?k;R!Q?dlWZkGivIpSFBpTYTd?DXHFhHd8V^>LVaW1+=WY; zTbuF=^L8INGrluriu|NrlDUVA>!CyXUQe!&b5&u*lFI7!~_E{>h| za{PcC_7YEDSN0d|vRvXaR;{)|Kxqa~7sn8b({nH04mzwLz?Q(I$f0TI;vHn_dn=2d zO{({~bMF2BD^>a~uhyIUvi|rR^W7U1zRYJ3ZnELbY}vS6ZlkfD3r{m+vXSSx#0gr* zHobY&QQ#sYJl#1W<7&U>r^}3&c8TxnUgXrvcJu01_ZN?rP4RptT4?9DTmzgX`V113e4k+pZPuiI8K{j6AEk zbWfav?6lR@>_=2u?@1onyezY4W46bZ8#`{ayBCDBL}%|-FS0r?m-(6G!2=c_K5<>U zz0dLcH@>ER`v?)FK#IZ0z{o_`z+BhJJjBr0%D~vl$Uxh`z{Y5j^-%a^QJy?X5`21bVZ#=4ri>hj96=GLao z+jq@fxI|7tcH*=d;Zfn;ytp;qbJYoK5)oC&~M_z&Z!F)&X_g*;IWg7eg2gL zz2jICzK1d?mU`CN%uVs^?nuY(Q$&3#< z?pTjRyh6Wtmb`+UB1g4?_43%A}`CtlyIGdEvj>8faFS+URN z>>qTP8BVQEz5l)NjM@Z=i8n;6YZ@55IFogDwc8(5P?*U4(Qt;ckaa;B*E8k&3cKvs z4?Z>L@cr=M9UGf)QK`k9Lp$$ZsjL53{fo)LOK|2bO9v5Pz%qEc`njxgN@xNAE~_HP diff --git a/src/main/resources/assets/plasticgun/textures/item/357_standard.png b/src/main/resources/assets/plasticgun/textures/item/357_standard.png index cf182359be18fc58bcdc5d6e00fc4bb8fea6b8f1..3784bffc9c627cb088c2239010b8af21422568ef 100644 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN%#*+cuzoXG$G|NB*mvjc?~OM?7@ z862M7NCR<_yxm<``ZI0@0y*p@p1!W^FW6o>zOmq#*b&bqJj0~-eOsxzJv<(cb3=C>7R$8EF$jwj5OsmALfv4vn(C-Wya2rZ8 pb5n~;5_1a>dMrZ>4Xliet&A)nmSj!3oD0;$;OXk;vd$@?2>=1cUYGy? delta 133 zcmaFMG>vhBL>&h+0|SGGE`KnPVk{1FcVbv~PUa<$!xP{W;tHgbJ+vRDdf%B7`R0`2 zUm%~QB*-tA;s5{tn{^#JfP4*47sn8ZsmTcm2}usDK0ZD#YSi3J1k=(&1l^t;R6FF+ fBgGcN@PwJcH-e!*G-M?|P!EHrtDnm{r-UW|HPtAB diff --git a/src/main/resources/assets/plasticgun/textures/item/38_special.png b/src/main/resources/assets/plasticgun/textures/item/38_special.png index 766484304ba4aa814c0743023b932c23a4c4055b..0bd15f79b55d4a8f62d5dde8b25a4781ad030af5 100644 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNjKsWDo5-b0Yu$|Nmg))=xko#*!ev zUYmi~;Jfj|y>iKnkC`wMniE^!&FR$C#UkiDmiV+hCf;qMn19fq_9omp>RtF%}28J29*~C-V}>;ScZ$aRt)J9@-C6z3Z(Qf)l!ah_`B#eaVXz*Dl)r=?T) BH*Wv{ diff --git a/src/main/resources/assets/plasticgun/textures/item/38_special_p.png b/src/main/resources/assets/plasticgun/textures/item/38_special_p.png index afc6e81027851f42886d7e2af4c8a58f7e9ab27f..7ce9cb075968d6bb0d468a7e64c32cc5a5d3d81a 100644 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNjJB0ShMeCXWCA|MT4AKMWLNED7=p zW^j0RBMrn!@^*J&>Cd21szhIZ;5|^=RwG{#i*?YP;hHzX@PH13uWaK!j zp|OG?l|$N5^4Ku}#l+;~jtQF#Lpn}M%$^|V;~}Y)(z1jrNklk=L1PI+s(~TUVHzDA zwqJ!L9|Db1Epd$~Nl7e8wMs5Z1yT$~21X{j2Ijg(<{?IgR>me)#s=C3237_Jf;&#_ zM$wR)pOTqYiCaU$(;{}D1`W6kC7HRY#U+Wk1qeNsA%+H4M#fe~77$CaCSA@2>S6G7 L^>bP0l+XkKrlMwi delta 154 zcmZo-Ud1>;qMn19fq_9omp>RtF%}28J29*~C-V}>;ScZ$aRt%>7EJ0*9LpXmu3WkD zs?pzSpb%?GkY6yve;|;#pcVuau<&$o43U^R_q-t&g8_$g;OCQn&&L$3+8BKIlfi<} z>YVg#q6|_D!3kYI#9KAWzU0M%#*+cuzoXG$G|NB*mvjc?~OM?7@ z862M7NCR<_yxm<``ZI0@0y*p@p1!W^FW6=|{j-&R7<|gQ<-I^{iuxt}1T`K9W+?{#2fQoa1p9x!t#kFuEO(nU_x0zO zvHEObIP1yzqmSq4OQ3nGC9V-ADTyViR>?)FK#IZ0z{o_`z+BhJJjBS*%E-XV&`{gJ zz{;qMn19fq_9omp>RtF%}28J29*~C-V}>;R)~waRt)J9@-C6z3+iHr(<(=T-a4Px+g^>bP0l+XkK DBT_f2 diff --git a/src/main/resources/assets/plasticgun/textures/item/45_acp_hollow_point.png b/src/main/resources/assets/plasticgun/textures/item/45_acp_hollow_point.png index 7ed920b6f99da92ab260d24278677f2d45cb7aac..5e1b898d52fe450f1e8388e17f0b6891907b8017 100644 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN`*1ajC*Jbhi+U$Dz^iOX2E+6n=MTs&PILpZLd_8#PAP~bQ+ zf%gJyN6vw_`)4ctF!+>p%X@*^6!lB`32HnJ%u)>e4|rF;3HJYdTj%PRS?)Gz?(5Gl zWA)j>aMqLaM<378mq7DWOI#yLQW8s2t&)pUffR$0fsu)>fw``cd5Dprm7%4Tv6;4k zft7*5{aS6G7^>bP0l+XkK{V8*} delta 154 zcmZo?Ud1>;qMn19fq_9omp>RtF%}28J29*~C-V}>;R)~waRt%>7EJ0*9LpXm&Wcgo z0_3xl1o;Is{Qv)dv#vu2kZ)0&YZ|(5AFZ||Cim^*a#G2ED7=p zW^j0RBMrn!@^*J&>Cd21szhIZ;5|^=RwG{#i8F;!lhHzX@PDp8Ba%9wK z7Ca{;(qhb#P;@FlQBjqdqdAgOEyZQd1i@tjAuWwF85tPgvjp$8`~Y+(gKCLuL`h0w zNvc(HQ7VvPFfuSQ(KRsFH8Kw|GPE)>wK6i-HZZU9Zu?#UZure~XGO~bJk~QgaE>I7Hr>mdKI;Vst0IGvzxc~qF delta 137 zcmey&G?Q_HL_G&H0|SGGE`KnPVk{1FcVbv~PUa<$!xP{W;tHgbJ+vRDdf%B7`R0`2 zUm%~QB*-tA;s5{tn{^#JfP8IF7sn8ZsmTcmNe-+&J`pZ6I64dxg%i_UL=)58gcFx6 j{uKbLh*ObJZ@sQM^f diff --git a/src/main/resources/assets/plasticgun/textures/item/762_tokarev_ap.png b/src/main/resources/assets/plasticgun/textures/item/762_tokarev_ap.png index f16dc1144e2395e98f44157d764b1520977190f1..1c0b0696f21e4a29bed890ff9e6323574f36a991 100644 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN(wFD@{SQ6wH z%;50sMjD8dzBoE4+E z1;}S93GxeO`2YX^W?hF4AYa?l#W6%;YH~tCk^`%cPlU@1jt+xF;lwl-(Zn=2;lw2i jIg|~vBmx*G@H2RFGITY~S+EeOjlt8^&t;txQ$iB}w9_T8 diff --git a/src/main/resources/assets/plasticgun/textures/item/9mm_jhp.png b/src/main/resources/assets/plasticgun/textures/item/9mm_jhp.png index b5f8382e12242359fb04059160678ea18e359856..f48a258b5fb7db6d7ba5628b2fd74dfe11821c48 100644 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNjJB0ShMeCXWCA|MT4AKMWLNED7=p zW^j0RBMrn!@^*J&>Cd21szhIZ;5|^=RwG{#ixp=xbhHzX@?LElLpullt z0`CRZj+_H;_s>@PVel#ImiGd+De9N>6V!Mdn57u_AMmbx6YT%_w$9Zrv)pac+}EF9 z#_F?$;jAa;k3OEGFM;N%mbgZgq$HN4S|t~y0x1R~10xe%19M#?^AICLDRtF%}28J29*~C-V}>;ScZ$aRt%>7EJ0*9LpXmu3WkD zs?pzSpb%?GkY6yve;|;#pcVuau=R9t43U^R_naXYgCh^q0gZqE&sJ~h72Iao-O%is zrsC_y$K|2W=*O{>^^f9tPOlAS3a{qA3*Qu7Ch`BsbB0+`3}0>dmv8}1V(@hJb6Mw< G&;$THsWp87 diff --git a/src/main/resources/assets/plasticgun/textures/item/9mm_parabellum.png b/src/main/resources/assets/plasticgun/textures/item/9mm_parabellum.png index 7feb703c77c4e9f7458034c3d17c9f8c85ebd475..89ff317e3469b2c4a3a10b11b604f43f7ba3914d 100644 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNjKsWDo5-b0Yu$|Nmg))=xko#*!ev zUYmi~;Jfj|y>iKnkC`wMniE^!&FR$C#Ukc+2_V+hCf)ZT-<3Xp9|oVYZh0?Io1%V6KS7Phfmw=y{{ipHH^Kg&Z|hwBGRxg2&3*m( zWvo717|wcf{^;X5`VwfKYKdz^NlIc#s#S7PDv)9@GB7gHH89sTG7m8_v;rbi6Kw+n zD+2=-`_HRUH00)|WTsW()=-+{Ee_P60k@$fGdH!kBr&%Dp~o`B(7?*b*viNPVoBDd R%eg>344$rjF6*2UngF5vbVmRH delta 159 zcmZo?Ue7o|qMn19fq_9omp>RtF%}28J29*~C-V}>;ScZ$aRt)J9@-C6z3mSAQoL(Eu6kg4J7rrUFOyd8M=L`pDGCEAxqDa=gh=n>nh02CJ61MwFx^mZVxG7o`Fz1|tI_6I}yyT_cMSLklZIODj`jZ36=< z0|UFwi*KT6$jwj5OsmAyU}6r@P|j@+3<(AexD6$lxv9k^iMa&`J(eMc23AJKRz?;O VJz0}3=K}RGc)I$ztaD0e0sxn4b7KGi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/ak_47.png b/src/main/resources/assets/plasticgun/textures/item/ak_47.png index 98449a41a8621f42f825251db18c6d75394adefa..0852b49f8a12bea3ee1c5494190b209e38ddff5b 100644 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vO2U$sR$z3=CCj3=9n|3=F@3LJcn% z7)lKo7+xhXFj&oCU=S~uvn$XBD8V1#6XFV_?d{xFMW{t+D*pfff4%S=7N8JgNswPK zgTu2MX&_FLx4R2Vf5y!~Acwug)7O>#1-mSlxU6pzFVGH#QcoAh5RLP_6Ap?VP~dQ0 zsIy?M!^{JA-|nw{aa4%!nslZ842P`&HJ%T=)St9>es-7KDd^bvUaZwybhC!SxeF(k z$og~@S|6LLu9PGuxLMGvyEmfh+`jEO38}Z2rk>eZ*zx+S&42fcp&VL2?*trBUK0FB zRkngrf}4x$_KvTjKnJLnxJHzuB$lLFB^RXvDF!10BNJT%b6q2g5Cc;yV{6tDa=?4!93_ld(dp0fxW WGrm0bbg~4{ZU#?RKbLh*2~7Y~q+`4Q diff --git a/src/main/resources/assets/plasticgun/textures/item/alloy_wheel.png b/src/main/resources/assets/plasticgun/textures/item/alloy_wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a112aba8dffebe0aa93d28b2c94cc01c26024b GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN^mS!_ z!7j@sF6-OG3$&gg(9^{+gyVX0LPCOoND2e9T5>Y0L9?pPRmL+3?_X#z7+Zv|oy8FJ z&@TJ@%c-hdJck5V^M81gWtt*zF5>Wkf>pdT87DVsw`IE<3FNWf3FRdP`(kYX@0Ff!3KFxNG*2r)FbGO@HWG0-+Jure^1dhNhk6b-rg zDVb@NxHUZKt`G!j(16=el9`)YT#}eufY4(ZVrXDxWNc+*39;nN(;GK|dKf%i{an^L HB{Ts55~Y1~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/awp.png b/src/main/resources/assets/plasticgun/textures/item/awp.png index 3d1c64e1f1aa8efb33fbb22cde36175f2d9dee27..875b14fcd1acb2e4f37faec674cc07c58240200f 100644 GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vO2U$sR$z3=CCj3=9n|3=F@3LJcn% z7)lKo7+xhXFj&oCU=S~uvn$XBC?OQ!6XFV_qobpNq-U*4)=Jy||NqZpzwsK#XDkWw z3ubV5b|VeMN%D4gVf~T+5@ZK^iKnkC`wMniE^%4kCSIU546U9njv*T7mtMTc$!y5M z_F#SrlW}7ex6E|Eg6IE?ud;AuEz}qN^y#y!Dx+aTshukG1;Hk_I~`ntzowU{OP$=~ z5z6#3xUEhw+57f`~ez5)Z237_JChNoHS6G7^>bP0l+XkKD<6%i delta 209 zcmX@j{E%^iL_G&H0|SH0lCEPwim^Dz-HBn{IhmJ04u618h%1l=0?%5N=;-LIm9}Z0 z9YleA){-EEak-(R=pNLB0kB9_9gbVB^lw$|NZDoYi% zDlDB*t0`8YbLaV-l)uWc3{g+oI2Zoj_Gp*C;_r=-?7f{#8zv;TeFMAB)z4*}Q$iB} D2JTS} diff --git a/src/main/resources/assets/plasticgun/textures/item/ceramic_mixture.png b/src/main/resources/assets/plasticgun/textures/item/ceramic_mixture.png new file mode 100644 index 0000000000000000000000000000000000000000..481e80ab18a06b0aa0ffc16d00815e2ef49bd365 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN@mT&)2$r!RZL=4*%otOr~?Q zY+K@*uvtC%s;J2|H%^Ykt0DCX&yKxl*vWH-qpXOxM?v%bil(S5+w?7DOuv{LT)njJ z$xGY1sqZB-XT|MGIrNObZbi@2M=u}EOr3aa_4=R8YS+Y$27NkO2Xu{UiEBhjN@7W> zRdP`(kYX@0Ff!3KFxNG*2r;ydMrZ>4Xliet&A)odd@t(aTBPA!PC{xWt~$(699skpo9Pb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/ceramic_plate.png b/src/main/resources/assets/plasticgun/textures/item/ceramic_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..a3dc5f74b2cee41e8ece7db5e7a465c3e5f6a7d2 GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZOb3@Ck8UuyoU$1?wlzSkXOUVSCTKuKtD7=d7MJ zciqCJTP93dI&aa&`AasoblK#@NNe#`j^9s6}n&(y5 z&iMcT|N2HA6QIi(lf2zsEUz<6bpUeMOFVsD*ZOaeD=*bCWe%ocXf_iGTsq({>UKt z(dWWhZVfqGfz&5A7r$uYs#5xp8fg_1($nYt-KW7*sYBGNr1a>9HQ~Myvkf+TMC?8A zI;d%8X3x|F;iwx+c5X0r?OC-jci|B?)u(^%m*unFOPq3UP4)RuU+V=W51rSViweGF z`BwdZWtjz!;zS8$gYdxLAAd|eV17)-BKO71KgE&jXNSC6khko@{B@5jByVM2(!H`j zc*DO6+y29EuibjbuU;+kTuWSI9?+MnC9V-ADTyViR>?)FK#IZ0z{o_`z+BhJBE-A_bLQ!dn?OAbp00i_>zopr0N>Xd5C8xG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/colt_1903.png b/src/main/resources/assets/plasticgun/textures/item/colt_1903.png index 5397d4f0ea038533fad26496402bedbd4fca62da..9fd4b59e74bf146b0521ff27510b42dbd7143ce2 100644 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7e6l0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP-1(4Plzj!j*g95y>?Y)b%mXSt*^gNUP11$6GxL% zlY&Eo;}hd{?%uIy-|nWC#@zgzuAa_~n>Q?8x~Q(9Haj;fB`qa0J7ebT87o#TFD);L zjgLu4im$1wp0{vb|HQsYQzo{yw}eNAb#%2Cl@z9Bq|ud%CHrs~8#^xVSk7 z1_wC1I+>Um>*#6AE6CZ{*=Xr#npv2Nh>1wcO8E!+IXF3Zc)1IU3X4gIN=i%U8R#-F zGW`Gle{J*yXQ0y=OM?7@862M7NCR<_yxm=FmS-iN2Xfd;Jbhi+U$Dz^iOc#n@dCqw z(cROgEDA7>;Rv7Q5eC$}6!AH0C^USwC%lT&Z{n_X8`)p#2^Yz*f_orqsHq~#^=zE;H zX#=O4ny1kENu>#bK`x0i)?B(G=+881&9&E&v;6+{ZfP*_RTlf{x8v?i*Jl>z(l&6K z$2<|6s2i6ysd(R3&Q0lab}BvCb=aq9g3ltc#wo}Ay#@K$r*|bVFq~otczRSXJj5w- zTEYtlr@kw$p2OC7#SFu=o*;o8kvU}8e16{TNxQ?8yHv_80hwyJwefso1c=IR*73f%;mla vpau=N4JDbmsl_FUxdjM4mLY})Rz^TeEFqShd3xg}P!EHrtDnm{r-UW|p!+ir literal 669 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|b_Mu^xVjhk z=;&!@W@jX)CK(zVIJ-K<#>WVY3cI*D+d0^Zh>0jFD>yhgq@<;|d%F4h`&3p}^iS;T z=xPs*2sN`Xt!t<)Dk(HEGcGMJ*|~d%mX2mkUA3pTXLM{-c5arug50qaN1Iw2bMtd- z>};fErDo2aF=@)gc?;*+JK8ZYGNfgsiAjh`N=vA!s|1Gz=N06xUb`wjF>d4L4Xy1h z;gMm1!2up#?s^8gT|J$9_U%qcieJ2R(TY{e{R92v)>Y{OePLG; zY}`Fv978O6=UzTJ>5zf|TLKer;~T}a@_wn~wR3Cl{omSF5%M7+yzo`O{4ODZT~{9n za5kP1eRn+BsVuEP=XiXorQx@eUp|M-^Rr*c$x~}HQ=V`C=R*t<|I|uvZ~I)4A=D!K zct`A!^!o~WYxKG*6jP7Hv1r82IUlU4o;gjTVag`8QYq2Z`{H&4iljELIbp!fb4d2x za?WEFsX`gv2AnhdL)+%D6ex0rAMzJ^yIfRe-SvW#e;648cpsRY_{}KF88MA@7Ej*= zkCr)RvMUy(+cNacxhelNq(SMxo@$2EGlM@)^v=A@(DLW+L!Jn(xSQ)<2Wr`@W0Ggh zmkD~N7k+%jQt2aGS7+>9c-OV0cGm6K+7)+W_UvV7+5YmEv1$B@TK79axf_ZP%P(Y- zVXacW`!;WC7vBxr;CR;vubla|NvhZUnL^$&yj%90UC%*c>3rAE=D^5d@O1TaS?83{ F1OR&$EL{Kq diff --git a/src/main/resources/assets/plasticgun/textures/item/colt_45.png b/src/main/resources/assets/plasticgun/textures/item/colt_45.png index 2bfddb844e7f4f99ff330188cd2f8ce6766bc4f9..9e0c7535e33c03ff85d8a0b7f17d6834bb984f8f 100644 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7e6l0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP~upCPlzj!77-KCHL}#uGhtw4@DC0(v$9dv&<_ZU z4GD{|Ftg(0ll1ft3yaGRiAwYdiVTg6F)%Un@(WNJ43$v8=Hd6>Tm$Pv2kx|j-72pZ-u#2%2jIt05wpEu?(NfYfP07rTNk|R|h!B;N z4|Xw=kX81y)Hl`F`v3obBkP|EpidY}g8YIR9G=}s196hP-CZ0z@8$RbIqW5#zOL*q z*k!rIWqq4?fkDG4=jq}YVsU!z<=aI~1_BHhG(2}maIyt(O}iA8#jC-}7#RKa|Nd1E zzO0Ww^Aj`GSwCL@?KN z%*nrYWJx<|Ewv%bT+T*!m`wrm;D17KV5ykvtDvt z%wP7NvkzO=OkR7zzwx!}ubFAKcN|xzB$Q-#$>v)t@K$J7SPsF_*WxcUTJ+Pg`}Du=~oM_I^(L?!YH@F;1S2Aj(T+p4SSSsIzyx_S9{ha}iI zIN4g;iHM2l8d(Orn0Z?2o9b%?dD!vsNqU$0RTb3i|s79MAY24D^m;NswPK!+#3F zy0h9#fZ?Rz>Eak-(L49@&7vj)5w-^oC)iF%1x#>dSzEn&MeLT-zwJXCUxuoCrdQ?t z&-e2)QfJ`V8ZoPfvC?pI&^gha&!VSXa^TulFlklmGye^V0aihrEmM?w6yLP!i5mAj z_xh;Lu(@xA>-{5vd|XU6|AV;1mcFud5|_HBaHOU6jYz%AiGo#L8Z+1qEbgAO>)DqA4%G7C0AZ4V}2}JTPS#k;9;?W?Y44CSQf|LwJF#1k4_eY{H{4K9{)Ra`G3RGtMezM zY|{U7Il*+=6NN2r{_!na@iU-%>-6^?6Hk76*Hh~ECPAN_K_+ZP$lp(S@>}AS>zF&I WiOt+SJ5>c3@C=@=elF{r5}E+*unp}1 diff --git a/src/main/resources/assets/plasticgun/textures/item/colt_peacemaker.png b/src/main/resources/assets/plasticgun/textures/item/colt_peacemaker.png index 1e400a479c3b4e944f3e823ff9022c5d68a1c10f..3d0757b33cd0c629a6399d50cfcbb0880e3faad0 100644 GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7e6l0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP~upCPlzj!Hqg~c3Xcf(^JQRUu(2@DijVj5@Q4fx zH8nC$jEgPL&dg3vtF0(+t*h;AYbnmpn>}Spq_3x%lH$<=`y2DJS1y`;c*oLndnPTO zly-1Mm8*koOS$j*Sz!rDo?DitcGRZrSlPO;%}BC4zIWZQ60>&*=&yxoHglw5}(a@Lo5+cmLV-8NScTyN`ad)0SJd z`uLP-yhS>jvSuw`+)$Bs+f4E2^ir?P-lx0eayC8q`gZT@UH#{4y5GKAEq+7j_T9Su z2N{0a$<+Om-@j#+aPXn1nQMVwS1oakC`m~yNwrEYN(E93Mg~SEx(4RDM&==g##RQ# zRz}9!1_o9J2Hihx15h;N=BH$)RpQq0Yf0-Hpau=N4JDbmsl_FUxdjM4mLY})KpU)# XEFqShd3xg}P!EHrtDnm{r-UW|5Wx^` literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|4hQ&zxVjhk z80hMl8W~51h0dNbCD_lm#!`rZk)gJt+{VH@D?Yx!R3tk+t+lQ;F)p?|J2TSPGbucx zx2?s?!=pGquf&?a!JcR3qS+}S`dI-wh0cmKiOQ{3{PSIe7EemsvNW}?-t^p_NiF5R z>t}_P1zF|$iAB1})<>8YhnQrB+XZL|X6f?;XoAkIocPu@6V1Hv?_7r!)g`H{%NuE1awjNwjwXN5^qc-ity5NOnZd^8BOn}~TED7=p zX82DbSa()?3DB?)o-U3d7QIU^o-8`7z{8fXS%QV_cEa&@kKXvsTK0S1yW0QDwRV0{ zi~V$8qE`8@aY`f?_s(-GB+@byXZ_{tk~rw>r)Q|juc*F$%A9CNF2#(6y(c3>zeTEFFMoQTy>fo$9 z3l&nYm6o$J{l{?79{N5rPuZ7lZ<^~NzGK2i-w(V#rAJFe>AQ5 b+y5WTo^J)@Ojb_-r5XlLS3j3^P6xm diff --git a/src/main/resources/assets/plasticgun/textures/item/composite_frame.png b/src/main/resources/assets/plasticgun/textures/item/composite_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..c83682a8bcb7fc0ff023f8836e54092b6a2d5008 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZJqU_=LDN9%ybp+T4D&spCRZ+v%p3V@-8Cn;Z5w z*Y9br-PTgKqornRbM>Z{%5^Pe%UeqpwHD87t60@izM{2gc3b|G_JZl{xf9z<=C{>s zZprO$FJ91^-QAJV+L_+cncm#_|Ns976Epq;?P5&wc6X6ypvp3frHsD~nP$-sUp0;uBGT-h0|DWOBWutJ`QL4ej_p^ly(asq?Qx#g)~`4C4phoH@7!!KUETUc2-_p!WBW^r{6=iagI`@;VT%Vg)je_tNiub%W+wf;c~59?~#JGMZ#tCqM% zl%ynJ2*cox; z!j{GehTy{-GpETFDF9WgmbgZgq$HN4S|t~y0x1R~10xe%19M#?ix5L|D-%mAV^eJd z11kfAv)a#uQ8eV{r(~v8;?}UIEN(qeg9hA&lFZ!H;*!MN0)!sR5JLkiBV#KgONb?B Tp5C|#)WhKE>gTe~DWM4fl_Of~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/copper_wiring.png b/src/main/resources/assets/plasticgun/textures/item/copper_wiring.png new file mode 100644 index 0000000000000000000000000000000000000000..4777a10e4fffc130ebed9dd0d72766758ee78810 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx93dtTpz6=aiY77hwEes65fI7*3p`li_Y?8=EfnJeeETsh*m zXPs+)TGWI#=f%_Qj~&oovq8JP*?akdkhA-&wr#9Dywxx_!?L^4Xx_}eRZGGS?$F6j zj=OZip}&JOB#bRE$awdD&8aha@(Ta|{~!7Jfj`h1#*!evUYh0WQv z4L}ZiiKnkC`wMniE^)al-7$7RpwG?!7)RwFq_VgHU^VR3O=eW7>NJKs5EUVc9#_ok->Fnzv=zN%r3B?3d20e>V~6Fx3**h?11Vl2ohYqEsNoU}RuqqHAETYh)f` zXli9_W@TcoZD3$!V377bDF#JDZhlH;S|z3i0~3gbMI7haff_X6Hk4%MrWThZ<`y9I gScVuHSQ!~x8CgQ~oOycVCQuK9r>mdKI;Vst0P3W`xc~qF delta 575 zcmV-F0>J&G1kD7H8Gi-<001BJ|6u?C00DDSM?wIu&K&6g00IX|L_t(IjfImsKZ3u0|)TAk7qD|AuOy;`Kq^6nHvpe^k_u)O~-hV6jPk5tYS<#nshucHy z@+DErg_WolXJhANr_YPJ-NmjzH*d0YJU%+mpjj2r7mLVk-Y#-mTo`+LP-j&Vp;Jx$ zO5o}hxf-O{u@jfS8(l40iUAZgndaiFCryxfQ(?&{lh>5BrbGd7x;8aHdWVOk!?S~e z{ztskUZpPn z(}&ai0>F|{Zm_AFIxc@V#y|U5*Cxq^24#J-y~9JY)_=UQ%Y!?3faLv0=%$YE^oix= zR$AEG*+C}pfr;@K*6*M%7Lofy{UkT6r!e`I#q1ovX1>)&8hrUo=4=jLUmL;lj-KDR zB|d8!c}=09D-B|Ru|vm%t`-5T0X3@&B}usqC8OEs#PNP%cki|a9DF)1HCsE2Q&T8E z=Ww=KKRDKfk?W!fy;3Z`&otOy84ZQD^A}`wHbb>))XyppAFTOfe*>1b*k3MR~Ji@(X5gcy=QV#7XjYcj1@V#c&hI zVK4FYb!C6SF3Tk@ccnYV4k+a3>Eal|aXmTV0Jntb0v<(Yjh8IwS2Hb{{%-q!ClEmBsgdWQfLjx-#V=H5*B~!1@ RodVRu;OXk;vd$@?2>@@Idp`gG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/explosive_powder.png b/src/main/resources/assets/plasticgun/textures/item/explosive_powder.png new file mode 100644 index 0000000000000000000000000000000000000000..b775f69f1bb85fa30927a2a7e1a37dc705a97e12 GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNM&bSt!?7p2z;jqb(qrOWxP81a8 zdKc?58^**a9lF%WBQ{-fZ6c$>Rav=(3k903lr}_hFkD~8%cF34@l2r6swJ)wB`Jv| zsaDBFsX&Us$iT=%*T7uY$RfnZz{}*L%Nd=`kL$h;Qdh6wtsM8<-r>(%Y=9zgNfL_^E{% ze}QH(mIV0)GdMiEkp|)p1!W^FW6)T|Nmdsl?}F3csqBFx_4O6uYQ*23UeQ6_bF_b`@^#Eo_r{e zzlJMEPqL_6$ttb}u|s!F{5j6-eYfLTP^7I*-zYa zzkJhOL)n=Bzu2x_W+~46*PjivU$w+Fq9i4;B-JXpC>2OC7#SFu=o*;o8d-!G8CV$@ zSQ#2<14#pe2`{!Xp=ij>PsvQHMAl$vX=MsTrVtH|g)I?44H|G8N-}d(i%Sx73lMrN eLktb9jEt>}p_WX&K6eUG4}+(xpUXO@geCyjx}G5b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/force_container.png b/src/main/resources/assets/plasticgun/textures/item/force_container.png index c4eeab5f516f21be572eac2597cd719b5a290ebc..78cc9d983fd9b572be6a78862dc6a81c3ccc650d 100644 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNdV9L_G&H0|SGGE`KnPVk{1FcVbv~PUa<$!xP{W;tHgJ;P)ppKJPici{zFA zIV>eXe!&d?|Nq~t>(Bw@>v+02hDc0JPHG9EEP&&ZFD!}OG*23Vy&CI-sf%)(Q iF^5l55ezp!^Dz86z<6|FV8BL@sh+NWF6)?`5}E+wU?(vE diff --git a/src/main/resources/assets/plasticgun/textures/item/forcegun.png b/src/main/resources/assets/plasticgun/textures/item/forcegun.png index da77f4b26e7c1053dff7c83a59bcd158e02687da..50b96c18550cdcf7c3fb060af14e648dc2ec1018 100644 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vO2U$sR$z3=CCj3=9n|3=F@3LJcn% z7)lKo7+xhXFj&oCU=S~uvn$XBD8V1#6XFV_?d{y+!#DDI&-wrVe;9+LKTwFVB*-tA z!Qt7BG!Q4r+uenwKjUT~ki%Z$>Fdh=f?bwNT<%JDj2%#@!PCVtMB{w!gp0g~6?k0U zZeU1bdc@hW=YO8z$}7*#wd&84dtfd2nrXE*_*wc&E;NxV*>qSzmS>jr{OjA3S<}W>Z%0oYO{^z^@gy-GNsX2J-`AUPlV~4N& zTgj+ARmv-n{d-8(B#}J(NbYzW!=>Cnx2Tr5MwFx^mZVxG7o`Fz1|tI_6I}yyT_cMS z15+y#Ln|X=Z36=<1B0Hc$Lmlu5Kw~#+=i0O+|=Td#M}ae9?K9z c1E397#s&~ere2>r1*nI?)78&qol`;+01oPlX#fBK delta 373 zcmV-*0gC>^1B3&R7=H)`0001UdV2H#0004VQb$4nuFf3k0003#Nkl@>t?gt2z*o) zRY%vi`&A&5CS;t`v69y3=j%p zEJB-9v&VDK3Bw1_nR9na5Pp1}SzHKj0G)Z;)Y?BO z7YHu^)troF`EEiu7olw4Hnq^11H<+`R+vrzs=4VsYEUYKt(`k90RfoIRRd~NWl?o1 zjM~J4hly=2xC}DuIQEh6EFie#r=hVd1kVDlC}Ua9gQg+{B1}VH#XM7Z$y5t(fVZye TW#v+o00000NkvXXu0mjf#tEBg diff --git a/src/main/resources/assets/plasticgun/textures/item/golden_shuriken.png b/src/main/resources/assets/plasticgun/textures/item/golden_shuriken.png index 2f792fa97041d10b500f3389c6804d55416cc31f..9eaf05534bb9e6c47fdde0ec8a0ba522e9231152 100644 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK##_=LCu>FB7akdTnPyu8$ul(x3ExpU_pIB;O& z#*NL*%`<1tOh`zWJbCht9Xr;nS(BNWdGzSfty{PH`ueV1xw5LNDmFH@tE+3_!i9l> zfwi@@OO`C@@9&>Fb?X2B|2G|ba2{wnV@Z%-FoVOh8)+a;lDE5y>}%%2i9il}iKnkC z`wMniE^)al-7$7Rp*Bw!#}J9jzJ9mG4l8gtXS*(pihh1A_TPW&=cUH{b0$v^V6bWt zC~CC7vg+cQJC`1;^1Cz0D09az zKF_LmuXxEcpo>&XTq8xvr6Uh@q*Kv6+>zxwe6Um4QKy zQ8p+v5gKyyQ!>*kF*O*NKr}4kIM)u;paHj`Br`X)xFj*R0HMb+#L&RX$k@u*0HSB= T^|@1kdKf%i{an^LB{Ts5o5I4t delta 521 zcmV+k0`~os1eXMm8Gi-<001BJ|6u?C00DDSM?wIu&K&6g00GfSL_t(IjfImjtKvWq z$Nw8eNh}iZun0;(A~v>u1q)Gv?R$;I9%AEn(MIHgg|>pEP{G2FU>!k(AP5P$=c1?SF zygm`AFtRi^YOSlEiMe8+_l71i~)} zn0THS{lMvTieLcHG>tq9p4f@L??(cU$K%bfX&U*F&m$cNuU0E2NfJ!cgzLKCxcGN| z={k9LwH*N0000< LMNUMnLIPldBq8$A diff --git a/src/main/resources/assets/plasticgun/textures/item/graphene_sheet.png b/src/main/resources/assets/plasticgun/textures/item/graphene_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..fb784e001ae0c94ff870521fdf7980b2c32d371a GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx93dtTpz6=aiY77hwEes65fIRi<@C)KG(tr%5K>}S=AEP zh?11Vl2ohYqEsNoU}RuqqHAETYh)2(Xl`X{VP#;dZD3$!V37MFln+HiZhlH;S|x4` zGF#tn0&38J+fb63n_66wm|K9*V;N#-U}a=%Wo!VkWa{;~Q-FFHJYD@<);T3K0RY8) BQDXoA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_an_m14.png b/src/main/resources/assets/plasticgun/textures/item/grenade_an_m14.png index 3f710f804119ca889b20a5823018bffd608818c1..5d15a671483cf30424a41ed4befaa728922fb9ae 100644 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN&pKB|9|FR z(;ook7)yfuf*Bm1-ADs*lDyqr*u@e%UIRJoC7!;n>@V15xy0qJbjR2Mg)BT>978y+ zCnqEbgaipCFfgViCOdLC2LuE#oDy(I-OvWtOjb(fZI@#nVVW%l9*e7&|?{5XkcYzY-MZ!v1ID?xl@38 O7(8A5T-G@yGywoDg=ilD delta 163 zcmZo+-pn{bqMn19fq_9omp>RtF%}28J29*~C-V}>5e@JOaRt)+0umyk3d-7+wyx~) zv6^*Fx_WUNB7qX@B|(0{4FADkY5lU_Kp{&{7sn8ZsZ-Bh<)SxNBqzn>jSkOgDdV>pT<7gMJPjpeYQVu6{1- HoD!Mkm&bt|_7YEDSN0d|vRvYFSGr^DfI{}3E{-7_*OL=~KqRGs z!HtoT!`ZV_(8qY@42_1?DRbw}m6#~$AlV_)^pJ;zgDr;Fh+oZUI7%Wr(4Hm65TPF;vgg>vN|7 P^)Pt4`njxgN@xNA{=sbq delta 159 zcmZo=Ue7o|qMn19fq_9omp>RtF%}28J29*~C-V}>;ScZ$aRt&qpp+uxog(NRte}wT z^cBcwEeY}qX7~>TG8fc>fC9FjE{-7*Q%lcp=VdV9U~#zg&saK9XVTAi>lGO8C@4+I z&{vwJbLhyFBURJ*?m4SfJm>F`FVdQ&MBb@ E00`tWvH$=8 diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_k417.png b/src/main/resources/assets/plasticgun/textures/item/grenade_k417.png index 4faeb53a1241c923b4712c1b0d49d062ece801b0..f761281919915969e566e21963074f4924d579bd 100644 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNx;Jj*HlC2i$;y=ehbJvrfT42-6JvxH3&$Ko z7nuWU%#6&;4CP4zr4{W?|A8i|mbgZgq$HN4S|t~y0x1R~10xe%19M#?^AJOGD-#PV zBMWT<11kdq#=34#6b-rgDVb@NxHS|g8-E3A(16=el9`)YT#}eufY4(ZVrXDxWNc+@ X0I_81^|@1kdKf%i{an^LB{Ts5Ghb`+ delta 175 zcmeBY-p@EeqMn19fq_9omp>RtF%}28J29*~C-V}>5e@JOaRt(1O0G&~IaO6v4Gj$~ zEiLWs?OU6l=K&?yOM?7@8UBO8()wk;fkLjHE{-7*Q|I}v3HTQc=Odusu$NWS}|%)>uYnxS0*}aI1_r*vAk26?e?9L@m&0Su=E98!0*w6#4-Xj!&& zX``g#!i9+|cqWK2b1^UBmS$$yvQS`ui2IW7KvVcqBRtc5eHpZXYz`m>flI-Yfuw4Q zYeY#(Vo9o1a#1RfVlXl=GSM|K*EKQ^F*LR^G_f+Z)HX1%GB9A1TfYxQLvDUbW?Chh z1_N^|L#T$E8)~hA8Z_WGlw{_n7MCRE79jLkh8P-H85vs{8$c|XdVTH`pdJQKS3j3^ HP65p4Z{-7w)8}XXHF6avKg!nJY${2bAZjj=ZeWz zX6uRZJ@RMV*{}D{b1URLs<&Vtqr&oLgZT{NVLf~sc0G8!x}RshUCrSGHyCmcF-#YC zXjn4EgXe$&!;|`$M215z8q5+MY!VU}7`9Fc+|>UlchAJ1vYZT_u6{1-oD!MowY@K#i&;t`Q|Ei6yC4 z$wjF^iowXh$VAt`T-V4v#L(Qz(9+7-K-<8;%D^CD9n%>U4Y~O#nQ4`{H3)v*RRGkW t0k@$fGdH!kBr&%Dp~o`B(7?*b*vi-tVu|sBX$n9+44$rjF6*2UngHtxV+;TQ delta 139 zcmeysG@EgPL_G&H0|SGGE`KnPVk{1FcVbv~PUa<$!xP{W;tHf!$s7LH^ZNhg<+OKI ze}R0Kk|4iehX4QnZ`O6_0P=M`T^vIsrXKA#6k;%7IN0(3|IXN#%vqDW8`t#y{W4W2 ngUPd5YcCo~c*FX+?iKnkC`wMniE^+zAJvl3YLKdDbjv*Y^ zlM@mILV|=67#PzMlN~vn0|EjVP6;@q?r3Ridz7$*k#WXEAt|Z0Qw*Ml3k)1~Z7^gw zswgP*noUgyXohNuYeY#(Vo9o1a#1RfVlXl=GSM|K*EKQ^F*LU_va~WW(>5@$GBB7B z8SxH9LvDUbW?Cg~4G&o!fPzQ^ZbM0CZfbE!Vr~IKk7bCVft8W5m9Zhj65|Ea6o7gd NJYD@<);T3K0RXg7WwQVP delta 163 zcmZo+-pn{bqMn19fq_9omp>RtF%}28J29*~C-V}>5e@JOaRt)+0umyk3d-7+?5;|h z@s7GpLI2klSpg;3OM?7@8UBO8()wk;fkKv^E{-7*Q>UK2$i<+*;e7GzrvLw+sPrls zyt0#HW7gReal}hQ=?ULG#uJWPd+ipuao5NcHgjm6nQs2#)_EqD2mKs6KvNhzUHx3v IIVCg!0E&AylK=n! diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_m84.png b/src/main/resources/assets/plasticgun/textures/item/grenade_m84.png index c52215d3f50d60225028ce1eddd9b9e1c0f7e56b..d3e46c2be624924d04503351af3ab38154f3a883 100644 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN;OkH})6{=*>5cszea3Q&-}#M9T6 z{RO)$m$>}mo}3jxA$w03#}JO|$q5MwAwfwE49c#I9ESr=2>2LtaalP@EL+&QLW#%i zRnH2gH3p_@Ji25Px+DW!8`#tqtP~Vs6k;${;b5Fu#d{8D6klqDXPU1sgBFm@0mLA1 zDR?rFR4s9hC`m~yNwrEYN(E93Mg~SEx(4RDM&==g##Tl~R>sEK1_o9J1|R;uH$>5p zo1c=IR*9*>$P}VM?^co~P=f~ChLX(O)Z&uF+yaCi%Me2YD(R5(v#WWWOW1SJ29$S6X25OD9xF|2Btpfn2j^x-+<$5+pwJO+k0Pws;a zg>q2;a}27>q?!@+`3fYk*c+hCeO0OSG|Rvsu16<{?01X$VF z8TbVy;h3981S*3Ha0Vij2?w0q!VKTPz9r663m`=x7l8Z@!n&?*3@@Kv!D<<8TmbSj zv0;ES5QzmOc>!BEU^M^)KnaOoObX1F)Kq0Sx_Tj2wG_L6z6pt>FhDj0mu3bA1_l5> YOHDeJz-~K}0RbHe07*qoM6N<$f?~sEMF0Q* diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_mk3a2.png b/src/main/resources/assets/plasticgun/textures/item/grenade_mk3a2.png index a2fa1c03161db3706053b760fa854950cfbd875c..9a989ea3ad141676d7fb8a83966a03359afca826 100644 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN%~Ah#*!evUYcCo~c*FX+ufkz}z1>a#1W;~w1A_XYOUgGKN%Km~~ zmP=fIaZk<)pirQvi(?4K_2h&EfuNwE1O~=5RaHd|=RiT7BRM*cG#HW$xU4pDG)Wvh z=9$#vFe}v4Q&;eeK~Rtpi}94+UeSd?UR_5#3>|n(*lr&zopr06>X&jsO4v delta 334 zcmV-U0kQtf1N8!s7=H)`0000V^Z#K00004VQb$4nuFf3k00004XF*Lt006O%3;baP z00009a7bBm000id000id0mpBsWB>pF@JU2LR5(v#WIzJ~LSp~LBo&}MRB-F+DGc>Y zP#O+CynDs?^!O0B|Kx7OO#|E&* z0!T4B#s!G-0yzla5+9;oKu!x7xeJsQIJtPCJOudk;Wb7g0s#yG5C9nhWitH!^#e>} g)6BrYzyJW9S%&yVV@-XN5CI(t07*qoM6N<$g2JADNB{r; diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_no_69.png b/src/main/resources/assets/plasticgun/textures/item/grenade_no_69.png index ac16f82826997403d0ee3f8299586f5fa4e6beae..32db7f09a5bb15b8f4e67275476e3e737bf7ac1c 100644 GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vO2U$sR$z3=CCj3=9n|3=F@3LJcn% z7)lKo7+xhXFj&oCU=S~uvn$XBC?OQ!6XFV_f#CoD|Gz((tuZpn+Gnuy5^D%hh_NKd zFPOpM*^M+1C&}C0g(;1@CI!f0FY)wsWq-jg%Ox(qxF=@?P^i_@#W6(V{L~8=km0U5GJl@vY6|yTW9C!Ql(0Y4?LrF#hPVbqkB3CJipBMo$rYKdz^NlIc#s#S7PDv)9@GB7gH zH89sTG7mAdure{RGBnaQFt9Q(5Ig%U9z{cLeoAIqC2kGr6XG5NHE6(XD9OxCEiOsS jEkNk83^6pYGBUO@HiTGWykMFFP!EHrtDnm{r-UW|Cvl6c delta 233 zcmX@j{F8BlL_G&H0|SH0lCEPwim^Dz-HBn{IhmJ0j!=M4h%1l=f;C1)S^Erre=__3 z|Nrh=j?;ibY$ZW{!3;qD|Nm8$5B>o~nmt_{Lo9l?UUC#_P~cz{-vbnD0l;a~_Xh$2;yVmJqD>V>r(|pKu;KYEM@`mvv4FO#lJ2SQ-ET diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_rgd_5.png b/src/main/resources/assets/plasticgun/textures/item/grenade_rgd_5.png index 6fb7bbc89a79cd1814091b1e2fb15fb89bc589bd..7db4119a8a7d2afd518faf9921301ade8f0a4cb4 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNYcCo~c*FX+?iKnkC`wMniE^+zAJvl3YLLQzjjv*Y^ zlM{eIB%y&pl~JSHbAsS00Wr4AXS$l$*c95jH*VxMo{+}L+LZE#M@>~BfUR>06JvxH z562`!7a<3=<&2EX%nUnIgm&0OyI26tR4s9hC`m~yNwrEYN(E93Mg~SEx(4RDM&==g z=2ph$RwkC(1_o9J20O!!m!N3K%}>cptHiD01b6)jpau=N4JDbmsl_FUxdjM4mLY}) cRz}8F#)c3}j2BE(0P11zboFyt=akR{0B65!?EnA( delta 185 zcmbQje3Eg3L_G&H0|SGGE`KnPVk{1FcVbv~PUa<$BOTxq;tHgF+|?=S)cTX3`5Q(XC`y9Cr7;vy0-LdX} zePPflHviT>@$v}AiQ++Q@21RXGwc;MYLtGcqL_Q8z(6}$`{MsYv$I~DdO7*bue&S! cO)J0g3eRQYJ$vFiKhR7DPgg&ebxsLQ0KVQu{Qv*} diff --git a/src/main/resources/assets/plasticgun/textures/item/grenade_rgo.png b/src/main/resources/assets/plasticgun/textures/item/grenade_rgo.png index 2bfa23e6e4f89ebe0336bdc70a634b6a692506be..0b3756c21d82714fb60cf369cf58e967c00ab405 100644 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPNOn z|Dq-B|(0{3=Yq3q=7g|-tI0OZTF^D0Xgg?p1!W^FW61twQQ)uhnxRKj}4I!2oFPNqP)WhKE>gTe~DWM4f4-0Nu delta 281 zcmV+!0p|Xf1E>O!7=H)`0000V^Z#K00004VQb$4nuFf3k0002uNkl1RwEV}Xh6$HMLqo&=KY#wf`R(oPSPjBw03)*I%F0ScY=+=802zG#{F$M>z5V~^ z&z~{m7_q2lsH&>^&&I~az{0`;7yI_@8$(-L8)H>f)&I7(Hh)H(24p0f{AXZbU=WgY zLlJ-Xd=~=)0|Ud1`DaiJVL{jY<0mBGo;}!x)jMGU+9=^bR2bj`18)FI7-*}0AxhJ8 zBxNWDT)oZ1@b3M01}-jEhHu|~z%T%xW-cyP!UhoI0=y{^J)xk3 fRU59N=m7wsITCtbL~`R=00000NkvXXu0mjf7$@V15xy0oc_vEYq3R!r%IEHXs zPfkb>2niBOU|>v3Om^gO4hRTfI3?hax}&A7?NP!KM#dQvg`}j~PBC~IE--M|wZV|# zsG^|IYc@3pW0{2Hb{{%-q!ClEmBsgdWQfLjx-#V=H4rh$Y4grYQjR OFnGH9xvXRtF%}28J29*~C-V}>5e@JOaRt)+0umyk3d-7+uI%jb znwm|zy3_kAW&$PHOM?7@8UBO8()wk;fkKv^E{-7*Q>UK2$i<+*;e7GzrvLw+sPrls zyt0#HW7gReal}hQ=?ULG#uJWPd+ipuao5NcHgjm6nQs2#)_EqD2mKs6KvNhzUHx3v IIVCg!09Nic82|tP diff --git a/src/main/resources/assets/plasticgun/textures/item/hardened_steel.png b/src/main/resources/assets/plasticgun/textures/item/hardened_steel.png new file mode 100644 index 0000000000000000000000000000000000000000..23557a025823a4a819705a6be9ea13b0d333c267 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZJSQ@Ck7R(ncn6CT4LudU1LNalsKQ!lG8#I~8f` z#d-Lwh)KE;pL!!X^G0U=4O5Fa-=Gy?u{VOFZe$nUh>Tm|=u%{171uZAe?jSuwA>p3 zVK=;kZd5k@Z|VA9QG3J1ttcjOMN`NB)a)D1-Zvr=|0iYr&n@|HWm_b#Xj)$P-#_BN zky(?WNs*~Vk%LQ9KQ_wR9u?|NmcXp?eqT2gZ^hzhDN3XE)M7oFs2|7kj&8gHj-ey~NYkmHh>~ zESI?a;+~upK%v>5E{-7*m#3aTDb!>jz;a=OD@U}_A|Y{>I|fbCPFEiMub&n$Woh`c zYws`FGJLV{{O8}bD68Ou@2YjuC$_xtlkqGSRAW)je$mVD;rQg0oy=a$Ip>~rtA02f z+QQNMIAw3=wukE&cetx~23I8o>zOmq#* zb&V`S49%@fO|6V9wG9lc3=Cu^Z{CigAvZrIGp!Q0hMaTU+&~Q)a2rZ8b5n~;5_1a> hdMrZ>4Xliet&9yJmKZOXrU2B#;OXk;vd$@?2>@2z=?4G+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/hyperalloy.png b/src/main/resources/assets/plasticgun/textures/item/hyperalloy.png new file mode 100644 index 0000000000000000000000000000000000000000..405b63a86813f4a0dbc24659127a191fe1e5ed00 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZJSW@Ck7R(t<*Ef z9tz6MTDmK>beC)DEYQ%Np`cW&rMF&7Z?l|2j)uHk%jtw|c%bG7t$YU}USH{Pjd zv_?&13CuBjV&G-Pd>m^af)|kY6x^!?PP{AWo9EyNkoWn=vFlKpj3$(0PLmTh)ySysk71nw-*yU6RYR^ z>I}MBo_In|<9ul9=6NgS*G;Wt`W?! zfw``cMTnufm8qGPfu**Aft7*5mPY=QC>nC}Q!>*k(KVP_nVLd0EL@!d3Mmb^4JDbm osl_FUxdjM4mLY})Rz}8F#)c3*#tWt?0QE3Fh|soFM+bY?1st`-u~RR?RiNderI2 zGK2hdrHO62t0rikU8T5xqI7qO*vhE}SGSn#nJaf>t8IRg{KRVI#T`wN3lpd!3*Yh0WQv z4L}ZiiKnkC`wMniE^!6XSB_JGLcN|Yjv*44WBcDqH7W44G6n}st2xeb>i7QB3Kwf` z^>6&VX)dFptwwT=!u}n-!s6n#`a}Hs z=T;p(?f>uVG;hnalkC0M*)N@0|864CVX7sr5hW>!C8<`)MX5lF!N|bKMAyJv*T_7? z(A3J<%*w<_+rYrez`*3Z?{5?hx%nxXX_c573``&z7IBmdKI;Vst0EZd6Q~&?~ delta 565 zcmV-50?PfQ1j7W78Gi-<001BJ|6u?C00DDSM?wIu&K&6g00I3;L_t(IjfIoHYg17a z$3HheY?DxJYSlz*0?!W8fS`+mmQrwVQU`-Xoa&Gv-~(~+PY`q|G=qqX4jBxB1)ZGK z#X+b;gM&odq(s^#FKOz_dwDOp4s8N2d9B~=+;hI)^F8O@D}VS8GO4f>X15SJpn%2Xj(UjuRa#kvKnwwpQcn-4zGtKmj$aNF^R38niig+F+;BW?tPGs`os7 zbW$E95;^82F&#o{c3jB-p0%RMm-n;7B31`snHYNYuqp8Xgvb335p^Lhm8cKXXaF!8 zm_SV{u1-ZJ6@Qj8W+V_`tJEfw3d?Lx6TWOt6Y9|wDI+6D!`icD znNFX!O=3EPp&I}c0PlE!d-HzT->kY2m%U=;>?oHmPJfdB@CR(0C>i!PYv?7x?&JdO@R)7Abvel+oGWsKZ&R>?n?k3Nc>U*~^h{fkcL8FPGS22x- zgA6cx`>W8J9RPQMo>lLzjaTnrTl!G`+WmDAKNWHp`1mp=CxxW&yUm6!@%e+UO`g0d zi=iD1k}k`eeuw=*I1-POQ?k6>rqi+dXSq+>p+EK?{NCC%e}*Vj00000NkvXXu0mjf DGcg92 diff --git a/src/main/resources/assets/plasticgun/textures/item/kevlar_sheet.png b/src/main/resources/assets/plasticgun/textures/item/kevlar_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..86d2c5f62bfa6e73ad381b28b5755ee390b9d121 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZPOM_=LCu>B2(Bj0}b~YvPtIi&(unHb0+X<;v)F z>k?{fd3Wy2?(JomIFaGSih9jHoIagx$`t0VE{5B;%bz`Kx_mi*)-2AlGPW5r z*f(rQs;uPPv?*o#_ROVA!~g&PuQ$`-FVF(Uk|4ie28U-i(m ztP+^TVq(?z`~I>A>uUmIYxz#T{9>FMxjpFG-f53(Rtm;+&Ng7a#p=y6n@3c+O!=#_ zps`wZ^Pgq4-3#~{-c5LsaE2pnQJT$%uTwb6dfGVzFMai4shD8R-|y%3-=k+|hkQ)(`qxb+zWdyUp8EP_vRtR1uplzEw@E}zdq;r;(vAjm|Z!z zvThxI90qhPUuuMBny)W|7Ld&W#2|1fcruVwEpd$~Nl7e8wMs5Z1yT$~21X{j2Ijg( z79oZfR;GqlMkd+@237_JLHCziplHa=PsvQH#MEF2)v%UVA|0qf18ze}W^QV6Nn&mR hLXTyLp@Ef=v6ZnA#1bZtp1nXl44$rjF6*2UngA2*(?kFO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/kevlar_vest.png b/src/main/resources/assets/plasticgun/textures/item/kevlar_vest.png new file mode 100644 index 0000000000000000000000000000000000000000..c10951a0ef6d080f864d82d957b45b479c680116 GIT binary patch literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZL2=@Ck7R(u#`0l9CJ>8e(c{BErH9va$k?9@UkW zGL)9G_V+W?)iH10oGK#1uzh>ds#P%s1q>k}3>_VQn>WYh<}$2Zo3Lh0Ttx*#bTsS6 zjmg>B3^q0l+qPxgx>dGkPkM8+M@)>7pdhE17>|_|Lt`V`fde`F_h<9-Gj83Q9udLZ z-tH3=#1J2E+R)(2&CT%t|NnJSr&xh*Vk`;r3ubV5b|VeMN%D4g(O15rAPD5Jmw5WR zvcF)Lb1$>oP3nIR8zrSrfobdL;?$^>r-P{K%6Qr&I-KkpQ8c~vxSdwa$T$Bo=7>o>z zOmq#*b&V`Sj0~&{46F&Jk{C ziQ<|tVGgItjY|zpJ;shrnGvkP51Tq2nl?^kbYWsxq`+ml#^v7@Av|SXvpGYa19?85m5H`@RH4LvDUbW?Cg~4bPqZC4d?< t;5L+G=B5^xB<2<%^jL-%8dw<_TNxWcEMfBK*$dRe;OXk;vd$@?2>{9wW(xoS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/microchip.png b/src/main/resources/assets/plasticgun/textures/item/microchip.png new file mode 100644 index 0000000000000000000000000000000000000000..e81d0a7a3e9f69930431487e125a38b3df2ed1db GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFvNcITwWnidMV_;}#VPN?)FK#IZ0z{o_`z+BhJBE-Pb%Gk)t*jU@Zz{nC}Q!>*kacjt&lA#XNpaHj`Br`X)xFj*R0HMb+#L&RX$QWo3#1bZtp1nXl44$rj JF6*2UngAb)X(0dr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/nano_tubes.png b/src/main/resources/assets/plasticgun/textures/item/nano_tubes.png new file mode 100644 index 0000000000000000000000000000000000000000..313ca2dcf1ec2b25e24ca1c2748d97c723d9012a GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx93dtTpz6=aiY77hwEes65fIeIDSQ%8g9hA&lFZ!H;*!MN0)!sR e5JLkiBV#LLs3lAuJ$r$A7(8A5T-G@yGywoxU0BNi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/netherite_shuriken.png b/src/main/resources/assets/plasticgun/textures/item/netherite_shuriken.png index 7a69e6c9d4d84b0de573fc7a05905113de425cb3..a83b7c0a97cedb66a7c3273d2da5af130236cc44 100644 GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZMoW_=LCuX(=%=5kVm(85wmobz?(g8!H=cPj71r zYb6CG9W5OzBV$)*R|i`MO?6ERQwwubb6FW#DM={V$9FW6a;_2(k{(@bWOI$(pmE%;PP_w6tV~E6M z-~QW7Oo|*XQ)NV>@^4=I|3C9q(n;=fjf^I4hoijBKl8K8KUx-fplikBl(?MkF&gB%?#P;{ru)rqXy0{eZ9+f4)|S&lJzUOWE^m$m+^eb zt94x0)B3m_8Us&r=X>Aw&uZG@d)af#o@dM&M_7s`e3PpHI!Cp{HKHUXu_Vl&Gd7@Arcn^~EfXd4(<85qpoS`m+;AvZrIGp!O+g8@{-B93$IKn)sj r8%i>BQ;SOya|;l9EJF+pfZ=UrYy`1{$)jg4P!EHrtDnm{r-UW|=Vq9E delta 514 zcmV+d0{#7h1d#-g8Gi-<001BJ|6u?C00DDSM?wIu&K&6g00GNML_t(IjfIoVZ__{! z#eZwBW9QQ(f*_(G1sA0kii9fEKLGVl59+0;;@E=~g^-khXvmji@5aj^vQZnSywhrS z-!1sO9ZN%p<*9Y&dpxZS?0syY-;`=@(HHBmVYnvooe!4smF z66YVzbCEaQ*T$>X0I1fgxuqfj(P_6$@V1Xu8kJ?05@}1OcT)gPPEHt)$84ev07@w) z(}@6(08tdN+kfrwT#s1Al)W;eZzIBCnE5u1Mgu7&wr#UmEC_mm35TJOli5tvpEZpo zENt7x5*EwV@}N}D^^lH4D@|02u!O~nR?Fl+n|X9f4vutiU6gDxQO&7no+Vi6b4>n>BG9vs$lm-|zc<(|XzA=6mLP--X8rhoO*C604X*B}CgO zCj)%Fy%kESe{C#6R`M|nt_DI%hr%g2dv|71lM?-zv)XKk6ICek>;AW}9|tc!UYJI` zfl>-1EOeSO{c(46XC7QUZ?=rq3deDP{lLtZ%O^MXFG4QCk}%Cm5&!@I07*qoM6N<$ Eg4_%6*#H0l diff --git a/src/main/resources/assets/plasticgun/textures/item/p2022.png b/src/main/resources/assets/plasticgun/textures/item/p2022.png index 2bed87385151977b407f64774e40e2c01b4857b6..3b30574855b4f3e8bfb063f91cf65fd0f7f1d2c1 100644 GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7e6l0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP-0hrPlzj!=H=(HG&RxE(PCj|5@2MMmzL7jPt`1BMegDAp5G|tJ;Kkl`+e{6$rrxAJ;Ljz!sl!)$e60qw{z+YHRG<9BP;8(vy=EZ zCLGPIOJ8l&FEDe)lAnL;8(sP5bg*+D^b;zydgS)MP|}s>#^es}|2J7wPG9A^p`)1@ zdSwdVUzdD+-VMv9gwB2bNG4+S%6Vatih_3RGMoLiOGD(B z_%j_S_27PfIV|h(Dz;Rgw8&$-^ZmCxYHO&oursMB$ScXo%1cY}bFw?wSeqE?2L=b|=xW>A+t@qWNr(t* zsA+0z>R4J^NK4AvSeOg(3oEH885tN$i;KxhN%HdZ2=nnc+u2&0ns~ap$jd4SiwH>w zh$<_pSeje8dAO=+s7lF5ic5-12?%oYa`AHU`}ldQD5>eFXx5cC2{1AS`TA(-Xvrza z+FIMmi;MR+^yZ}IyLtH-nHVWZ$|*6(sfbGkDxW9^`ogXx$S;`TKPBLz_pdr&*!X+8 zIEGmC&YgU{sM$ckb?vb%)@9<-2FFbEUS8Gw|36yr+moYCGkxA=RP1yw57#!7m=o$R zFPoll-IlA|V$1JyDMo%V*ZtNg2**vj(aEz@WS;xlBgM+#!0+0(Z%hM~xJzb!`t)sTQ0xRd&(@H3 zlL|%)FWD?n#?MD|`Z8~;J@b5Zmyc!n%P$o*@sEzM*lkc^aJXv_vvH>pWdP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*FaOK~y+TO;gWn z6HyTUb~oAVF6lPK7%M@+2*raj5Hu1!h-d!*5l>YM9$I=(ka{bEr}n1CA6WI^LBW%F zwLK{%Ac&MiNwFvxHT{uflV+3M&2wksh7K(6G5gJYGvCaU!r?F+$H88cWf?*UK0VK4 zUn-RnrfKrsbzPLpWrg1d;o9i5>lZ zpMkorGl-1*1j-aL;$qtms5LQxd1(EsFNFqv)J|8KzaGl#{~(@9~(4ZOZN zjxV()%#eaveG837gIkxWOlpIS*r@lwVrm$1L&v5060~s*%a77nZ@U^RdIg5fe%d&5;0MNfcfRQqk@twPK`3l zh52=6Iu_HhZFg~RIsxng#j8b*l{v~c3L^Wx>yO6n;M&3us0kG-k5Ay$odfvvYYU^{ z5IoD{U{zHaKTJTDTgnL%t6c9OITpj@+;?2Q@fC7Y<|;|FwVAbH)ii3EG*Wq0t3<+HCIp}t~Oh!1`3wdHe~PR|6f%j_y#D%nB?v5 z!qT5{GZ4sOFY)wsWq-jg%O$QL`pR)CP{`2J#W95AdUC=6hNgf9fxw`kAhsk`fx{f9 z7`Pi;dwLi0Y*3l8kViDo%;{q5aV`l4hBHQ--}f1m#sW2~mbgZgq$HN4S|t~y0x1R~ z10xe%19M#?ix2}#D`QhDQ&VjN11kfA_*LKIQ8eV{r(~v8;?|(|-TyIAg9hA&lFZ!H n;*!MN0)!sR5JLkiBV#LLBZwtT9zA=3dKf%i{an^LB{Ts5?)PLj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/precision_gear.png b/src/main/resources/assets/plasticgun/textures/item/precision_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..458205d04cc175f0961f89483e81f67bd4d608c2 GIT binary patch literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZJGL_=LCu>Hq)#fBp93!^bag-+zAk;_dxMFYnxc ze)Z;~bC>U)zHsaKnH&3#T-tfy+`4VYS8P1AaMfOWv+XQEZHy&Be!&b5&u*lFI7!~_ zE{y+~bngK<>?NMQuIw+^Wx2!^L|-{h1qvm2x;TbNT+ZzeL0eZT=?-VLMMd(@tr@?j(jY(g%R^Sfp)2uxJHzuB$lLFB^RXvDF!10 zBNJT%b6q2g5JOWdLnA8#V{HQiD+7a*^UX|9H00)|WTsW(*0AGHUk6Zw2Hb{{%-q!C mlEmBsgdWQfLjx-#V=H4Lh$T!OJ$r$A7(8A5T-G@yGywowX{1O1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/rpg9.png b/src/main/resources/assets/plasticgun/textures/item/rpg9.png index 516b729db1ccfdd017d4f12df972752f4d2397c3..7712b40f7868fbf3205d5b7f032a3e3eb0c3bd06 100644 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vO2U$sR$z3=CCj3=9n|3=F@3LJcn% z7)lKo7+xhXFj&oCU=S~uvn$XBC?Oi)6XFV_larIRwY6_9Nb66x19JcW|9|6RfG3c} zSQ6wH%;50sMjD8du(A;F zrl+cAg?@0JxyC}1KmO!1zaul}oJwK1HIqluKmwy w2WrrO+fb63n_66wm|K9*V;N#-U}a=%Wo!hogvq04FHjGIr>mdKI;Vst08>Mlp#T5? delta 229 zcmcb{{FQNnL_G&H0|SH0lCEPwim^Dz-HBn{IhmJ0j!=M4h%1l=0&Q*WusF25`@cVC#VoUnt#Y#_ zN$^`UhMWm;`MbeL+)*RowQU8rtS#5X#`?Gxu|tnTzO;Y(f1pEe+s{yjy+1{=`E1N$ z)6dA11mBtLB=dWEkEh-N*O>PEK3}v2KW)sIn$emOD6=JU>w+h_-6`j_rfcy}d~Wnf Yc*!cJ3gH`nd_gYuboFyt=akR{0OS%|ZvX%Q diff --git a/src/main/resources/assets/plasticgun/textures/item/rpg_shell.png b/src/main/resources/assets/plasticgun/textures/item/rpg_shell.png index 6d476cea4587197a18e53af96228605052e83b3f..ef410cd55f9ec4892021d231953ecde6710b6215 100644 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx93dtTpz6=aiY77hwEes65fIH=O_8083T;hsJZwo>88hg4phHzX@=15>@5)n}3OxmQ& zD!5ukLP8?k*FjBU(=-N7LxF=5oI&TFF(mmpWUvdaVc5Hq^Xc|`7dHd7tCqM%l%yn< zq*^5xr2;7iBLgE7T?2DnBl8eLODjWDD?+oZUI7%Wr(4Hm65TPu`$GwCHC!{Ks^keu6{1-oD!M~vKUOrU)|NsBvRpDoVe8!R>zhDN3 zXE)M7oFs2|7iK{oACT$nC7!;n>@V15xx^Kd-WG!FHTHCI4B@z*%#py*BqE^5nY2ll zRdBV8goH%6uY;PzrfCeEh5`pAID^hTV@UFI$Y2*-!?1TJ=hN-?E^Y>DS1oakC`m~y zNwrEYN(E93Mg~SEx(4RDM&==gmR5#lR>tPq1_o9J2J4<=*Q032%}>cptHiD0{?5yX wff_X6Hk4%MrWThZ<`y9IScVuHSQ!~x85=FVdQ&MBb@0Op-z=>Px# delta 137 zcmey&G?Q_HL_G&H0|SGGE`KnPVk{1FcVbv~PUa<$!x`Wc;tHgb85mwZR9zmJ`4Pxr zE(!7rX88Z#CE%JOkgMXB)k)y0o* zZ^)00dV2rbl~cR^|Nk!_GI<$LJ!6u$y9>Ac^&9QG1VUsv`Q?6O?qib-z^K~8A* zba4#fxGs9ik?W9wfZN0U2j6^UOFhA9CHl&*Fl%#(@E(VcEC*Mvi#S#R8E+V~)YcPCTzZYinv5p1$cH2e9z)^>|;spXKr z$e#AHN?&TDzxS+A(KnZ+ilZ(Tp1S{h%7OMd-Ej&3lB@nRRLQBVd61eF0(6pUiEBhj zN@7W>RdP`(kYX@0Ff!3KFxNG*2r)FbGBvU?G}AUPure@c@3?;iMMG|WN@iLmrUnC3 zhz9QIwbeik8gLs*GILXlOA>Pn5PB>_3=OP|jIE4~A$peBw{rsZFnGH9xvX)r(mDB4k99?n#$kGePmR>rs z{M_LMC-=>MaBIiiYnyLgTzCEKsvGB4o<6wn$jk|Ns9Tl@@yg z1B(vP{u>+4H-AzEv%8jVMV;EJ?LWE=mPb3`Pb2%&Jmc{js6hj6LrG?C nYH>+oZUI7%Wr(4Hm65TPu`xu?68m;epdJQKS3j3^P6$b3Sm6g|4Q`6NlvbAvZRaG%l(lV8o(^u8kx3jYJu{83t)(_H^%&?THa#m{c zRMOGX_0tm%(G@9iR_F}Sh_g`*HxSRWlg_b`FLsiTHIwnw5(zhzOtO?JvzHGv5Ori= zaMR&)*OQ7g7ybYLe}&s;A)q%HOM?7@862M7NCR<_yxm21szhIZ; z5?4%mTL=s;MiWmL#}JFtb0>O-A2JYVz3ei332)}2r8aB$9kf;kZBYrS`S-v6>4U<@ ziZ7dXzgYC$y8M}+z^~vIPD|&+xyPp%-eXqD^wAVfOqj4FXxU6IVXr``uqAC5_Q!|TbX{Gp_1YIbZ~ zb%QjAf`gCuu@7tC2RVIExm0f0E_n38iTNj;g<}Pp7-y_hP7*oX&fQ!8R9et`Wym2@ zJp;W?_6eVVGToh=`ZXZbdsz*O%ZaHg9s5IH?tdm6WiHJyFJ5e+y7Sv>R^iejY-Q5f zuVXL7m(P}JxISTj)|q`9zpb?vt;k=vbn`Wq+UgxmTNldSzSj7@htu~*#rtgn8}74v z*O|>NUdCP4Ahsc```4GNHUIyAWENsoP%19nc@P++swJ)wB`Jv|saDBFsX&Us$iT=% z*T7uY$UMZ**vi1z%E(09z`)ADz%P#Z9*TzC{FKbJO57UknRh1vHE6(XD9OxCEiOsS jEkNk83^6pYGBUO@HilTT#J-&qsE5JR)z4*}Q$iB}3d9Z% literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|4hQ&zxVjhk zWLV1N*vPBv8fzJt8JgLK8;DmqE1B7O8C$!XT05y~8G34o6g$ZqTRP~OSm|3hTf6v& z=!$6TS~_`$yZA;18i-ohx!O8=MJ442=}N|$$*8KUlsGH+SQ?p{yZA?>BxIH)SxWio ziRal#YZ=+vSy{@<=^GeWcm>Bhy8F57Nky8AIx;Z0>G0`j>4uw1mf6dzshgo<8S z`C03C257|DsA_9FDQTIisp+b!n90g(%PTlqIQkmeIhWRT@9fSq0eZ)=B*-tA;Xj37 z-C6A=z;H74ba4!^=$$*!v%FbBq;;yNfTMwgX{Jf=WVN}^mwo>KKeYB+$z|aaO63Qe ze$V~=u36((@bRtxIu2D$JQr2PaKiiL9Mi;v3DYH}n{o=bSg4;4k~yJp#OwHezAGm> zk1pa%n^UNlVZ6AsN~Iuaj`8fbYZfkgy+@X{BmY%ovc>ndCx1EY?$((*g}j%0Aj)JS zaQReJ-7CfpLzDMMmM<|-l6~_tf5&~7B~ir;?@q`SDm`4__96bKn@11l$(0W@pHKb9 zP_aGQ{d?6_yKQez{n{t$%p!M`^ToooHVj{O^obp1X;}VztN4qf(>zwH@cj~$_80Iv z=2$<`SBN3c>EDWu=d4cKZ*Dv=;ovl`g#pJEo&Rbph`c&6gDL)KVaB1S2GLFjYUEZ) t#EQ-gDipiJxUFH9PEPZ=?(YBM_LHJTMfSI{J_W`GgQu&X%Q~loCIGIu8gl>u diff --git a/src/main/resources/assets/plasticgun/textures/item/stone_shuriken.png b/src/main/resources/assets/plasticgun/textures/item/stone_shuriken.png index debf3fc5f43fa6e7d32ad2a6cedbb80f0e847d75..f69162e8df3521dd54420cb42a2ed1c1e5276505 100644 GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc@shmVT^Rni z_n+Ahv^Uw|c~t-`gwh=VI|zHW6}C)ZJ9Z|Yckm`|K7}! zp!!#NeY_lBL;S;?1^kb93vSq8!StE+U8^Op@brtDfj&|#ag8WRNi0dVN-jzTQVd20 zMkcxj=DJ4aA%><_#%5NA7TN{|Rt5$);$<$PXvob^$xN%n)L>u&(Xfc)Tsu&M2Hb{{ p%-q!ClEmBsgdWQfLjx-#V=H50h@K_(?VLb844$rjF6*2UngI0cn@Rux delta 487 zcmV;vtX3=W?u%cQz+^JXTCEoKdL6?sIDa0GESJj)cTl7EE#evj|_;+@De%^WVJB#I(D&l8I8`@(UYtkG!jdcE@Zb^@qWD)jsP zk96>NQ~A$2j*~r~PXJo27NgOK&1M6@a5w}&*L47@)hegciQR5jd`Px!XO?AAsZ>ak z1Sus!5ac7xX0uGwG`8Dq@ge!XFD%QV)9IjT8c`JGVqgH*b%hWDUDtoV#QXiumdLD diff --git a/src/main/resources/assets/plasticgun/textures/item/titanium_alloy.png b/src/main/resources/assets/plasticgun/textures/item/titanium_alloy.png new file mode 100644 index 0000000000000000000000000000000000000000..c706091a4d3d8e8470ad4eaca29b7df5e4508dca GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZL2=@Ck7R(lQ}|5~0C*GbS5MpQM(WBpw#5HfyTE z(f#H}_E{a?D<2%FHFJv2@dH{X4k`u*20glCe`t^8k$vhX4>>-6;Q92P>;7FDsY#~O zCd!>YqV?{X(VHjMFCQwVB@5{5DSvn_Sy3XHkt&;>qEcFR$>&K#%rNUY1Vp(b0 z#RanE#hN7r3S~w7272NFzW@LK|6@D>pS!ky+Op>6 z*_?Z|9Df;)-FM^Ye37-$!jBa`?%0dYeTRD8&Pe%B>i7Doebndj?rYbqo*(MUS@t-2;|7UO_QmvAUQh^kMk%5tku7SC(kwu7+ft7)Qm7#$) zkTfuu@M0?yiiX_$l+3hBWDSNER>lTarWOzlFDKlc0@R=Zx1l66H?_DVF}DDr$1=pw cz{<$j%Gem9XNi3~Cr}TAr>mdKI;Vst01Ud%-T(jq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/plasticgun/textures/item/tokarev_tt_33.png b/src/main/resources/assets/plasticgun/textures/item/tokarev_tt_33.png index b8adc542454bf04c14c40beae7eed087ad47bee6..9c74f8e5b2fe838a1586ea14f36e2dae8381fa34 100644 GIT binary patch literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7e6l0AZa85pY67#JE_7#My5g&JNk zFq9fFFuY1&V6d9Oz#v{QXIG#NP-0_%Plzj!HZw}MagX2^7FDx!H?{RNv=1?Lj^G!S zW)&9JHFZ?fu@RM0FmVd!;ulgibl?(_&@i--S2r@W@e!BTRMa$4)3cOTRF~ATl2p`T zU}VrVaWQuaGI0yl(X-aG^t5me(J^-y;Fn-@u$PckHn9&76qn_akYNl7SJKdvQ_<43 z4iJ%$5>rxF(=jsfij&bc(KNM^mNXI3w=s3`lUHz5GI3VZw$ZfrFtPOd|Nnogcl89I zqZvzr{DK)Ap4~_Tagw~1`n}a2TaLT^vI!PEWmf zJLs^209%5|)(K^vvsk?*Twyy}vF6&gdH4PwT@oj?;IaK--rpO!nH7)EnJX?l>GaVl zn>P7ePcMEjW#g6=5wa|2J6N+DJ_|D$-d>#GbYaZ|ua9diIHxgK>E9CLId8v>)%9~y z({aVjLQmFP@4}C8#!u8vzUF>#mBfp~LL7ZTiZ@Dm*5swd_}1=q3t96>i zBTxDFUO_QmvAU zQh^kMk%5tku7SC(k$H%rv6X?bm655ofq|8Q!3#}}EEEm7`6-!cmAEy`EZJ}ks6hj6 rLrG?CYH>+oZUI7%Wr(4Hm65TPu`$GwCHC!{Ks^keu6{1-oD!M<7XbJN literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|b_Mu^xVjhk zh|6nA$STXL8<{wT^NL8Z3JaS$M~F%(NGqxv+W6?0yDMp#@{3Aqnz%?R>PRc=S~!OY zipwf$nwUEUaq$bO8al|T8fX~WNa|SWnmTd`Nf_FP@C%EIDXB|KnyBen>REc4xP>a} z*r-{$%V?Wunp%nI+n9L8nY#F?=@>DFglpP+a7oB0Y3S)%2MF*>h)77usc0#gILj+I znpk?NY1=R`GMLy0=;&E9I@p^TrQ5hinA&>Y7CG4m^o3nXkY6yve@ehb?_YJmu#xk0 zaSXBOZ9RXz?63k4Tf#JD!yeiE^z+MJ-rN2Df7H>PYYZ=1-uY1P)HGq;zWQg@LaXje zx-7m}V0Uv-gNBq?YK$c#qhYVK$fKSIHb0KpgmE=BJ=@9AwK<_xnt#+dq0=YrX~?Ik%Xh9eS<0C@DfHiuf(bpR zR1Us%`2TT5;HHkH`pgXie|sb!-A;JdvUL~dla@Ps{HFb1_m3gpPUztmHm59Lm@{~~ L`njxgN@xNArI`Zt diff --git a/src/main/resources/assets/plasticgun/textures/item/wooden_shuriken.png b/src/main/resources/assets/plasticgun/textures/item/wooden_shuriken.png index be2b4d3354648b740e0de5d38261ce465a4b5a5d..4b17880ce4e66ab72a5bc81a96ae881eb5c876fe 100644 GIT binary patch literal 547 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZJqU_=LCu=>P}K5Et#dNQ=x6v+88~N#*YCd5%7I zs!`rLSrNunsn(%Rs=CU;uBNh?L3)YaT2m{%7c~dXs`2kF@=Wp7cC}P;G?KB_m8?xP zGuM_Vjkj#fbW8~}@V8a^|Np?NMQ zuIw+^Wx2!^lin7B{L=5~;us=v+1LNAP_qKh<_?yh7dm-lcI^G1%++Q7d9iPmXZ71% zY)L&|@5&!xZ)~5oxM|-C%hhwAU4I*!m3m5dd*xTtk8Dp&IlL+uCfZCly7DFM+4&r9 zL)MkYek-Pj?JCZDe%0AUMlmD9;pjFG<@(b>d)vxhr!OlhyUiwNZS7g@&TV?>v9SJ> z%2#KXN#qwYJhx?I=(c%M2XvZhiEBhjN@7W>RdP`(kYX@0Ff!3KFxNFQ4>2^gGB&d^ zG}bmSure^X72%Pn5PB>_3=OP| ZjIE5JmMpPv=LG6u@O1TaS?83{1ORETtt0>d delta 603 zcmV-h0;K(;1nC5j8Gi-<001BJ|6u?C00DDSM?wIu&K&6g00JXPL_t(IjfIoXP7_fW z#ecWVv~B9XxA=LKSTfJ4tg)PmW}BtI0e)Sh3SbAS7bC2l3t&{ z%H`SI-6xYfWPdbLdQ&mn-zGyXHC$*hux$@kA@73E=U1o>>I_~v&+0~!%|r@-WBY^` z@7Dx?=xMK$LCuS4R8e2!$EdDkFP&%p(-zTKQULU{*U4~m?Qd5B8#`GRm*PT+#**UR ztuEPAucK=|@&$`3JwUj%k!URG-s8^ouq*I&JB3l3BYzmwqoy7aRSwd}q%udulR2KfSrGtJ;{)=1 zgTdpM(eh2aJJ=?D-U?EgJefnA#ih9T8(-T_<0&T)=?inI>nzuLJ2+?772!|cu8A90 zL#3-cHB>$zRn;N3o#h~VOrhYEG?|%Q5JeHDCq|^II(%N=V>gk(b`+kxUM?H;6fn?Z p%FLmKR;i--el9on@!LOt>