From c95891dc1a559850f929b4a6dfcd066a661668f4 Mon Sep 17 00:00:00 2001
From: Atsuihsio <842960157@qq.com>
Date: Sat, 4 May 2024 14:26:24 +0800
Subject: [PATCH] Initial commit
---
.classpath | 635 +
.gitignore | 4 +
.project | 17 +
.settings/org.eclipse.jdt.core.prefs | 13 +
build.gradle | 70 +
elements/AK47.mod.json | 55 +
elements/AK47Blueprint.mod.json | 53 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/AKfire.mod.json | 7 +
elements/Aa12.mod.json | 55 +
elements/Aa12Blueprint.mod.json | 53 +
elements/Aa12Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Aa12autofire.mod.json | 7 +
elements/Aa12bpCrafting.mod.json | 48 +
elements/Aa12fire.mod.json | 7 +
elements/Abekiri.mod.json | 55 +
elements/AbekiriCrafting.mod.json | 48 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Abkrfire.mod.json | 7 +
elements/Aiming.mod.json | 7 +
elements/Ak47Smithing.mod.json | 28 +
elements/Ak47autofire.mod.json | 7 +
elements/Ak47bpCrafting.mod.json | 48 +
elements/AkDs.mod.json | 7 +
elements/Ammo.mod.json | 11 +
elements/Ammobar.mod.json | 38 +
.../AmmobarXianShiYouXiNeiDieJiaCeng.mod.json | 7 +
elements/AmmoboxFangZhiFangKuaiShi.mod.json | 7 +
elements/Ammocount.mod.json | 7 +
elements/AngleAdd.mod.json | 7 +
elements/AngleAddMini.mod.json | 7 +
elements/AngleAddPlus.mod.json | 7 +
elements/AngleReduce.mod.json | 7 +
elements/AngleReduceMini.mod.json | 7 +
elements/AngleReducePlus.mod.json | 7 +
elements/ArDs.mod.json | 7 +
elements/ArrowInBrain.mod.json | 12 +
elements/Arrowdamage.mod.json | 7 +
elements/As12Ds.mod.json | 7 +
elements/BarbedWire.mod.json | 138 +
elements/BarbedWireCrafting.mod.json | 48 +
...hiTiZaiFangKuaiZhongPengZhuangShi.mod.json | 7 +
elements/Bazipengzhuang.mod.json | 7 +
elements/BigHammer.mod.json | 48 +
elements/Bigexp.mod.json | 10 +
elements/BluePrintEpic.mod.json | 244 +
elements/BluePrintRare.mod.json | 286 +
elements/Blueprint.mod.json | 447 +
elements/BlueprintCommonChest.mod.json | 258 +
elements/Bocek.mod.json | 52 +
elements/BocekBlueprint.mod.json | 53 +
elements/BocekSmithing.mod.json | 28 +
elements/Bocekarrow.mod.json | 19 +
elements/BocekbpCrafting.mod.json | 48 +
elements/Bocekreload.mod.json | 7 +
elements/Bowloose.mod.json | 7 +
elements/Bowpullanim.mod.json | 7 +
elements/Buckshot.mod.json | 53 +
elements/BuckshotCrafting.mod.json | 48 +
elements/Bullet.mod.json | 19 +
elements/BulletfireNormal.mod.json | 7 +
...lettestDanSheWuJiZhongFangKuaiShi.mod.json | 7 +
elements/Bullthole.mod.json | 21 +
elements/CannonAngle.mod.json | 7 +
elements/CcActionCrafting.mod.json | 48 +
elements/CcIngotBlasting.mod.json | 22 +
elements/CcSpringCrafting.mod.json | 48 +
elements/CcTriggerCrafting.mod.json | 48 +
elements/CementedCarbideAction.mod.json | 53 +
elements/CementedCarbideBarrel.mod.json | 53 +
elements/CementedCarbideIngot.mod.json | 53 +
.../CementedCarbideIngotCrafting.mod.json | 48 +
elements/CementedcarbideTrigger.mod.json | 53 +
elements/Cementedcarbidespring.mod.json | 53 +
elements/Changefiremode.mod.json | 7 +
elements/Changefirerate.mod.json | 7 +
elements/Claymore.mod.json | 159 +
elements/ClaymoreDamage.mod.json | 7 +
.../ClaymoreDangShiTiGengXinKeShi.mod.json | 7 +
elements/ClaymoreDangShiTiSiWangShi.mod.json | 7 +
elements/ClaymoreMine.mod.json | 56 +
...eYouJiFangKuaiShiFangKuaiDeWeiZhi.mod.json | 7 +
elements/ClaymoreYouJiShiTiShi.mod.json | 7 +
elements/Claymorecrafting.mod.json | 48 +
elements/Claymoretime.mod.json | 7 +
.../ClientboundSetEntityMotionPacket.mod.json | 9 +
elements/CmpCrafting.mod.json | 48 +
elements/CoalIronPowder.mod.json | 53 +
elements/CoalIronPowderCrafting.mod.json | 48 +
elements/CoalPowder.mod.json | 53 +
elements/CoalPowderCrafting.mod.json | 48 +
elements/CommonChest.mod.json | 8 +
elements/CommonChest2.mod.json | 8 +
elements/CommonChest3.mod.json | 8 +
elements/CommonChest4.mod.json | 8 +
elements/CommonChest5.mod.json | 8 +
elements/CommonChest6.mod.json | 8 +
elements/Commonmaterialpack.mod.json | 53 +
elements/Copperplate.mod.json | 53 +
elements/CopperplateCrafting.mod.json | 48 +
elements/CreativeAmmoBox.mod.json | 56 +
...oBoxWanJiaWanChengShiYongWuPinShi.mod.json | 7 +
elements/Crosshair.mod.json | 71 +
...rosshairXianShiYouXiNeiDieJiaCeng.mod.json | 7 +
elements/Damage.mod.json | 7 +
elements/DamageReduce.mod.json | 7 +
elements/DamageReplace.mod.json | 7 +
elements/DeepslateGalenaOre.mod.json | 139 +
elements/DeepslateScheeliteOre.mod.json | 139 +
elements/Devofire.mod.json | 7 +
elements/Devotion.mod.json | 55 +
elements/DevotionAutofire.mod.json | 7 +
elements/DevotionBluprint.mod.json | 53 +
elements/DevotionSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/DevotionbpCrafting.mod.json | 48 +
elements/Devotiongfire.mod.json | 7 +
elements/DismantlePress.mod.json | 7 +
elements/DistantRange.mod.json | 7 +
elements/Doublejump.mod.json | 7 +
elements/Doublejumpinput.mod.json | 12 +
elements/EmpCrafting.mod.json | 48 +
elements/EntityRange.mod.json | 7 +
elements/EpicChest.mod.json | 8 +
elements/EpicChest2.mod.json | 8 +
elements/EpicChest3.mod.json | 8 +
elements/EpicChest4.mod.json | 8 +
elements/Epicmaterialpack.mod.json | 53 +
elements/Firemode.mod.json | 12 +
elements/Firestar.mod.json | 21 +
elements/Firetime.mod.json | 7 +
elements/Fusee.mod.json | 53 +
elements/FuseeCrafting.mod.json | 48 +
elements/Galena.mod.json | 53 +
elements/GalenaOre.mod.json | 139 +
elements/Granade40mm.mod.json | 48 +
elements/Grenade40mm.mod.json | 53 +
elements/Ground.mod.json | 7 +
elements/Gun.mod.json | 88 +
elements/GunGrenade.mod.json | 28 +
...adeDanSheWuFeiXingShiMeiKeFaSheng.mod.json | 7 +
...GrenadeDanSheWuJiZhongFangKuaiShi.mod.json | 7 +
...GunGrenadeDanSheWuJiZhongShiTiShi.mod.json | 7 +
elements/GunRecoil.mod.json | 7 +
elements/GunRecycle.mod.json | 137 +
elements/GunRecycleCrafting.mod.json | 48 +
elements/GunRecycleGui.mod.json | 83 +
elements/Gunfire.mod.json | 12 +
elements/Gunpickup.mod.json | 7 +
elements/GunsData.mod.json | 7 +
elements/GunsDev.mod.json | 7 +
elements/GunsTips.mod.json | 7 +
elements/HK416Blueprint.mod.json | 53 +
elements/HRCrafting.mod.json | 48 +
elements/Hammer.mod.json | 33 +
elements/HandgunAmmo.mod.json | 56 +
elements/HandgunAmmoBox.mod.json | 56 +
elements/HandgunAmmoBoxCrafting.mod.json | 48 +
...oBoxWanJiaWanChengShiYongWuPinShi.mod.json | 7 +
elements/HandgunAmmoCrafting.mod.json | 48 +
...unAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json | 7 +
elements/HandgunReload1.mod.json | 7 +
elements/HandgunReload2.mod.json | 7 +
elements/Hitindication.mod.json | 7 +
elements/Hitindication2.mod.json | 7 +
elements/Hk416.mod.json | 55 +
elements/Hk416Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Hk416autofire.mod.json | 7 +
elements/Hk416bpCrafting.mod.json | 48 +
elements/Hk416fire.mod.json | 7 +
elements/Hk416firerandom.mod.json | 7 +
elements/HkDs.mod.json | 7 +
elements/Hrfire.mod.json | 7 +
elements/Hrreloding.mod.json | 7 +
elements/Hugeexp.mod.json | 7 +
elements/HuntingRifle.mod.json | 61 +
elements/HuntingRifleBlueprint.mod.json | 53 +
elements/HuntingRifleSmithing.mod.json | 28 +
elements/Hurtcancel.mod.json | 7 +
elements/IngotSteel.mod.json | 53 +
elements/IngotSteelBlasting.mod.json | 22 +
elements/IronAction.mod.json | 53 +
elements/IronActionCrafting.mod.json | 48 +
elements/IronBarrel.mod.json | 53 +
elements/IronBarrelCrafting.mod.json | 48 +
elements/IronPowder.mod.json | 53 +
elements/IronPowderCrafting.mod.json | 48 +
elements/IronSpring.mod.json | 53 +
elements/IronSpringCrafting.mod.json | 48 +
elements/IronTrigger.mod.json | 53 +
elements/IronTriggerCrafting.mod.json | 48 +
elements/JumppadBlock.mod.json | 183 +
...hiTiZaiFangKuaiZhongPengZhuangShi.mod.json | 7 +
elements/JumppadCrafting.mod.json | 48 +
elements/KRABERBlueprint.mod.json | 53 +
elements/Killindication.mod.json | 7 +
elements/Kraber.mod.json | 55 +
elements/KraberDs.mod.json | 7 +
elements/KraberSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/KraberbpCrafting.mod.json | 48 +
elements/Kraberfire.mod.json | 7 +
elements/LeadIngot.mod.json | 53 +
elements/LeadIngotBlasting.mod.json | 22 +
elements/LeadIngotSmelting.mod.json | 22 +
elements/LegendaryGun.mod.json | 25 +
elements/Legendarymaterialpack.mod.json | 53 +
elements/LightSaber.mod.json | 52 +
elements/LightsaberCrafting.mod.json | 48 +
elements/M4.mod.json | 55 +
elements/M4Blueprint.mod.json | 53 +
elements/M4Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/M4autofire.mod.json | 7 +
elements/M4bpCrafting.mod.json | 48 +
elements/M4fire.mod.json | 7 +
elements/M4firerandom.mod.json | 7 +
elements/M60.mod.json | 55 +
elements/M60Blueprint.mod.json | 53 +
elements/M60Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/M60autofire.mod.json | 7 +
elements/M60bpCrafting.mod.json | 48 +
elements/M60fire.mod.json | 7 +
elements/M79.mod.json | 55 +
elements/M79Blueprint.mod.json | 53 +
elements/M79Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/M79bpCrafting.mod.json | 48 +
elements/M79fire.mod.json | 7 +
elements/M79ui.mod.json | 31 +
.../M79uiXianShiYouXiNeiDieJiaCeng.mod.json | 7 +
elements/M870.mod.json | 55 +
elements/M870Blueprint.mod.json | 53 +
elements/M870Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/M870bpCrafting.mod.json | 48 +
elements/M870fire.mod.json | 7 +
elements/M89bSmithing.mod.json | 28 +
elements/M98b.mod.json | 55 +
elements/M98bBlueprint.mod.json | 53 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/M98bbpCrafting.mod.json | 48 +
elements/M98bfire.mod.json | 7 +
elements/Marlin.mod.json | 55 +
elements/MarlinBlueprint.mod.json | 53 +
elements/MarlinSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Marlinbpcrafting.mod.json | 48 +
elements/Marlinfire.mod.json | 7 +
elements/Medexp.mod.json | 7 +
elements/Mediumexp.mod.json | 10 +
elements/Mianyishanghai.mod.json | 7 +
elements/Mine.mod.json | 12 +
elements/Minigun.mod.json | 93 +
elements/MinigunBlueprint.mod.json | 53 +
elements/MinigunSmithing.mod.json | 28 +
elements/Minigunautofire.mod.json | 7 +
elements/MinigunbpCrafting.mod.json | 48 +
elements/Minigunfire.mod.json | 7 +
elements/Miniguninbackpack.mod.json | 7 +
elements/Mk14.mod.json | 55 +
elements/Mk14Blueprint.mod.json | 53 +
elements/Mk14Smithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Mk14autofire.mod.json | 7 +
elements/Mk14bpCrafting.mod.json | 48 +
elements/Mk14fire.mod.json | 7 +
elements/MoratrBasePlate.mod.json | 53 +
elements/Mortar.mod.json | 159 +
elements/MortarAngle.mod.json | 7 +
elements/MortarBarrelCrafting.mod.json | 48 +
elements/MortarBasePlateCrafting.mod.json | 48 +
elements/MortarBipodCrafting.mod.json | 48 +
elements/MortarCrafting.mod.json | 48 +
.../MortarDangXiaoShiShiJianDaoShi.mod.json | 7 +
elements/MortarDepolyer.mod.json | 56 +
elements/MortarGUI.mod.json | 149 +
elements/MortarGUIGaiGUIDaKaiShi.mod.json | 7 +
...rtarGUIGaiGUIDaKaiShiMeiKeFaSheng.mod.json | 7 +
elements/MortarHEShells.mod.json | 48 +
elements/MortarPitch.mod.json | 7 +
elements/MortarShell.mod.json | 28 +
...ellDanSheWuFeiXingShiMeiKeFaSheng.mod.json | 7 +
...ortarShellDanSheWuJiZhongShiTiShi.mod.json | 7 +
elements/MortarShells.mod.json | 53 +
.../MortarShiTiChuShiShengChengShi.mod.json | 7 +
elements/MortarYouJiShiTiShi.mod.json | 7 +
elements/Mortarbarrel.mod.json | 53 +
elements/Mortarbipod.mod.json | 53 +
elements/MotarGUITick.mod.json | 7 +
elements/MotarPitch.mod.json | 16 +
elements/NetheriteAction.mod.json | 53 +
elements/NetheriteActionCrafting.mod.json | 28 +
elements/NetheriteBarrel.mod.json | 53 +
elements/NetheriteBarrelSmithing.mod.json | 28 +
elements/NetheriteSpring.mod.json | 53 +
elements/NetheriteSpringCrafting.mod.json | 28 +
elements/NetheriteTrigger.mod.json | 53 +
elements/NetheriteTriggerCrafting.mod.json | 28 +
elements/OutZoom.mod.json | 7 +
elements/PlayerReload.mod.json | 7 +
elements/PlayerRespawnReward.mod.json | 7 +
elements/Playertick.mod.json | 7 +
elements/PrepareToZoom.mod.json | 7 +
elements/PressFire.mod.json | 7 +
.../PullXiaoGuoChiXuShiMeiKeFaSheng.mod.json | 7 +
elements/Quxiaoshanghai.mod.json | 7 +
elements/Quxiaowafangkuai.mod.json | 7 +
elements/RPKBlueprint.mod.json | 53 +
elements/RareChest.mod.json | 8 +
elements/RareChest10.mod.json | 8 +
elements/RareChest2.mod.json | 8 +
elements/RareChest3.mod.json | 8 +
elements/RareChest4.mod.json | 8 +
elements/RareChest5.mod.json | 8 +
elements/RareChest6.mod.json | 8 +
elements/RareChest7.mod.json | 8 +
elements/RareChest8.mod.json | 8 +
elements/RareChest9.mod.json | 8 +
elements/Rarematerialpack.mod.json | 53 +
elements/Reload.mod.json | 12 +
elements/Reload1.mod.json | 7 +
elements/Reload2.mod.json | 7 +
elements/Reloading.mod.json | 7 +
elements/Reloadsoundstop.mod.json | 7 +
elements/Rengchumortar.mod.json | 7 +
elements/RifleAmmo.mod.json | 56 +
elements/RifleAmmoBox.mod.json | 56 +
elements/RifleAmmoBoxCrafting.mod.json | 48 +
...oBoxWanJiaWanChengShiYongWuPinShi.mod.json | 7 +
elements/RifleAmmoCrafting.mod.json | 48 +
...leAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json | 7 +
elements/RleaseFire.mod.json | 7 +
elements/RmpCrafting.mod.json | 48 +
elements/Rocket.mod.json | 55 +
elements/RocketCrafting.mod.json | 48 +
elements/RocketHit.mod.json | 7 +
.../RocketShiTiBeiGongJuJiZhongShi.mod.json | 7 +
elements/Rocketborn.mod.json | 7 +
elements/Rpg.mod.json | 55 +
elements/RpgBlueprint.mod.json | 53 +
elements/RpgRocket.mod.json | 28 +
...ketDanSheWuFeiXingShiMeiKeFaSheng.mod.json | 7 +
...gRocketDanSheWuJiZhongFangKuaiShi.mod.json | 7 +
elements/RpgSmithing.mod.json | 28 +
elements/RpgbpCrafting.mod.json | 48 +
elements/Rpgempty.mod.json | 7 +
elements/Rpgfire.mod.json | 7 +
elements/Rpk.mod.json | 55 +
elements/RpkSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Rpkautofire.mod.json | 7 +
elements/RpkbpCrafting.mod.json | 48 +
elements/Rpkfire.mod.json | 7 +
elements/SKSBlueprint.mod.json | 53 +
elements/Sandbag.mod.json | 135 +
elements/SandbagCrafting.mod.json | 48 +
elements/Scheelite.mod.json | 53 +
elements/ScheeliteOre.mod.json | 139 +
elements/Senpai.mod.json | 268 +
elements/SenpaiDangShiTiGengXinKeShi.mod.json | 7 +
elements/Sentinel.mod.json | 55 +
elements/SentinelBlueprint.mod.json | 53 +
elements/SentinelFire.mod.json | 7 +
elements/SentinelSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/SentinelbpCrafting.mod.json | 48 +
elements/Shock.mod.json | 23 +
...ngYaoShuiXiaoGuoKaiShiYingYongShi.mod.json | 7 +
...ockZaiXiaoGuoChiXuShiMeiKeFaSheng.mod.json | 7 +
elements/Shockcamera.mod.json | 7 +
elements/ShotgunAmmo.mod.json | 56 +
elements/ShotgunAmmoBox.mod.json | 56 +
elements/ShotgunAmmoBoxCrafting.mod.json | 48 +
...oBoxWanJiaWanChengShiYongWuPinShi.mod.json | 7 +
elements/ShotgunAmmoCrafting.mod.json | 48 +
...unAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json | 7 +
elements/ShotgunReload1.mod.json | 7 +
elements/ShotgunReload2.mod.json | 7 +
elements/Sks.mod.json | 55 +
elements/SksDs.mod.json | 7 +
elements/SksSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/SksbpCrafting.mod.json | 48 +
elements/Sksfire.mod.json | 7 +
elements/SmpCrafting.mod.json | 48 +
elements/SniperAmmo.mod.json | 56 +
elements/SniperAmmoBox.mod.json | 56 +
elements/SniperAmmoBoxCrafting.mod.json | 48 +
...oBoxWanJiaWanChengShiYongWuPinShi.mod.json | 7 +
elements/SniperAmmoCrafting.mod.json | 48 +
...erAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json | 7 +
elements/SniperReload1.mod.json | 7 +
elements/SniperReload2.mod.json | 7 +
elements/SoulsteelIngot.mod.json | 53 +
elements/SoulsteelIngotCrafting.mod.json | 48 +
elements/SoulsteelNuggetCrafting.mod.json | 48 +
elements/Soulsteelnugget.mod.json | 53 +
elements/Specialgun.mod.json | 25 +
elements/Specialmaterialpack.mod.json | 53 +
elements/SpecialmaterialpackCrafting.mod.json | 28 +
elements/Spread.mod.json | 16 +
elements/SpyglassRange.mod.json | 38 +
...assRangeXianShiYouXiNeiDieJiaCeng.mod.json | 7 +
elements/SteelAction.mod.json | 53 +
elements/SteelActionCrafting.mod.json | 48 +
elements/SteelBarrel.mod.json | 53 +
elements/SteelBarrelCrafting.mod.json | 48 +
elements/SteelSpring.mod.json | 53 +
elements/SteelSpringCrafting.mod.json | 48 +
elements/SteelTrigger.mod.json | 53 +
elements/SteelTriggerCrafting.mod.json | 48 +
elements/Svd.mod.json | 55 +
elements/SvdBlueprint.mod.json | 53 +
elements/SvdDs.mod.json | 7 +
elements/SvdSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/SvdbpCrafting.mod.json | 48 +
elements/Svdfire.mod.json | 7 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/Target.mod.json | 150 +
elements/Target1.mod.json | 163 +
.../Target1DangShiTiGengXinKeShi.mod.json | 7 +
.../Target1DangShiTiShouShangShi.mod.json | 7 +
elements/Target1DangYouJiShiTiShi.mod.json | 7 +
.../Target1ShiTiChuShiShengChengShi.mod.json | 7 +
...get1ShiXinPengZhuangXiangTiaoJian.mod.json | 7 +
elements/TargetCrafting.mod.json | 48 +
elements/TargetItem.mod.json | 11 +
elements/Targetdeployer.mod.json | 56 +
...loyerDangYouJianDianJiFangKuaiShi.mod.json | 7 +
elements/Taser.mod.json | 55 +
elements/TaserBlueprint.mod.json | 53 +
...BulletDangTouZhiWuJiZhongShiTiShi.mod.json | 7 +
elements/TaserBulletProjectile.mod.json | 25 +
.../TaserBulletTouZhiWuFeiXingKe.mod.json | 7 +
elements/TaserElectrode.mod.json | 53 +
elements/TaserElectrodeCrafting.mod.json | 48 +
elements/TaserSmithing.mod.json | 28 +
elements/TaserbpCrafting.mod.json | 48 +
elements/Tasercooldown.mod.json | 7 +
elements/Taserfire.mod.json | 7 +
elements/TbpCrafting.mod.json | 48 +
elements/ToZoom.mod.json | 7 +
elements/Trachelium.mod.json | 55 +
elements/TracheliumBlueprint.mod.json | 53 +
elements/TracheliumSmithing.mod.json | 28 +
elements/Tracheliumfire.mod.json | 7 +
elements/TungstenBlasting.mod.json | 22 +
elements/TungstenIngot.mod.json | 53 +
elements/TungstenPowder.mod.json | 53 +
elements/TungstenPowderCrafting.mod.json | 48 +
elements/UccpCrafting.mod.json | 48 +
.../Unblastedcementedcarbidepodwer.mod.json | 53 +
elements/Unsprintable.mod.json | 7 +
elements/VecBurstFire.mod.json | 7 +
elements/Vecautofire.mod.json | 7 +
elements/Vecfire.mod.json | 7 +
elements/Vector.mod.json | 55 +
elements/VectorBlueprint.mod.json | 53 +
elements/VectorSmithing.mod.json | 28 +
...uPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json | 7 +
elements/VectorbpCrafting.mod.json | 48 +
elements/WeaponDraw.mod.json | 7 +
elements/WeaponDrawLight.mod.json | 7 +
elements/WeaponLevel.mod.json | 7 +
elements/WeaponMove.mod.json | 7 +
elements/WeaponSway.mod.json | 7 +
elements/WeaponZom.mod.json | 7 +
elements/Weapondrawhavey.mod.json | 7 +
elements/Weaponfire.mod.json | 7 +
elements/Zoom.mod.json | 15 +
gradle.properties | 2 +
gradle/wrapper/gradle-wrapper.properties | 6 +
gradlew | 244 +
gradlew.bat | 92 +
mcreator.gradle | 57 +
models/ammobox.json | 299 +
models/ammobox.json.textures | 10 +
models/claymore.json | 193 +
models/claymore.json.textures | 10 +
models/gungranade.json | 527 +
models/gungranade.json.textures | 10 +
models/hammer.json | 757 +
models/hammer.json.textures | 10 +
models/hammer2.json | 757 +
models/hammer2.json.textures | 10 +
models/handgunammobox.json | 1810 ++
models/handgunammobox.json.textures | 10 +
models/mojmap-1.20.x/ModelGrenade.java | 43 +
models/mojmap-1.20.x/Modelbocekarrow.java | 150 +
models/mojmap-1.20.x/Modelbullet.java | 46 +
models/mojmap-1.20.x/Modelclaymore.java | 67 +
.../Modelmortar_shell_Converted.java | 124 +
.../Modelrpg7_rocket_Converted.java | 774 +
models/mojmap-1.20.x/Modeltaser_rod.java | 45 +
models/pad.json | 122 +
models/pad.json.textures | 10 +
models/rifleammobox.json | 1046 +
models/rifleammobox.json.textures | 10 +
models/shotgunammobox.json | 1523 ++
models/shotgunammobox.json.textures | 10 +
models/sniperammobox.json | 1474 ++
models/sniperammobox.json.textures | 10 +
models/taser_electrode.json | 176 +
models/taser_electrode.json.textures | 10 +
models/tiesiwang.json | 249 +
models/tiesiwang.json.textures | 10 +
settings.gradle | 13 +
.../java/net/mcreator/target/TargetMod.java | 108 +
.../target/block/BarbedWireBlock.java | 86 +
.../target/block/DeepslateGalenaOreBlock.java | 40 +
.../block/DeepslateScheeliteOreBlock.java | 40 +
.../mcreator/target/block/GalenaOreBlock.java | 40 +
.../target/block/GunRecycleBlock.java | 75 +
.../target/block/JumppadBlockBlock.java | 102 +
.../mcreator/target/block/SandbagBlock.java | 41 +
.../target/block/ScheeliteOreBlock.java | 40 +
.../mcreator/target/client/ClickHandler.java | 141 +
.../target/client/CrossHairHandler.java | 40 +
.../mcreator/target/client/RenderHandler.java | 45 +
.../client/gui/GunRecycleGuiScreen.java | 94 +
.../target/client/gui/MortarGUIScreen.java | 143 +
.../target/client/gui/RangeHelper.java | 41 +
.../target/client/model/ModelGrenade.java | 47 +
.../target/client/model/Modelbasketball.java | 278 +
.../target/client/model/Modelbocekarrow.java | 90 +
.../target/client/model/Modelbulle.java | 46 +
.../target/client/model/Modelbullet.java | 48 +
.../target/client/model/Modelclaymore.java | 60 +
.../target/client/model/Modelmissile.java | 52 +
.../model/Modelmortar_shell_Converted.java | 85 +
.../model/Modelrpg7_rocket_Converted.java | 329 +
.../target/client/model/Modeltaser_rod.java | 50 +
.../client/particle/BulltholeParticle.java | 57 +
.../client/particle/FirestarParticle.java | 67 +
.../client/renderer/BocekarrowRenderer.java | 42 +
.../client/renderer/BulletRenderer.java | 54 +
.../client/renderer/ClaymoreRenderer.java | 42 +
.../client/renderer/GunGrenadeRenderer.java | 42 +
.../client/renderer/MortarRenderer.java | 42 +
.../client/renderer/MortarShellRenderer.java | 42 +
.../client/renderer/ProjectileRenderer.java | 54 +
.../client/renderer/RpgRocketRenderer.java | 42 +
.../client/renderer/SenpaiRenderer.java | 42 +
.../client/renderer/Target1Renderer.java | 42 +
.../client/renderer/TargetRenderer.java | 44 +
.../TaserBulletProjectileRenderer.java | 42 +
.../target/client/screens/AmmobarOverlay.java | 42 +
.../client/screens/CrosshairOverlay.java | 140 +
.../target/client/screens/M79uiOverlay.java | 56 +
.../client/screens/SpyglassRangeOverlay.java | 42 +
.../target/command/BigexpCommand.java | 39 +
.../target/command/MediumexpCommand.java | 39 +
.../target/entity/BocekarrowEntity.java | 207 +
.../mcreator/target/entity/BulletEntity.java | 180 +
.../target/entity/ClaymoreEntity.java | 309 +
.../target/entity/GunGrenadeEntity.java | 206 +
.../mcreator/target/entity/MortarEntity.java | 277 +
.../target/entity/MortarShellEntity.java | 121 +
.../target/entity/ProjectileEntity.java | 120 +
.../target/entity/RpgRocketEntity.java | 206 +
.../mcreator/target/entity/SenpaiEntity.java | 249 +
.../mcreator/target/entity/Target1Entity.java | 292 +
.../mcreator/target/entity/TargetEntity.java | 265 +
.../entity/TaserBulletProjectileEntity.java | 204 +
.../target/entity/layer/TargetLayer.java | 29 +
.../target/entity/model/ClaymoreModel.java | 25 +
.../target/entity/model/MortarModel.java | 41 +
.../target/entity/model/SenpaiModel.java | 40 +
.../target/entity/model/Target1Model.java | 36 +
.../target/entity/model/TargetModel.java | 25 +
.../target/headshot/BasicHeadshotBox.java | 40 +
.../target/headshot/BoundingBoxManager.java | 149 +
.../target/headshot/ChildHeadshotBox.java | 41 +
.../target/headshot/IHeadshotBox.java | 27 +
.../target/headshot/NoChildHeadshotBox.java | 30 +
.../headshot/NoChildRotatedHeadshotBox.java | 30 +
.../target/headshot/RotatedHeadshotBox.java | 46 +
.../target/init/EntityAnimationFactory.java | 55 +
.../target/init/ItemAnimationFactory.java | 330 +
.../target/init/TargetCustomModEntities.java | 31 +
.../init/TargetCustomModEntityRenderers.java | 19 +
.../target/init/TargetModAttributes.java | 39 +
.../mcreator/target/init/TargetModBlocks.java | 33 +
.../target/init/TargetModEntities.java | 84 +
.../target/init/TargetModEntityRenderers.java | 40 +
.../target/init/TargetModGunTabs.java | 58 +
.../mcreator/target/init/TargetModItems.java | 243 +
.../target/init/TargetModKeyMappings.java | 107 +
.../target/init/TargetModLootModifier.java | 66 +
.../mcreator/target/init/TargetModMenus.java | 22 +
.../target/init/TargetModMobEffects.java | 19 +
.../mcreator/target/init/TargetModModels.java | 32 +
.../target/init/TargetModParticleTypes.java | 20 +
.../target/init/TargetModParticles.java | 22 +
.../target/init/TargetModScreens.java | 26 +
.../mcreator/target/init/TargetModSounds.java | 152 +
.../mcreator/target/init/TargetModTabs.java | 131 +
.../mcreator/target/init/TargetModTrades.java | 95 +
.../target/item/AK47BlueprintItem.java | 22 +
.../net/mcreator/target/item/AK47Item.java | 178 +
.../target/item/Aa12BlueprintItem.java | 24 +
.../net/mcreator/target/item/Aa12Item.java | 180 +
.../net/mcreator/target/item/AbekiriItem.java | 171 +
.../target/item/BocekBlueprintItem.java | 24 +
.../net/mcreator/target/item/BocekItem.java | 183 +
.../mcreator/target/item/BuckshotItem.java | 22 +
.../item/CementedCarbideActionItem.java | 22 +
.../item/CementedCarbideBarrelItem.java | 22 +
.../target/item/CementedCarbideIngotItem.java | 22 +
.../item/CementedcarbideTriggerItem.java | 22 +
.../item/CementedcarbidespringItem.java | 22 +
.../target/item/ClaymoreMineItem.java | 34 +
.../target/item/CoalIronPowderItem.java | 22 +
.../mcreator/target/item/CoalPowderItem.java | 22 +
.../target/item/CommonmaterialpackItem.java | 22 +
.../mcreator/target/item/CopperplateItem.java | 22 +
.../target/item/CreativeAmmoBoxItem.java | 54 +
.../target/item/DevotionBluprintItem.java | 22 +
.../mcreator/target/item/DevotionItem.java | 172 +
.../target/item/EpicmaterialpackItem.java | 22 +
.../net/mcreator/target/item/FuseeItem.java | 22 +
.../net/mcreator/target/item/GalenaItem.java | 22 +
.../mcreator/target/item/Grenade40mmItem.java | 22 +
.../target/item/HK416BlueprintItem.java | 22 +
.../net/mcreator/target/item/HammerItem.java | 68 +
.../target/item/HandgunAmmoBoxItem.java | 45 +
.../mcreator/target/item/HandgunAmmoItem.java | 34 +
.../net/mcreator/target/item/Hk416Item.java | 178 +
.../item/HuntingRifleBlueprintItem.java | 22 +
.../target/item/HuntingRifleItem.java | 166 +
.../mcreator/target/item/IngotSteelItem.java | 22 +
.../mcreator/target/item/IronActionItem.java | 22 +
.../mcreator/target/item/IronBarrelItem.java | 22 +
.../mcreator/target/item/IronPowderItem.java | 22 +
.../mcreator/target/item/IronSpringItem.java | 22 +
.../mcreator/target/item/IronTriggerItem.java | 22 +
.../target/item/KRABERBlueprintItem.java | 24 +
.../net/mcreator/target/item/KraberItem.java | 177 +
.../mcreator/target/item/LeadIngotItem.java | 22 +
.../item/LegendarymaterialpackItem.java | 24 +
.../mcreator/target/item/LightSaberItem.java | 136 +
.../mcreator/target/item/M4BlueprintItem.java | 22 +
.../java/net/mcreator/target/item/M4Item.java | 178 +
.../target/item/M60BlueprintItem.java | 22 +
.../net/mcreator/target/item/M60Item.java | 182 +
.../target/item/M79BlueprintItem.java | 22 +
.../net/mcreator/target/item/M79Item.java | 186 +
.../target/item/M870BlueprintItem.java | 22 +
.../net/mcreator/target/item/M870Item.java | 186 +
.../target/item/M98bBlueprintItem.java | 22 +
.../net/mcreator/target/item/M98bItem.java | 174 +
.../target/item/MarlinBlueprintItem.java | 22 +
.../net/mcreator/target/item/MarlinItem.java | 194 +
.../target/item/MinigunBlueprintItem.java | 24 +
.../net/mcreator/target/item/MinigunItem.java | 198 +
.../target/item/Mk14BlueprintItem.java | 22 +
.../net/mcreator/target/item/Mk14Item.java | 178 +
.../target/item/MoratrBasePlateItem.java | 22 +
.../target/item/MortarDepolyerItem.java | 34 +
.../target/item/MortarShellsItem.java | 22 +
.../target/item/MortarbarrelItem.java | 22 +
.../mcreator/target/item/MortarbipodItem.java | 22 +
.../target/item/NetheriteActionItem.java | 24 +
.../target/item/NetheriteBarrelItem.java | 23 +
.../target/item/NetheriteSpringItem.java | 24 +
.../target/item/NetheriteTriggerItem.java | 24 +
.../target/item/RPKBlueprintItem.java | 22 +
.../target/item/RarematerialpackItem.java | 22 +
.../target/item/RifleAmmoBoxItem.java | 45 +
.../mcreator/target/item/RifleAmmoItem.java | 34 +
.../net/mcreator/target/item/RocketItem.java | 125 +
.../target/item/RpgBlueprintItem.java | 22 +
.../net/mcreator/target/item/RpgItem.java | 188 +
.../net/mcreator/target/item/RpkItem.java | 180 +
.../target/item/SKSBlueprintItem.java | 22 +
.../mcreator/target/item/ScheeliteItem.java | 22 +
.../target/item/SentinelBlueprintItem.java | 24 +
.../mcreator/target/item/SentinelItem.java | 205 +
.../target/item/ShotgunAmmoBoxItem.java | 45 +
.../mcreator/target/item/ShotgunAmmoItem.java | 34 +
.../net/mcreator/target/item/SksItem.java | 170 +
.../target/item/SniperAmmoBoxItem.java | 45 +
.../mcreator/target/item/SniperAmmoItem.java | 34 +
.../target/item/SoulsteelIngotItem.java | 22 +
.../target/item/SoulsteelnuggetItem.java | 22 +
.../target/item/SpecialmaterialpackItem.java | 24 +
.../mcreator/target/item/SteelActionItem.java | 22 +
.../mcreator/target/item/SteelBarrelItem.java | 22 +
.../mcreator/target/item/SteelSpringItem.java | 22 +
.../target/item/SteelTriggerItem.java | 22 +
.../target/item/SvdBlueprintItem.java | 22 +
.../net/mcreator/target/item/SvdItem.java | 171 +
.../target/item/TargetdeployerItem.java | 33 +
.../target/item/TaserBlueprintItem.java | 22 +
.../target/item/TaserElectrodeItem.java | 22 +
.../net/mcreator/target/item/TaserItem.java | 186 +
.../target/item/TracheliumBlueprintItem.java | 24 +
.../mcreator/target/item/TracheliumItem.java | 162 +
.../target/item/TungstenIngotItem.java | 22 +
.../target/item/TungstenPowderItem.java | 22 +
.../UnblastedcementedcarbidepodwerItem.java | 22 +
.../target/item/VectorBlueprintItem.java | 22 +
.../net/mcreator/target/item/VectorItem.java | 182 +
.../mcreator/target/item/layer/AK47Layer.java | 29 +
.../mcreator/target/item/layer/Aa12Layer.java | 29 +
.../target/item/layer/AbekiriLayer.java | 29 +
.../target/item/layer/BocekLayer.java | 29 +
.../target/item/layer/DevotionLayer.java | 29 +
.../target/item/layer/Hk416Layer.java | 29 +
.../target/item/layer/HuntingRifleLayer.java | 29 +
.../target/item/layer/KraberLayer.java | 29 +
.../target/item/layer/LightSaberLayer.java | 29 +
.../mcreator/target/item/layer/M4Layer.java | 29 +
.../mcreator/target/item/layer/M60Layer.java | 29 +
.../mcreator/target/item/layer/M79Layer.java | 29 +
.../mcreator/target/item/layer/M870Layer.java | 29 +
.../mcreator/target/item/layer/M98bLayer.java | 29 +
.../target/item/layer/MarlinLayer.java | 29 +
.../target/item/layer/MinigunLayer.java | 29 +
.../mcreator/target/item/layer/Mk14Layer.java | 29 +
.../mcreator/target/item/layer/RpgLayer.java | 29 +
.../mcreator/target/item/layer/RpkLayer.java | 29 +
.../target/item/layer/SentinelLayer.java | 29 +
.../mcreator/target/item/layer/SksLayer.java | 29 +
.../mcreator/target/item/layer/SvdLayer.java | 29 +
.../target/item/layer/TracheliumLayer.java | 29 +
.../target/item/layer/VectorLayer.java | 29 +
.../target/item/model/AK47ItemModel.java | 142 +
.../target/item/model/Aa12ItemModel.java | 122 +
.../target/item/model/AbekiriItemModel.java | 117 +
.../target/item/model/BocekItemModel.java | 175 +
.../target/item/model/DevotionItemModel.java | 675 +
.../target/item/model/Hk416ItemModel.java | 131 +
.../item/model/HuntingRifleItemModel.java | 124 +
.../target/item/model/KraberItemModel.java | 151 +
.../item/model/LightSaberItemModel.java | 24 +
.../target/item/model/M4ItemModel.java | 122 +
.../target/item/model/M60ItemModel.java | 165 +
.../target/item/model/M79ItemModel.java | 116 +
.../target/item/model/M870ItemModel.java | 144 +
.../target/item/model/M98bItemModel.java | 137 +
.../target/item/model/MarlinItemModel.java | 133 +
.../target/item/model/MinigunItemModel.java | 117 +
.../target/item/model/Mk14ItemModel.java | 168 +
.../target/item/model/RocketItemModel.java | 24 +
.../target/item/model/RpgItemModel.java | 125 +
.../target/item/model/RpkItemModel.java | 156 +
.../target/item/model/SentinelItemModel.java | 187 +
.../target/item/model/SksItemModel.java | 139 +
.../target/item/model/SvdItemModel.java | 162 +
.../target/item/model/TaserItemModel.java | 94 +
.../item/model/TracheliumItemModel.java | 119 +
.../target/item/model/VectorItemModel.java | 126 +
.../item/renderer/AK47ItemRenderer.java | 67 +
.../item/renderer/Aa12ItemRenderer.java | 67 +
.../item/renderer/AbekiriItemRenderer.java | 76 +
.../item/renderer/BocekItemRenderer.java | 67 +
.../item/renderer/DevotionItemRenderer.java | 76 +
.../item/renderer/Hk416ItemRenderer.java | 67 +
.../renderer/HuntingRifleItemRenderer.java | 76 +
.../item/renderer/KraberItemRenderer.java | 69 +
.../item/renderer/LightSaberItemRenderer.java | 67 +
.../target/item/renderer/M4ItemRenderer.java | 67 +
.../target/item/renderer/M60ItemRenderer.java | 67 +
.../target/item/renderer/M79ItemRenderer.java | 75 +
.../item/renderer/M870ItemRenderer.java | 67 +
.../item/renderer/M98bItemRenderer.java | 67 +
.../item/renderer/MarlinItemRenderer.java | 67 +
.../item/renderer/MinigunItemRenderer.java | 67 +
.../item/renderer/Mk14ItemRenderer.java | 67 +
.../item/renderer/RocketItemRenderer.java | 64 +
.../target/item/renderer/RpgItemRenderer.java | 67 +
.../target/item/renderer/RpkItemRenderer.java | 67 +
.../item/renderer/SentinelItemRenderer.java | 67 +
.../target/item/renderer/SksItemRenderer.java | 67 +
.../target/item/renderer/SvdItemRenderer.java | 67 +
.../item/renderer/TaserItemRenderer.java | 73 +
.../item/renderer/TracheliumItemRenderer.java | 67 +
.../item/renderer/VectorItemRenderer.java | 67 +
...ClientboundSetEntityMotionPacketMixin.java | 73 +
.../target/mixins/GameRendererMixin.java | 39 +
.../target/mixins/MouseHandlerMixin.java | 41 +
.../network/DoublejumpinputMessage.java | 63 +
.../mcreator/target/network/FireMessage.java | 65 +
.../target/network/FiremodeMessage.java | 63 +
.../network/GunRecycleGuiButtonMessage.java | 75 +
.../network/MortarGUIButtonMessage.java | 100 +
.../target/network/ReloadMessage.java | 63 +
.../target/network/TargetModVariables.java | 256 +
.../mcreator/target/network/ZoomMessage.java | 68 +
.../target/potion/ShockMobEffect.java | 36 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../target/procedures/AKfireProcedure.java | 69 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/Aa12autofireProcedure.java | 107 +
.../target/procedures/Aa12fireProcedure.java | 34 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 118 +
.../target/procedures/AbkrfireProcedure.java | 69 +
.../target/procedures/AimingProcedure.java | 42 +
.../procedures/Ak47autofireProcedure.java | 72 +
.../target/procedures/AkDsProcedure.java | 43 +
...barXianShiYouXiNeiDieJiaCengProcedure.java | 18 +
.../AmmoboxFangZhiFangKuaiShiProcedure.java | 14 +
.../target/procedures/AmmocountProcedure.java | 75 +
.../procedures/AngleAddMiniProcedure.java | 206 +
.../procedures/AngleAddPlusProcedure.java | 206 +
.../target/procedures/AngleAddProcedure.java | 206 +
.../procedures/AngleReduceMiniProcedure.java | 206 +
.../procedures/AngleReducePlusProcedure.java | 206 +
.../procedures/AngleReduceProcedure.java | 206 +
.../target/procedures/ArDsProcedure.java | 43 +
.../procedures/ArrowdamageProcedure.java | 43 +
.../target/procedures/As12DsProcedure.java | 43 +
...aiFangKuaiZhongPengZhuangShiProcedure.java | 18 +
.../procedures/BazipengzhuangProcedure.java | 14 +
.../procedures/BocekreloadProcedure.java | 17 +
.../target/procedures/BowlooseProcedure.java | 188 +
.../procedures/BowpullanimProcedure.java | 97 +
.../procedures/BulletfireNormalProcedure.java | 59 +
...stDanSheWuJiZhongFangKuaiShiProcedure.java | 36 +
.../procedures/CannonAngleProcedure.java | 26 +
.../procedures/ChangefiremodeProcedure.java | 97 +
.../procedures/ChangefirerateProcedure.java | 39 +
.../procedures/ClaymoreDamageProcedure.java | 41 +
...laymoreDangShiTiGengXinKeShiProcedure.java | 102 +
.../ClaymoreDangShiTiSiWangShiProcedure.java | 28 +
...iFangKuaiShiFangKuaiDeWeiZhiProcedure.java | 58 +
.../ClaymoreYouJiShiTiShiProcedure.java | 27 +
.../procedures/ClaymoretimeProcedure.java | 30 +
...anJiaWanChengShiYongWuPinShiProcedure.java | 72 +
...airXianShiYouXiNeiDieJiaCengProcedure.java | 23 +
.../target/procedures/DamageProcedure.java | 56 +
.../procedures/DamageReduceProcedure.java | 95 +
.../procedures/DamageReplaceProcedure.java | 43 +
.../target/procedures/DevofireProcedure.java | 76 +
.../procedures/DevotionAutofireProcedure.java | 67 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/DevotiongfireProcedure.java | 34 +
.../procedures/DismantlePressProcedure.java | 102 +
.../procedures/DistantRangeProcedure.java | 51 +
.../procedures/DoublejumpProcedure.java | 37 +
.../procedures/EntityRangeProcedure.java | 159 +
.../target/procedures/FiretimeProcedure.java | 61 +
.../target/procedures/GroundProcedure.java | 40 +
...nSheWuFeiXingShiMeiKeFaShengProcedure.java | 21 +
...deDanSheWuJiZhongFangKuaiShiProcedure.java | 29 +
...enadeDanSheWuJiZhongShiTiShiProcedure.java | 29 +
.../target/procedures/GunRecoilProcedure.java | 105 +
.../target/procedures/GunpickupProcedure.java | 30 +
.../target/procedures/GunsDataProcedure.java | 375 +
.../target/procedures/GunsDevProcedure.java | 117 +
.../target/procedures/GunsTipsProcedure.java | 87 +
...anJiaWanChengShiYongWuPinShiProcedure.java | 45 +
...oYouJiKongQiShiShiTiDeWeiZhiProcedure.java | 45 +
.../procedures/HandgunReload1Procedure.java | 41 +
.../procedures/HandgunReload2Procedure.java | 41 +
.../procedures/Hitindication2Procedure.java | 57 +
.../procedures/HitindicationProcedure.java | 77 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/Hk416autofireProcedure.java | 42 +
.../target/procedures/Hk416fireProcedure.java | 69 +
.../procedures/Hk416firerandomProcedure.java | 54 +
.../target/procedures/HkDsProcedure.java | 43 +
.../target/procedures/HrfireProcedure.java | 49 +
.../procedures/HrrelodingProcedure.java | 50 +
.../target/procedures/HugeexpProcedure.java | 53 +
.../procedures/HurtcancelProcedure.java | 53 +
...aiFangKuaiZhongPengZhuangShiProcedure.java | 69 +
.../procedures/KillindicationProcedure.java | 55 +
.../target/procedures/KraberDsProcedure.java | 43 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/KraberfireProcedure.java | 64 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/M4autofireProcedure.java | 42 +
.../target/procedures/M4fireProcedure.java | 71 +
.../procedures/M4firerandomProcedure.java | 54 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 75 +
.../procedures/M60autofireProcedure.java | 70 +
.../target/procedures/M60fireProcedure.java | 34 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 69 +
.../target/procedures/M79fireProcedure.java | 116 +
...9uiXianShiYouXiNeiDieJiaCengProcedure.java | 22 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 101 +
.../target/procedures/M870fireProcedure.java | 70 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 76 +
.../target/procedures/M98bfireProcedure.java | 77 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 97 +
.../procedures/MarlinfireProcedure.java | 83 +
.../target/procedures/MedexpProcedure.java | 53 +
.../procedures/MianyishanghaiProcedure.java | 36 +
.../procedures/MinigunautofireProcedure.java | 124 +
.../procedures/MinigunfireProcedure.java | 34 +
.../MiniguninbackpackProcedure.java | 33 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 75 +
.../procedures/Mk14autofireProcedure.java | 56 +
.../target/procedures/Mk14fireProcedure.java | 54 +
.../procedures/MortarAngleProcedure.java | 92 +
...rtarDangXiaoShiShiJianDaoShiProcedure.java | 31 +
...UIGaiGUIDaKaiShiMeiKeFaShengProcedure.java | 213 +
.../MortarGUIGaiGUIDaKaiShiProcedure.java | 93 +
.../procedures/MortarPitchProcedure.java | 90 +
...nSheWuFeiXingShiMeiKeFaShengProcedure.java | 20 +
...ShellDanSheWuJiZhongShiTiShiProcedure.java | 24 +
...rtarShiTiChuShiShengChengShiProcedure.java | 24 +
.../MortarYouJiShiTiShiProcedure.java | 138 +
.../procedures/MotarGUITickProcedure.java | 123 +
.../target/procedures/OutZoomProcedure.java | 27 +
.../procedures/PlayerReloadProcedure.java | 371 +
.../PlayerRespawnRewardProcedure.java | 47 +
.../procedures/PlayertickProcedure.java | 61 +
.../procedures/PrepareToZoomProcedure.java | 68 +
.../target/procedures/PressFireProcedure.java | 76 +
...lXiaoGuoChiXuShiMeiKeFaShengProcedure.java | 88 +
.../procedures/QuxiaoshanghaiProcedure.java | 70 +
.../procedures/QuxiaowafangkuaiProcedure.java | 60 +
.../target/procedures/Reload1Procedure.java | 41 +
.../target/procedures/Reload2Procedure.java | 42 +
.../target/procedures/ReloadingProcedure.java | 49 +
.../procedures/ReloadsoundstopProcedure.java | 324 +
.../procedures/RengchumortarProcedure.java | 51 +
...anJiaWanChengShiYongWuPinShiProcedure.java | 45 +
...oYouJiKongQiShiShiTiDeWeiZhiProcedure.java | 45 +
.../procedures/RleaseFireProcedure.java | 23 +
.../target/procedures/RocketHitProcedure.java | 29 +
...cketShiTiBeiGongJuJiZhongShiProcedure.java | 36 +
.../procedures/RocketbornProcedure.java | 32 +
...nSheWuFeiXingShiMeiKeFaShengProcedure.java | 54 +
...etDanSheWuJiZhongFangKuaiShiProcedure.java | 29 +
.../target/procedures/RpgemptyProcedure.java | 41 +
.../target/procedures/RpgfireProcedure.java | 119 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 72 +
.../procedures/RpkautofireProcedure.java | 71 +
.../target/procedures/RpkfireProcedure.java | 69 +
.../SenpaiDangShiTiGengXinKeShiProcedure.java | 50 +
.../procedures/SentinelFireProcedure.java | 159 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 120 +
...ShuiXiaoGuoKaiShiYingYongShiProcedure.java | 21 +
...iXiaoGuoChiXuShiMeiKeFaShengProcedure.java | 33 +
.../procedures/ShockcameraProcedure.java | 54 +
...anJiaWanChengShiYongWuPinShiProcedure.java | 45 +
...oYouJiKongQiShiShiTiDeWeiZhiProcedure.java | 45 +
.../procedures/ShotgunReload1Procedure.java | 41 +
.../procedures/ShotgunReload2Procedure.java | 42 +
.../target/procedures/SksDsProcedure.java | 43 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 75 +
.../target/procedures/SksfireProcedure.java | 70 +
...anJiaWanChengShiYongWuPinShiProcedure.java | 45 +
...oYouJiKongQiShiShiTiDeWeiZhiProcedure.java | 45 +
.../procedures/SniperReload1Procedure.java | 45 +
.../procedures/SniperReload2Procedure.java | 45 +
...ngeXianShiYouXiNeiDieJiaCengProcedure.java | 17 +
.../target/procedures/SvdDsProcedure.java | 43 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 75 +
.../target/procedures/SvdfireProcedure.java | 70 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 64 +
...Target1DangShiTiGengXinKeShiProcedure.java | 68 +
...Target1DangShiTiShouShangShiProcedure.java | 21 +
.../Target1DangYouJiShiTiShiProcedure.java | 47 +
...get1ShiTiChuShiShengChengShiProcedure.java | 24 +
...hiXinPengZhuangXiangTiaoJianProcedure.java | 7 +
...DangYouJianDianJiFangKuaiShiProcedure.java | 33 +
...tDangTouZhiWuJiZhongShiTiShiProcedure.java | 39 +
...TaserBulletTouZhiWuFeiXingKeProcedure.java | 15 +
.../procedures/TasercooldownProcedure.java | 59 +
.../target/procedures/TaserfireProcedure.java | 106 +
.../target/procedures/ToZoomProcedure.java | 19 +
.../procedures/TracheliumfireProcedure.java | 49 +
.../procedures/UnsprintableProcedure.java | 45 +
.../procedures/VecBurstFireProcedure.java | 70 +
.../procedures/VecautofireProcedure.java | 56 +
.../target/procedures/VecfireProcedure.java | 56 +
...aiBeiBaoZhongShiMeiKeFaShengProcedure.java | 76 +
.../procedures/WeaponDrawLightProcedure.java | 43 +
.../procedures/WeaponDrawProcedure.java | 51 +
.../procedures/WeaponLevelProcedure.java | 48 +
.../procedures/WeaponMoveProcedure.java | 227 +
.../procedures/WeaponSwayProcedure.java | 67 +
.../target/procedures/WeaponZomProcedure.java | 71 +
.../procedures/WeapondrawhaveyProcedure.java | 43 +
.../procedures/WeaponfireProcedure.java | 118 +
.../mcreator/target/rarity/RarityTool.java | 13 +
.../mcreator/target/tools/ItemNBTTool.java | 42 +
.../net/mcreator/target/utils/AnimUtils.java | 28 +
.../world/inventory/GunRecycleGuiMenu.java | 237 +
.../target/world/inventory/MortarGUIMenu.java | 93 +
.../resources/META-INF/accesstransformer.cfg | 6 +
src/main/resources/META-INF/mods.toml | 34 +
.../minecraft/optifine/emissive.properties | 1 +
.../target/animations/aa12.animation.json | 1109 ++
.../target/animations/abekiri.animation.json | 1271 ++
.../target/animations/ak.animation.json | 885 +
.../target/animations/bocek.animation.json | 60 +
.../target/animations/claymore.animation.json | 128 +
.../target/animations/devotion.animation.json | 775 +
.../target/animations/hk416.animation.json | 732 +
.../animations/hunting_rifle.animation.json | 753 +
.../target/animations/kraber.animation.json | 1272 ++
.../animations/lightsaber.animation.json | 56 +
.../target/animations/m4.animation.json | 722 +
.../target/animations/m60.animation.json | 1626 ++
.../target/animations/m79.animation.json | 799 +
.../target/animations/m870.animation.json | 1423 ++
.../target/animations/m98b.animation.json | 1113 ++
.../target/animations/marlin.animation.json | 1916 ++
.../target/animations/minigun.animation.json | 105 +
.../target/animations/mk14ebr.animation.json | 1181 ++
.../target/animations/mortar.animation.json | 57 +
.../target/animations/pad.animation.json | 21 +
.../target/animations/r870.animation.json | 1436 ++
.../target/animations/rpg.animation.json | 525 +
.../target/animations/rpg.head.animation.json | 10 +
.../target/animations/rpk.animation.json | 886 +
.../target/animations/senpai.animation.json | 839 +
.../target/animations/sentinel.animation.json | 1534 ++
.../target/animations/sks.animation.json | 762 +
.../target/animations/svd.animation.json | 714 +
.../target/animations/target.animation.json | 10 +
.../target/animations/target2.animation.json | 49 +
.../target/animations/taser.animation.json | 356 +
.../animations/trachelium.animation.json | 1459 ++
.../target/animations/vector.animation.json | 915 +
.../target/blockstates/barbed_wire.json | 19 +
.../blockstates/deepslate_galena_ore.json | 7 +
.../blockstates/deepslate_scheelite_ore.json | 7 +
.../assets/target/blockstates/galena_ore.json | 7 +
.../target/blockstates/gun_recycle.json | 7 +
.../target/blockstates/jumppad_block.json | 19 +
.../assets/target/blockstates/sandbag.json | 7 +
.../target/blockstates/scheelite_ore.json | 7 +
.../resources/assets/target/geo/aa12.geo.json | 8067 ++++++++
.../assets/target/geo/abekiri.geo.json | 2011 ++
.../resources/assets/target/geo/ak.geo.json | 8412 ++++++++
.../assets/target/geo/bocek.geo.json | 3657 ++++
.../assets/target/geo/claymore.geo.json | 39 +
.../assets/target/geo/devotion.geo.json | 14247 ++++++++++++++
.../assets/target/geo/hk416.geo.json | 9524 +++++++++
.../assets/target/geo/hunting_rifle.geo.json | 2025 ++
.../assets/target/geo/kraber.geo.json | 10257 ++++++++++
.../assets/target/geo/lightsaber.geo.json | 4863 +++++
.../resources/assets/target/geo/m4.geo.json | 11903 ++++++++++++
.../resources/assets/target/geo/m60.geo.json | 6434 ++++++
.../resources/assets/target/geo/m79.geo.json | 3635 ++++
.../resources/assets/target/geo/m870.geo.json | 5841 ++++++
.../resources/assets/target/geo/m98b.geo.json | 16175 ++++++++++++++++
.../assets/target/geo/marlin.geo.json | 4209 ++++
.../assets/target/geo/minigun.geo.json | 8118 ++++++++
.../assets/target/geo/mk14ebr.geo.json | 10101 ++++++++++
.../assets/target/geo/mortar.geo.json | 1250 ++
.../resources/assets/target/geo/rpg.geo.json | 6337 ++++++
.../assets/target/geo/rpg.head.geo.json | 2235 +++
.../resources/assets/target/geo/rpk.geo.json | 11187 +++++++++++
.../assets/target/geo/senpai.geo.json | 193 +
.../assets/target/geo/sentinel.geo.json | 7649 ++++++++
.../resources/assets/target/geo/sks.geo.json | 10700 ++++++++++
.../resources/assets/target/geo/svd.geo.json | 10567 ++++++++++
.../assets/target/geo/target.geo.json | 41 +
.../assets/target/geo/target2.geo.json | 30 +
.../assets/target/geo/taser.geo.json | 750 +
.../assets/target/geo/trachelium.geo.json | 3391 ++++
.../assets/target/geo/vector.geo.json | 7658 ++++++++
.../resources/assets/target/lang/en_us.json | 352 +
.../resources/assets/target/lang/zh_cn.json | 352 +
.../target/models/block/barbed_wire.json | 9 +
.../models/block/deepslate_galena_ore.json | 8 +
.../models/block/deepslate_scheelite_ore.json | 8 +
.../target/models/block/galena_ore.json | 8 +
.../target/models/block/gun_recycle.json | 13 +
.../target/models/block/jumppad_block.json | 9 +
.../assets/target/models/block/sandbag.json | 13 +
.../target/models/block/scheelite_ore.json | 8 +
.../assets/target/models/custom/ammobox.json | 1542 ++
.../assets/target/models/custom/bullet.json | 82 +
.../assets/target/models/custom/claymore.json | 932 +
.../assets/target/models/custom/grenade.json | 96 +
.../target/models/custom/gungranade.json | 2764 +++
.../assets/target/models/custom/hammer.json | 4175 ++++
.../assets/target/models/custom/hammer2.json | 4175 ++++
.../target/models/custom/handgunammobox.json | 10374 ++++++++++
.../assets/target/models/custom/pad.json | 541 +
.../target/models/custom/rifleammobox.json | 5929 ++++++
.../target/models/custom/rpg7_rocket.json | 2803 +++
.../target/models/custom/shotgunammobox.json | 8313 ++++++++
.../target/models/custom/sniperammobox.json | 8447 ++++++++
.../assets/target/models/custom/stim.json | 2110 ++
.../target/models/custom/taser_electrode.json | 879 +
.../target/models/custom/tiesiwang.json | 1301 ++
.../models/displaysettings/aa12.item.json | 34 +
.../models/displaysettings/abekiri.item.json | 102 +
.../models/displaysettings/ak47.item.json | 104 +
.../models/displaysettings/bocek.item.json | 44 +
.../models/displaysettings/claymore.item.json | 117 +
.../displaysettings/detonator.item.json | 93 +
.../models/displaysettings/devotion.item.json | 112 +
.../models/displaysettings/hk416.item.json | 104 +
.../displaysettings/hunting_rifle.item.json | 107 +
.../models/displaysettings/kraber.item.json | 89 +
.../displaysettings/lightsaber.item.json | 122 +
.../models/displaysettings/m4.item.json | 104 +
.../models/displaysettings/m60.item.json | 109 +
.../models/displaysettings/m79.item.json | 121 +
.../models/displaysettings/m98b.item.json | 111 +
.../models/displaysettings/marlin.item.json | 32 +
.../models/displaysettings/minigun.item.json | 119 +
.../models/displaysettings/mk14ebr.item.json | 104 +
.../models/displaysettings/rpg.item.json | 117 +
.../models/displaysettings/rpg_head.item.json | 109 +
.../models/displaysettings/rpk.item.json | 104 +
.../models/displaysettings/sentinel.item.json | 115 +
.../models/displaysettings/sks.item.json | 29 +
.../models/displaysettings/svd.item.json | 29 +
.../models/displaysettings/taser.item.json | 95 +
.../displaysettings/trachelium.item.json | 108 +
.../models/displaysettings/vector.item.json | 114 +
.../assets/target/models/item/aa123d.json | 438 +
.../assets/target/models/item/aa_12.json | 27 +
.../assets/target/models/item/aa_12_base.json | 6 +
.../target/models/item/aa_12_blueprint.json | 6 +
.../assets/target/models/item/aa_12_icon.json | 6 +
.../assets/target/models/item/abekiri.json | 27 +
.../assets/target/models/item/abekiri3d.json | 1939 ++
.../target/models/item/abekiri_base.json | 6 +
.../assets/target/models/item/ak_47.json | 27 +
.../assets/target/models/item/ak_473d.json | 313 +
.../assets/target/models/item/ak_47_base.json | 6 +
.../target/models/item/ak_47_blueprint.json | 6 +
.../assets/target/models/item/ak_47_icon.json | 6 +
.../target/models/item/barbed_wire.json | 22 +
.../assets/target/models/item/bocek.json | 27 +
.../assets/target/models/item/bocek3d.json | 2138 ++
.../assets/target/models/item/bocek_base.json | 6 +
.../target/models/item/bocek_blueprint.json | 6 +
.../assets/target/models/item/bocek_icon.json | 6 +
.../assets/target/models/item/buckshot.json | 6 +
.../models/item/cemented_carbide_action.json | 6 +
.../models/item/cemented_carbide_barrel.json | 6 +
.../models/item/cemented_carbide_ingot.json | 6 +
.../models/item/cementedcarbide_trigger.json | 6 +
.../models/item/cementedcarbidespring.json | 6 +
.../target/models/item/claymore_mine.json | 7 +
.../target/models/item/coal_iron_powder.json | 6 +
.../target/models/item/coal_powder.json | 6 +
.../models/item/commonmaterialpack.json | 6 +
.../target/models/item/copperplate.json | 6 +
.../target/models/item/creative_ammo_box.json | 7 +
.../models/item/deepslate_galena_ore.json | 22 +
.../models/item/deepslate_scheelite_ore.json | 22 +
.../assets/target/models/item/devotion.json | 27 +
.../assets/target/models/item/devotion3d.json | 296 +
.../target/models/item/devotion_base.json | 6 +
.../target/models/item/devotion_bluprint.json | 6 +
.../target/models/item/devotion_icon.json | 6 +
.../target/models/item/epicmaterialpack.json | 6 +
.../assets/target/models/item/fusee.json | 6 +
.../assets/target/models/item/galena.json | 6 +
.../assets/target/models/item/galena_ore.json | 22 +
.../target/models/item/grenade_40mm.json | 7 +
.../target/models/item/gun_recycle.json | 22 +
.../assets/target/models/item/hammer.json | 7 +
.../target/models/item/handgun_ammo.json | 6 +
.../target/models/item/handgun_ammo_box.json | 7 +
.../assets/target/models/item/hk4163d.json | 274 +
.../assets/target/models/item/hk416_base.json | 6 +
.../assets/target/models/item/hk416_icon.json | 6 +
.../assets/target/models/item/hk_416.json | 27 +
.../target/models/item/hk_416_blueprint.json | 6 +
.../target/models/item/hunting_rifle.json | 27 +
.../target/models/item/hunting_rifle3d.json | 156 +
.../models/item/hunting_rifle_base.json | 6 +
.../models/item/hunting_rifle_blueprint.json | 6 +
.../models/item/hunting_rifle_icon.json | 6 +
.../target/models/item/ingot_steel.json | 6 +
.../target/models/item/iron_action.json | 6 +
.../target/models/item/iron_barrel.json | 6 +
.../target/models/item/iron_powder.json | 6 +
.../target/models/item/iron_spring.json | 6 +
.../target/models/item/iron_trigger.json | 6 +
.../target/models/item/jumppad_block.json | 22 +
.../assets/target/models/item/kraber.json | 27 +
.../assets/target/models/item/kraber3d.json | 330 +
.../target/models/item/kraber_base.json | 6 +
.../target/models/item/kraber_blueprint.json | 6 +
.../target/models/item/kraber_icon.json | 6 +
.../assets/target/models/item/lead_ingot.json | 6 +
.../models/item/legendarymaterialpack.json | 6 +
.../target/models/item/light_saber.json | 6 +
.../assets/target/models/item/m43d.json | 248 +
.../assets/target/models/item/m603d.json | 174 +
.../assets/target/models/item/m793d.json | 331 +
.../assets/target/models/item/m79_base.json | 6 +
.../assets/target/models/item/m79icon.json | 6 +
.../assets/target/models/item/m8703d.json | 295 +
.../assets/target/models/item/m_4.json | 27 +
.../assets/target/models/item/m_4_base.json | 6 +
.../target/models/item/m_4_blueprint.json | 6 +
.../assets/target/models/item/m_4_icon.json | 6 +
.../assets/target/models/item/m_60.json | 27 +
.../assets/target/models/item/m_60_base.json | 6 +
.../target/models/item/m_60_blueprint.json | 6 +
.../assets/target/models/item/m_60_icon.json | 6 +
.../assets/target/models/item/m_79.json | 27 +
.../target/models/item/m_79_blueprint.json | 6 +
.../assets/target/models/item/m_870.json | 27 +
.../assets/target/models/item/m_870_base.json | 6 +
.../target/models/item/m_870_blueprint.json | 6 +
.../assets/target/models/item/m_870_icon.json | 6 +
.../assets/target/models/item/m_98b.json | 27 +
.../assets/target/models/item/m_98b3d.json | 378 +
.../assets/target/models/item/m_98b_base.json | 6 +
.../target/models/item/m_98b_blueprint.json | 6 +
.../assets/target/models/item/m_98b_icon.json | 6 +
.../assets/target/models/item/marlin.json | 27 +
.../assets/target/models/item/marlin3d.json | 313 +
.../target/models/item/marlin_base.json | 6 +
.../target/models/item/marlin_blueprint.json | 6 +
.../target/models/item/marlin_icon.json | 6 +
.../assets/target/models/item/minigun.json | 27 +
.../assets/target/models/item/minigun3d.json | 8534 ++++++++
.../target/models/item/minigun_base.json | 6 +
.../target/models/item/minigun_blueprint.json | 6 +
.../target/models/item/minigun_icon.json | 6 +
.../assets/target/models/item/mk_14.json | 27 +
.../assets/target/models/item/mk_143d.json | 477 +
.../assets/target/models/item/mk_14_base.json | 6 +
.../target/models/item/mk_14_blueprint.json | 6 +
.../assets/target/models/item/mk_14_icon.json | 6 +
.../target/models/item/moratr_base_plate.json | 6 +
.../target/models/item/mortar_depolyer.json | 6 +
.../target/models/item/mortar_shells.json | 6 +
.../target/models/item/mortarbarrel.json | 6 +
.../target/models/item/mortarbipod.json | 6 +
.../target/models/item/netherite_action.json | 6 +
.../target/models/item/netherite_barrel.json | 6 +
.../target/models/item/netherite_spring.json | 6 +
.../target/models/item/netherite_trigger.json | 6 +
.../target/models/item/rarematerialpack.json | 6 +
.../assets/target/models/item/rifle_ammo.json | 6 +
.../target/models/item/rifle_ammo_box.json | 7 +
.../assets/target/models/item/rocket.json | 6 +
.../assets/target/models/item/rpg.json | 27 +
.../assets/target/models/item/rpg3d.json | 192 +
.../assets/target/models/item/rpg_base.json | 6 +
.../target/models/item/rpg_blueprint.json | 6 +
.../assets/target/models/item/rpg_icon.json | 6 +
.../assets/target/models/item/rpk.json | 27 +
.../assets/target/models/item/rpk3d.json | 430 +
.../assets/target/models/item/rpk_base.json | 6 +
.../target/models/item/rpk_blueprint.json | 6 +
.../assets/target/models/item/rpk_icon.json | 6 +
.../assets/target/models/item/sandbag.json | 22 +
.../assets/target/models/item/scheelite.json | 6 +
.../target/models/item/scheelite_ore.json | 22 +
.../target/models/item/senpai_spawn_egg.json | 3 +
.../assets/target/models/item/sentinel.json | 27 +
.../assets/target/models/item/sentinel3d.json | 240 +
.../target/models/item/sentinel_base.json | 6 +
.../models/item/sentinel_blueprint.json | 6 +
.../target/models/item/sentinel_icon.json | 6 +
.../target/models/item/shotgun_ammo.json | 6 +
.../target/models/item/shotgun_ammo_box.json | 7 +
.../assets/target/models/item/sks.json | 27 +
.../assets/target/models/item/sks3d.json | 403 +
.../assets/target/models/item/sks_base.json | 6 +
.../target/models/item/sks_blueprint.json | 6 +
.../assets/target/models/item/sks_icon.json | 6 +
.../target/models/item/sniper_ammo.json | 6 +
.../target/models/item/sniper_ammo_box.json | 7 +
.../target/models/item/soulsteel_ingot.json | 6 +
.../target/models/item/soulsteelnugget.json | 6 +
.../models/item/specialmaterialpack.json | 6 +
.../target/models/item/steel_action.json | 6 +
.../target/models/item/steel_barrel.json | 6 +
.../target/models/item/steel_spring.json | 6 +
.../target/models/item/steel_trigger.json | 6 +
.../assets/target/models/item/svd.json | 27 +
.../assets/target/models/item/svd3d.json | 404 +
.../assets/target/models/item/svd_base.json | 6 +
.../target/models/item/svd_blueprint.json | 6 +
.../assets/target/models/item/svd_icon.json | 6 +
.../assets/target/models/item/tac_rpg3d.json | 2712 +++
.../target/models/item/targetdeployer.json | 6 +
.../assets/target/models/item/taser.json | 27 +
.../assets/target/models/item/taser3d.json | 687 +
.../assets/target/models/item/taser_base.json | 6 +
.../target/models/item/taser_blueprint.json | 6 +
.../target/models/item/taser_electrode.json | 7 +
.../assets/target/models/item/trachelium.json | 27 +
.../target/models/item/trachelium3d.json | 102 +
.../target/models/item/trachelium_base.json | 6 +
.../models/item/trachelium_blueprint.json | 6 +
.../target/models/item/trachelium_icon.json | 6 +
.../target/models/item/tungsten_ingot.json | 6 +
.../target/models/item/tungsten_powder.json | 6 +
.../item/unblastedcementedcarbidepodwer.json | 6 +
.../assets/target/models/item/vector.json | 27 +
.../assets/target/models/item/vector3d.json | 387 +
.../target/models/item/vector_base.json | 6 +
.../target/models/item/vector_blueprint.json | 6 +
.../target/models/item/vector_icon.json | 6 +
.../assets/target/particles/bullthole.json | 5 +
.../assets/target/particles/firestar.json | 12 +
src/main/resources/assets/target/sounds.json | 1242 ++
src/main/resources/assets/target/sounds/1.ogg | Bin 0 -> 18039 bytes
.../resources/assets/target/sounds/10.ogg | Bin 0 -> 27299 bytes
.../resources/assets/target/sounds/11.ogg | Bin 0 -> 18368 bytes
.../resources/assets/target/sounds/12.ogg | Bin 0 -> 17224 bytes
.../resources/assets/target/sounds/13.ogg | Bin 0 -> 22997 bytes
.../resources/assets/target/sounds/14.ogg | Bin 0 -> 20772 bytes
.../resources/assets/target/sounds/15.ogg | Bin 0 -> 24293 bytes
.../resources/assets/target/sounds/16.ogg | Bin 0 -> 8633 bytes
src/main/resources/assets/target/sounds/2.ogg | Bin 0 -> 8895 bytes
src/main/resources/assets/target/sounds/3.ogg | Bin 0 -> 8047 bytes
src/main/resources/assets/target/sounds/4.ogg | Bin 0 -> 8565 bytes
src/main/resources/assets/target/sounds/5.ogg | Bin 0 -> 9430 bytes
src/main/resources/assets/target/sounds/6.ogg | Bin 0 -> 13091 bytes
src/main/resources/assets/target/sounds/7.ogg | Bin 0 -> 11559 bytes
src/main/resources/assets/target/sounds/8.ogg | Bin 0 -> 20320 bytes
src/main/resources/assets/target/sounds/9.ogg | Bin 0 -> 20387 bytes
.../assets/target/sounds/aa12_far.ogg | Bin 0 -> 26738 bytes
.../assets/target/sounds/aa12_fire.ogg | Bin 0 -> 11444 bytes
.../assets/target/sounds/aa12_fire_1p.ogg | Bin 0 -> 22200 bytes
.../assets/target/sounds/aa12_very_far.ogg | Bin 0 -> 24154 bytes
.../assets/target/sounds/aa12reload.ogg | Bin 0 -> 15854 bytes
.../assets/target/sounds/aa12reload2.ogg | Bin 0 -> 20480 bytes
.../assets/target/sounds/abkr_fire_3p.ogg | Bin 0 -> 23267 bytes
.../assets/target/sounds/abkr_reload.ogg | Bin 0 -> 35531 bytes
.../assets/target/sounds/abkr_reload2.ogg | Bin 0 -> 50363 bytes
.../assets/target/sounds/ak47_fire_1p.ogg | Bin 0 -> 11382 bytes
.../assets/target/sounds/ak47_fire_3p.ogg | Bin 0 -> 9835 bytes
.../assets/target/sounds/ak_fire_1p.ogg | Bin 0 -> 24100 bytes
.../assets/target/sounds/ak_fire_3p.ogg | Bin 0 -> 13707 bytes
.../resources/assets/target/sounds/akfar.ogg | Bin 0 -> 29429 bytes
.../assets/target/sounds/akreload.ogg | Bin 0 -> 30417 bytes
.../assets/target/sounds/akreload2.ogg | Bin 0 -> 20235 bytes
.../assets/target/sounds/akveryfar.ogg | Bin 0 -> 20411 bytes
.../assets/target/sounds/bow_fire_1p.ogg | Bin 0 -> 13435 bytes
.../assets/target/sounds/bow_fire_3p.ogg | Bin 0 -> 9352 bytes
.../assets/target/sounds/bow_pull.ogg | Bin 0 -> 12946 bytes
.../assets/target/sounds/bow_pull_1p.ogg | Bin 0 -> 14718 bytes
.../assets/target/sounds/bullet_supply.ogg | Bin 0 -> 13171 bytes
.../resources/assets/target/sounds/c4exp.ogg | Bin 0 -> 45552 bytes
.../resources/assets/target/sounds/c4exp2.ogg | Bin 0 -> 47271 bytes
.../resources/assets/target/sounds/c4exp3.ogg | Bin 0 -> 45605 bytes
.../resources/assets/target/sounds/c4exp4.ogg | Bin 0 -> 23091 bytes
.../resources/assets/target/sounds/c4exp5.ogg | Bin 0 -> 25791 bytes
.../resources/assets/target/sounds/c4exp6.ogg | Bin 0 -> 37681 bytes
.../resources/assets/target/sounds/charge.ogg | Bin 0 -> 84029 bytes
.../resources/assets/target/sounds/close.ogg | Bin 0 -> 22304 bytes
.../resources/assets/target/sounds/close2.ogg | Bin 0 -> 28229 bytes
.../resources/assets/target/sounds/close3.ogg | Bin 0 -> 27278 bytes
.../assets/target/sounds/devotion_fire_1p.ogg | Bin 0 -> 14583 bytes
.../assets/target/sounds/devotion_fire_3p.ogg | Bin 0 -> 12129 bytes
.../assets/target/sounds/devotion_reload.ogg | Bin 0 -> 64948 bytes
.../assets/target/sounds/devotion_reload2.ogg | Bin 0 -> 51101 bytes
.../assets/target/sounds/doublejump.ogg | Bin 0 -> 16773 bytes
.../assets/target/sounds/elbow_hit1.ogg | Bin 0 -> 20449 bytes
.../assets/target/sounds/elbow_hit2.ogg | Bin 0 -> 13327 bytes
.../assets/target/sounds/elbow_hit3.ogg | Bin 0 -> 17432 bytes
.../assets/target/sounds/elbow_start.ogg | Bin 0 -> 12155 bytes
.../assets/target/sounds/enemy_spot.ogg | Bin 0 -> 12665 bytes
.../assets/target/sounds/enemy_spot_1p.ogg | Bin 0 -> 16218 bytes
.../resources/assets/target/sounds/far.ogg | Bin 0 -> 16406 bytes
.../resources/assets/target/sounds/far2.ogg | Bin 0 -> 25306 bytes
.../assets/target/sounds/firerate.ogg | Bin 0 -> 8934 bytes
.../resources/assets/target/sounds/growl.ogg | Bin 0 -> 188169 bytes
.../assets/target/sounds/gwv2439.tmp | Bin 0 -> 9921 bytes
.../assets/target/sounds/headshot.ogg | Bin 0 -> 10276 bytes
.../resources/assets/target/sounds/heng.ogg | Bin 0 -> 8307 bytes
.../assets/target/sounds/hengheng.ogg | Bin 0 -> 15445 bytes
.../assets/target/sounds/hk416_fire1p.ogg | Bin 0 -> 13676 bytes
.../assets/target/sounds/hk416_fire_s.ogg | Bin 0 -> 19049 bytes
.../assets/target/sounds/hk416reload.ogg | Bin 0 -> 34458 bytes
.../assets/target/sounds/hk416reload2.ogg | Bin 0 -> 29282 bytes
.../resources/assets/target/sounds/hk_far.ogg | Bin 0 -> 25287 bytes
.../assets/target/sounds/hk_very_far.ogg | Bin 0 -> 19016 bytes
.../assets/target/sounds/hr_fire_1p.ogg | Bin 0 -> 37531 bytes
.../assets/target/sounds/hr_reload.ogg | Bin 0 -> 27277 bytes
.../assets/target/sounds/indication.ogg | Bin 0 -> 6664 bytes
.../resources/assets/target/sounds/jump.ogg | Bin 0 -> 24155 bytes
.../assets/target/sounds/kraber_fire_1p.ogg | Bin 0 -> 65964 bytes
.../assets/target/sounds/kraber_fire_3p.ogg | Bin 0 -> 34613 bytes
.../target/sounds/kraber_reload_empty.ogg | Bin 0 -> 55565 bytes
.../target/sounds/kraber_reload_norm.ogg | Bin 0 -> 34179 bytes
.../assets/target/sounds/kraberfar.ogg | Bin 0 -> 29244 bytes
.../assets/target/sounds/kraberveryfar.ogg | Bin 0 -> 36049 bytes
.../assets/target/sounds/lightsaber1.ogg | Bin 0 -> 9051 bytes
.../assets/target/sounds/lightsaber2.ogg | Bin 0 -> 9949 bytes
.../assets/target/sounds/lightsaber3.ogg | Bin 0 -> 10259 bytes
.../resources/assets/target/sounds/m4_far.ogg | Bin 0 -> 29509 bytes
.../assets/target/sounds/m4_very_far.ogg | Bin 0 -> 21567 bytes
.../resources/assets/target/sounds/m4fire.ogg | Bin 0 -> 21577 bytes
.../assets/target/sounds/m4fire_3p.ogg | Bin 0 -> 17660 bytes
.../assets/target/sounds/m4reload.ogg | Bin 0 -> 34458 bytes
.../assets/target/sounds/m4reload2.ogg | Bin 0 -> 29282 bytes
.../assets/target/sounds/m60_fire.ogg | Bin 0 -> 17277 bytes
.../assets/target/sounds/m60_reload.ogg | Bin 0 -> 71378 bytes
.../assets/target/sounds/m60_reload2.ogg | Bin 0 -> 64236 bytes
.../assets/target/sounds/m79_fire_1p.ogg | Bin 0 -> 10680 bytes
.../assets/target/sounds/m79reload.ogg | Bin 0 -> 52724 bytes
.../assets/target/sounds/m870_fire1p.ogg | Bin 0 -> 37747 bytes
.../assets/target/sounds/m870_fire3p.ogg | Bin 0 -> 74878 bytes
.../assets/target/sounds/m870_preparealt.ogg | Bin 0 -> 11906 bytes
.../assets/target/sounds/m870_reload_loop.ogg | Bin 0 -> 9771 bytes
.../assets/target/sounds/m98b_fire_1p.ogg | Bin 0 -> 37357 bytes
.../assets/target/sounds/m98b_fire_3p.ogg | Bin 0 -> 33129 bytes
.../assets/target/sounds/m98breload.ogg | Bin 0 -> 36750 bytes
.../assets/target/sounds/m98breload2.ogg | Bin 0 -> 27717 bytes
.../assets/target/sounds/marlin__fire1p.ogg | Bin 0 -> 61664 bytes
.../assets/target/sounds/marlin__fire3p.ogg | Bin 0 -> 19110 bytes
.../assets/target/sounds/marlin_end.ogg | Bin 0 -> 45674 bytes
.../assets/target/sounds/marlin_loop.ogg | Bin 0 -> 23199 bytes
.../assets/target/sounds/marlin_start.ogg | Bin 0 -> 52910 bytes
.../assets/target/sounds/metal_01.ogg | Bin 0 -> 18914 bytes
.../assets/target/sounds/metal_02.ogg | Bin 0 -> 12889 bytes
.../assets/target/sounds/metal_03.ogg | Bin 0 -> 14511 bytes
.../assets/target/sounds/metal_04.ogg | Bin 0 -> 17046 bytes
.../assets/target/sounds/metal_05.ogg | Bin 0 -> 12967 bytes
.../assets/target/sounds/minigun_fire.ogg | Bin 0 -> 13716 bytes
.../assets/target/sounds/minigun_fire_3p.ogg | Bin 0 -> 8546 bytes
.../assets/target/sounds/minigun_overheat.ogg | Bin 0 -> 33376 bytes
.../assets/target/sounds/minigun_stop.ogg | Bin 0 -> 6362 bytes
.../target/sounds/mk14_reload_empty.ogg | Bin 0 -> 33884 bytes
.../assets/target/sounds/mk14_reload_norm.ogg | Bin 0 -> 24132 bytes
.../assets/target/sounds/mk14ebr_fire.ogg | Bin 0 -> 88300 bytes
.../assets/target/sounds/mortar_distant.ogg | Bin 0 -> 86613 bytes
.../assets/target/sounds/mortar_fire.ogg | Bin 0 -> 38201 bytes
.../assets/target/sounds/mortar_load.ogg | Bin 0 -> 9117 bytes
.../resources/assets/target/sounds/near1.ogg | Bin 0 -> 27337 bytes
.../resources/assets/target/sounds/near2.ogg | Bin 0 -> 23536 bytes
.../resources/assets/target/sounds/near3.ogg | Bin 0 -> 23447 bytes
.../resources/assets/target/sounds/ouch.ogg | Bin 0 -> 10444 bytes
.../assets/target/sounds/overheat.ogg | Bin 0 -> 80016 bytes
.../resources/assets/target/sounds/reload.ogg | Bin 0 -> 26873 bytes
.../assets/target/sounds/rpg7_fire.ogg | Bin 0 -> 62773 bytes
.../assets/target/sounds/rpg7_reload.ogg | Bin 0 -> 57607 bytes
.../assets/target/sounds/rpk_fire.ogg | Bin 0 -> 18636 bytes
.../assets/target/sounds/rpk_fire1p.ogg | Bin 0 -> 22249 bytes
.../assets/target/sounds/sentinel_fire_1.ogg | Bin 0 -> 29076 bytes
.../assets/target/sounds/sentinel_fire_3.ogg | Bin 0 -> 17478 bytes
.../target/sounds/sentinel_fire_charge1.ogg | Bin 0 -> 48590 bytes
.../target/sounds/sentinel_fire_charge3.ogg | Bin 0 -> 32747 bytes
.../assets/target/sounds/sentinel_reload.ogg | Bin 0 -> 32844 bytes
.../assets/target/sounds/sentinel_reload2.ogg | Bin 0 -> 16379 bytes
.../resources/assets/target/sounds/shift.ogg | Bin 0 -> 14660 bytes
.../resources/assets/target/sounds/shock.ogg | Bin 0 -> 59127 bytes
.../assets/target/sounds/shotfire.ogg | Bin 0 -> 12190 bytes
.../assets/target/sounds/shotfire_3p.ogg | Bin 0 -> 9749 bytes
.../resources/assets/target/sounds/sksfar.ogg | Bin 0 -> 29732 bytes
.../assets/target/sounds/sksveryfar.ogg | Bin 0 -> 25737 bytes
.../resources/assets/target/sounds/step1.ogg | Bin 0 -> 8258 bytes
.../resources/assets/target/sounds/step2.ogg | Bin 0 -> 8478 bytes
.../resources/assets/target/sounds/step3.ogg | Bin 0 -> 8275 bytes
.../resources/assets/target/sounds/step4.ogg | Bin 0 -> 7824 bytes
.../resources/assets/target/sounds/stim1.ogg | Bin 0 -> 107288 bytes
.../resources/assets/target/sounds/stim2.ogg | Bin 0 -> 99830 bytes
.../resources/assets/target/sounds/stim3.ogg | Bin 0 -> 92877 bytes
.../resources/assets/target/sounds/stim4.ogg | Bin 0 -> 97936 bytes
.../resources/assets/target/sounds/stim5.ogg | Bin 0 -> 107145 bytes
.../assets/target/sounds/svd_fire_1p.ogg | Bin 0 -> 52223 bytes
.../assets/target/sounds/svd_fire_3p.ogg | Bin 0 -> 33254 bytes
.../resources/assets/target/sounds/svdfar.ogg | Bin 0 -> 36747 bytes
.../assets/target/sounds/svdreload.ogg | Bin 0 -> 30417 bytes
.../assets/target/sounds/svdreload2.ogg | Bin 0 -> 20235 bytes
.../assets/target/sounds/svdveryfar.ogg | Bin 0 -> 31588 bytes
.../assets/target/sounds/targetdown.ogg | Bin 0 -> 7421 bytes
.../assets/target/sounds/taserfire.ogg | Bin 0 -> 10895 bytes
.../assets/target/sounds/taserreload.ogg | Bin 0 -> 13300 bytes
.../assets/target/sounds/trachelium_3p.ogg | Bin 0 -> 28870 bytes
.../assets/target/sounds/trigger_click.ogg | Bin 0 -> 6475 bytes
.../assets/target/sounds/vecreload.ogg | Bin 0 -> 31874 bytes
.../assets/target/sounds/vecreload2.ogg | Bin 0 -> 21705 bytes
.../assets/target/sounds/vector_fire_1p.ogg | Bin 0 -> 11200 bytes
.../assets/target/sounds/vector_fire_3p.ogg | Bin 0 -> 10778 bytes
.../resources/assets/target/sounds/waao.ogg | Bin 0 -> 25683 bytes
.../assets/target/sounds/yarimasune.ogg | Bin 0 -> 13804 bytes
.../assets/target/textures/block/claymore.png | Bin 0 -> 3966 bytes
.../target/textures/block/creativeammobox.png | Bin 0 -> 1024 bytes
.../textures/block/deepslate_galena_ore.png | Bin 0 -> 638 bytes
.../block/deepslate_scheelite_ore.png | Bin 0 -> 689 bytes
.../target/textures/block/galena_ore.png | Bin 0 -> 577 bytes
.../target/textures/block/gungranade.png | Bin 0 -> 1204 bytes
.../assets/target/textures/block/hammer.png | Bin 0 -> 3742 bytes
.../target/textures/block/handgunammobox.png | Bin 0 -> 2927 bytes
.../assets/target/textures/block/pad.png | Bin 0 -> 1905 bytes
.../target/textures/block/rifleammobox.png | Bin 0 -> 4169 bytes
.../assets/target/textures/block/sand.png | Bin 0 -> 630 bytes
.../assets/target/textures/block/sandbag.png | Bin 0 -> 1293 bytes
.../target/textures/block/sandbagdi.png | Bin 0 -> 1668 bytes
.../target/textures/block/scheelite_ore.png | Bin 0 -> 594 bytes
.../target/textures/block/shotgunammobox.png | Bin 0 -> 4372 bytes
.../target/textures/block/sniperammobox.png | Bin 0 -> 3733 bytes
.../assets/target/textures/block/tasergun.png | Bin 0 -> 5188 bytes
.../target/textures/block/tiesiwang.png | Bin 0 -> 1711 bytes
.../target/textures/entities/bocekarrow.png | Bin 0 -> 188 bytes
.../target/textures/entities/bullet.png | Bin 0 -> 75 bytes
.../target/textures/entities/bullet_e.png | Bin 0 -> 106 bytes
.../target/textures/entities/bullet_tex.png | Bin 0 -> 117 bytes
.../target/textures/entities/claymore.png | Bin 0 -> 3966 bytes
.../target/textures/entities/grenade.png | Bin 0 -> 149 bytes
.../target/textures/entities/mortar.png | Bin 0 -> 10669 bytes
.../target/textures/entities/mortar_shell.png | Bin 0 -> 82 bytes
.../assets/target/textures/entities/pad.png | Bin 0 -> 1905 bytes
.../target/textures/entities/rocket.png | Bin 0 -> 82 bytes
.../target/textures/entities/senpai.png | Bin 0 -> 3569 bytes
.../target/textures/entities/target.png | Bin 0 -> 383 bytes
.../target/textures/entities/target_e.png | Bin 0 -> 266 bytes
.../target/textures/entities/taser_rod.png | Bin 0 -> 129 bytes
.../assets/target/textures/entities/trail.png | Bin 0 -> 123 bytes
.../villager/profession/arms_dealer.png | Bin 0 -> 2993 bytes
.../entity/villager/profession/armsdealer.png | Bin 0 -> 2993 bytes
.../profession/arms_dealer.png | Bin 0 -> 2944 bytes
.../zombie_villager/profession/armsdealer.png | Bin 0 -> 2944 bytes
.../assets/target/textures/item/aa123d.png | Bin 0 -> 319 bytes
.../assets/target/textures/item/aa12_e.png | Bin 0 -> 7028 bytes
.../assets/target/textures/item/aa12_new.png | Bin 0 -> 54012 bytes
.../assets/target/textures/item/aa_12.png | Bin 0 -> 7619 bytes
.../assets/target/textures/item/abekiri.png | Bin 0 -> 6459 bytes
.../assets/target/textures/item/abekiri_e.png | Bin 0 -> 3013 bytes
.../assets/target/textures/item/ak3d.png | Bin 0 -> 417 bytes
.../assets/target/textures/item/ak47.png | Bin 0 -> 35059 bytes
.../assets/target/textures/item/ak473d.png | Bin 0 -> 363 bytes
.../assets/target/textures/item/ak47_e.png | Bin 0 -> 155008 bytes
.../assets/target/textures/item/ak47icon.png | Bin 0 -> 8061 bytes
.../assets/target/textures/item/akicon.png | Bin 0 -> 6186 bytes
.../target/textures/item/base_plate.png | Bin 0 -> 311 bytes
.../assets/target/textures/item/bocek.png | Bin 0 -> 31537 bytes
.../assets/target/textures/item/bocek_e.png | Bin 0 -> 2878 bytes
.../target/textures/item/bocek_icon.png | Bin 0 -> 9306 bytes
.../assets/target/textures/item/bsk.png | Bin 0 -> 55267 bytes
.../assets/target/textures/item/buckshot.png | Bin 0 -> 495 bytes
.../textures/item/cemented_carbide_action.png | Bin 0 -> 255 bytes
.../textures/item/cemented_carbide_barrel.png | Bin 0 -> 143 bytes
.../textures/item/cemented_carbide_ingot.png | Bin 0 -> 327 bytes
.../textures/item/cemented_carbide_spring.png | Bin 0 -> 290 bytes
.../item/cemented_carbide_trigger.png | Bin 0 -> 376 bytes
.../assets/target/textures/item/claymore.png | Bin 0 -> 3966 bytes
.../target/textures/item/coal_iron_powder.png | Bin 0 -> 437 bytes
.../target/textures/item/coal_powder.png | Bin 0 -> 339 bytes
.../textures/item/common_material_pack.png | Bin 0 -> 541 bytes
.../target/textures/item/copper_plate.png | Bin 0 -> 430 bytes
.../assets/target/textures/item/defusals.png | Bin 0 -> 295 bytes
.../assets/target/textures/item/devotion.png | Bin 0 -> 77625 bytes
.../target/textures/item/devotion3d.png | Bin 0 -> 505 bytes
.../target/textures/item/devotion_e.png | Bin 0 -> 29435 bytes
.../target/textures/item/devotion_icon.png | Bin 0 -> 9394 bytes
.../textures/item/epic_material_pack.png | Bin 0 -> 540 bytes
.../assets/target/textures/item/fusee.png | Bin 0 -> 300 bytes
.../assets/target/textures/item/galena.png | Bin 0 -> 435 bytes
.../target/textures/item/gun_barrel.png | Bin 0 -> 198 bytes
.../target/textures/item/gun_blueprint.png | Bin 0 -> 417 bytes
.../target/textures/item/gungranade.png | Bin 0 -> 336 bytes
.../assets/target/textures/item/hammer.png | Bin 0 -> 3742 bytes
.../target/textures/item/handgunammo.png | Bin 0 -> 527 bytes
.../assets/target/textures/item/hk416.png | Bin 0 -> 27507 bytes
.../assets/target/textures/item/hk4163d.png | Bin 0 -> 359 bytes
.../assets/target/textures/item/hk416_a5.png | Bin 0 -> 8543 bytes
.../assets/target/textures/item/hk416_e.png | Bin 0 -> 109690 bytes
.../target/textures/item/hunting_rifle3d.png | Bin 0 -> 427 bytes
.../textures/item/hunting_rifle_icon.png | Bin 0 -> 13399 bytes
.../target/textures/item/huntingrifle.png | Bin 0 -> 35015 bytes
.../target/textures/item/huntingrifle_e.png | Bin 0 -> 3658 bytes
.../target/textures/item/iron_action.png | Bin 0 -> 280 bytes
.../target/textures/item/iron_barrel.png | Bin 0 -> 200 bytes
.../target/textures/item/iron_powder.png | Bin 0 -> 353 bytes
.../target/textures/item/iron_spring.png | Bin 0 -> 324 bytes
.../target/textures/item/iron_trigger.png | Bin 0 -> 309 bytes
.../assets/target/textures/item/kraber.png | Bin 0 -> 172511 bytes
.../assets/target/textures/item/kraber3d.png | Bin 0 -> 591 bytes
.../assets/target/textures/item/kraber_e.png | Bin 0 -> 70456 bytes
.../target/textures/item/kraber_icon.png | Bin 0 -> 10107 bytes
.../target/textures/item/lead_ingot.png | Bin 0 -> 313 bytes
.../textures/item/legendary_material_pack.png | Bin 0 -> 546 bytes
.../target/textures/item/lightsaber.png | Bin 0 -> 23081 bytes
.../target/textures/item/lightsaber_e.png | Bin 0 -> 8719 bytes
.../assets/target/textures/item/m4.png | Bin 0 -> 42130 bytes
.../assets/target/textures/item/m43d.png | Bin 0 -> 324 bytes
.../assets/target/textures/item/m4_e.png | Bin 0 -> 25683 bytes
.../assets/target/textures/item/m4icon.png | Bin 0 -> 8291 bytes
.../assets/target/textures/item/m60.png | Bin 0 -> 25469 bytes
.../assets/target/textures/item/m603d.png | Bin 0 -> 857 bytes
.../assets/target/textures/item/m60_e.png | Bin 0 -> 3417 bytes
.../assets/target/textures/item/m60_icon.png | Bin 0 -> 6764 bytes
.../assets/target/textures/item/m79.png | Bin 0 -> 34643 bytes
.../assets/target/textures/item/m793d.png | Bin 0 -> 289 bytes
.../assets/target/textures/item/m79_e.png | Bin 0 -> 3347 bytes
.../assets/target/textures/item/m79icon.png | Bin 0 -> 7466 bytes
.../assets/target/textures/item/m870.png | Bin 0 -> 33267 bytes
.../assets/target/textures/item/m870_e.png | Bin 0 -> 150203 bytes
.../assets/target/textures/item/m870_icon.png | Bin 0 -> 4752 bytes
.../assets/target/textures/item/m98b.png | Bin 0 -> 22275 bytes
.../assets/target/textures/item/m98b_e.png | Bin 0 -> 16593 bytes
.../target/textures/item/m_98b_icon.png | Bin 0 -> 6490 bytes
.../assets/target/textures/item/marlin.png | Bin 0 -> 29633 bytes
.../assets/target/textures/item/marlin_e.png | Bin 0 -> 191187 bytes
.../target/textures/item/marlinicon.png | Bin 0 -> 6984 bytes
.../assets/target/textures/item/minigun.png | Bin 0 -> 45223 bytes
.../assets/target/textures/item/minigun_e.png | Bin 0 -> 4017 bytes
.../target/textures/item/minigun_icon.png | Bin 0 -> 8039 bytes
.../assets/target/textures/item/mk14.png | Bin 0 -> 219758 bytes
.../assets/target/textures/item/mk143d.png | Bin 0 -> 550 bytes
.../assets/target/textures/item/mk14_e.png | Bin 0 -> 19116 bytes
.../target/textures/item/mk_14_icon.png | Bin 0 -> 6619 bytes
.../target/textures/item/mortar_shells.png | Bin 0 -> 275 bytes
.../assets/target/textures/item/motar.png | Bin 0 -> 361 bytes
.../target/textures/item/motar_barrel.png | Bin 0 -> 275 bytes
.../target/textures/item/motar_bipod.png | Bin 0 -> 226 bytes
.../target/textures/item/netherite_action.png | Bin 0 -> 299 bytes
.../target/textures/item/netherite_barrel.png | Bin 0 -> 219 bytes
.../target/textures/item/netherite_spring.png | Bin 0 -> 323 bytes
.../textures/item/netherite_trigger.png | Bin 0 -> 363 bytes
.../assets/target/textures/item/pad.png | Bin 0 -> 1905 bytes
.../textures/item/rare_material_pack.png | Bin 0 -> 540 bytes
.../assets/target/textures/item/rifleammo.png | Bin 0 -> 548 bytes
.../assets/target/textures/item/rpg3d.png | Bin 0 -> 356 bytes
.../assets/target/textures/item/rpg7.png | Bin 0 -> 29651 bytes
.../assets/target/textures/item/rpg7_e.png | Bin 0 -> 149926 bytes
.../assets/target/textures/item/rpgicon.png | Bin 0 -> 4299 bytes
.../assets/target/textures/item/rpk.png | Bin 0 -> 34697 bytes
.../assets/target/textures/item/rpk_e.png | Bin 0 -> 37991 bytes
.../assets/target/textures/item/rpk_icon.png | Bin 0 -> 8525 bytes
.../assets/target/textures/item/scheelite.png | Bin 0 -> 511 bytes
.../assets/target/textures/item/sentinel.png | Bin 0 -> 145021 bytes
.../target/textures/item/sentinel3d.png | Bin 0 -> 565 bytes
.../target/textures/item/sentinel_e.png | Bin 0 -> 364130 bytes
.../target/textures/item/sentinel_icon.png | Bin 0 -> 2779 bytes
.../target/textures/item/shotgunammo.png | Bin 0 -> 583 bytes
.../assets/target/textures/item/sks.png | Bin 0 -> 40075 bytes
.../assets/target/textures/item/sks_e.png | Bin 0 -> 121017 bytes
.../target/textures/item/sniperammo.png | Bin 0 -> 543 bytes
.../target/textures/item/soulsteel_ingot.png | Bin 0 -> 581 bytes
.../target/textures/item/soulsteel_nugget.png | Bin 0 -> 241 bytes
.../textures/item/special_material_pack.png | Bin 0 -> 539 bytes
.../target/textures/item/steel_action.png | Bin 0 -> 252 bytes
.../target/textures/item/steel_ingot.png | Bin 0 -> 308 bytes
.../target/textures/item/steel_spring.png | Bin 0 -> 332 bytes
.../target/textures/item/steel_trigger.png | Bin 0 -> 309 bytes
.../assets/target/textures/item/svd.png | Bin 0 -> 135673 bytes
.../assets/target/textures/item/svd_e.png | Bin 0 -> 155626 bytes
.../assets/target/textures/item/svdicon.png | Bin 0 -> 7183 bytes
.../target/textures/item/targetdeploy.png | Bin 0 -> 123 bytes
.../target/textures/item/taserbullet.png | Bin 0 -> 107 bytes
.../assets/target/textures/item/tasergun.png | Bin 0 -> 5188 bytes
.../target/textures/item/trachelium3d.png | Bin 0 -> 206 bytes
.../target/textures/item/trachelium_icon.png | Bin 0 -> 25298 bytes
.../textures/item/trachelium_texture.png | Bin 0 -> 216213 bytes
.../textures/item/trachelium_texture_e.png | Bin 0 -> 194348 bytes
.../target/textures/item/tungsten_ingot.png | Bin 0 -> 403 bytes
.../target/textures/item/tungsten_powder.png | Bin 0 -> 372 bytes
.../unblasted_cemented_carbide_podwer.png | Bin 0 -> 469 bytes
.../assets/target/textures/item/vector.png | Bin 0 -> 140702 bytes
.../assets/target/textures/item/vector3d.png | Bin 0 -> 624 bytes
.../assets/target/textures/item/vector_e.png | Bin 0 -> 86140 bytes
.../target/textures/item/vector_icon.png | Bin 0 -> 12406 bytes
.../textures/mob_effect/doublejumpeffect.png | Bin 0 -> 158 bytes
.../target/textures/mob_effect/shock.png | Bin 0 -> 158 bytes
.../target/textures/particle/bullethole.png | Bin 0 -> 99 bytes
.../target/textures/particle/bullthole.png | Bin 0 -> 99 bytes
.../target/textures/particle/firestar.png | Bin 0 -> 266 bytes
.../target/textures/particle/firestar_1.png | Bin 0 -> 86 bytes
.../target/textures/particle/firestar_2.png | Bin 0 -> 95 bytes
.../target/textures/particle/firestar_3.png | Bin 0 -> 101 bytes
.../target/textures/particle/firestar_4.png | Bin 0 -> 104 bytes
.../target/textures/particle/firestar_5.png | Bin 0 -> 115 bytes
.../target/textures/particle/firestar_6.png | Bin 0 -> 112 bytes
.../target/textures/particle/firestar_7.png | Bin 0 -> 115 bytes
.../target/textures/particle/firestar_8.png | Bin 0 -> 112 bytes
.../textures/screens/gun_recycle_gui.png | Bin 0 -> 1108 bytes
.../target/textures/screens/headshotmark.png | Bin 0 -> 1225 bytes
.../target/textures/screens/hit_marker.png | Bin 0 -> 1380 bytes
.../target/textures/screens/kill_mark1.png | Bin 0 -> 294 bytes
.../target/textures/screens/kill_mark2.png | Bin 0 -> 300 bytes
.../target/textures/screens/kill_mark3.png | Bin 0 -> 283 bytes
.../target/textures/screens/kill_mark4.png | Bin 0 -> 285 bytes
.../target/textures/screens/mortar_gui.png | Bin 0 -> 146 bytes
.../target/textures/screens/mortar_icon.png | Bin 0 -> 1483 bytes
.../assets/target/textures/screens/point.png | Bin 0 -> 80 bytes
.../assets/target/textures/screens/rex.png | Bin 0 -> 218 bytes
.../target/textures/screens/rexheng.png | Bin 0 -> 80 bytes
.../assets/target/textures/screens/rexshu.png | Bin 0 -> 85 bytes
.../loot_modifiers/global_loot_modifiers.json | 25 +
.../data/forge/tags/items/dusts.json | 1 +
.../forge/tags/items/dusts/coal_coke.json | 1 +
.../data/forge/tags/items/dusts/iron.json | 1 +
.../data/forge/tags/items/dusts/tungsten.json | 1 +
.../data/forge/tags/items/ingots.json | 1 +
.../data/forge/tags/items/ingots/lead.json | 1 +
.../data/forge/tags/items/ingots/steel.json | 1 +
.../forge/tags/items/ingots/tungsten.json | 1 +
.../forge/tags/items/ore_rates/singular.json | 1 +
.../resources/data/forge/tags/items/ores.json | 1 +
.../data/forge/tags/items/ores/lead.json | 1 +
.../data/forge/tags/items/ores/tungsten.json | 1 +
.../tags/items/ores_in_ground/deepslate.json | 1 +
.../tags/items/ores_in_ground/stone.json | 1 +
.../data/forge/tags/items/plates.json | 1 +
.../data/forge/tags/items/plates/copper.json | 1 +
.../data/forge/tags/items/raw_materials.json | 1 +
.../forge/tags/items/raw_materials/lead.json | 1 +
.../tags/items/raw_materials/tungsten.json | 1 +
.../tags/blocks/mineable/pickaxe.json | 9 +
.../target/damage_type/arrow_in_brain.json | 5 +
.../data/target/damage_type/gunfire.json | 5 +
.../data/target/damage_type/mine.json | 5 +
.../deepslate_galena_ore_biome_modifier.json | 6 +
...eepslate_scheelite_ore_biome_modifier.json | 6 +
.../galena_ore_biome_modifier.json | 6 +
.../scheelite_ore_biome_modifier.json | 6 +
.../biome_modifier/senpai_biome_modifier.json | 49 +
.../target/loot_modifiers/common_chest.json | 10 +
.../target/loot_modifiers/common_chest_2.json | 10 +
.../target/loot_modifiers/common_chest_3.json | 10 +
.../target/loot_modifiers/common_chest_4.json | 10 +
.../target/loot_modifiers/common_chest_5.json | 10 +
.../target/loot_modifiers/common_chest_6.json | 10 +
.../target/loot_modifiers/epic_chest.json | 10 +
.../target/loot_modifiers/epic_chest_2.json | 10 +
.../target/loot_modifiers/epic_chest_3.json | 10 +
.../target/loot_modifiers/epic_chest_4.json | 10 +
.../target/loot_modifiers/rare_chest.json | 10 +
.../target/loot_modifiers/rare_chest_10.json | 10 +
.../target/loot_modifiers/rare_chest_2.json | 10 +
.../target/loot_modifiers/rare_chest_3.json | 10 +
.../target/loot_modifiers/rare_chest_4.json | 10 +
.../target/loot_modifiers/rare_chest_5.json | 10 +
.../target/loot_modifiers/rare_chest_6.json | 10 +
.../target/loot_modifiers/rare_chest_7.json | 10 +
.../target/loot_modifiers/rare_chest_8.json | 10 +
.../target/loot_modifiers/rare_chest_9.json | 10 +
.../blocks/deepslate_galena_ore.json | 1 +
.../blocks/deepslate_scheelite_ore.json | 1 +
.../target/loot_tables/blocks/galena_ore.json | 1 +
.../loot_tables/blocks/scheelite_ore.json | 1 +
.../target/loot_tables/blue_print_epic.json | 235 +
.../target/loot_tables/blue_print_rare.json | 277 +
.../chests/blueprint_common_chest.json | 249 +
.../loot_tables/chests/target_epic_chest.json | 68 +
.../loot_tables/chests/target_rare_chest.json | 68 +
.../data/target/recipes/aa_12_smithing.json | 15 +
.../data/target/recipes/aa_12bp_crafting.json | 24 +
.../data/target/recipes/abekiri_crafting.json | 27 +
.../data/target/recipes/ak_47_smithing.json | 15 +
.../data/target/recipes/ak_47bp_crafting.json | 24 +
.../target/recipes/barbed_wire_crafting.json | 19 +
.../data/target/recipes/big_hammer.json | 24 +
.../data/target/recipes/bocek_smithing.json | 15 +
.../data/target/recipes/bocekbp_crafting.json | 24 +
.../target/recipes/buckshot_crafting.json | 16 +
.../target/recipes/cc_action_crafting.json | 17 +
.../target/recipes/cc_ingot_blasting.json | 10 +
.../target/recipes/cc_spring_crafting.json | 18 +
.../target/recipes/cc_trigger_crafting.json | 20 +
.../cemented_carbide_ingot_crafting.json | 16 +
.../data/target/recipes/claymorecrafting.json | 27 +
.../data/target/recipes/cmp_crafting.json | 22 +
.../recipes/coal_iron_powder_crafting.json | 16 +
.../target/recipes/coal_powder_crafting.json | 16 +
.../target/recipes/copperplate_crafting.json | 16 +
.../target/recipes/devotion_smithing.json | 15 +
.../target/recipes/devotionbp_crafting.json | 24 +
.../data/target/recipes/emp_crafting.json | 22 +
.../data/target/recipes/fusee_crafting.json | 24 +
.../data/target/recipes/granade_40mm.json | 27 +
.../target/recipes/gun_recycle_crafting.json | 21 +
.../recipes/handgun_ammo_box_crafting.json | 21 +
.../target/recipes/handgun_ammo_crafting.json | 23 +
.../data/target/recipes/hk_416_smithing.json | 15 +
.../target/recipes/hk_416bp_crafting.json | 24 +
.../data/target/recipes/hr_crafting.json | 24 +
.../recipes/hunting_rifle_smithing.json | 15 +
.../target/recipes/ingot_steel_blasting.json | 10 +
.../target/recipes/iron_action_crafting.json | 17 +
.../target/recipes/iron_barrel_crafting.json | 16 +
.../target/recipes/iron_powder_crafting.json | 16 +
.../target/recipes/iron_spring_crafting.json | 18 +
.../target/recipes/iron_trigger_crafting.json | 20 +
.../data/target/recipes/jumppad_crafting.json | 24 +
.../data/target/recipes/kraber_smithing.json | 15 +
.../target/recipes/kraberbp_crafting.json | 24 +
.../target/recipes/lead_ingot_blasting.json | 10 +
.../target/recipes/lead_ingot_smelting.json | 10 +
.../target/recipes/lightsaber_crafting.json | 24 +
.../data/target/recipes/m_4_smithing.json | 15 +
.../data/target/recipes/m_4bp_crafting.json | 24 +
.../data/target/recipes/m_60_smithing.json | 15 +
.../data/target/recipes/m_60bp_crafting.json | 24 +
.../data/target/recipes/m_79_smithing.json | 15 +
.../data/target/recipes/m_79bp_crafting.json | 24 +
.../data/target/recipes/m_870_smithing.json | 15 +
.../data/target/recipes/m_870bp_crafting.json | 24 +
.../data/target/recipes/m_89b_smithing.json | 15 +
.../data/target/recipes/m_98bbp_crafting.json | 24 +
.../data/target/recipes/marlin_smithing.json | 15 +
.../data/target/recipes/marlinbpcrafting.json | 24 +
.../data/target/recipes/minigun_smithing.json | 15 +
.../target/recipes/minigunbp_crafting.json | 24 +
.../data/target/recipes/mk_14_smithing.json | 15 +
.../data/target/recipes/mk_14bp_crafting.json | 24 +
.../recipes/mortar_barrel_crafting.json | 24 +
.../recipes/mortar_base_plate_crafting.json | 23 +
.../target/recipes/mortar_bipod_crafting.json | 27 +
.../data/target/recipes/mortar_crafting.json | 23 +
.../data/target/recipes/mortar_he_shells.json | 27 +
.../recipes/netherite_action_crafting.json | 15 +
.../recipes/netherite_barrel_smithing.json | 15 +
.../recipes/netherite_spring_crafting.json | 15 +
.../recipes/netherite_trigger_crafting.json | 15 +
.../recipes/rifle_ammo_box_crafting.json | 21 +
.../target/recipes/rifle_ammo_crafting.json | 24 +
.../data/target/recipes/rmp_crafting.json | 22 +
.../data/target/recipes/rocket_crafting.json | 27 +
.../data/target/recipes/rpg_smithing.json | 15 +
.../data/target/recipes/rpgbp_crafting.json | 24 +
.../data/target/recipes/rpk_smithing.json | 15 +
.../data/target/recipes/rpkbp_crafting.json | 24 +
.../data/target/recipes/sandbag_crafting.json | 23 +
.../target/recipes/sentinel_smithing.json | 15 +
.../target/recipes/sentinelbp_crafting.json | 24 +
.../recipes/shotgun_ammo_box_crafting.json | 21 +
.../target/recipes/shotgun_ammo_crafting.json | 27 +
.../data/target/recipes/sks_smithing.json | 15 +
.../data/target/recipes/sksbp_crafting.json | 24 +
.../data/target/recipes/smp_crafting.json | 22 +
.../recipes/sniper_ammo_box_crafting.json | 21 +
.../target/recipes/sniper_ammo_crafting.json | 24 +
.../recipes/soulsteel_ingot_crafting.json | 37 +
.../recipes/soulsteel_nugget_crafting.json | 13 +
.../recipes/specialmaterialpack_crafting.json | 15 +
.../target/recipes/steel_action_crafting.json | 17 +
.../target/recipes/steel_barrel_crafting.json | 16 +
.../target/recipes/steel_spring_crafting.json | 18 +
.../recipes/steel_trigger_crafting.json | 20 +
.../data/target/recipes/svd_smithing.json | 15 +
.../data/target/recipes/svdbp_crafting.json | 24 +
.../data/target/recipes/target_crafting.json | 24 +
.../recipes/taser_electrode_crafting.json | 21 +
.../data/target/recipes/taser_smithing.json | 15 +
.../data/target/recipes/taserbp_crafting.json | 24 +
.../data/target/recipes/tbp_crafting.json | 24 +
.../target/recipes/trachelium_smithing.json | 15 +
.../target/recipes/tungsten_blasting.json | 10 +
.../recipes/tungsten_powder_crafting.json | 16 +
.../data/target/recipes/uccp_crafting.json | 24 +
.../data/target/recipes/vector_smithing.json | 15 +
.../target/recipes/vectorbp_crafting.json | 24 +
.../resources/data/target/tags/items/gun.json | 29 +
.../data/target/tags/items/legendary_gun.json | 8 +
.../data/target/tags/items/specialgun.json | 8 +
.../data/target/weapon_attributes/hammer.json | 41 +
.../target/weapon_attributes/light_saber.json | 49 +
.../data/target/weapon_attributes/rocket.json | 35 +
.../deepslate_galena_ore.json | 18 +
.../deepslate_scheelite_ore.json | 18 +
.../configured_feature/galena_ore.json | 18 +
.../configured_feature/scheelite_ore.json | 18 +
.../placed_feature/deepslate_galena_ore.json | 27 +
.../deepslate_scheelite_ore.json | 27 +
.../worldgen/placed_feature/galena_ore.json | 27 +
.../placed_feature/scheelite_ore.json | 27 +
src/main/resources/mixins.target.json | 17 +
src/main/resources/pack.mcmeta | 6 +
target.mcreator | 10642 ++++++++++
1865 files changed, 377030 insertions(+)
create mode 100644 .classpath
create mode 100644 .gitignore
create mode 100644 .project
create mode 100644 .settings/org.eclipse.jdt.core.prefs
create mode 100644 build.gradle
create mode 100644 elements/AK47.mod.json
create mode 100644 elements/AK47Blueprint.mod.json
create mode 100644 elements/AK47WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/AKfire.mod.json
create mode 100644 elements/Aa12.mod.json
create mode 100644 elements/Aa12Blueprint.mod.json
create mode 100644 elements/Aa12Smithing.mod.json
create mode 100644 elements/Aa12WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Aa12autofire.mod.json
create mode 100644 elements/Aa12bpCrafting.mod.json
create mode 100644 elements/Aa12fire.mod.json
create mode 100644 elements/Abekiri.mod.json
create mode 100644 elements/AbekiriCrafting.mod.json
create mode 100644 elements/AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Abkrfire.mod.json
create mode 100644 elements/Aiming.mod.json
create mode 100644 elements/Ak47Smithing.mod.json
create mode 100644 elements/Ak47autofire.mod.json
create mode 100644 elements/Ak47bpCrafting.mod.json
create mode 100644 elements/AkDs.mod.json
create mode 100644 elements/Ammo.mod.json
create mode 100644 elements/Ammobar.mod.json
create mode 100644 elements/AmmobarXianShiYouXiNeiDieJiaCeng.mod.json
create mode 100644 elements/AmmoboxFangZhiFangKuaiShi.mod.json
create mode 100644 elements/Ammocount.mod.json
create mode 100644 elements/AngleAdd.mod.json
create mode 100644 elements/AngleAddMini.mod.json
create mode 100644 elements/AngleAddPlus.mod.json
create mode 100644 elements/AngleReduce.mod.json
create mode 100644 elements/AngleReduceMini.mod.json
create mode 100644 elements/AngleReducePlus.mod.json
create mode 100644 elements/ArDs.mod.json
create mode 100644 elements/ArrowInBrain.mod.json
create mode 100644 elements/Arrowdamage.mod.json
create mode 100644 elements/As12Ds.mod.json
create mode 100644 elements/BarbedWire.mod.json
create mode 100644 elements/BarbedWireCrafting.mod.json
create mode 100644 elements/BarbedWireShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
create mode 100644 elements/Bazipengzhuang.mod.json
create mode 100644 elements/BigHammer.mod.json
create mode 100644 elements/Bigexp.mod.json
create mode 100644 elements/BluePrintEpic.mod.json
create mode 100644 elements/BluePrintRare.mod.json
create mode 100644 elements/Blueprint.mod.json
create mode 100644 elements/BlueprintCommonChest.mod.json
create mode 100644 elements/Bocek.mod.json
create mode 100644 elements/BocekBlueprint.mod.json
create mode 100644 elements/BocekSmithing.mod.json
create mode 100644 elements/Bocekarrow.mod.json
create mode 100644 elements/BocekbpCrafting.mod.json
create mode 100644 elements/Bocekreload.mod.json
create mode 100644 elements/Bowloose.mod.json
create mode 100644 elements/Bowpullanim.mod.json
create mode 100644 elements/Buckshot.mod.json
create mode 100644 elements/BuckshotCrafting.mod.json
create mode 100644 elements/Bullet.mod.json
create mode 100644 elements/BulletfireNormal.mod.json
create mode 100644 elements/BullettestDanSheWuJiZhongFangKuaiShi.mod.json
create mode 100644 elements/Bullthole.mod.json
create mode 100644 elements/CannonAngle.mod.json
create mode 100644 elements/CcActionCrafting.mod.json
create mode 100644 elements/CcIngotBlasting.mod.json
create mode 100644 elements/CcSpringCrafting.mod.json
create mode 100644 elements/CcTriggerCrafting.mod.json
create mode 100644 elements/CementedCarbideAction.mod.json
create mode 100644 elements/CementedCarbideBarrel.mod.json
create mode 100644 elements/CementedCarbideIngot.mod.json
create mode 100644 elements/CementedCarbideIngotCrafting.mod.json
create mode 100644 elements/CementedcarbideTrigger.mod.json
create mode 100644 elements/Cementedcarbidespring.mod.json
create mode 100644 elements/Changefiremode.mod.json
create mode 100644 elements/Changefirerate.mod.json
create mode 100644 elements/Claymore.mod.json
create mode 100644 elements/ClaymoreDamage.mod.json
create mode 100644 elements/ClaymoreDangShiTiGengXinKeShi.mod.json
create mode 100644 elements/ClaymoreDangShiTiSiWangShi.mod.json
create mode 100644 elements/ClaymoreMine.mod.json
create mode 100644 elements/ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhi.mod.json
create mode 100644 elements/ClaymoreYouJiShiTiShi.mod.json
create mode 100644 elements/Claymorecrafting.mod.json
create mode 100644 elements/Claymoretime.mod.json
create mode 100644 elements/ClientboundSetEntityMotionPacket.mod.json
create mode 100644 elements/CmpCrafting.mod.json
create mode 100644 elements/CoalIronPowder.mod.json
create mode 100644 elements/CoalIronPowderCrafting.mod.json
create mode 100644 elements/CoalPowder.mod.json
create mode 100644 elements/CoalPowderCrafting.mod.json
create mode 100644 elements/CommonChest.mod.json
create mode 100644 elements/CommonChest2.mod.json
create mode 100644 elements/CommonChest3.mod.json
create mode 100644 elements/CommonChest4.mod.json
create mode 100644 elements/CommonChest5.mod.json
create mode 100644 elements/CommonChest6.mod.json
create mode 100644 elements/Commonmaterialpack.mod.json
create mode 100644 elements/Copperplate.mod.json
create mode 100644 elements/CopperplateCrafting.mod.json
create mode 100644 elements/CreativeAmmoBox.mod.json
create mode 100644 elements/CreativeAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
create mode 100644 elements/Crosshair.mod.json
create mode 100644 elements/CrosshairXianShiYouXiNeiDieJiaCeng.mod.json
create mode 100644 elements/Damage.mod.json
create mode 100644 elements/DamageReduce.mod.json
create mode 100644 elements/DamageReplace.mod.json
create mode 100644 elements/DeepslateGalenaOre.mod.json
create mode 100644 elements/DeepslateScheeliteOre.mod.json
create mode 100644 elements/Devofire.mod.json
create mode 100644 elements/Devotion.mod.json
create mode 100644 elements/DevotionAutofire.mod.json
create mode 100644 elements/DevotionBluprint.mod.json
create mode 100644 elements/DevotionSmithing.mod.json
create mode 100644 elements/DevotionWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/DevotionbpCrafting.mod.json
create mode 100644 elements/Devotiongfire.mod.json
create mode 100644 elements/DismantlePress.mod.json
create mode 100644 elements/DistantRange.mod.json
create mode 100644 elements/Doublejump.mod.json
create mode 100644 elements/Doublejumpinput.mod.json
create mode 100644 elements/EmpCrafting.mod.json
create mode 100644 elements/EntityRange.mod.json
create mode 100644 elements/EpicChest.mod.json
create mode 100644 elements/EpicChest2.mod.json
create mode 100644 elements/EpicChest3.mod.json
create mode 100644 elements/EpicChest4.mod.json
create mode 100644 elements/Epicmaterialpack.mod.json
create mode 100644 elements/Firemode.mod.json
create mode 100644 elements/Firestar.mod.json
create mode 100644 elements/Firetime.mod.json
create mode 100644 elements/Fusee.mod.json
create mode 100644 elements/FuseeCrafting.mod.json
create mode 100644 elements/Galena.mod.json
create mode 100644 elements/GalenaOre.mod.json
create mode 100644 elements/Granade40mm.mod.json
create mode 100644 elements/Grenade40mm.mod.json
create mode 100644 elements/Ground.mod.json
create mode 100644 elements/Gun.mod.json
create mode 100644 elements/GunGrenade.mod.json
create mode 100644 elements/GunGrenadeDanSheWuFeiXingShiMeiKeFaSheng.mod.json
create mode 100644 elements/GunGrenadeDanSheWuJiZhongFangKuaiShi.mod.json
create mode 100644 elements/GunGrenadeDanSheWuJiZhongShiTiShi.mod.json
create mode 100644 elements/GunRecoil.mod.json
create mode 100644 elements/GunRecycle.mod.json
create mode 100644 elements/GunRecycleCrafting.mod.json
create mode 100644 elements/GunRecycleGui.mod.json
create mode 100644 elements/Gunfire.mod.json
create mode 100644 elements/Gunpickup.mod.json
create mode 100644 elements/GunsData.mod.json
create mode 100644 elements/GunsDev.mod.json
create mode 100644 elements/GunsTips.mod.json
create mode 100644 elements/HK416Blueprint.mod.json
create mode 100644 elements/HRCrafting.mod.json
create mode 100644 elements/Hammer.mod.json
create mode 100644 elements/HandgunAmmo.mod.json
create mode 100644 elements/HandgunAmmoBox.mod.json
create mode 100644 elements/HandgunAmmoBoxCrafting.mod.json
create mode 100644 elements/HandgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
create mode 100644 elements/HandgunAmmoCrafting.mod.json
create mode 100644 elements/HandgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
create mode 100644 elements/HandgunReload1.mod.json
create mode 100644 elements/HandgunReload2.mod.json
create mode 100644 elements/Hitindication.mod.json
create mode 100644 elements/Hitindication2.mod.json
create mode 100644 elements/Hk416.mod.json
create mode 100644 elements/Hk416Smithing.mod.json
create mode 100644 elements/Hk416WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Hk416autofire.mod.json
create mode 100644 elements/Hk416bpCrafting.mod.json
create mode 100644 elements/Hk416fire.mod.json
create mode 100644 elements/Hk416firerandom.mod.json
create mode 100644 elements/HkDs.mod.json
create mode 100644 elements/Hrfire.mod.json
create mode 100644 elements/Hrreloding.mod.json
create mode 100644 elements/Hugeexp.mod.json
create mode 100644 elements/HuntingRifle.mod.json
create mode 100644 elements/HuntingRifleBlueprint.mod.json
create mode 100644 elements/HuntingRifleSmithing.mod.json
create mode 100644 elements/Hurtcancel.mod.json
create mode 100644 elements/IngotSteel.mod.json
create mode 100644 elements/IngotSteelBlasting.mod.json
create mode 100644 elements/IronAction.mod.json
create mode 100644 elements/IronActionCrafting.mod.json
create mode 100644 elements/IronBarrel.mod.json
create mode 100644 elements/IronBarrelCrafting.mod.json
create mode 100644 elements/IronPowder.mod.json
create mode 100644 elements/IronPowderCrafting.mod.json
create mode 100644 elements/IronSpring.mod.json
create mode 100644 elements/IronSpringCrafting.mod.json
create mode 100644 elements/IronTrigger.mod.json
create mode 100644 elements/IronTriggerCrafting.mod.json
create mode 100644 elements/JumppadBlock.mod.json
create mode 100644 elements/JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
create mode 100644 elements/JumppadCrafting.mod.json
create mode 100644 elements/KRABERBlueprint.mod.json
create mode 100644 elements/Killindication.mod.json
create mode 100644 elements/Kraber.mod.json
create mode 100644 elements/KraberDs.mod.json
create mode 100644 elements/KraberSmithing.mod.json
create mode 100644 elements/KraberWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/KraberbpCrafting.mod.json
create mode 100644 elements/Kraberfire.mod.json
create mode 100644 elements/LeadIngot.mod.json
create mode 100644 elements/LeadIngotBlasting.mod.json
create mode 100644 elements/LeadIngotSmelting.mod.json
create mode 100644 elements/LegendaryGun.mod.json
create mode 100644 elements/Legendarymaterialpack.mod.json
create mode 100644 elements/LightSaber.mod.json
create mode 100644 elements/LightsaberCrafting.mod.json
create mode 100644 elements/M4.mod.json
create mode 100644 elements/M4Blueprint.mod.json
create mode 100644 elements/M4Smithing.mod.json
create mode 100644 elements/M4WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/M4autofire.mod.json
create mode 100644 elements/M4bpCrafting.mod.json
create mode 100644 elements/M4fire.mod.json
create mode 100644 elements/M4firerandom.mod.json
create mode 100644 elements/M60.mod.json
create mode 100644 elements/M60Blueprint.mod.json
create mode 100644 elements/M60Smithing.mod.json
create mode 100644 elements/M60WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/M60autofire.mod.json
create mode 100644 elements/M60bpCrafting.mod.json
create mode 100644 elements/M60fire.mod.json
create mode 100644 elements/M79.mod.json
create mode 100644 elements/M79Blueprint.mod.json
create mode 100644 elements/M79Smithing.mod.json
create mode 100644 elements/M79WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/M79bpCrafting.mod.json
create mode 100644 elements/M79fire.mod.json
create mode 100644 elements/M79ui.mod.json
create mode 100644 elements/M79uiXianShiYouXiNeiDieJiaCeng.mod.json
create mode 100644 elements/M870.mod.json
create mode 100644 elements/M870Blueprint.mod.json
create mode 100644 elements/M870Smithing.mod.json
create mode 100644 elements/M870WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/M870bpCrafting.mod.json
create mode 100644 elements/M870fire.mod.json
create mode 100644 elements/M89bSmithing.mod.json
create mode 100644 elements/M98b.mod.json
create mode 100644 elements/M98bBlueprint.mod.json
create mode 100644 elements/M98bWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/M98bbpCrafting.mod.json
create mode 100644 elements/M98bfire.mod.json
create mode 100644 elements/Marlin.mod.json
create mode 100644 elements/MarlinBlueprint.mod.json
create mode 100644 elements/MarlinSmithing.mod.json
create mode 100644 elements/MarlinWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Marlinbpcrafting.mod.json
create mode 100644 elements/Marlinfire.mod.json
create mode 100644 elements/Medexp.mod.json
create mode 100644 elements/Mediumexp.mod.json
create mode 100644 elements/Mianyishanghai.mod.json
create mode 100644 elements/Mine.mod.json
create mode 100644 elements/Minigun.mod.json
create mode 100644 elements/MinigunBlueprint.mod.json
create mode 100644 elements/MinigunSmithing.mod.json
create mode 100644 elements/Minigunautofire.mod.json
create mode 100644 elements/MinigunbpCrafting.mod.json
create mode 100644 elements/Minigunfire.mod.json
create mode 100644 elements/Miniguninbackpack.mod.json
create mode 100644 elements/Mk14.mod.json
create mode 100644 elements/Mk14Blueprint.mod.json
create mode 100644 elements/Mk14Smithing.mod.json
create mode 100644 elements/Mk14WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Mk14autofire.mod.json
create mode 100644 elements/Mk14bpCrafting.mod.json
create mode 100644 elements/Mk14fire.mod.json
create mode 100644 elements/MoratrBasePlate.mod.json
create mode 100644 elements/Mortar.mod.json
create mode 100644 elements/MortarAngle.mod.json
create mode 100644 elements/MortarBarrelCrafting.mod.json
create mode 100644 elements/MortarBasePlateCrafting.mod.json
create mode 100644 elements/MortarBipodCrafting.mod.json
create mode 100644 elements/MortarCrafting.mod.json
create mode 100644 elements/MortarDangXiaoShiShiJianDaoShi.mod.json
create mode 100644 elements/MortarDepolyer.mod.json
create mode 100644 elements/MortarGUI.mod.json
create mode 100644 elements/MortarGUIGaiGUIDaKaiShi.mod.json
create mode 100644 elements/MortarGUIGaiGUIDaKaiShiMeiKeFaSheng.mod.json
create mode 100644 elements/MortarHEShells.mod.json
create mode 100644 elements/MortarPitch.mod.json
create mode 100644 elements/MortarShell.mod.json
create mode 100644 elements/MortarShellDanSheWuFeiXingShiMeiKeFaSheng.mod.json
create mode 100644 elements/MortarShellDanSheWuJiZhongShiTiShi.mod.json
create mode 100644 elements/MortarShells.mod.json
create mode 100644 elements/MortarShiTiChuShiShengChengShi.mod.json
create mode 100644 elements/MortarYouJiShiTiShi.mod.json
create mode 100644 elements/Mortarbarrel.mod.json
create mode 100644 elements/Mortarbipod.mod.json
create mode 100644 elements/MotarGUITick.mod.json
create mode 100644 elements/MotarPitch.mod.json
create mode 100644 elements/NetheriteAction.mod.json
create mode 100644 elements/NetheriteActionCrafting.mod.json
create mode 100644 elements/NetheriteBarrel.mod.json
create mode 100644 elements/NetheriteBarrelSmithing.mod.json
create mode 100644 elements/NetheriteSpring.mod.json
create mode 100644 elements/NetheriteSpringCrafting.mod.json
create mode 100644 elements/NetheriteTrigger.mod.json
create mode 100644 elements/NetheriteTriggerCrafting.mod.json
create mode 100644 elements/OutZoom.mod.json
create mode 100644 elements/PlayerReload.mod.json
create mode 100644 elements/PlayerRespawnReward.mod.json
create mode 100644 elements/Playertick.mod.json
create mode 100644 elements/PrepareToZoom.mod.json
create mode 100644 elements/PressFire.mod.json
create mode 100644 elements/PullXiaoGuoChiXuShiMeiKeFaSheng.mod.json
create mode 100644 elements/Quxiaoshanghai.mod.json
create mode 100644 elements/Quxiaowafangkuai.mod.json
create mode 100644 elements/RPKBlueprint.mod.json
create mode 100644 elements/RareChest.mod.json
create mode 100644 elements/RareChest10.mod.json
create mode 100644 elements/RareChest2.mod.json
create mode 100644 elements/RareChest3.mod.json
create mode 100644 elements/RareChest4.mod.json
create mode 100644 elements/RareChest5.mod.json
create mode 100644 elements/RareChest6.mod.json
create mode 100644 elements/RareChest7.mod.json
create mode 100644 elements/RareChest8.mod.json
create mode 100644 elements/RareChest9.mod.json
create mode 100644 elements/Rarematerialpack.mod.json
create mode 100644 elements/Reload.mod.json
create mode 100644 elements/Reload1.mod.json
create mode 100644 elements/Reload2.mod.json
create mode 100644 elements/Reloading.mod.json
create mode 100644 elements/Reloadsoundstop.mod.json
create mode 100644 elements/Rengchumortar.mod.json
create mode 100644 elements/RifleAmmo.mod.json
create mode 100644 elements/RifleAmmoBox.mod.json
create mode 100644 elements/RifleAmmoBoxCrafting.mod.json
create mode 100644 elements/RifleAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
create mode 100644 elements/RifleAmmoCrafting.mod.json
create mode 100644 elements/RifleAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
create mode 100644 elements/RleaseFire.mod.json
create mode 100644 elements/RmpCrafting.mod.json
create mode 100644 elements/Rocket.mod.json
create mode 100644 elements/RocketCrafting.mod.json
create mode 100644 elements/RocketHit.mod.json
create mode 100644 elements/RocketShiTiBeiGongJuJiZhongShi.mod.json
create mode 100644 elements/Rocketborn.mod.json
create mode 100644 elements/Rpg.mod.json
create mode 100644 elements/RpgBlueprint.mod.json
create mode 100644 elements/RpgRocket.mod.json
create mode 100644 elements/RpgRocketDanSheWuFeiXingShiMeiKeFaSheng.mod.json
create mode 100644 elements/RpgRocketDanSheWuJiZhongFangKuaiShi.mod.json
create mode 100644 elements/RpgSmithing.mod.json
create mode 100644 elements/RpgbpCrafting.mod.json
create mode 100644 elements/Rpgempty.mod.json
create mode 100644 elements/Rpgfire.mod.json
create mode 100644 elements/Rpk.mod.json
create mode 100644 elements/RpkSmithing.mod.json
create mode 100644 elements/RpkWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Rpkautofire.mod.json
create mode 100644 elements/RpkbpCrafting.mod.json
create mode 100644 elements/Rpkfire.mod.json
create mode 100644 elements/SKSBlueprint.mod.json
create mode 100644 elements/Sandbag.mod.json
create mode 100644 elements/SandbagCrafting.mod.json
create mode 100644 elements/Scheelite.mod.json
create mode 100644 elements/ScheeliteOre.mod.json
create mode 100644 elements/Senpai.mod.json
create mode 100644 elements/SenpaiDangShiTiGengXinKeShi.mod.json
create mode 100644 elements/Sentinel.mod.json
create mode 100644 elements/SentinelBlueprint.mod.json
create mode 100644 elements/SentinelFire.mod.json
create mode 100644 elements/SentinelSmithing.mod.json
create mode 100644 elements/SentinelWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/SentinelbpCrafting.mod.json
create mode 100644 elements/Shock.mod.json
create mode 100644 elements/ShockDangYaoShuiXiaoGuoKaiShiYingYongShi.mod.json
create mode 100644 elements/ShockZaiXiaoGuoChiXuShiMeiKeFaSheng.mod.json
create mode 100644 elements/Shockcamera.mod.json
create mode 100644 elements/ShotgunAmmo.mod.json
create mode 100644 elements/ShotgunAmmoBox.mod.json
create mode 100644 elements/ShotgunAmmoBoxCrafting.mod.json
create mode 100644 elements/ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
create mode 100644 elements/ShotgunAmmoCrafting.mod.json
create mode 100644 elements/ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
create mode 100644 elements/ShotgunReload1.mod.json
create mode 100644 elements/ShotgunReload2.mod.json
create mode 100644 elements/Sks.mod.json
create mode 100644 elements/SksDs.mod.json
create mode 100644 elements/SksSmithing.mod.json
create mode 100644 elements/SksWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/SksbpCrafting.mod.json
create mode 100644 elements/Sksfire.mod.json
create mode 100644 elements/SmpCrafting.mod.json
create mode 100644 elements/SniperAmmo.mod.json
create mode 100644 elements/SniperAmmoBox.mod.json
create mode 100644 elements/SniperAmmoBoxCrafting.mod.json
create mode 100644 elements/SniperAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
create mode 100644 elements/SniperAmmoCrafting.mod.json
create mode 100644 elements/SniperAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
create mode 100644 elements/SniperReload1.mod.json
create mode 100644 elements/SniperReload2.mod.json
create mode 100644 elements/SoulsteelIngot.mod.json
create mode 100644 elements/SoulsteelIngotCrafting.mod.json
create mode 100644 elements/SoulsteelNuggetCrafting.mod.json
create mode 100644 elements/Soulsteelnugget.mod.json
create mode 100644 elements/Specialgun.mod.json
create mode 100644 elements/Specialmaterialpack.mod.json
create mode 100644 elements/SpecialmaterialpackCrafting.mod.json
create mode 100644 elements/Spread.mod.json
create mode 100644 elements/SpyglassRange.mod.json
create mode 100644 elements/SpyglassRangeXianShiYouXiNeiDieJiaCeng.mod.json
create mode 100644 elements/SteelAction.mod.json
create mode 100644 elements/SteelActionCrafting.mod.json
create mode 100644 elements/SteelBarrel.mod.json
create mode 100644 elements/SteelBarrelCrafting.mod.json
create mode 100644 elements/SteelSpring.mod.json
create mode 100644 elements/SteelSpringCrafting.mod.json
create mode 100644 elements/SteelTrigger.mod.json
create mode 100644 elements/SteelTriggerCrafting.mod.json
create mode 100644 elements/Svd.mod.json
create mode 100644 elements/SvdBlueprint.mod.json
create mode 100644 elements/SvdDs.mod.json
create mode 100644 elements/SvdSmithing.mod.json
create mode 100644 elements/SvdWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/SvdbpCrafting.mod.json
create mode 100644 elements/Svdfire.mod.json
create mode 100644 elements/TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/Target.mod.json
create mode 100644 elements/Target1.mod.json
create mode 100644 elements/Target1DangShiTiGengXinKeShi.mod.json
create mode 100644 elements/Target1DangShiTiShouShangShi.mod.json
create mode 100644 elements/Target1DangYouJiShiTiShi.mod.json
create mode 100644 elements/Target1ShiTiChuShiShengChengShi.mod.json
create mode 100644 elements/Target1ShiXinPengZhuangXiangTiaoJian.mod.json
create mode 100644 elements/TargetCrafting.mod.json
create mode 100644 elements/TargetItem.mod.json
create mode 100644 elements/Targetdeployer.mod.json
create mode 100644 elements/TargetdeployerDangYouJianDianJiFangKuaiShi.mod.json
create mode 100644 elements/Taser.mod.json
create mode 100644 elements/TaserBlueprint.mod.json
create mode 100644 elements/TaserBulletDangTouZhiWuJiZhongShiTiShi.mod.json
create mode 100644 elements/TaserBulletProjectile.mod.json
create mode 100644 elements/TaserBulletTouZhiWuFeiXingKe.mod.json
create mode 100644 elements/TaserElectrode.mod.json
create mode 100644 elements/TaserElectrodeCrafting.mod.json
create mode 100644 elements/TaserSmithing.mod.json
create mode 100644 elements/TaserbpCrafting.mod.json
create mode 100644 elements/Tasercooldown.mod.json
create mode 100644 elements/Taserfire.mod.json
create mode 100644 elements/TbpCrafting.mod.json
create mode 100644 elements/ToZoom.mod.json
create mode 100644 elements/Trachelium.mod.json
create mode 100644 elements/TracheliumBlueprint.mod.json
create mode 100644 elements/TracheliumSmithing.mod.json
create mode 100644 elements/Tracheliumfire.mod.json
create mode 100644 elements/TungstenBlasting.mod.json
create mode 100644 elements/TungstenIngot.mod.json
create mode 100644 elements/TungstenPowder.mod.json
create mode 100644 elements/TungstenPowderCrafting.mod.json
create mode 100644 elements/UccpCrafting.mod.json
create mode 100644 elements/Unblastedcementedcarbidepodwer.mod.json
create mode 100644 elements/Unsprintable.mod.json
create mode 100644 elements/VecBurstFire.mod.json
create mode 100644 elements/Vecautofire.mod.json
create mode 100644 elements/Vecfire.mod.json
create mode 100644 elements/Vector.mod.json
create mode 100644 elements/VectorBlueprint.mod.json
create mode 100644 elements/VectorSmithing.mod.json
create mode 100644 elements/VectorWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
create mode 100644 elements/VectorbpCrafting.mod.json
create mode 100644 elements/WeaponDraw.mod.json
create mode 100644 elements/WeaponDrawLight.mod.json
create mode 100644 elements/WeaponLevel.mod.json
create mode 100644 elements/WeaponMove.mod.json
create mode 100644 elements/WeaponSway.mod.json
create mode 100644 elements/WeaponZom.mod.json
create mode 100644 elements/Weapondrawhavey.mod.json
create mode 100644 elements/Weaponfire.mod.json
create mode 100644 elements/Zoom.mod.json
create mode 100644 gradle.properties
create mode 100644 gradle/wrapper/gradle-wrapper.properties
create mode 100644 gradlew
create mode 100644 gradlew.bat
create mode 100644 mcreator.gradle
create mode 100644 models/ammobox.json
create mode 100644 models/ammobox.json.textures
create mode 100644 models/claymore.json
create mode 100644 models/claymore.json.textures
create mode 100644 models/gungranade.json
create mode 100644 models/gungranade.json.textures
create mode 100644 models/hammer.json
create mode 100644 models/hammer.json.textures
create mode 100644 models/hammer2.json
create mode 100644 models/hammer2.json.textures
create mode 100644 models/handgunammobox.json
create mode 100644 models/handgunammobox.json.textures
create mode 100644 models/mojmap-1.20.x/ModelGrenade.java
create mode 100644 models/mojmap-1.20.x/Modelbocekarrow.java
create mode 100644 models/mojmap-1.20.x/Modelbullet.java
create mode 100644 models/mojmap-1.20.x/Modelclaymore.java
create mode 100644 models/mojmap-1.20.x/Modelmortar_shell_Converted.java
create mode 100644 models/mojmap-1.20.x/Modelrpg7_rocket_Converted.java
create mode 100644 models/mojmap-1.20.x/Modeltaser_rod.java
create mode 100644 models/pad.json
create mode 100644 models/pad.json.textures
create mode 100644 models/rifleammobox.json
create mode 100644 models/rifleammobox.json.textures
create mode 100644 models/shotgunammobox.json
create mode 100644 models/shotgunammobox.json.textures
create mode 100644 models/sniperammobox.json
create mode 100644 models/sniperammobox.json.textures
create mode 100644 models/taser_electrode.json
create mode 100644 models/taser_electrode.json.textures
create mode 100644 models/tiesiwang.json
create mode 100644 models/tiesiwang.json.textures
create mode 100644 settings.gradle
create mode 100644 src/main/java/net/mcreator/target/TargetMod.java
create mode 100644 src/main/java/net/mcreator/target/block/BarbedWireBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/DeepslateGalenaOreBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/DeepslateScheeliteOreBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/GalenaOreBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/GunRecycleBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/JumppadBlockBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/SandbagBlock.java
create mode 100644 src/main/java/net/mcreator/target/block/ScheeliteOreBlock.java
create mode 100644 src/main/java/net/mcreator/target/client/ClickHandler.java
create mode 100644 src/main/java/net/mcreator/target/client/CrossHairHandler.java
create mode 100644 src/main/java/net/mcreator/target/client/RenderHandler.java
create mode 100644 src/main/java/net/mcreator/target/client/gui/GunRecycleGuiScreen.java
create mode 100644 src/main/java/net/mcreator/target/client/gui/MortarGUIScreen.java
create mode 100644 src/main/java/net/mcreator/target/client/gui/RangeHelper.java
create mode 100644 src/main/java/net/mcreator/target/client/model/ModelGrenade.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelbasketball.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelbocekarrow.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelbulle.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelbullet.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelclaymore.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelmissile.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelmortar_shell_Converted.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modelrpg7_rocket_Converted.java
create mode 100644 src/main/java/net/mcreator/target/client/model/Modeltaser_rod.java
create mode 100644 src/main/java/net/mcreator/target/client/particle/BulltholeParticle.java
create mode 100644 src/main/java/net/mcreator/target/client/particle/FirestarParticle.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/BocekarrowRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/BulletRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/ClaymoreRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/GunGrenadeRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/MortarRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/MortarShellRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/ProjectileRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/RpgRocketRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/SenpaiRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/Target1Renderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/TargetRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/renderer/TaserBulletProjectileRenderer.java
create mode 100644 src/main/java/net/mcreator/target/client/screens/AmmobarOverlay.java
create mode 100644 src/main/java/net/mcreator/target/client/screens/CrosshairOverlay.java
create mode 100644 src/main/java/net/mcreator/target/client/screens/M79uiOverlay.java
create mode 100644 src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java
create mode 100644 src/main/java/net/mcreator/target/command/BigexpCommand.java
create mode 100644 src/main/java/net/mcreator/target/command/MediumexpCommand.java
create mode 100644 src/main/java/net/mcreator/target/entity/BocekarrowEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/BulletEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/ClaymoreEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/MortarEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/MortarShellEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/ProjectileEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/RpgRocketEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/SenpaiEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/Target1Entity.java
create mode 100644 src/main/java/net/mcreator/target/entity/TargetEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java
create mode 100644 src/main/java/net/mcreator/target/entity/layer/TargetLayer.java
create mode 100644 src/main/java/net/mcreator/target/entity/model/ClaymoreModel.java
create mode 100644 src/main/java/net/mcreator/target/entity/model/MortarModel.java
create mode 100644 src/main/java/net/mcreator/target/entity/model/SenpaiModel.java
create mode 100644 src/main/java/net/mcreator/target/entity/model/Target1Model.java
create mode 100644 src/main/java/net/mcreator/target/entity/model/TargetModel.java
create mode 100644 src/main/java/net/mcreator/target/headshot/BasicHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/headshot/BoundingBoxManager.java
create mode 100644 src/main/java/net/mcreator/target/headshot/ChildHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/headshot/IHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/headshot/NoChildHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/headshot/NoChildRotatedHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/headshot/RotatedHeadshotBox.java
create mode 100644 src/main/java/net/mcreator/target/init/EntityAnimationFactory.java
create mode 100644 src/main/java/net/mcreator/target/init/ItemAnimationFactory.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetCustomModEntities.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetCustomModEntityRenderers.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModAttributes.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModBlocks.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModEntities.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModEntityRenderers.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModGunTabs.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModItems.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModKeyMappings.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModLootModifier.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModMenus.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModMobEffects.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModModels.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModParticleTypes.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModParticles.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModScreens.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModSounds.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModTabs.java
create mode 100644 src/main/java/net/mcreator/target/init/TargetModTrades.java
create mode 100644 src/main/java/net/mcreator/target/item/AK47BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/AK47Item.java
create mode 100644 src/main/java/net/mcreator/target/item/Aa12BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/Aa12Item.java
create mode 100644 src/main/java/net/mcreator/target/item/AbekiriItem.java
create mode 100644 src/main/java/net/mcreator/target/item/BocekBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/BocekItem.java
create mode 100644 src/main/java/net/mcreator/target/item/BuckshotItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CementedCarbideActionItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CementedCarbideBarrelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CementedCarbideIngotItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CementedcarbideTriggerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CementedcarbidespringItem.java
create mode 100644 src/main/java/net/mcreator/target/item/ClaymoreMineItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CoalIronPowderItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CoalPowderItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CommonmaterialpackItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CopperplateItem.java
create mode 100644 src/main/java/net/mcreator/target/item/CreativeAmmoBoxItem.java
create mode 100644 src/main/java/net/mcreator/target/item/DevotionBluprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/DevotionItem.java
create mode 100644 src/main/java/net/mcreator/target/item/EpicmaterialpackItem.java
create mode 100644 src/main/java/net/mcreator/target/item/FuseeItem.java
create mode 100644 src/main/java/net/mcreator/target/item/GalenaItem.java
create mode 100644 src/main/java/net/mcreator/target/item/Grenade40mmItem.java
create mode 100644 src/main/java/net/mcreator/target/item/HK416BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/HammerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/HandgunAmmoBoxItem.java
create mode 100644 src/main/java/net/mcreator/target/item/HandgunAmmoItem.java
create mode 100644 src/main/java/net/mcreator/target/item/Hk416Item.java
create mode 100644 src/main/java/net/mcreator/target/item/HuntingRifleBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/HuntingRifleItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IngotSteelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IronActionItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IronBarrelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IronPowderItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IronSpringItem.java
create mode 100644 src/main/java/net/mcreator/target/item/IronTriggerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/KRABERBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/KraberItem.java
create mode 100644 src/main/java/net/mcreator/target/item/LeadIngotItem.java
create mode 100644 src/main/java/net/mcreator/target/item/LegendarymaterialpackItem.java
create mode 100644 src/main/java/net/mcreator/target/item/LightSaberItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M4BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M4Item.java
create mode 100644 src/main/java/net/mcreator/target/item/M60BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M60Item.java
create mode 100644 src/main/java/net/mcreator/target/item/M79BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M79Item.java
create mode 100644 src/main/java/net/mcreator/target/item/M870BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M870Item.java
create mode 100644 src/main/java/net/mcreator/target/item/M98bBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/M98bItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MarlinBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MarlinItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MinigunBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MinigunItem.java
create mode 100644 src/main/java/net/mcreator/target/item/Mk14BlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/Mk14Item.java
create mode 100644 src/main/java/net/mcreator/target/item/MoratrBasePlateItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MortarDepolyerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MortarShellsItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MortarbarrelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/MortarbipodItem.java
create mode 100644 src/main/java/net/mcreator/target/item/NetheriteActionItem.java
create mode 100644 src/main/java/net/mcreator/target/item/NetheriteBarrelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/NetheriteSpringItem.java
create mode 100644 src/main/java/net/mcreator/target/item/NetheriteTriggerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RPKBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RarematerialpackItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RifleAmmoBoxItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RifleAmmoItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RocketItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RpgBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RpgItem.java
create mode 100644 src/main/java/net/mcreator/target/item/RpkItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SKSBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/ScheeliteItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SentinelBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SentinelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/ShotgunAmmoBoxItem.java
create mode 100644 src/main/java/net/mcreator/target/item/ShotgunAmmoItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SksItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SniperAmmoBoxItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SniperAmmoItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SoulsteelIngotItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SoulsteelnuggetItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SpecialmaterialpackItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SteelActionItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SteelBarrelItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SteelSpringItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SteelTriggerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SvdBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/SvdItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TargetdeployerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TaserBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TaserElectrodeItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TaserItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TracheliumBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TracheliumItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TungstenIngotItem.java
create mode 100644 src/main/java/net/mcreator/target/item/TungstenPowderItem.java
create mode 100644 src/main/java/net/mcreator/target/item/UnblastedcementedcarbidepodwerItem.java
create mode 100644 src/main/java/net/mcreator/target/item/VectorBlueprintItem.java
create mode 100644 src/main/java/net/mcreator/target/item/VectorItem.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/AK47Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/Aa12Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/AbekiriLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/BocekLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/DevotionLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/Hk416Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/HuntingRifleLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/KraberLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/LightSaberLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/M4Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/M60Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/M79Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/M870Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/M98bLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/MarlinLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/MinigunLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/Mk14Layer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/RpgLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/RpkLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/SentinelLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/SksLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/SvdLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/TracheliumLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/layer/VectorLayer.java
create mode 100644 src/main/java/net/mcreator/target/item/model/AK47ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/Aa12ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/AbekiriItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/BocekItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/DevotionItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/Hk416ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/HuntingRifleItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/KraberItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/LightSaberItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/M4ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/M60ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/M79ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/M870ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/M98bItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/MarlinItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/MinigunItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/Mk14ItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/RocketItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/RpgItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/RpkItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/SentinelItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/SksItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/SvdItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/TaserItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/TracheliumItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/model/VectorItemModel.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/AK47ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/Aa12ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/AbekiriItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/BocekItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/DevotionItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/Hk416ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/HuntingRifleItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/KraberItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/LightSaberItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/M4ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/M60ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/M79ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/M870ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/M98bItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/MarlinItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/MinigunItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/Mk14ItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/RocketItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/RpgItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/RpkItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/SentinelItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/SksItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/SvdItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/TaserItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/TracheliumItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/item/renderer/VectorItemRenderer.java
create mode 100644 src/main/java/net/mcreator/target/mixins/ClientboundSetEntityMotionPacketMixin.java
create mode 100644 src/main/java/net/mcreator/target/mixins/GameRendererMixin.java
create mode 100644 src/main/java/net/mcreator/target/mixins/MouseHandlerMixin.java
create mode 100644 src/main/java/net/mcreator/target/network/DoublejumpinputMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/FireMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/FiremodeMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/GunRecycleGuiButtonMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/MortarGUIButtonMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/ReloadMessage.java
create mode 100644 src/main/java/net/mcreator/target/network/TargetModVariables.java
create mode 100644 src/main/java/net/mcreator/target/network/ZoomMessage.java
create mode 100644 src/main/java/net/mcreator/target/potion/ShockMobEffect.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AK47WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AKfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Aa12WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Aa12autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Aa12fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AbkrfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AimingProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Ak47autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AkDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AmmobarXianShiYouXiNeiDieJiaCengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AmmoboxFangZhiFangKuaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AmmocountProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleAddMiniProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleAddPlusProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleAddProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleReduceMiniProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleReducePlusProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/AngleReduceProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ArDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ArrowdamageProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/As12DsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BarbedWireShiTiZaiFangKuaiZhongPengZhuangShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BazipengzhuangProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BocekreloadProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BowlooseProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BowpullanimProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BulletfireNormalProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/BullettestDanSheWuJiZhongFangKuaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/CannonAngleProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ChangefiremodeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ChangefirerateProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoreDamageProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoreDangShiTiGengXinKeShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoreDangShiTiSiWangShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoreYouJiShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ClaymoretimeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/CreativeAmmoBoxWanJiaWanChengShiYongWuPinShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/CrosshairXianShiYouXiNeiDieJiaCengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DamageProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DamageReduceProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DamageReplaceProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DevofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DevotionAutofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DevotionWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DevotiongfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DismantlePressProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DistantRangeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/DoublejumpProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/EntityRangeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/FiretimeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GroundProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunGrenadeDanSheWuFeiXingShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunGrenadeDanSheWuJiZhongFangKuaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunGrenadeDanSheWuJiZhongShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunRecoilProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunpickupProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunsDataProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunsDevProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/GunsTipsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HandgunAmmoBoxWanJiaWanChengShiYongWuPinShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HandgunAmmoYouJiKongQiShiShiTiDeWeiZhiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HandgunReload1Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HandgunReload2Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Hitindication2Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HitindicationProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Hk416WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Hk416autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Hk416fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Hk416firerandomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HkDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HrfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HrrelodingProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HugeexpProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/HurtcancelProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/KillindicationProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/KraberDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/KraberWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/KraberfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M4WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M4autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M4fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M4firerandomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M60WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M60autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M60fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M79WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M79fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M79uiXianShiYouXiNeiDieJiaCengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M870WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M870fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M98bWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/M98bfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MarlinWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MarlinfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MedexpProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MianyishanghaiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MinigunautofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MinigunfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MiniguninbackpackProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Mk14WuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Mk14autofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Mk14fireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarAngleProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarDangXiaoShiShiJianDaoShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarGUIGaiGUIDaKaiShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarGUIGaiGUIDaKaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarPitchProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarShellDanSheWuFeiXingShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarShellDanSheWuJiZhongShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarShiTiChuShiShengChengShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MortarYouJiShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/MotarGUITickProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/OutZoomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PlayerReloadProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PlayerRespawnRewardProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PlayertickProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PrepareToZoomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PressFireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/PullXiaoGuoChiXuShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/QuxiaoshanghaiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/QuxiaowafangkuaiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Reload1Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Reload2Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ReloadingProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ReloadsoundstopProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RengchumortarProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RifleAmmoBoxWanJiaWanChengShiYongWuPinShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RifleAmmoYouJiKongQiShiShiTiDeWeiZhiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RleaseFireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RocketHitProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RocketShiTiBeiGongJuJiZhongShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RocketbornProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpgemptyProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpgfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpkautofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/RpkfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SenpaiDangShiTiGengXinKeShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SentinelFireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SentinelWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShockDangYaoShuiXiaoGuoKaiShiYingYongShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShockZaiXiaoGuoChiXuShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShockcameraProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShotgunReload1Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ShotgunReload2Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SksDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SksWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SksfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SniperAmmoBoxWanJiaWanChengShiYongWuPinShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SniperAmmoYouJiKongQiShiShiTiDeWeiZhiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SniperReload1Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SniperReload2Procedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SvdDsProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SvdWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/SvdfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Target1DangShiTiGengXinKeShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Target1DangShiTiShouShangShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Target1DangYouJiShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Target1ShiTiChuShiShengChengShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/Target1ShiXinPengZhuangXiangTiaoJianProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TargetdeployerDangYouJianDianJiFangKuaiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TaserBulletDangTouZhiWuJiZhongShiTiShiProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TaserBulletTouZhiWuFeiXingKeProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TasercooldownProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TaserfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/ToZoomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/TracheliumfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/UnsprintableProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/VecBurstFireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/VecautofireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/VecfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/VectorWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponDrawLightProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponDrawProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponLevelProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponMoveProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponSwayProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponZomProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeapondrawhaveyProcedure.java
create mode 100644 src/main/java/net/mcreator/target/procedures/WeaponfireProcedure.java
create mode 100644 src/main/java/net/mcreator/target/rarity/RarityTool.java
create mode 100644 src/main/java/net/mcreator/target/tools/ItemNBTTool.java
create mode 100644 src/main/java/net/mcreator/target/utils/AnimUtils.java
create mode 100644 src/main/java/net/mcreator/target/world/inventory/GunRecycleGuiMenu.java
create mode 100644 src/main/java/net/mcreator/target/world/inventory/MortarGUIMenu.java
create mode 100644 src/main/resources/META-INF/accesstransformer.cfg
create mode 100644 src/main/resources/META-INF/mods.toml
create mode 100644 src/main/resources/assets/minecraft/optifine/emissive.properties
create mode 100644 src/main/resources/assets/target/animations/aa12.animation.json
create mode 100644 src/main/resources/assets/target/animations/abekiri.animation.json
create mode 100644 src/main/resources/assets/target/animations/ak.animation.json
create mode 100644 src/main/resources/assets/target/animations/bocek.animation.json
create mode 100644 src/main/resources/assets/target/animations/claymore.animation.json
create mode 100644 src/main/resources/assets/target/animations/devotion.animation.json
create mode 100644 src/main/resources/assets/target/animations/hk416.animation.json
create mode 100644 src/main/resources/assets/target/animations/hunting_rifle.animation.json
create mode 100644 src/main/resources/assets/target/animations/kraber.animation.json
create mode 100644 src/main/resources/assets/target/animations/lightsaber.animation.json
create mode 100644 src/main/resources/assets/target/animations/m4.animation.json
create mode 100644 src/main/resources/assets/target/animations/m60.animation.json
create mode 100644 src/main/resources/assets/target/animations/m79.animation.json
create mode 100644 src/main/resources/assets/target/animations/m870.animation.json
create mode 100644 src/main/resources/assets/target/animations/m98b.animation.json
create mode 100644 src/main/resources/assets/target/animations/marlin.animation.json
create mode 100644 src/main/resources/assets/target/animations/minigun.animation.json
create mode 100644 src/main/resources/assets/target/animations/mk14ebr.animation.json
create mode 100644 src/main/resources/assets/target/animations/mortar.animation.json
create mode 100644 src/main/resources/assets/target/animations/pad.animation.json
create mode 100644 src/main/resources/assets/target/animations/r870.animation.json
create mode 100644 src/main/resources/assets/target/animations/rpg.animation.json
create mode 100644 src/main/resources/assets/target/animations/rpg.head.animation.json
create mode 100644 src/main/resources/assets/target/animations/rpk.animation.json
create mode 100644 src/main/resources/assets/target/animations/senpai.animation.json
create mode 100644 src/main/resources/assets/target/animations/sentinel.animation.json
create mode 100644 src/main/resources/assets/target/animations/sks.animation.json
create mode 100644 src/main/resources/assets/target/animations/svd.animation.json
create mode 100644 src/main/resources/assets/target/animations/target.animation.json
create mode 100644 src/main/resources/assets/target/animations/target2.animation.json
create mode 100644 src/main/resources/assets/target/animations/taser.animation.json
create mode 100644 src/main/resources/assets/target/animations/trachelium.animation.json
create mode 100644 src/main/resources/assets/target/animations/vector.animation.json
create mode 100644 src/main/resources/assets/target/blockstates/barbed_wire.json
create mode 100644 src/main/resources/assets/target/blockstates/deepslate_galena_ore.json
create mode 100644 src/main/resources/assets/target/blockstates/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/assets/target/blockstates/galena_ore.json
create mode 100644 src/main/resources/assets/target/blockstates/gun_recycle.json
create mode 100644 src/main/resources/assets/target/blockstates/jumppad_block.json
create mode 100644 src/main/resources/assets/target/blockstates/sandbag.json
create mode 100644 src/main/resources/assets/target/blockstates/scheelite_ore.json
create mode 100644 src/main/resources/assets/target/geo/aa12.geo.json
create mode 100644 src/main/resources/assets/target/geo/abekiri.geo.json
create mode 100644 src/main/resources/assets/target/geo/ak.geo.json
create mode 100644 src/main/resources/assets/target/geo/bocek.geo.json
create mode 100644 src/main/resources/assets/target/geo/claymore.geo.json
create mode 100644 src/main/resources/assets/target/geo/devotion.geo.json
create mode 100644 src/main/resources/assets/target/geo/hk416.geo.json
create mode 100644 src/main/resources/assets/target/geo/hunting_rifle.geo.json
create mode 100644 src/main/resources/assets/target/geo/kraber.geo.json
create mode 100644 src/main/resources/assets/target/geo/lightsaber.geo.json
create mode 100644 src/main/resources/assets/target/geo/m4.geo.json
create mode 100644 src/main/resources/assets/target/geo/m60.geo.json
create mode 100644 src/main/resources/assets/target/geo/m79.geo.json
create mode 100644 src/main/resources/assets/target/geo/m870.geo.json
create mode 100644 src/main/resources/assets/target/geo/m98b.geo.json
create mode 100644 src/main/resources/assets/target/geo/marlin.geo.json
create mode 100644 src/main/resources/assets/target/geo/minigun.geo.json
create mode 100644 src/main/resources/assets/target/geo/mk14ebr.geo.json
create mode 100644 src/main/resources/assets/target/geo/mortar.geo.json
create mode 100644 src/main/resources/assets/target/geo/rpg.geo.json
create mode 100644 src/main/resources/assets/target/geo/rpg.head.geo.json
create mode 100644 src/main/resources/assets/target/geo/rpk.geo.json
create mode 100644 src/main/resources/assets/target/geo/senpai.geo.json
create mode 100644 src/main/resources/assets/target/geo/sentinel.geo.json
create mode 100644 src/main/resources/assets/target/geo/sks.geo.json
create mode 100644 src/main/resources/assets/target/geo/svd.geo.json
create mode 100644 src/main/resources/assets/target/geo/target.geo.json
create mode 100644 src/main/resources/assets/target/geo/target2.geo.json
create mode 100644 src/main/resources/assets/target/geo/taser.geo.json
create mode 100644 src/main/resources/assets/target/geo/trachelium.geo.json
create mode 100644 src/main/resources/assets/target/geo/vector.geo.json
create mode 100644 src/main/resources/assets/target/lang/en_us.json
create mode 100644 src/main/resources/assets/target/lang/zh_cn.json
create mode 100644 src/main/resources/assets/target/models/block/barbed_wire.json
create mode 100644 src/main/resources/assets/target/models/block/deepslate_galena_ore.json
create mode 100644 src/main/resources/assets/target/models/block/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/assets/target/models/block/galena_ore.json
create mode 100644 src/main/resources/assets/target/models/block/gun_recycle.json
create mode 100644 src/main/resources/assets/target/models/block/jumppad_block.json
create mode 100644 src/main/resources/assets/target/models/block/sandbag.json
create mode 100644 src/main/resources/assets/target/models/block/scheelite_ore.json
create mode 100644 src/main/resources/assets/target/models/custom/ammobox.json
create mode 100644 src/main/resources/assets/target/models/custom/bullet.json
create mode 100644 src/main/resources/assets/target/models/custom/claymore.json
create mode 100644 src/main/resources/assets/target/models/custom/grenade.json
create mode 100644 src/main/resources/assets/target/models/custom/gungranade.json
create mode 100644 src/main/resources/assets/target/models/custom/hammer.json
create mode 100644 src/main/resources/assets/target/models/custom/hammer2.json
create mode 100644 src/main/resources/assets/target/models/custom/handgunammobox.json
create mode 100644 src/main/resources/assets/target/models/custom/pad.json
create mode 100644 src/main/resources/assets/target/models/custom/rifleammobox.json
create mode 100644 src/main/resources/assets/target/models/custom/rpg7_rocket.json
create mode 100644 src/main/resources/assets/target/models/custom/shotgunammobox.json
create mode 100644 src/main/resources/assets/target/models/custom/sniperammobox.json
create mode 100644 src/main/resources/assets/target/models/custom/stim.json
create mode 100644 src/main/resources/assets/target/models/custom/taser_electrode.json
create mode 100644 src/main/resources/assets/target/models/custom/tiesiwang.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/aa12.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/abekiri.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/ak47.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/bocek.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/claymore.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/detonator.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/devotion.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/hk416.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/hunting_rifle.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/kraber.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/lightsaber.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/m4.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/m60.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/m79.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/m98b.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/marlin.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/minigun.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/mk14ebr.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/rpg.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/rpg_head.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/rpk.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/sentinel.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/sks.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/svd.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/taser.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/trachelium.item.json
create mode 100644 src/main/resources/assets/target/models/displaysettings/vector.item.json
create mode 100644 src/main/resources/assets/target/models/item/aa123d.json
create mode 100644 src/main/resources/assets/target/models/item/aa_12.json
create mode 100644 src/main/resources/assets/target/models/item/aa_12_base.json
create mode 100644 src/main/resources/assets/target/models/item/aa_12_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/aa_12_icon.json
create mode 100644 src/main/resources/assets/target/models/item/abekiri.json
create mode 100644 src/main/resources/assets/target/models/item/abekiri3d.json
create mode 100644 src/main/resources/assets/target/models/item/abekiri_base.json
create mode 100644 src/main/resources/assets/target/models/item/ak_47.json
create mode 100644 src/main/resources/assets/target/models/item/ak_473d.json
create mode 100644 src/main/resources/assets/target/models/item/ak_47_base.json
create mode 100644 src/main/resources/assets/target/models/item/ak_47_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/ak_47_icon.json
create mode 100644 src/main/resources/assets/target/models/item/barbed_wire.json
create mode 100644 src/main/resources/assets/target/models/item/bocek.json
create mode 100644 src/main/resources/assets/target/models/item/bocek3d.json
create mode 100644 src/main/resources/assets/target/models/item/bocek_base.json
create mode 100644 src/main/resources/assets/target/models/item/bocek_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/bocek_icon.json
create mode 100644 src/main/resources/assets/target/models/item/buckshot.json
create mode 100644 src/main/resources/assets/target/models/item/cemented_carbide_action.json
create mode 100644 src/main/resources/assets/target/models/item/cemented_carbide_barrel.json
create mode 100644 src/main/resources/assets/target/models/item/cemented_carbide_ingot.json
create mode 100644 src/main/resources/assets/target/models/item/cementedcarbide_trigger.json
create mode 100644 src/main/resources/assets/target/models/item/cementedcarbidespring.json
create mode 100644 src/main/resources/assets/target/models/item/claymore_mine.json
create mode 100644 src/main/resources/assets/target/models/item/coal_iron_powder.json
create mode 100644 src/main/resources/assets/target/models/item/coal_powder.json
create mode 100644 src/main/resources/assets/target/models/item/commonmaterialpack.json
create mode 100644 src/main/resources/assets/target/models/item/copperplate.json
create mode 100644 src/main/resources/assets/target/models/item/creative_ammo_box.json
create mode 100644 src/main/resources/assets/target/models/item/deepslate_galena_ore.json
create mode 100644 src/main/resources/assets/target/models/item/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/assets/target/models/item/devotion.json
create mode 100644 src/main/resources/assets/target/models/item/devotion3d.json
create mode 100644 src/main/resources/assets/target/models/item/devotion_base.json
create mode 100644 src/main/resources/assets/target/models/item/devotion_bluprint.json
create mode 100644 src/main/resources/assets/target/models/item/devotion_icon.json
create mode 100644 src/main/resources/assets/target/models/item/epicmaterialpack.json
create mode 100644 src/main/resources/assets/target/models/item/fusee.json
create mode 100644 src/main/resources/assets/target/models/item/galena.json
create mode 100644 src/main/resources/assets/target/models/item/galena_ore.json
create mode 100644 src/main/resources/assets/target/models/item/grenade_40mm.json
create mode 100644 src/main/resources/assets/target/models/item/gun_recycle.json
create mode 100644 src/main/resources/assets/target/models/item/hammer.json
create mode 100644 src/main/resources/assets/target/models/item/handgun_ammo.json
create mode 100644 src/main/resources/assets/target/models/item/handgun_ammo_box.json
create mode 100644 src/main/resources/assets/target/models/item/hk4163d.json
create mode 100644 src/main/resources/assets/target/models/item/hk416_base.json
create mode 100644 src/main/resources/assets/target/models/item/hk416_icon.json
create mode 100644 src/main/resources/assets/target/models/item/hk_416.json
create mode 100644 src/main/resources/assets/target/models/item/hk_416_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/hunting_rifle.json
create mode 100644 src/main/resources/assets/target/models/item/hunting_rifle3d.json
create mode 100644 src/main/resources/assets/target/models/item/hunting_rifle_base.json
create mode 100644 src/main/resources/assets/target/models/item/hunting_rifle_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/hunting_rifle_icon.json
create mode 100644 src/main/resources/assets/target/models/item/ingot_steel.json
create mode 100644 src/main/resources/assets/target/models/item/iron_action.json
create mode 100644 src/main/resources/assets/target/models/item/iron_barrel.json
create mode 100644 src/main/resources/assets/target/models/item/iron_powder.json
create mode 100644 src/main/resources/assets/target/models/item/iron_spring.json
create mode 100644 src/main/resources/assets/target/models/item/iron_trigger.json
create mode 100644 src/main/resources/assets/target/models/item/jumppad_block.json
create mode 100644 src/main/resources/assets/target/models/item/kraber.json
create mode 100644 src/main/resources/assets/target/models/item/kraber3d.json
create mode 100644 src/main/resources/assets/target/models/item/kraber_base.json
create mode 100644 src/main/resources/assets/target/models/item/kraber_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/kraber_icon.json
create mode 100644 src/main/resources/assets/target/models/item/lead_ingot.json
create mode 100644 src/main/resources/assets/target/models/item/legendarymaterialpack.json
create mode 100644 src/main/resources/assets/target/models/item/light_saber.json
create mode 100644 src/main/resources/assets/target/models/item/m43d.json
create mode 100644 src/main/resources/assets/target/models/item/m603d.json
create mode 100644 src/main/resources/assets/target/models/item/m793d.json
create mode 100644 src/main/resources/assets/target/models/item/m79_base.json
create mode 100644 src/main/resources/assets/target/models/item/m79icon.json
create mode 100644 src/main/resources/assets/target/models/item/m8703d.json
create mode 100644 src/main/resources/assets/target/models/item/m_4.json
create mode 100644 src/main/resources/assets/target/models/item/m_4_base.json
create mode 100644 src/main/resources/assets/target/models/item/m_4_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/m_4_icon.json
create mode 100644 src/main/resources/assets/target/models/item/m_60.json
create mode 100644 src/main/resources/assets/target/models/item/m_60_base.json
create mode 100644 src/main/resources/assets/target/models/item/m_60_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/m_60_icon.json
create mode 100644 src/main/resources/assets/target/models/item/m_79.json
create mode 100644 src/main/resources/assets/target/models/item/m_79_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/m_870.json
create mode 100644 src/main/resources/assets/target/models/item/m_870_base.json
create mode 100644 src/main/resources/assets/target/models/item/m_870_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/m_870_icon.json
create mode 100644 src/main/resources/assets/target/models/item/m_98b.json
create mode 100644 src/main/resources/assets/target/models/item/m_98b3d.json
create mode 100644 src/main/resources/assets/target/models/item/m_98b_base.json
create mode 100644 src/main/resources/assets/target/models/item/m_98b_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/m_98b_icon.json
create mode 100644 src/main/resources/assets/target/models/item/marlin.json
create mode 100644 src/main/resources/assets/target/models/item/marlin3d.json
create mode 100644 src/main/resources/assets/target/models/item/marlin_base.json
create mode 100644 src/main/resources/assets/target/models/item/marlin_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/marlin_icon.json
create mode 100644 src/main/resources/assets/target/models/item/minigun.json
create mode 100644 src/main/resources/assets/target/models/item/minigun3d.json
create mode 100644 src/main/resources/assets/target/models/item/minigun_base.json
create mode 100644 src/main/resources/assets/target/models/item/minigun_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/minigun_icon.json
create mode 100644 src/main/resources/assets/target/models/item/mk_14.json
create mode 100644 src/main/resources/assets/target/models/item/mk_143d.json
create mode 100644 src/main/resources/assets/target/models/item/mk_14_base.json
create mode 100644 src/main/resources/assets/target/models/item/mk_14_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/mk_14_icon.json
create mode 100644 src/main/resources/assets/target/models/item/moratr_base_plate.json
create mode 100644 src/main/resources/assets/target/models/item/mortar_depolyer.json
create mode 100644 src/main/resources/assets/target/models/item/mortar_shells.json
create mode 100644 src/main/resources/assets/target/models/item/mortarbarrel.json
create mode 100644 src/main/resources/assets/target/models/item/mortarbipod.json
create mode 100644 src/main/resources/assets/target/models/item/netherite_action.json
create mode 100644 src/main/resources/assets/target/models/item/netherite_barrel.json
create mode 100644 src/main/resources/assets/target/models/item/netherite_spring.json
create mode 100644 src/main/resources/assets/target/models/item/netherite_trigger.json
create mode 100644 src/main/resources/assets/target/models/item/rarematerialpack.json
create mode 100644 src/main/resources/assets/target/models/item/rifle_ammo.json
create mode 100644 src/main/resources/assets/target/models/item/rifle_ammo_box.json
create mode 100644 src/main/resources/assets/target/models/item/rocket.json
create mode 100644 src/main/resources/assets/target/models/item/rpg.json
create mode 100644 src/main/resources/assets/target/models/item/rpg3d.json
create mode 100644 src/main/resources/assets/target/models/item/rpg_base.json
create mode 100644 src/main/resources/assets/target/models/item/rpg_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/rpg_icon.json
create mode 100644 src/main/resources/assets/target/models/item/rpk.json
create mode 100644 src/main/resources/assets/target/models/item/rpk3d.json
create mode 100644 src/main/resources/assets/target/models/item/rpk_base.json
create mode 100644 src/main/resources/assets/target/models/item/rpk_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/rpk_icon.json
create mode 100644 src/main/resources/assets/target/models/item/sandbag.json
create mode 100644 src/main/resources/assets/target/models/item/scheelite.json
create mode 100644 src/main/resources/assets/target/models/item/scheelite_ore.json
create mode 100644 src/main/resources/assets/target/models/item/senpai_spawn_egg.json
create mode 100644 src/main/resources/assets/target/models/item/sentinel.json
create mode 100644 src/main/resources/assets/target/models/item/sentinel3d.json
create mode 100644 src/main/resources/assets/target/models/item/sentinel_base.json
create mode 100644 src/main/resources/assets/target/models/item/sentinel_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/sentinel_icon.json
create mode 100644 src/main/resources/assets/target/models/item/shotgun_ammo.json
create mode 100644 src/main/resources/assets/target/models/item/shotgun_ammo_box.json
create mode 100644 src/main/resources/assets/target/models/item/sks.json
create mode 100644 src/main/resources/assets/target/models/item/sks3d.json
create mode 100644 src/main/resources/assets/target/models/item/sks_base.json
create mode 100644 src/main/resources/assets/target/models/item/sks_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/sks_icon.json
create mode 100644 src/main/resources/assets/target/models/item/sniper_ammo.json
create mode 100644 src/main/resources/assets/target/models/item/sniper_ammo_box.json
create mode 100644 src/main/resources/assets/target/models/item/soulsteel_ingot.json
create mode 100644 src/main/resources/assets/target/models/item/soulsteelnugget.json
create mode 100644 src/main/resources/assets/target/models/item/specialmaterialpack.json
create mode 100644 src/main/resources/assets/target/models/item/steel_action.json
create mode 100644 src/main/resources/assets/target/models/item/steel_barrel.json
create mode 100644 src/main/resources/assets/target/models/item/steel_spring.json
create mode 100644 src/main/resources/assets/target/models/item/steel_trigger.json
create mode 100644 src/main/resources/assets/target/models/item/svd.json
create mode 100644 src/main/resources/assets/target/models/item/svd3d.json
create mode 100644 src/main/resources/assets/target/models/item/svd_base.json
create mode 100644 src/main/resources/assets/target/models/item/svd_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/svd_icon.json
create mode 100644 src/main/resources/assets/target/models/item/tac_rpg3d.json
create mode 100644 src/main/resources/assets/target/models/item/targetdeployer.json
create mode 100644 src/main/resources/assets/target/models/item/taser.json
create mode 100644 src/main/resources/assets/target/models/item/taser3d.json
create mode 100644 src/main/resources/assets/target/models/item/taser_base.json
create mode 100644 src/main/resources/assets/target/models/item/taser_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/taser_electrode.json
create mode 100644 src/main/resources/assets/target/models/item/trachelium.json
create mode 100644 src/main/resources/assets/target/models/item/trachelium3d.json
create mode 100644 src/main/resources/assets/target/models/item/trachelium_base.json
create mode 100644 src/main/resources/assets/target/models/item/trachelium_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/trachelium_icon.json
create mode 100644 src/main/resources/assets/target/models/item/tungsten_ingot.json
create mode 100644 src/main/resources/assets/target/models/item/tungsten_powder.json
create mode 100644 src/main/resources/assets/target/models/item/unblastedcementedcarbidepodwer.json
create mode 100644 src/main/resources/assets/target/models/item/vector.json
create mode 100644 src/main/resources/assets/target/models/item/vector3d.json
create mode 100644 src/main/resources/assets/target/models/item/vector_base.json
create mode 100644 src/main/resources/assets/target/models/item/vector_blueprint.json
create mode 100644 src/main/resources/assets/target/models/item/vector_icon.json
create mode 100644 src/main/resources/assets/target/particles/bullthole.json
create mode 100644 src/main/resources/assets/target/particles/firestar.json
create mode 100644 src/main/resources/assets/target/sounds.json
create mode 100644 src/main/resources/assets/target/sounds/1.ogg
create mode 100644 src/main/resources/assets/target/sounds/10.ogg
create mode 100644 src/main/resources/assets/target/sounds/11.ogg
create mode 100644 src/main/resources/assets/target/sounds/12.ogg
create mode 100644 src/main/resources/assets/target/sounds/13.ogg
create mode 100644 src/main/resources/assets/target/sounds/14.ogg
create mode 100644 src/main/resources/assets/target/sounds/15.ogg
create mode 100644 src/main/resources/assets/target/sounds/16.ogg
create mode 100644 src/main/resources/assets/target/sounds/2.ogg
create mode 100644 src/main/resources/assets/target/sounds/3.ogg
create mode 100644 src/main/resources/assets/target/sounds/4.ogg
create mode 100644 src/main/resources/assets/target/sounds/5.ogg
create mode 100644 src/main/resources/assets/target/sounds/6.ogg
create mode 100644 src/main/resources/assets/target/sounds/7.ogg
create mode 100644 src/main/resources/assets/target/sounds/8.ogg
create mode 100644 src/main/resources/assets/target/sounds/9.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12_very_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/aa12reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/abkr_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/abkr_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/abkr_reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/ak47_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/ak47_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/ak_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/ak_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/akfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/akreload.ogg
create mode 100644 src/main/resources/assets/target/sounds/akreload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/akveryfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/bow_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/bow_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/bow_pull.ogg
create mode 100644 src/main/resources/assets/target/sounds/bow_pull_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/bullet_supply.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp2.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp3.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp4.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp5.ogg
create mode 100644 src/main/resources/assets/target/sounds/c4exp6.ogg
create mode 100644 src/main/resources/assets/target/sounds/charge.ogg
create mode 100644 src/main/resources/assets/target/sounds/close.ogg
create mode 100644 src/main/resources/assets/target/sounds/close2.ogg
create mode 100644 src/main/resources/assets/target/sounds/close3.ogg
create mode 100644 src/main/resources/assets/target/sounds/devotion_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/devotion_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/devotion_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/devotion_reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/doublejump.ogg
create mode 100644 src/main/resources/assets/target/sounds/elbow_hit1.ogg
create mode 100644 src/main/resources/assets/target/sounds/elbow_hit2.ogg
create mode 100644 src/main/resources/assets/target/sounds/elbow_hit3.ogg
create mode 100644 src/main/resources/assets/target/sounds/elbow_start.ogg
create mode 100644 src/main/resources/assets/target/sounds/enemy_spot.ogg
create mode 100644 src/main/resources/assets/target/sounds/enemy_spot_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/far.ogg
create mode 100644 src/main/resources/assets/target/sounds/far2.ogg
create mode 100644 src/main/resources/assets/target/sounds/firerate.ogg
create mode 100644 src/main/resources/assets/target/sounds/growl.ogg
create mode 100644 src/main/resources/assets/target/sounds/gwv2439.tmp
create mode 100644 src/main/resources/assets/target/sounds/headshot.ogg
create mode 100644 src/main/resources/assets/target/sounds/heng.ogg
create mode 100644 src/main/resources/assets/target/sounds/hengheng.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk416_fire1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk416_fire_s.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk416reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk416reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/hk_very_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/hr_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/hr_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/indication.ogg
create mode 100644 src/main/resources/assets/target/sounds/jump.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraber_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraber_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraber_reload_empty.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraber_reload_norm.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraberfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/kraberveryfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/lightsaber1.ogg
create mode 100644 src/main/resources/assets/target/sounds/lightsaber2.ogg
create mode 100644 src/main/resources/assets/target/sounds/lightsaber3.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4_very_far.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/m4reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/m60_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/m60_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/m60_reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/m79_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m79reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/m870_fire1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m870_fire3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m870_preparealt.ogg
create mode 100644 src/main/resources/assets/target/sounds/m870_reload_loop.ogg
create mode 100644 src/main/resources/assets/target/sounds/m98b_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m98b_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/m98breload.ogg
create mode 100644 src/main/resources/assets/target/sounds/m98breload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/marlin__fire1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/marlin__fire3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/marlin_end.ogg
create mode 100644 src/main/resources/assets/target/sounds/marlin_loop.ogg
create mode 100644 src/main/resources/assets/target/sounds/marlin_start.ogg
create mode 100644 src/main/resources/assets/target/sounds/metal_01.ogg
create mode 100644 src/main/resources/assets/target/sounds/metal_02.ogg
create mode 100644 src/main/resources/assets/target/sounds/metal_03.ogg
create mode 100644 src/main/resources/assets/target/sounds/metal_04.ogg
create mode 100644 src/main/resources/assets/target/sounds/metal_05.ogg
create mode 100644 src/main/resources/assets/target/sounds/minigun_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/minigun_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/minigun_overheat.ogg
create mode 100644 src/main/resources/assets/target/sounds/minigun_stop.ogg
create mode 100644 src/main/resources/assets/target/sounds/mk14_reload_empty.ogg
create mode 100644 src/main/resources/assets/target/sounds/mk14_reload_norm.ogg
create mode 100644 src/main/resources/assets/target/sounds/mk14ebr_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/mortar_distant.ogg
create mode 100644 src/main/resources/assets/target/sounds/mortar_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/mortar_load.ogg
create mode 100644 src/main/resources/assets/target/sounds/near1.ogg
create mode 100644 src/main/resources/assets/target/sounds/near2.ogg
create mode 100644 src/main/resources/assets/target/sounds/near3.ogg
create mode 100644 src/main/resources/assets/target/sounds/ouch.ogg
create mode 100644 src/main/resources/assets/target/sounds/overheat.ogg
create mode 100644 src/main/resources/assets/target/sounds/reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/rpg7_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/rpg7_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/rpk_fire.ogg
create mode 100644 src/main/resources/assets/target/sounds/rpk_fire1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_fire_1.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_fire_3.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_fire_charge1.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_fire_charge3.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_reload.ogg
create mode 100644 src/main/resources/assets/target/sounds/sentinel_reload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/shift.ogg
create mode 100644 src/main/resources/assets/target/sounds/shock.ogg
create mode 100644 src/main/resources/assets/target/sounds/shotfire.ogg
create mode 100644 src/main/resources/assets/target/sounds/shotfire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/sksfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/sksveryfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/step1.ogg
create mode 100644 src/main/resources/assets/target/sounds/step2.ogg
create mode 100644 src/main/resources/assets/target/sounds/step3.ogg
create mode 100644 src/main/resources/assets/target/sounds/step4.ogg
create mode 100644 src/main/resources/assets/target/sounds/stim1.ogg
create mode 100644 src/main/resources/assets/target/sounds/stim2.ogg
create mode 100644 src/main/resources/assets/target/sounds/stim3.ogg
create mode 100644 src/main/resources/assets/target/sounds/stim4.ogg
create mode 100644 src/main/resources/assets/target/sounds/stim5.ogg
create mode 100644 src/main/resources/assets/target/sounds/svd_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/svd_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/svdfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/svdreload.ogg
create mode 100644 src/main/resources/assets/target/sounds/svdreload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/svdveryfar.ogg
create mode 100644 src/main/resources/assets/target/sounds/targetdown.ogg
create mode 100644 src/main/resources/assets/target/sounds/taserfire.ogg
create mode 100644 src/main/resources/assets/target/sounds/taserreload.ogg
create mode 100644 src/main/resources/assets/target/sounds/trachelium_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/trigger_click.ogg
create mode 100644 src/main/resources/assets/target/sounds/vecreload.ogg
create mode 100644 src/main/resources/assets/target/sounds/vecreload2.ogg
create mode 100644 src/main/resources/assets/target/sounds/vector_fire_1p.ogg
create mode 100644 src/main/resources/assets/target/sounds/vector_fire_3p.ogg
create mode 100644 src/main/resources/assets/target/sounds/waao.ogg
create mode 100644 src/main/resources/assets/target/sounds/yarimasune.ogg
create mode 100644 src/main/resources/assets/target/textures/block/claymore.png
create mode 100644 src/main/resources/assets/target/textures/block/creativeammobox.png
create mode 100644 src/main/resources/assets/target/textures/block/deepslate_galena_ore.png
create mode 100644 src/main/resources/assets/target/textures/block/deepslate_scheelite_ore.png
create mode 100644 src/main/resources/assets/target/textures/block/galena_ore.png
create mode 100644 src/main/resources/assets/target/textures/block/gungranade.png
create mode 100644 src/main/resources/assets/target/textures/block/hammer.png
create mode 100644 src/main/resources/assets/target/textures/block/handgunammobox.png
create mode 100644 src/main/resources/assets/target/textures/block/pad.png
create mode 100644 src/main/resources/assets/target/textures/block/rifleammobox.png
create mode 100644 src/main/resources/assets/target/textures/block/sand.png
create mode 100644 src/main/resources/assets/target/textures/block/sandbag.png
create mode 100644 src/main/resources/assets/target/textures/block/sandbagdi.png
create mode 100644 src/main/resources/assets/target/textures/block/scheelite_ore.png
create mode 100644 src/main/resources/assets/target/textures/block/shotgunammobox.png
create mode 100644 src/main/resources/assets/target/textures/block/sniperammobox.png
create mode 100644 src/main/resources/assets/target/textures/block/tasergun.png
create mode 100644 src/main/resources/assets/target/textures/block/tiesiwang.png
create mode 100644 src/main/resources/assets/target/textures/entities/bocekarrow.png
create mode 100644 src/main/resources/assets/target/textures/entities/bullet.png
create mode 100644 src/main/resources/assets/target/textures/entities/bullet_e.png
create mode 100644 src/main/resources/assets/target/textures/entities/bullet_tex.png
create mode 100644 src/main/resources/assets/target/textures/entities/claymore.png
create mode 100644 src/main/resources/assets/target/textures/entities/grenade.png
create mode 100644 src/main/resources/assets/target/textures/entities/mortar.png
create mode 100644 src/main/resources/assets/target/textures/entities/mortar_shell.png
create mode 100644 src/main/resources/assets/target/textures/entities/pad.png
create mode 100644 src/main/resources/assets/target/textures/entities/rocket.png
create mode 100644 src/main/resources/assets/target/textures/entities/senpai.png
create mode 100644 src/main/resources/assets/target/textures/entities/target.png
create mode 100644 src/main/resources/assets/target/textures/entities/target_e.png
create mode 100644 src/main/resources/assets/target/textures/entities/taser_rod.png
create mode 100644 src/main/resources/assets/target/textures/entities/trail.png
create mode 100644 src/main/resources/assets/target/textures/entity/villager/profession/arms_dealer.png
create mode 100644 src/main/resources/assets/target/textures/entity/villager/profession/armsdealer.png
create mode 100644 src/main/resources/assets/target/textures/entity/zombie_villager/profession/arms_dealer.png
create mode 100644 src/main/resources/assets/target/textures/entity/zombie_villager/profession/armsdealer.png
create mode 100644 src/main/resources/assets/target/textures/item/aa123d.png
create mode 100644 src/main/resources/assets/target/textures/item/aa12_e.png
create mode 100644 src/main/resources/assets/target/textures/item/aa12_new.png
create mode 100644 src/main/resources/assets/target/textures/item/aa_12.png
create mode 100644 src/main/resources/assets/target/textures/item/abekiri.png
create mode 100644 src/main/resources/assets/target/textures/item/abekiri_e.png
create mode 100644 src/main/resources/assets/target/textures/item/ak3d.png
create mode 100644 src/main/resources/assets/target/textures/item/ak47.png
create mode 100644 src/main/resources/assets/target/textures/item/ak473d.png
create mode 100644 src/main/resources/assets/target/textures/item/ak47_e.png
create mode 100644 src/main/resources/assets/target/textures/item/ak47icon.png
create mode 100644 src/main/resources/assets/target/textures/item/akicon.png
create mode 100644 src/main/resources/assets/target/textures/item/base_plate.png
create mode 100644 src/main/resources/assets/target/textures/item/bocek.png
create mode 100644 src/main/resources/assets/target/textures/item/bocek_e.png
create mode 100644 src/main/resources/assets/target/textures/item/bocek_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/bsk.png
create mode 100644 src/main/resources/assets/target/textures/item/buckshot.png
create mode 100644 src/main/resources/assets/target/textures/item/cemented_carbide_action.png
create mode 100644 src/main/resources/assets/target/textures/item/cemented_carbide_barrel.png
create mode 100644 src/main/resources/assets/target/textures/item/cemented_carbide_ingot.png
create mode 100644 src/main/resources/assets/target/textures/item/cemented_carbide_spring.png
create mode 100644 src/main/resources/assets/target/textures/item/cemented_carbide_trigger.png
create mode 100644 src/main/resources/assets/target/textures/item/claymore.png
create mode 100644 src/main/resources/assets/target/textures/item/coal_iron_powder.png
create mode 100644 src/main/resources/assets/target/textures/item/coal_powder.png
create mode 100644 src/main/resources/assets/target/textures/item/common_material_pack.png
create mode 100644 src/main/resources/assets/target/textures/item/copper_plate.png
create mode 100644 src/main/resources/assets/target/textures/item/defusals.png
create mode 100644 src/main/resources/assets/target/textures/item/devotion.png
create mode 100644 src/main/resources/assets/target/textures/item/devotion3d.png
create mode 100644 src/main/resources/assets/target/textures/item/devotion_e.png
create mode 100644 src/main/resources/assets/target/textures/item/devotion_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/epic_material_pack.png
create mode 100644 src/main/resources/assets/target/textures/item/fusee.png
create mode 100644 src/main/resources/assets/target/textures/item/galena.png
create mode 100644 src/main/resources/assets/target/textures/item/gun_barrel.png
create mode 100644 src/main/resources/assets/target/textures/item/gun_blueprint.png
create mode 100644 src/main/resources/assets/target/textures/item/gungranade.png
create mode 100644 src/main/resources/assets/target/textures/item/hammer.png
create mode 100644 src/main/resources/assets/target/textures/item/handgunammo.png
create mode 100644 src/main/resources/assets/target/textures/item/hk416.png
create mode 100644 src/main/resources/assets/target/textures/item/hk4163d.png
create mode 100644 src/main/resources/assets/target/textures/item/hk416_a5.png
create mode 100644 src/main/resources/assets/target/textures/item/hk416_e.png
create mode 100644 src/main/resources/assets/target/textures/item/hunting_rifle3d.png
create mode 100644 src/main/resources/assets/target/textures/item/hunting_rifle_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/huntingrifle.png
create mode 100644 src/main/resources/assets/target/textures/item/huntingrifle_e.png
create mode 100644 src/main/resources/assets/target/textures/item/iron_action.png
create mode 100644 src/main/resources/assets/target/textures/item/iron_barrel.png
create mode 100644 src/main/resources/assets/target/textures/item/iron_powder.png
create mode 100644 src/main/resources/assets/target/textures/item/iron_spring.png
create mode 100644 src/main/resources/assets/target/textures/item/iron_trigger.png
create mode 100644 src/main/resources/assets/target/textures/item/kraber.png
create mode 100644 src/main/resources/assets/target/textures/item/kraber3d.png
create mode 100644 src/main/resources/assets/target/textures/item/kraber_e.png
create mode 100644 src/main/resources/assets/target/textures/item/kraber_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/lead_ingot.png
create mode 100644 src/main/resources/assets/target/textures/item/legendary_material_pack.png
create mode 100644 src/main/resources/assets/target/textures/item/lightsaber.png
create mode 100644 src/main/resources/assets/target/textures/item/lightsaber_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m4.png
create mode 100644 src/main/resources/assets/target/textures/item/m43d.png
create mode 100644 src/main/resources/assets/target/textures/item/m4_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m4icon.png
create mode 100644 src/main/resources/assets/target/textures/item/m60.png
create mode 100644 src/main/resources/assets/target/textures/item/m603d.png
create mode 100644 src/main/resources/assets/target/textures/item/m60_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m60_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/m79.png
create mode 100644 src/main/resources/assets/target/textures/item/m793d.png
create mode 100644 src/main/resources/assets/target/textures/item/m79_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m79icon.png
create mode 100644 src/main/resources/assets/target/textures/item/m870.png
create mode 100644 src/main/resources/assets/target/textures/item/m870_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m870_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/m98b.png
create mode 100644 src/main/resources/assets/target/textures/item/m98b_e.png
create mode 100644 src/main/resources/assets/target/textures/item/m_98b_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/marlin.png
create mode 100644 src/main/resources/assets/target/textures/item/marlin_e.png
create mode 100644 src/main/resources/assets/target/textures/item/marlinicon.png
create mode 100644 src/main/resources/assets/target/textures/item/minigun.png
create mode 100644 src/main/resources/assets/target/textures/item/minigun_e.png
create mode 100644 src/main/resources/assets/target/textures/item/minigun_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/mk14.png
create mode 100644 src/main/resources/assets/target/textures/item/mk143d.png
create mode 100644 src/main/resources/assets/target/textures/item/mk14_e.png
create mode 100644 src/main/resources/assets/target/textures/item/mk_14_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/mortar_shells.png
create mode 100644 src/main/resources/assets/target/textures/item/motar.png
create mode 100644 src/main/resources/assets/target/textures/item/motar_barrel.png
create mode 100644 src/main/resources/assets/target/textures/item/motar_bipod.png
create mode 100644 src/main/resources/assets/target/textures/item/netherite_action.png
create mode 100644 src/main/resources/assets/target/textures/item/netherite_barrel.png
create mode 100644 src/main/resources/assets/target/textures/item/netherite_spring.png
create mode 100644 src/main/resources/assets/target/textures/item/netherite_trigger.png
create mode 100644 src/main/resources/assets/target/textures/item/pad.png
create mode 100644 src/main/resources/assets/target/textures/item/rare_material_pack.png
create mode 100644 src/main/resources/assets/target/textures/item/rifleammo.png
create mode 100644 src/main/resources/assets/target/textures/item/rpg3d.png
create mode 100644 src/main/resources/assets/target/textures/item/rpg7.png
create mode 100644 src/main/resources/assets/target/textures/item/rpg7_e.png
create mode 100644 src/main/resources/assets/target/textures/item/rpgicon.png
create mode 100644 src/main/resources/assets/target/textures/item/rpk.png
create mode 100644 src/main/resources/assets/target/textures/item/rpk_e.png
create mode 100644 src/main/resources/assets/target/textures/item/rpk_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/scheelite.png
create mode 100644 src/main/resources/assets/target/textures/item/sentinel.png
create mode 100644 src/main/resources/assets/target/textures/item/sentinel3d.png
create mode 100644 src/main/resources/assets/target/textures/item/sentinel_e.png
create mode 100644 src/main/resources/assets/target/textures/item/sentinel_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/shotgunammo.png
create mode 100644 src/main/resources/assets/target/textures/item/sks.png
create mode 100644 src/main/resources/assets/target/textures/item/sks_e.png
create mode 100644 src/main/resources/assets/target/textures/item/sniperammo.png
create mode 100644 src/main/resources/assets/target/textures/item/soulsteel_ingot.png
create mode 100644 src/main/resources/assets/target/textures/item/soulsteel_nugget.png
create mode 100644 src/main/resources/assets/target/textures/item/special_material_pack.png
create mode 100644 src/main/resources/assets/target/textures/item/steel_action.png
create mode 100644 src/main/resources/assets/target/textures/item/steel_ingot.png
create mode 100644 src/main/resources/assets/target/textures/item/steel_spring.png
create mode 100644 src/main/resources/assets/target/textures/item/steel_trigger.png
create mode 100644 src/main/resources/assets/target/textures/item/svd.png
create mode 100644 src/main/resources/assets/target/textures/item/svd_e.png
create mode 100644 src/main/resources/assets/target/textures/item/svdicon.png
create mode 100644 src/main/resources/assets/target/textures/item/targetdeploy.png
create mode 100644 src/main/resources/assets/target/textures/item/taserbullet.png
create mode 100644 src/main/resources/assets/target/textures/item/tasergun.png
create mode 100644 src/main/resources/assets/target/textures/item/trachelium3d.png
create mode 100644 src/main/resources/assets/target/textures/item/trachelium_icon.png
create mode 100644 src/main/resources/assets/target/textures/item/trachelium_texture.png
create mode 100644 src/main/resources/assets/target/textures/item/trachelium_texture_e.png
create mode 100644 src/main/resources/assets/target/textures/item/tungsten_ingot.png
create mode 100644 src/main/resources/assets/target/textures/item/tungsten_powder.png
create mode 100644 src/main/resources/assets/target/textures/item/unblasted_cemented_carbide_podwer.png
create mode 100644 src/main/resources/assets/target/textures/item/vector.png
create mode 100644 src/main/resources/assets/target/textures/item/vector3d.png
create mode 100644 src/main/resources/assets/target/textures/item/vector_e.png
create mode 100644 src/main/resources/assets/target/textures/item/vector_icon.png
create mode 100644 src/main/resources/assets/target/textures/mob_effect/doublejumpeffect.png
create mode 100644 src/main/resources/assets/target/textures/mob_effect/shock.png
create mode 100644 src/main/resources/assets/target/textures/particle/bullethole.png
create mode 100644 src/main/resources/assets/target/textures/particle/bullthole.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_1.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_2.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_3.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_4.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_5.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_6.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_7.png
create mode 100644 src/main/resources/assets/target/textures/particle/firestar_8.png
create mode 100644 src/main/resources/assets/target/textures/screens/gun_recycle_gui.png
create mode 100644 src/main/resources/assets/target/textures/screens/headshotmark.png
create mode 100644 src/main/resources/assets/target/textures/screens/hit_marker.png
create mode 100644 src/main/resources/assets/target/textures/screens/kill_mark1.png
create mode 100644 src/main/resources/assets/target/textures/screens/kill_mark2.png
create mode 100644 src/main/resources/assets/target/textures/screens/kill_mark3.png
create mode 100644 src/main/resources/assets/target/textures/screens/kill_mark4.png
create mode 100644 src/main/resources/assets/target/textures/screens/mortar_gui.png
create mode 100644 src/main/resources/assets/target/textures/screens/mortar_icon.png
create mode 100644 src/main/resources/assets/target/textures/screens/point.png
create mode 100644 src/main/resources/assets/target/textures/screens/rex.png
create mode 100644 src/main/resources/assets/target/textures/screens/rexheng.png
create mode 100644 src/main/resources/assets/target/textures/screens/rexshu.png
create mode 100644 src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json
create mode 100644 src/main/resources/data/forge/tags/items/dusts.json
create mode 100644 src/main/resources/data/forge/tags/items/dusts/coal_coke.json
create mode 100644 src/main/resources/data/forge/tags/items/dusts/iron.json
create mode 100644 src/main/resources/data/forge/tags/items/dusts/tungsten.json
create mode 100644 src/main/resources/data/forge/tags/items/ingots.json
create mode 100644 src/main/resources/data/forge/tags/items/ingots/lead.json
create mode 100644 src/main/resources/data/forge/tags/items/ingots/steel.json
create mode 100644 src/main/resources/data/forge/tags/items/ingots/tungsten.json
create mode 100644 src/main/resources/data/forge/tags/items/ore_rates/singular.json
create mode 100644 src/main/resources/data/forge/tags/items/ores.json
create mode 100644 src/main/resources/data/forge/tags/items/ores/lead.json
create mode 100644 src/main/resources/data/forge/tags/items/ores/tungsten.json
create mode 100644 src/main/resources/data/forge/tags/items/ores_in_ground/deepslate.json
create mode 100644 src/main/resources/data/forge/tags/items/ores_in_ground/stone.json
create mode 100644 src/main/resources/data/forge/tags/items/plates.json
create mode 100644 src/main/resources/data/forge/tags/items/plates/copper.json
create mode 100644 src/main/resources/data/forge/tags/items/raw_materials.json
create mode 100644 src/main/resources/data/forge/tags/items/raw_materials/lead.json
create mode 100644 src/main/resources/data/forge/tags/items/raw_materials/tungsten.json
create mode 100644 src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
create mode 100644 src/main/resources/data/target/damage_type/arrow_in_brain.json
create mode 100644 src/main/resources/data/target/damage_type/gunfire.json
create mode 100644 src/main/resources/data/target/damage_type/mine.json
create mode 100644 src/main/resources/data/target/forge/biome_modifier/deepslate_galena_ore_biome_modifier.json
create mode 100644 src/main/resources/data/target/forge/biome_modifier/deepslate_scheelite_ore_biome_modifier.json
create mode 100644 src/main/resources/data/target/forge/biome_modifier/galena_ore_biome_modifier.json
create mode 100644 src/main/resources/data/target/forge/biome_modifier/scheelite_ore_biome_modifier.json
create mode 100644 src/main/resources/data/target/forge/biome_modifier/senpai_biome_modifier.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest_2.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest_3.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest_4.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest_5.json
create mode 100644 src/main/resources/data/target/loot_modifiers/common_chest_6.json
create mode 100644 src/main/resources/data/target/loot_modifiers/epic_chest.json
create mode 100644 src/main/resources/data/target/loot_modifiers/epic_chest_2.json
create mode 100644 src/main/resources/data/target/loot_modifiers/epic_chest_3.json
create mode 100644 src/main/resources/data/target/loot_modifiers/epic_chest_4.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_10.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_2.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_3.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_4.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_5.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_6.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_7.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_8.json
create mode 100644 src/main/resources/data/target/loot_modifiers/rare_chest_9.json
create mode 100644 src/main/resources/data/target/loot_tables/blocks/deepslate_galena_ore.json
create mode 100644 src/main/resources/data/target/loot_tables/blocks/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/data/target/loot_tables/blocks/galena_ore.json
create mode 100644 src/main/resources/data/target/loot_tables/blocks/scheelite_ore.json
create mode 100644 src/main/resources/data/target/loot_tables/blue_print_epic.json
create mode 100644 src/main/resources/data/target/loot_tables/blue_print_rare.json
create mode 100644 src/main/resources/data/target/loot_tables/chests/blueprint_common_chest.json
create mode 100644 src/main/resources/data/target/loot_tables/chests/target_epic_chest.json
create mode 100644 src/main/resources/data/target/loot_tables/chests/target_rare_chest.json
create mode 100644 src/main/resources/data/target/recipes/aa_12_smithing.json
create mode 100644 src/main/resources/data/target/recipes/aa_12bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/abekiri_crafting.json
create mode 100644 src/main/resources/data/target/recipes/ak_47_smithing.json
create mode 100644 src/main/resources/data/target/recipes/ak_47bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/barbed_wire_crafting.json
create mode 100644 src/main/resources/data/target/recipes/big_hammer.json
create mode 100644 src/main/resources/data/target/recipes/bocek_smithing.json
create mode 100644 src/main/resources/data/target/recipes/bocekbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/buckshot_crafting.json
create mode 100644 src/main/resources/data/target/recipes/cc_action_crafting.json
create mode 100644 src/main/resources/data/target/recipes/cc_ingot_blasting.json
create mode 100644 src/main/resources/data/target/recipes/cc_spring_crafting.json
create mode 100644 src/main/resources/data/target/recipes/cc_trigger_crafting.json
create mode 100644 src/main/resources/data/target/recipes/cemented_carbide_ingot_crafting.json
create mode 100644 src/main/resources/data/target/recipes/claymorecrafting.json
create mode 100644 src/main/resources/data/target/recipes/cmp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/coal_iron_powder_crafting.json
create mode 100644 src/main/resources/data/target/recipes/coal_powder_crafting.json
create mode 100644 src/main/resources/data/target/recipes/copperplate_crafting.json
create mode 100644 src/main/resources/data/target/recipes/devotion_smithing.json
create mode 100644 src/main/resources/data/target/recipes/devotionbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/emp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/fusee_crafting.json
create mode 100644 src/main/resources/data/target/recipes/granade_40mm.json
create mode 100644 src/main/resources/data/target/recipes/gun_recycle_crafting.json
create mode 100644 src/main/resources/data/target/recipes/handgun_ammo_box_crafting.json
create mode 100644 src/main/resources/data/target/recipes/handgun_ammo_crafting.json
create mode 100644 src/main/resources/data/target/recipes/hk_416_smithing.json
create mode 100644 src/main/resources/data/target/recipes/hk_416bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/hr_crafting.json
create mode 100644 src/main/resources/data/target/recipes/hunting_rifle_smithing.json
create mode 100644 src/main/resources/data/target/recipes/ingot_steel_blasting.json
create mode 100644 src/main/resources/data/target/recipes/iron_action_crafting.json
create mode 100644 src/main/resources/data/target/recipes/iron_barrel_crafting.json
create mode 100644 src/main/resources/data/target/recipes/iron_powder_crafting.json
create mode 100644 src/main/resources/data/target/recipes/iron_spring_crafting.json
create mode 100644 src/main/resources/data/target/recipes/iron_trigger_crafting.json
create mode 100644 src/main/resources/data/target/recipes/jumppad_crafting.json
create mode 100644 src/main/resources/data/target/recipes/kraber_smithing.json
create mode 100644 src/main/resources/data/target/recipes/kraberbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/lead_ingot_blasting.json
create mode 100644 src/main/resources/data/target/recipes/lead_ingot_smelting.json
create mode 100644 src/main/resources/data/target/recipes/lightsaber_crafting.json
create mode 100644 src/main/resources/data/target/recipes/m_4_smithing.json
create mode 100644 src/main/resources/data/target/recipes/m_4bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/m_60_smithing.json
create mode 100644 src/main/resources/data/target/recipes/m_60bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/m_79_smithing.json
create mode 100644 src/main/resources/data/target/recipes/m_79bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/m_870_smithing.json
create mode 100644 src/main/resources/data/target/recipes/m_870bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/m_89b_smithing.json
create mode 100644 src/main/resources/data/target/recipes/m_98bbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/marlin_smithing.json
create mode 100644 src/main/resources/data/target/recipes/marlinbpcrafting.json
create mode 100644 src/main/resources/data/target/recipes/minigun_smithing.json
create mode 100644 src/main/resources/data/target/recipes/minigunbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mk_14_smithing.json
create mode 100644 src/main/resources/data/target/recipes/mk_14bp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mortar_barrel_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mortar_base_plate_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mortar_bipod_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mortar_crafting.json
create mode 100644 src/main/resources/data/target/recipes/mortar_he_shells.json
create mode 100644 src/main/resources/data/target/recipes/netherite_action_crafting.json
create mode 100644 src/main/resources/data/target/recipes/netherite_barrel_smithing.json
create mode 100644 src/main/resources/data/target/recipes/netherite_spring_crafting.json
create mode 100644 src/main/resources/data/target/recipes/netherite_trigger_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rifle_ammo_box_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rifle_ammo_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rmp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rocket_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rpg_smithing.json
create mode 100644 src/main/resources/data/target/recipes/rpgbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/rpk_smithing.json
create mode 100644 src/main/resources/data/target/recipes/rpkbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/sandbag_crafting.json
create mode 100644 src/main/resources/data/target/recipes/sentinel_smithing.json
create mode 100644 src/main/resources/data/target/recipes/sentinelbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/shotgun_ammo_box_crafting.json
create mode 100644 src/main/resources/data/target/recipes/shotgun_ammo_crafting.json
create mode 100644 src/main/resources/data/target/recipes/sks_smithing.json
create mode 100644 src/main/resources/data/target/recipes/sksbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/smp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/sniper_ammo_box_crafting.json
create mode 100644 src/main/resources/data/target/recipes/sniper_ammo_crafting.json
create mode 100644 src/main/resources/data/target/recipes/soulsteel_ingot_crafting.json
create mode 100644 src/main/resources/data/target/recipes/soulsteel_nugget_crafting.json
create mode 100644 src/main/resources/data/target/recipes/specialmaterialpack_crafting.json
create mode 100644 src/main/resources/data/target/recipes/steel_action_crafting.json
create mode 100644 src/main/resources/data/target/recipes/steel_barrel_crafting.json
create mode 100644 src/main/resources/data/target/recipes/steel_spring_crafting.json
create mode 100644 src/main/resources/data/target/recipes/steel_trigger_crafting.json
create mode 100644 src/main/resources/data/target/recipes/svd_smithing.json
create mode 100644 src/main/resources/data/target/recipes/svdbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/target_crafting.json
create mode 100644 src/main/resources/data/target/recipes/taser_electrode_crafting.json
create mode 100644 src/main/resources/data/target/recipes/taser_smithing.json
create mode 100644 src/main/resources/data/target/recipes/taserbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/tbp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/trachelium_smithing.json
create mode 100644 src/main/resources/data/target/recipes/tungsten_blasting.json
create mode 100644 src/main/resources/data/target/recipes/tungsten_powder_crafting.json
create mode 100644 src/main/resources/data/target/recipes/uccp_crafting.json
create mode 100644 src/main/resources/data/target/recipes/vector_smithing.json
create mode 100644 src/main/resources/data/target/recipes/vectorbp_crafting.json
create mode 100644 src/main/resources/data/target/tags/items/gun.json
create mode 100644 src/main/resources/data/target/tags/items/legendary_gun.json
create mode 100644 src/main/resources/data/target/tags/items/specialgun.json
create mode 100644 src/main/resources/data/target/weapon_attributes/hammer.json
create mode 100644 src/main/resources/data/target/weapon_attributes/light_saber.json
create mode 100644 src/main/resources/data/target/weapon_attributes/rocket.json
create mode 100644 src/main/resources/data/target/worldgen/configured_feature/deepslate_galena_ore.json
create mode 100644 src/main/resources/data/target/worldgen/configured_feature/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/data/target/worldgen/configured_feature/galena_ore.json
create mode 100644 src/main/resources/data/target/worldgen/configured_feature/scheelite_ore.json
create mode 100644 src/main/resources/data/target/worldgen/placed_feature/deepslate_galena_ore.json
create mode 100644 src/main/resources/data/target/worldgen/placed_feature/deepslate_scheelite_ore.json
create mode 100644 src/main/resources/data/target/worldgen/placed_feature/galena_ore.json
create mode 100644 src/main/resources/data/target/worldgen/placed_feature/scheelite_ore.json
create mode 100644 src/main/resources/mixins.target.json
create mode 100644 src/main/resources/pack.mcmeta
create mode 100644 target.mcreator
diff --git a/.classpath b/.classpath
new file mode 100644
index 000000000..88449dced
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,635 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..a4a431585
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+# 项目排除路径
+/.gradle/
+/build/
+/build/classes/java/main/
\ No newline at end of file
diff --git a/.project b/.project
new file mode 100644
index 000000000..2c88f9188
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ target
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..93bc6d8a1
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+#
+#Tue Feb 27 21:58:14 CST 2024
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.source=17
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 000000000..128834d92
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,70 @@
+plugins {
+ id 'eclipse'
+ id 'net.minecraftforge.gradle' version '[6.0,6.2)'
+ id 'org.spongepowered.mixin' version '0.7.+'
+}
+
+version = '1.0'
+group = 'com.yourname.modid'
+archivesBaseName = 'modid'
+
+java.toolchain.languageVersion = JavaLanguageVersion.of(17)
+
+minecraft {
+ mappings channel: 'official', version: '1.20.1'
+
+ accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
+
+ copyIdeResources = true
+
+ runs {
+ client {
+ workingDirectory project.file('run')
+
+ property 'forge.logging.markers', 'REGISTRIES'
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ examplemod {
+ source sourceSets.main
+ }
+ }
+ }
+
+ server {
+ workingDirectory project.file('run')
+
+ property 'forge.logging.markers', 'REGISTRIES'
+ property 'forge.logging.console.level', 'debug'
+
+ mods {
+ examplemod {
+ source sourceSets.main
+ }
+ }
+ }
+ }
+}
+
+dependencies {
+ minecraft 'net.minecraftforge:forge:1.20.1-47.2.0'
+ annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
+}
+
+mixin {
+ add sourceSets.main, 'mixins.target.refmap.json'
+
+ config 'mixins.target.json'
+
+ debug.verbose = true
+ debug.export = true
+ dumpTargetOnFailure = true
+
+ quiet
+}
+
+tasks.withType(JavaCompile).configureEach {
+ options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
+}
+
+apply from: 'mcreator.gradle'
\ No newline at end of file
diff --git a/elements/AK47.mod.json b/elements/AK47.mod.json
new file mode 100644
index 000000000..0c8a8f15f
--- /dev/null
+++ b/elements/AK47.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "ak47",
+ "name": "AK-47",
+ "idle": "animation.ak47.idle",
+ "rarity": "RARE",
+ "displaySettings": "ak47.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "AK47WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "ak.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/AK47Blueprint.mod.json b/elements/AK47Blueprint.mod.json
new file mode 100644
index 000000000..3469dacfe
--- /dev/null
+++ b/elements/AK47Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "AK-47 Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/AK47WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/AK47WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..87de83817
--- /dev/null
+++ b/elements/AK47WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime57idlocal:idplaysound target:ak47reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:ak47reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/AKfire.mod.json b/elements/AKfire.mod.json
new file mode 100644
index 000000000..bfdcaf7e3
--- /dev/null
+++ b/elements/AKfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:AK47EQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2playsound target:ak47_fire_1p player @s ~ ~ ~ 2 1playsound target:ak47_fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:ak47_fire_3pBulletfireNormalAkDslocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12.mod.json b/elements/Aa12.mod.json
new file mode 100644
index 000000000..04e7ef35d
--- /dev/null
+++ b/elements/Aa12.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "aa12_new",
+ "name": "AA12",
+ "idle": "animation.aa12.idle",
+ "rarity": "EPIC",
+ "displaySettings": "aa12.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "Aa12WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "aa12.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12Blueprint.mod.json b/elements/Aa12Blueprint.mod.json
new file mode 100644
index 000000000..3e0bd90fc
--- /dev/null
+++ b/elements/Aa12Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "AA-12 Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12Smithing.mod.json b/elements/Aa12Smithing.mod.json
new file mode 100644
index 000000000..be3e216b2
--- /dev/null
+++ b/elements/Aa12Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Legendarymaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:Aa12Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Aa12"
+ },
+ "name": "aa_12_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/Aa12WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..72c9f0b63
--- /dev/null
+++ b/elements/Aa12WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime52idlocal:idplaysound target:aa12reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idShotgunReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:aa12reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idShotgunReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12autofire.mod.json b/elements/Aa12autofire.mod.json
new file mode 100644
index 000000000..249f1bcff
--- /dev/null
+++ b/elements/Aa12autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandANDEQfiring1EQlocal:usehandfiremode2ANDANDANDlocal:usehandCUSTOM:Aa12EQlocal:usehandreloading0GTlocal:usehandammo0local:usehand8BulletfireNormalAs12Dslocal:usehand4playsound target:aa12_fire_1p player @s ~ ~ ~ 2 1playsound target:aa12fire player @a ~ ~ ~ 6 1stopsound @s player target:aa12firelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1ANDEQfiring1EQlocal:usehandfiremode0firing0ANDANDANDlocal:usehandCUSTOM:Aa12EQlocal:usehandreloading0GTlocal:usehandammo0local:usehand8BulletfireNormalAs12Dslocal:usehand4playsound target:aa12_fire_1p player @s ~ ~ ~ 2 1playsound target:aa12fire player @a ~ ~ ~ 6 1stopsound @s player target:aa12firelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12bpCrafting.mod.json b/elements/Aa12bpCrafting.mod.json
new file mode 100644
index 000000000..8b7b4ef90
--- /dev/null
+++ b/elements/Aa12bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:Aa12Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Aa12Blueprint"
+ },
+ "name": "aa_12bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aa12fire.mod.json b/elements/Aa12fire.mod.json
new file mode 100644
index 000000000..e8fbe7979
--- /dev/null
+++ b/elements/Aa12fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:Aa12firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Abekiri.mod.json b/elements/Abekiri.mod.json
new file mode 100644
index 000000000..0ee5eac0b
--- /dev/null
+++ b/elements/Abekiri.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "abekiri",
+ "name": "Abekiri",
+ "idle": "animation.ab.idle",
+ "rarity": "EPIC",
+ "displaySettings": "abekiri.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "All Perspectives",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "abekiri.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/AbekiriCrafting.mod.json b/elements/AbekiriCrafting.mod.json
new file mode 100644
index 000000000..c2171b035
--- /dev/null
+++ b/elements/AbekiriCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:IronBarrel"
+ },
+ {
+ "value": "CUSTOM:IronBarrel"
+ },
+ {
+ "value": "Items.FLINT_AND_STEEL"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.REDSTONE"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Abekiri"
+ },
+ "name": "abekiri_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..a03a7600a
--- /dev/null
+++ b/elements/AbekiriWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idno_ext_triggerlocal:ididlocal:ammo1MINUS2ammoNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime99idlocal:idplaysound target:abkr_reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idGTEglobal:shotgunammolocal:ammo1global:shotgunammoMINUSglobal:shotgunammolocal:ammo1ammoADDammolocal:ammo1reloading0emptyreload0global:shotgunammoADDammoglobal:shotgunammomaxammo0reloading0ANDEQreloading1EQammo1EQreloadtime83idlocal:idplaysound target:abkr_reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idGTEglobal:shotgunammolocal:ammo1global:shotgunammoMINUSglobal:shotgunammolocal:ammo1ammoADDammolocal:ammo1reloading0emptyreload0global:shotgunammoADDammoglobal:shotgunammomaxammo0reloading0WeaponDrawLight"
+ }
+}
\ No newline at end of file
diff --git a/elements/Abkrfire.mod.json b/elements/Abkrfire.mod.json
new file mode 100644
index 000000000..fc9fbde6e
--- /dev/null
+++ b/elements/Abkrfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:AbekiriEQlocal:usehandreloading0local:usehandGTlocal:usehandammo08BulletfireNormallocal:usehand1particle minecraft:cloud ADDMULTIPLY1.8 ADDADDMINUS0.1MULTIPLY1.8 ADDMULTIPLY1.8 0.4 0.4 0.4 0.005 30 force @slocal:usehand2playsound target:abkr_fire_3p player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Aiming.mod.json b/elements/Aiming.mod.json
new file mode 100644
index 000000000..94f4c3513
--- /dev/null
+++ b/elements/Aiming.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_tickstarget:gunEQglobal:zoomingTRUEaimingTRUEaimingFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ak47Smithing.mod.json b/elements/Ak47Smithing.mod.json
new file mode 100644
index 000000000..79d4ccd59
--- /dev/null
+++ b/elements/Ak47Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.LOG"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:AK47"
+ },
+ "name": "ak_47_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ak47autofire.mod.json b/elements/Ak47autofire.mod.json
new file mode 100644
index 000000000..e24cab90c
--- /dev/null
+++ b/elements/Ak47autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1ANDANDANDlocal:usehandCUSTOM:AK47EQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehandfirecooldown7local:usehand2BulletfireNormalAkDsplaysound target:ak47_fire_1p player @s ~ ~ ~ 2 1playsound target:ak47_fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:ak47_fire_3plocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ak47bpCrafting.mod.json b/elements/Ak47bpCrafting.mod.json
new file mode 100644
index 000000000..6712062ee
--- /dev/null
+++ b/elements/Ak47bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ "name": "ak_47bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/AkDs.mod.json b/elements/AkDs.mod.json
new file mode 100644
index 000000000..8720613a0
--- /dev/null
+++ b/elements/AkDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:akfar player @a ~ ~ ~ 12 1playsound target:akveryfar player @a ~ ~ ~ 24 1stopsound @s player target:akfarstopsound @s player target:akveryfar"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ammo.mod.json b/elements/Ammo.mod.json
new file mode 100644
index 000000000..aebf00c3a
--- /dev/null
+++ b/elements/Ammo.mod.json
@@ -0,0 +1,11 @@
+{
+ "_fv": 57,
+ "_type": "tab",
+ "definition": {
+ "name": "Target Ammo",
+ "icon": {
+ "value": "CUSTOM:ShotgunAmmoBox"
+ },
+ "showSearch": false
+ }
+}
\ No newline at end of file
diff --git a/elements/Ammobar.mod.json b/elements/Ammobar.mod.json
new file mode 100644
index 000000000..604a697a1
--- /dev/null
+++ b/elements/Ammobar.mod.json
@@ -0,0 +1,38 @@
+{
+ "_fv": 57,
+ "_type": "overlay",
+ "definition": {
+ "priority": "NORMAL",
+ "components": [
+ {
+ "type": "label",
+ "data": {
+ "name": "label_proc_ammocount",
+ "text": {
+ "fixedValue": "",
+ "name": "Ammocount"
+ },
+ "color": {
+ "value": -16711936,
+ "falpha": 0.0
+ },
+ "anchorPoint": "BOTTOM_CENTER",
+ "x": 305,
+ "y": 229
+ }
+ }
+ ],
+ "baseTexture": "",
+ "overlayTarget": "Ingame",
+ "displayCondition": {
+ "name": "AmmobarXianShiYouXiNeiDieJiaCeng"
+ },
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/AmmobarXianShiYouXiNeiDieJiaCeng.mod.json b/elements/AmmobarXianShiYouXiNeiDieJiaCeng.mod.json
new file mode 100644
index 000000000..ddf9a2130
--- /dev/null
+++ b/elements/AmmobarXianShiYouXiNeiDieJiaCeng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggertarget:gunTRUEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/AmmoboxFangZhiFangKuaiShi.mod.json b/elements/AmmoboxFangZhiFangKuaiShi.mod.json
new file mode 100644
index 000000000..2bc337d1d
--- /dev/null
+++ b/elements/AmmoboxFangZhiFangKuaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger1200"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ammocount.mod.json b/elements/Ammocount.mod.json
new file mode 100644
index 000000000..92b9f7d79
--- /dev/null
+++ b/elements/Ammocount.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "firemodeplayer_ticksEQfiremode2local:firemodeAutoEQfiremode1local:firemodeBurstEQfiremode0local:firemodeSemiCUSTOM:Bocekmaxammo## local:firemodeCUSTOM:Minigunglobal:rifleammo## local:firemodeEQrifle1maxammoglobal:rifleammoammo##/global:rifleammo## local:firemodeOREQhandgun1EQsmg1maxammoglobal:handgunammoammo##/global:handgunammo## local:firemodeEQshotgun1maxammoglobal:shotgunammoammo##/global:shotgunammo## local:firemodeEQsniperguns1maxammoglobal:sniperammoammo##/global:sniperammo## local:firemodeammo##/maxammo## local:firemode"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleAdd.mod.json b/elements/AngleAdd.mod.json
new file mode 100644
index 000000000..9b86c3c5f
--- /dev/null
+++ b/elements/AngleAdd.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6GT6-8866MINUS61"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleAddMini.mod.json b/elements/AngleAddMini.mod.json
new file mode 100644
index 000000000..a73a046c4
--- /dev/null
+++ b/elements/AngleAddMini.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6GT6-87.566MINUS60.5"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleAddPlus.mod.json b/elements/AngleAddPlus.mod.json
new file mode 100644
index 000000000..450462196
--- /dev/null
+++ b/elements/AngleAddPlus.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6GT6-7866MINUS610"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleReduce.mod.json b/elements/AngleReduce.mod.json
new file mode 100644
index 000000000..49cbd2cd4
--- /dev/null
+++ b/elements/AngleReduce.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6LT6-2066ADD61"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleReduceMini.mod.json b/elements/AngleReduceMini.mod.json
new file mode 100644
index 000000000..67e68aea8
--- /dev/null
+++ b/elements/AngleReduceMini.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6LT6-20.566ADD60.5"
+ }
+}
\ No newline at end of file
diff --git a/elements/AngleReducePlus.mod.json b/elements/AngleReducePlus.mod.json
new file mode 100644
index 000000000..24a5c9917
--- /dev/null
+++ b/elements/AngleReducePlus.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6LT6-3066ADD610"
+ }
+}
\ No newline at end of file
diff --git a/elements/ArDs.mod.json b/elements/ArDs.mod.json
new file mode 100644
index 000000000..00dc55ad5
--- /dev/null
+++ b/elements/ArDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:m4far player @a ~ ~ ~ 12 1playsound target:m4veryfar player @a ~ ~ ~ 24 1stopsound @s player target:m4farstopsound @s player target:m4veryfar"
+ }
+}
\ No newline at end of file
diff --git a/elements/ArrowInBrain.mod.json b/elements/ArrowInBrain.mod.json
new file mode 100644
index 000000000..56fde7cc9
--- /dev/null
+++ b/elements/ArrowInBrain.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "damagetype",
+ "definition": {
+ "exhaustion": 0.0,
+ "scaling": "never",
+ "effects": "hurt",
+ "normalDeathMessage": "%1$s died",
+ "itemDeathMessage": "%1$s was killed by %2$s using %3$s",
+ "playerDeathMessage": "%1$s died whilst trying to escape %2$s"
+ }
+}
\ No newline at end of file
diff --git a/elements/Arrowdamage.mod.json b/elements/Arrowdamage.mod.json
new file mode 100644
index 000000000..4011730c7
--- /dev/null
+++ b/elements/Arrowdamage.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDANDANDARROWCUSTOM:BocekarrowCUSTOM:ArrowInBrainamount"
+ }
+}
\ No newline at end of file
diff --git a/elements/As12Ds.mod.json b/elements/As12Ds.mod.json
new file mode 100644
index 000000000..c1f892be7
--- /dev/null
+++ b/elements/As12Ds.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:aa12_far player @a ~ ~ ~ 16 1playsound target:aa12_very_far player @a ~ ~ ~ 32 1stopsound @s player target:aa12_farstopsound @s player target:aa12_very_far"
+ }
+}
\ No newline at end of file
diff --git a/elements/BarbedWire.mod.json b/elements/BarbedWire.mod.json
new file mode 100644
index 000000000..bed6cb082
--- /dev/null
+++ b/elements/BarbedWire.mod.json
@@ -0,0 +1,138 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "sandbag",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 2,
+ "customModelName": "tiesiwang:default",
+ "rotationMode": 1,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": true,
+ "connectedSides": false,
+ "transparencyType": "CUTOUT",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Barbed Wire",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 10.0,
+ "resistance": 20.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 0,
+ "material": {
+ "value": "WOOD"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 0.01,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": true,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "WOOD"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "onEntityCollides": {
+ "name": "BarbedWireShiTiZaiFangKuaiZhongPengZhuangShi"
+ },
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/BarbedWireCrafting.mod.json b/elements/BarbedWireCrafting.mod.json
new file mode 100644
index 000000000..ea5cd0435
--- /dev/null
+++ b/elements/BarbedWireCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.OAK_FENCE"
+ },
+ {
+ "value": "Blocks.IRON_BARS"
+ },
+ {
+ "value": "Blocks.OAK_FENCE"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BarbedWire"
+ },
+ "name": "barbed_wire_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BarbedWireShiTiZaiFangKuaiZhongPengZhuangShi.mod.json b/elements/BarbedWireShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
new file mode 100644
index 000000000..2f817904f
--- /dev/null
+++ b/elements/BarbedWireShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCACTUS1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bazipengzhuang.mod.json b/elements/Bazipengzhuang.mod.json
new file mode 100644
index 000000000..3093ba573
--- /dev/null
+++ b/elements/Bazipengzhuang.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTtargetdown00.11"
+ }
+}
\ No newline at end of file
diff --git a/elements/BigHammer.mod.json b/elements/BigHammer.mod.json
new file mode 100644
index 000000000..d3db1d67f
--- /dev/null
+++ b/elements/BigHammer.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STICK"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Hammer"
+ },
+ "name": "big_hammer",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bigexp.mod.json b/elements/Bigexp.mod.json
new file mode 100644
index 000000000..b4374c890
--- /dev/null
+++ b/elements/Bigexp.mod.json
@@ -0,0 +1,10 @@
+{
+ "_fv": 57,
+ "_type": "command",
+ "definition": {
+ "commandName": "target:bigexp",
+ "type": "STANDARD",
+ "permissionLevel": "No requirement",
+ "argsxml": "Hugeexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/BluePrintEpic.mod.json b/elements/BluePrintEpic.mod.json
new file mode 100644
index 000000000..1b91bb29b
--- /dev/null
+++ b/elements/BluePrintEpic.mod.json
@@ -0,0 +1,244 @@
+{
+ "_fv": 57,
+ "_type": "loottable",
+ "definition": {
+ "type": "Chest",
+ "pools": [
+ {
+ "minrolls": 1,
+ "maxrolls": 1,
+ "minbonusrolls": 1,
+ "maxbonusrolls": 1,
+ "hasbonusrolls": false,
+ "entries": [
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:TracheliumBlueprint"
+ },
+ "weight": 60,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:Aa12Blueprint"
+ },
+ "weight": 60,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SentinelBlueprint"
+ },
+ "weight": 60,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:KRABERBlueprint"
+ },
+ "weight": 30,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:BocekBlueprint"
+ },
+ "weight": 30,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:MinigunBlueprint"
+ },
+ "weight": 30,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ }
+ ]
+ }
+ ],
+ "name": "blue_print_epic",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/BluePrintRare.mod.json b/elements/BluePrintRare.mod.json
new file mode 100644
index 000000000..71f557df7
--- /dev/null
+++ b/elements/BluePrintRare.mod.json
@@ -0,0 +1,286 @@
+{
+ "_fv": 57,
+ "_type": "loottable",
+ "definition": {
+ "type": "Chest",
+ "pools": [
+ {
+ "minrolls": 1,
+ "maxrolls": 1,
+ "minbonusrolls": 1,
+ "maxbonusrolls": 1,
+ "hasbonusrolls": false,
+ "entries": [
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ "weight": 14,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SKSBlueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "weight": 10,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:TracheliumBlueprint"
+ },
+ "weight": 5,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:Aa12Blueprint"
+ },
+ "weight": 5,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SentinelBlueprint"
+ },
+ "weight": 5,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ }
+ ]
+ }
+ ],
+ "name": "blue_print_rare",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Blueprint.mod.json b/elements/Blueprint.mod.json
new file mode 100644
index 000000000..8ae1dcb0f
--- /dev/null
+++ b/elements/Blueprint.mod.json
@@ -0,0 +1,447 @@
+{
+ "_fv": 57,
+ "_type": "villagertrade",
+ "definition": {
+ "tradeEntries": [
+ {
+ "villagerProfession": {
+ "value": "WEAPONSMITH"
+ },
+ "entries": [
+ {
+ "price1": {
+ "value": "CUSTOM:TaserBlueprint"
+ },
+ "countPrice1": 1,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "Items.EMERALD"
+ },
+ "countOffer": 1,
+ "level": 1,
+ "maxTrades": 16,
+ "xp": 5,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 10,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:SteelAction"
+ },
+ "countOffer": 1,
+ "level": 2,
+ "maxTrades": 12,
+ "xp": 5,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 32,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ "countOffer": 1,
+ "level": 4,
+ "maxTrades": 10,
+ "xp": 50,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 32,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ "countOffer": 1,
+ "level": 4,
+ "maxTrades": 10,
+ "xp": 50,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 32,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ "countOffer": 1,
+ "level": 4,
+ "maxTrades": 10,
+ "xp": 50,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 32,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ "countOffer": 1,
+ "level": 4,
+ "maxTrades": 10,
+ "xp": 50,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 64,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 1,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "countOffer": 1,
+ "level": 5,
+ "maxTrades": 10,
+ "xp": 80,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 8,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:SteelBarrel"
+ },
+ "countOffer": 1,
+ "level": 2,
+ "maxTrades": 12,
+ "xp": 5,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 6,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:SteelTrigger"
+ },
+ "countOffer": 1,
+ "level": 2,
+ "maxTrades": 12,
+ "xp": 5,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 8,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:SteelSpring"
+ },
+ "countOffer": 1,
+ "level": 2,
+ "maxTrades": 12,
+ "xp": 5,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 16,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:CementedCarbideBarrel"
+ },
+ "countOffer": 1,
+ "level": 3,
+ "maxTrades": 12,
+ "xp": 10,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 20,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:CementedCarbideAction"
+ },
+ "countOffer": 1,
+ "level": 3,
+ "maxTrades": 10,
+ "xp": 10,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 16,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:Cementedcarbidespring"
+ },
+ "countOffer": 1,
+ "level": 3,
+ "maxTrades": 10,
+ "xp": 10,
+ "priceMultiplier": 0.05
+ },
+ {
+ "price1": {
+ "value": "Items.EMERALD"
+ },
+ "countPrice1": 12,
+ "price2": {
+ "value": ""
+ },
+ "countPrice2": 1,
+ "offer": {
+ "value": "CUSTOM:CementedcarbideTrigger"
+ },
+ "countOffer": 1,
+ "level": 3,
+ "maxTrades": 10,
+ "xp": 10,
+ "priceMultiplier": 0.05
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/BlueprintCommonChest.mod.json b/elements/BlueprintCommonChest.mod.json
new file mode 100644
index 000000000..4e57fc18f
--- /dev/null
+++ b/elements/BlueprintCommonChest.mod.json
@@ -0,0 +1,258 @@
+{
+ "_fv": 57,
+ "_type": "loottable",
+ "definition": {
+ "type": "Chest",
+ "pools": [
+ {
+ "minrolls": 1,
+ "maxrolls": 1,
+ "minbonusrolls": 1,
+ "maxbonusrolls": 1,
+ "hasbonusrolls": false,
+ "entries": [
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:TaserBlueprint"
+ },
+ "weight": 50,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ "weight": 14,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SKSBlueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:AK47Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ "weight": 15,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ },
+ {
+ "type": "item",
+ "item": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "weight": 1,
+ "minCount": 1,
+ "maxCount": 1,
+ "minEnchantmentLevel": 0,
+ "maxEnchantmentLevel": 0,
+ "affectedByFortune": false,
+ "explosionDecay": false,
+ "silkTouchMode": 0
+ }
+ ]
+ }
+ ],
+ "name": "chests/blueprint_common_chest",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bocek.mod.json b/elements/Bocek.mod.json
new file mode 100644
index 000000000..aa125a40c
--- /dev/null
+++ b/elements/Bocek.mod.json
@@ -0,0 +1,52 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "bocek",
+ "name": "Bocek",
+ "idle": "animation.bocek.idle",
+ "rarity": "COMMON",
+ "displaySettings": "bocek.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "bocek.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/BocekBlueprint.mod.json b/elements/BocekBlueprint.mod.json
new file mode 100644
index 000000000..77f90bba5
--- /dev/null
+++ b/elements/BocekBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Bocek Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/BocekSmithing.mod.json b/elements/BocekSmithing.mod.json
new file mode 100644
index 000000000..6ce1305af
--- /dev/null
+++ b/elements/BocekSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "Items.BOW"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:SoulsteelIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:BocekBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Bocek"
+ },
+ "name": "bocek_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bocekarrow.mod.json b/elements/Bocekarrow.mod.json
new file mode 100644
index 000000000..328e75a0b
--- /dev/null
+++ b/elements/Bocekarrow.mod.json
@@ -0,0 +1,19 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": "entity.arrow.shoot"
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "Modelbocekarrow",
+ "customModelTexture": "bocekarrow.png"
+ }
+}
\ No newline at end of file
diff --git a/elements/BocekbpCrafting.mod.json b/elements/BocekbpCrafting.mod.json
new file mode 100644
index 000000000..66c00b4a2
--- /dev/null
+++ b/elements/BocekbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:BocekBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:BocekBlueprint"
+ },
+ "name": "bocekbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bocekreload.mod.json b/elements/Bocekreload.mod.json
new file mode 100644
index 000000000..7fe58acdb
--- /dev/null
+++ b/elements/Bocekreload.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idno_ext_triggerGTarrowempty0arrowemptyMINUSarrowempty1WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bowloose.mod.json b/elements/Bowloose.mod.json
new file mode 100644
index 000000000..58a5263d5
--- /dev/null
+++ b/elements/Bowloose.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandpowerno_ext_triggerlocal:powerpowerstopsound @s player target:bowpullstopsound @s player target:bowpull1pANDCUSTOM:BocekGTEpower6EQglobal:zoomingTRUECUSTOM:BocekarrowFALSEFALSEALLOWEDMULTIPLY0.5ADD1MULTIPLY0.05local:usehandlevel02MULTIPLY4local:power0.05playsound target:bowfire1p player @s ~ ~ ~ 10 1playsound target:bowfire3p player @a ~ ~ ~ 2 1stopsound @s player target:bowfire3p10CUSTOM:BulletFALSEFALSEDISALLOWEDMULTIPLY0.05ADD1MULTIPLY0.05local:usehandlevel00MULTIPLY4local:power2playsound target:shotfire player @s ~ ~ ~ 10 1playsound target:shotfire3p player @a ~ ~ ~ 2 1stopsound @s player target:shotfire3pThis example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.17arrowempty7power0local:usehandfireanim2global:firing1CREATIVE1Items.ARROW"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bowpullanim.mod.json b/elements/Bowpullanim.mod.json
new file mode 100644
index 000000000..c00201418
--- /dev/null
+++ b/elements/Bowpullanim.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "compute_cameraanglesfloat fps = Minecraft.getInstance().getFps(); if (fps <= 0) { fps = 1f; } float times = 90f / fps;EQglobal:bowpullTRUELTpulltime1pulltimeADDpulltimeMULTIPLY0.014timespulltime1GTpulltime0pulltimeMINUSpulltimeMULTIPLY0.009timespulltime0pullposADDMULTIPLY0.5COSMULTIPLYPIPOWERMINUSPOWERpulltime2120.5EQglobal:bowpullTRUELTbowtime1bowtimeADDbowtimeMULTIPLY0.014timesbowtime1GTbowtime0bowtimeMINUSbowtimeMULTIPLY1timesbowtime0bowposADDMULTIPLY0.5COSMULTIPLYPIPOWERMINUSPOWERbowtime2120.5EQglobal:bowpullTRUELThandtime1handtimeADDhandtimeMULTIPLY0.014timeshandtime1handposADDMULTIPLY0.5COSMULTIPLYPIPOWERMINUSPOWERhandtime2120.5GThandtime0handtimeMINUShandtimeMULTIPLY0.04timeshandtime0ANDGThandtime0LThandtime0.5handposADDMULTIPLY0.5COSMULTIPLYPIPOWERMINUSPOWERhandtime2120.5"
+ }
+}
\ No newline at end of file
diff --git a/elements/Buckshot.mod.json b/elements/Buckshot.mod.json
new file mode 100644
index 000000000..2e112ee37
--- /dev/null
+++ b/elements/Buckshot.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "buckshot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Buckshot",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/BuckshotCrafting.mod.json b/elements/BuckshotCrafting.mod.json
new file mode 100644
index 000000000..7d5a0f1f1
--- /dev/null
+++ b/elements/BuckshotCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "TAG:forge:ingots/lead"
+ },
+ {
+ "value": "TAG:forge:ingots/lead"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Buckshot"
+ },
+ "name": "buckshot_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bullet.mod.json b/elements/Bullet.mod.json
new file mode 100644
index 000000000..9ab9f46cb
--- /dev/null
+++ b/elements/Bullet.mod.json
@@ -0,0 +1,19 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": ""
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "Modelbullet",
+ "customModelTexture": "bullet_tex.png"
+ }
+}
\ No newline at end of file
diff --git a/elements/BulletfireNormal.mod.json b/elements/BulletfireNormal.mod.json
new file mode 100644
index 000000000..e6a4ac578
--- /dev/null
+++ b/elements/BulletfireNormal.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehanddamno_ext_triggerlocal:usehandThis example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1GTElocal:usehandlevel10local:damMULTIPLYDIVIDElocal:usehanddamagelocal:usehandvelocityADD1MULTIPLY0.05MINUSlocal:usehandlevel10local:damDIVIDElocal:usehanddamagelocal:usehandvelocitySnowballlocal:usehandvelocityCUSTOM:SpreadCUSTOM:BulletFALSEFALSEDISALLOWEDlocal:dam00local:usehandvelocityCUSTOM:Spread"
+ }
+}
\ No newline at end of file
diff --git a/elements/BullettestDanSheWuJiZhongFangKuaiShi.mod.json b/elements/BullettestDanSheWuJiZhongFangKuaiShi.mod.json
new file mode 100644
index 000000000..890ed9ef0
--- /dev/null
+++ b/elements/BullettestDanSheWuJiZhongFangKuaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerparticle target:bullthole ~ ~ ~ 0 0 0 0 1 forceparticle minecraft:smoke ~ ~ ~ 0 0.1 0 0.01 3 forceplaysound target:land block @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Bullthole.mod.json b/elements/Bullthole.mod.json
new file mode 100644
index 000000000..644c3667a
--- /dev/null
+++ b/elements/Bullthole.mod.json
@@ -0,0 +1,21 @@
+{
+ "_fv": 57,
+ "_type": "particle",
+ "definition": {
+ "texture": "bullethole.png",
+ "animate": false,
+ "frameDuration": 1,
+ "width": 0.0,
+ "height": 0.0,
+ "scale": 1.0,
+ "speedFactor": 0.0,
+ "gravity": 0.0,
+ "maxAge": 100,
+ "maxAgeDiff": 0,
+ "angularVelocity": 0.0,
+ "angularAcceleration": 0.0,
+ "canCollide": false,
+ "alwaysShow": false,
+ "renderType": "TRANSLUCENT"
+ }
+}
\ No newline at end of file
diff --git a/elements/CannonAngle.mod.json b/elements/CannonAngle.mod.json
new file mode 100644
index 000000000..e1cc473da
--- /dev/null
+++ b/elements/CannonAngle.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGT-20-20"
+ }
+}
\ No newline at end of file
diff --git a/elements/CcActionCrafting.mod.json b/elements/CcActionCrafting.mod.json
new file mode 100644
index 000000000..dde362e06
--- /dev/null
+++ b/elements/CcActionCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CementedCarbideAction"
+ },
+ "name": "cc_action_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CcIngotBlasting.mod.json b/elements/CcIngotBlasting.mod.json
new file mode 100644
index 000000000..4f9a21935
--- /dev/null
+++ b/elements/CcIngotBlasting.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Blasting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 8.0,
+ "cookingTime": 800,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "blastingInputStack": {
+ "value": "CUSTOM:Unblastedcementedcarbidepodwer"
+ },
+ "blastingReturnStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "name": "cc_ingot_blasting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CcSpringCrafting.mod.json b/elements/CcSpringCrafting.mod.json
new file mode 100644
index 000000000..b26adeebb
--- /dev/null
+++ b/elements/CcSpringCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Cementedcarbidespring"
+ },
+ "name": "cc_spring_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CcTriggerCrafting.mod.json b/elements/CcTriggerCrafting.mod.json
new file mode 100644
index 000000000..897a7676b
--- /dev/null
+++ b/elements/CcTriggerCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.TRIPWIRE_HOOK"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CementedcarbideTrigger"
+ },
+ "name": "cc_trigger_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CementedCarbideAction.mod.json b/elements/CementedCarbideAction.mod.json
new file mode 100644
index 000000000..c0db324a5
--- /dev/null
+++ b/elements/CementedCarbideAction.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "cemented_carbide_action",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Cemented Carbide Action",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CementedCarbideBarrel.mod.json b/elements/CementedCarbideBarrel.mod.json
new file mode 100644
index 000000000..7d0afdb4a
--- /dev/null
+++ b/elements/CementedCarbideBarrel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "cemented_carbide_barrel",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Cemented Carbide Barrel",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CementedCarbideIngot.mod.json b/elements/CementedCarbideIngot.mod.json
new file mode 100644
index 000000000..4e08547e4
--- /dev/null
+++ b/elements/CementedCarbideIngot.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "cemented_carbide_ingot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Lead Ingot",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CementedCarbideIngotCrafting.mod.json b/elements/CementedCarbideIngotCrafting.mod.json
new file mode 100644
index 000000000..a6da486d7
--- /dev/null
+++ b/elements/CementedCarbideIngotCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CementedCarbideBarrel"
+ },
+ "name": "cemented_carbide_ingot_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CementedcarbideTrigger.mod.json b/elements/CementedcarbideTrigger.mod.json
new file mode 100644
index 000000000..2ea6b9d16
--- /dev/null
+++ b/elements/CementedcarbideTrigger.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "cemented_carbide_trigger",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Cemented Carbide Trigger",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Cementedcarbidespring.mod.json b/elements/Cementedcarbidespring.mod.json
new file mode 100644
index 000000000..d7f43b3df
--- /dev/null
+++ b/elements/Cementedcarbidespring.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "cemented_carbide_spring",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Cemented Carbide Spring",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Changefiremode.mod.json b/elements/Changefiremode.mod.json
new file mode 100644
index 000000000..cd35c28d1
--- /dev/null
+++ b/elements/Changefiremode.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerlocal:usehandORORORORORlocal:usehandCUSTOM:AK47local:usehandCUSTOM:M4local:usehandCUSTOM:Aa12local:usehandCUSTOM:Hk416local:usehandCUSTOM:Rpklocal:usehandCUSTOM:Mk14EQlocal:usehandfiremode2local:usehandfiremode0local:usehandcg10firing0playsound target:firerate player @s ~ ~ ~ 10 1SemiTRUEEQlocal:usehandfiremode0local:usehandfiremode2local:usehandcg10playsound target:firerate player @s ~ ~ ~ 10 1AutoTRUElocal:usehandCUSTOM:VectorEQlocal:usehandfiremode0local:usehandfiremode1local:usehandcg10firing0playsound target:firerate player @s ~ ~ ~ 10 1BurstTRUEEQlocal:usehandfiremode1local:usehandfiremode2local:usehandcg10playsound target:firerate player @s ~ ~ ~ 10 1AutoTRUEEQlocal:usehandfiremode2local:usehandfiremode0local:usehandcg10playsound target:firerate player @s ~ ~ ~ 10 1SemiTRUEANDlocal:usehandCUSTOM:SentinelANDlocal:usehandEQlocal:usehandcharging0local:usehandcharging1local:usehandcid11919810local:usehandchargingtime128"
+ }
+}
\ No newline at end of file
diff --git a/elements/Changefirerate.mod.json b/elements/Changefirerate.mod.json
new file mode 100644
index 000000000..b3f9670b5
--- /dev/null
+++ b/elements/Changefirerate.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_tickstarget:gunGTcg0cgMINUScg1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Claymore.mod.json b/elements/Claymore.mod.json
new file mode 100644
index 000000000..c7ac2c1e5
--- /dev/null
+++ b/elements/Claymore.mod.json
@@ -0,0 +1,159 @@
+{
+ "_fv": 57,
+ "_type": "animatedentity",
+ "definition": {
+ "mobName": "Claymore",
+ "mobLabel": "",
+ "mobModelTexture": "claymore.png",
+ "mobModelGlowTexture": "",
+ "visualScale": {
+ "fixedValue": 0.5
+ },
+ "boundingBoxScale": {
+ "fixedValue": 0.5
+ },
+ "entityDataEntries": [],
+ "modelWidth": 0.5,
+ "modelHeight": 0.5,
+ "modelShadowSize": 0.0,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": false,
+ "spawnEggBaseColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Creature",
+ "mobCreatureType": "UNDEFINED",
+ "attackStrength": 0,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 1.0,
+ "movementSpeed": 0.0,
+ "armorBaseValue": 0.0,
+ "trackingRange": 64,
+ "followRange": 16,
+ "health": 20,
+ "xpAmount": 0,
+ "waterMob": false,
+ "flyingMob": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "deathTime": 1,
+ "lerp": 4,
+ "disableCollisions": true,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": true,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": true,
+ "immuneToPotions": true,
+ "immuneToPlayer": false,
+ "immuneToExplosion": true,
+ "immuneToTrident": false,
+ "immuneToAnvil": false,
+ "immuneToWither": true,
+ "immuneToDragonBreath": true,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": ""
+ },
+ "hurtSound": {
+ "value": ""
+ },
+ "deathSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "whenMobDies": {
+ "name": "ClaymoreDangShiTiSiWangShi"
+ },
+ "onRightClickedOn": {
+ "name": "ClaymoreYouJiShiTiShi"
+ },
+ "onMobTickUpdate": {
+ "name": "ClaymoreDangShiTiGengXinKeShi"
+ },
+ "hasAI": true,
+ "aiBase": "(none)",
+ "aixml": "",
+ "model": "claymore.geo.json",
+ "groupName": "",
+ "animation1": "animation.claymore.idle",
+ "animation2": "",
+ "animation3": "",
+ "animation4": "",
+ "animation5": "",
+ "animation6": "",
+ "animation7": "",
+ "animation8": "",
+ "animation9": "",
+ "animation10": "",
+ "enable2": false,
+ "enable3": false,
+ "enable4": false,
+ "enable5": false,
+ "enable6": false,
+ "enable7": false,
+ "enable8": false,
+ "enable9": false,
+ "enable10": false,
+ "breedable": true,
+ "tameable": true,
+ "disableDeathRotation": true,
+ "headMovement": false,
+ "eyeHeight": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "height": 0.7,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "creature",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreDamage.mod.json b/elements/ClaymoreDamage.mod.json
new file mode 100644
index 000000000..98182b000
--- /dev/null
+++ b/elements/ClaymoreDamage.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDANDOREXPLOSIONPLAYER_EXPLOSIONGTclaymore0CUSTOM:Mineamount"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreDangShiTiGengXinKeShi.mod.json b/elements/ClaymoreDangShiTiGengXinKeShi.mod.json
new file mode 100644
index 000000000..bd785341d
--- /dev/null
+++ b/elements/ClaymoreDangShiTiGengXinKeShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "targetno_ext_triggerlifeADDlife1GTElife12000GTEdef100playsound minecraft:item.shield.break player @p ~ ~ ~ 1 1playeritem.shield.break11TRUECUSTOM:ClaymoreMine10LTEtrigger60triggerADDtrigger1GTEtrigger40ADDMULTIPLY1.5ADDMULTIPLY1.5ADDMULTIPLY1.52.5local:targetANDANDEntityLivingANDCUSTOM:ClaymoreANDCUSTOM:JumppadANDCUSTOM:Target1ANDCREATIVElocal:targettarget:mediumexp1NONE7"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreDangShiTiSiWangShi.mod.json b/elements/ClaymoreDangShiTiSiWangShi.mod.json
new file mode 100644
index 000000000..8d20897a9
--- /dev/null
+++ b/elements/ClaymoreDangShiTiSiWangShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerNONE7NONE7target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreMine.mod.json b/elements/ClaymoreMine.mod.json
new file mode 100644
index 000000000..6f99be411
--- /dev/null
+++ b/elements/ClaymoreMine.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "claymore",
+ "customModelName": "claymore:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Claymore Mine",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhi.mod.json b/elements/ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhi.mod.json
new file mode 100644
index 000000000..4b7f7da35
--- /dev/null
+++ b/elements/ClaymoreMineYouJiFangKuaiShiFangKuaiDeWeiZhi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:ClaymoreFALSEADD1.1MULTIPLY0.5MULTIPLY0.5MULTIPLY0.5NBT nameNBT value20CREATIVE1"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClaymoreYouJiShiTiShi.mod.json b/elements/ClaymoreYouJiShiTiShi.mod.json
new file mode 100644
index 000000000..3d2a967a0
--- /dev/null
+++ b/elements/ClaymoreYouJiShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerAND1CUSTOM:ClaymoreMine"
+ }
+}
\ No newline at end of file
diff --git a/elements/Claymorecrafting.mod.json b/elements/Claymorecrafting.mod.json
new file mode 100644
index 000000000..ad9f26a0d
--- /dev/null
+++ b/elements/Claymorecrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.TRIPWIRE_HOOK"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Blocks.TNT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.IRON_BARS"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:ClaymoreMine"
+ },
+ "name": "claymorecrafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Claymoretime.mod.json b/elements/Claymoretime.mod.json
new file mode 100644
index 000000000..c8208b772
--- /dev/null
+++ b/elements/Claymoretime.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_ticksGTclaymore0claymoreMINUSclaymore1"
+ }
+}
\ No newline at end of file
diff --git a/elements/ClientboundSetEntityMotionPacket.mod.json b/elements/ClientboundSetEntityMotionPacket.mod.json
new file mode 100644
index 000000000..733353b40
--- /dev/null
+++ b/elements/ClientboundSetEntityMotionPacket.mod.json
@@ -0,0 +1,9 @@
+{
+ "_fv": 57,
+ "_type": "mixin",
+ "definition": {
+ "mixins": [
+ "ClientboundSetEntityMotionPacketMixin"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/CmpCrafting.mod.json b/elements/CmpCrafting.mod.json
new file mode 100644
index 000000000..cf1db04d1
--- /dev/null
+++ b/elements/CmpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:IronBarrel"
+ },
+ {
+ "value": "CUSTOM:IronAction"
+ },
+ {
+ "value": "CUSTOM:IronSpring"
+ },
+ {
+ "value": "CUSTOM:IronTrigger"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Commonmaterialpack"
+ },
+ "name": "cmp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CoalIronPowder.mod.json b/elements/CoalIronPowder.mod.json
new file mode 100644
index 000000000..497c2ec25
--- /dev/null
+++ b/elements/CoalIronPowder.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "coal_iron_powder",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Coal Iron Powder",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CoalIronPowderCrafting.mod.json b/elements/CoalIronPowderCrafting.mod.json
new file mode 100644
index 000000000..b56c2ecb0
--- /dev/null
+++ b/elements/CoalIronPowderCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "TAG:forge:dusts/iron"
+ },
+ {
+ "value": "TAG:forge:dusts/coal_coke"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CoalIronPowder"
+ },
+ "name": "coal_iron_powder_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CoalPowder.mod.json b/elements/CoalPowder.mod.json
new file mode 100644
index 000000000..78755826b
--- /dev/null
+++ b/elements/CoalPowder.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "coal_powder",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Coal Powder",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CoalPowderCrafting.mod.json b/elements/CoalPowderCrafting.mod.json
new file mode 100644
index 000000000..5e65e22f9
--- /dev/null
+++ b/elements/CoalPowderCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.COAL"
+ },
+ {
+ "value": "CUSTOM:Hammer"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:CoalPowder"
+ },
+ "name": "coal_powder_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest.mod.json b/elements/CommonChest.mod.json
new file mode 100644
index 000000000..00a746b93
--- /dev/null
+++ b/elements/CommonChest.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/simple_dungeon",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest2.mod.json b/elements/CommonChest2.mod.json
new file mode 100644
index 000000000..449b53fb5
--- /dev/null
+++ b/elements/CommonChest2.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/abandoned_mineshaft",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest3.mod.json b/elements/CommonChest3.mod.json
new file mode 100644
index 000000000..c6127e0d4
--- /dev/null
+++ b/elements/CommonChest3.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/shipwreck_map",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest4.mod.json b/elements/CommonChest4.mod.json
new file mode 100644
index 000000000..b0c6da34c
--- /dev/null
+++ b/elements/CommonChest4.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/shipwreck_supply",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest5.mod.json b/elements/CommonChest5.mod.json
new file mode 100644
index 000000000..28ba44ed5
--- /dev/null
+++ b/elements/CommonChest5.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/shipwreck_treasure",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/CommonChest6.mod.json b/elements/CommonChest6.mod.json
new file mode 100644
index 000000000..5d280c5e8
--- /dev/null
+++ b/elements/CommonChest6.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/ruined_portal",
+ "modifierTable": "BlueprintCommonChest"
+ }
+}
\ No newline at end of file
diff --git a/elements/Commonmaterialpack.mod.json b/elements/Commonmaterialpack.mod.json
new file mode 100644
index 000000000..8bf390820
--- /dev/null
+++ b/elements/Commonmaterialpack.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "common_material_pack",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Common material pack",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Copperplate.mod.json b/elements/Copperplate.mod.json
new file mode 100644
index 000000000..c3f7e75c8
--- /dev/null
+++ b/elements/Copperplate.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "copper_plate",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Copperplate",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/CopperplateCrafting.mod.json b/elements/CopperplateCrafting.mod.json
new file mode 100644
index 000000000..9c17b6390
--- /dev/null
+++ b/elements/CopperplateCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.COPPER_INGOT"
+ },
+ {
+ "value": "CUSTOM:Hammer"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Copperplate"
+ },
+ "name": "copperplate_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/CreativeAmmoBox.mod.json b/elements/CreativeAmmoBox.mod.json
new file mode 100644
index 000000000..1e1f89abc
--- /dev/null
+++ b/elements/CreativeAmmoBox.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "hk4163d",
+ "customModelName": "ammobox:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Creative Ammo Box",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 6,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": true
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "CreativeAmmoBoxWanJiaWanChengShiYongWuPinShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 0,
+ "saturation": 0.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat"
+ }
+}
\ No newline at end of file
diff --git a/elements/CreativeAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json b/elements/CreativeAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
new file mode 100644
index 000000000..36c6300ea
--- /dev/null
+++ b/elements/CreativeAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger201CUSTOM:CreativeAmmoBoxglobal:rifleammo2147483647global:handgunammo2147483647global:shotgunammo2147483647global:sniperammo2147483647Rifle Ammo +2147483647FALSEHandgun Ammo +2147483647FALSEShotgun Ammo +2147483647FALSESniper Ammo +2147483647FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Crosshair.mod.json b/elements/Crosshair.mod.json
new file mode 100644
index 000000000..8981ed424
--- /dev/null
+++ b/elements/Crosshair.mod.json
@@ -0,0 +1,71 @@
+{
+ "_fv": 57,
+ "_type": "overlay",
+ "definition": {
+ "priority": "NORMAL",
+ "components": [
+ {
+ "type": "image",
+ "data": {
+ "image": "point.png",
+ "use1Xscale": false,
+ "anchorPoint": "CENTER",
+ "x": 205,
+ "y": 112
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "rexheng.png",
+ "use1Xscale": false,
+ "anchorPoint": "CENTER",
+ "x": 196,
+ "y": 112
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "rexheng.png",
+ "use1Xscale": false,
+ "anchorPoint": "CENTER",
+ "x": 213,
+ "y": 112
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "rexshu.png",
+ "use1Xscale": false,
+ "anchorPoint": "CENTER",
+ "x": 205,
+ "y": 120
+ }
+ },
+ {
+ "type": "image",
+ "data": {
+ "image": "rexshu.png",
+ "use1Xscale": false,
+ "anchorPoint": "CENTER",
+ "x": 205,
+ "y": 103
+ }
+ }
+ ],
+ "baseTexture": "",
+ "overlayTarget": "Ingame",
+ "displayCondition": {
+ "name": "CrosshairXianShiYouXiNeiDieJiaCeng"
+ },
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/CrosshairXianShiYouXiNeiDieJiaCeng.mod.json b/elements/CrosshairXianShiYouXiNeiDieJiaCeng.mod.json
new file mode 100644
index 000000000..80c4fb9e8
--- /dev/null
+++ b/elements/CrosshairXianShiYouXiNeiDieJiaCeng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerANDANDtarget:gunLTmiaozhunshijian7ANDCUSTOM:M79CameraType.FIRST_PERSONTRUEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Damage.mod.json b/elements/Damage.mod.json
new file mode 100644
index 000000000..061282725
--- /dev/null
+++ b/elements/Damage.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_diesCUSTOM:Target1playsound target:targetdown player @s ~ ~ ~ 100 1Target Down ##.#MTRUEtargetdown201"
+ }
+}
\ No newline at end of file
diff --git a/elements/DamageReduce.mod.json b/elements/DamageReduce.mod.json
new file mode 100644
index 000000000..78b74a47a
--- /dev/null
+++ b/elements/DamageReduce.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "distansedamagestackentity_pre_hurtANDCUSTOM:ArrowInBrainlocal:stacklocal:damageamountlocal:stackdamagetotalADDlocal:stackdamagetotallocal:damageANDOROREXPLOSIONPLAYER_EXPLOSIONARROWlocal:stackORCUSTOM:M79CUSTOM:Rpglocal:damageamountlocal:stackdamagetotalADDlocal:stackdamagetotallocal:damageANDCUSTOM:Gunfirelocal:stacklocal:distanseOREQlocal:stackshotgun1local:stackCUSTOM:BocekGTlocal:distanse20DIVIDEamountADD1MULTIPLY0.05MINUSlocal:distanse20local:damageDIVIDEamountADD1MULTIPLY0.05MINUSlocal:distanse20local:damageamountEQlocal:stacksniperguns1GTlocal:distanse200DIVIDEamountADD1MULTIPLY0.001MINUSlocal:distanse200local:damageDIVIDEamountADD1MULTIPLY0.001MINUSlocal:distanse200local:damageamountEQlocal:stackhandgun1GTlocal:distanse40DIVIDEamountADD1MULTIPLY0.04MINUSlocal:distanse40local:damageDIVIDEamountADD1MULTIPLY0.04MINUSlocal:distanse40local:damageamountEQlocal:stacksmg1GTlocal:distanse50DIVIDEamountADD1MULTIPLY0.03MINUSlocal:distanse50local:damageDIVIDEamountADD1MULTIPLY0.03MINUSlocal:distanse50local:damageamountEQlocal:stackrifle1GTlocal:distanse100DIVIDEamountADD1MULTIPLY0.005MINUSlocal:distanse100local:damageamountlocal:damageDIVIDEamountADD1MULTIPLY0.005MINUSlocal:distanse100local:stackdamagetotalADDlocal:stackdamagetotallocal:damage"
+ }
+}
\ No newline at end of file
diff --git a/elements/DamageReplace.mod.json b/elements/DamageReplace.mod.json
new file mode 100644
index 000000000..7a5e5cd42
--- /dev/null
+++ b/elements/DamageReplace.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDCUSTOM:BulletEntityPlayerCUSTOM:Gunfireamount"
+ }
+}
\ No newline at end of file
diff --git a/elements/DeepslateGalenaOre.mod.json b/elements/DeepslateGalenaOre.mod.json
new file mode 100644
index 000000000..523567266
--- /dev/null
+++ b/elements/DeepslateGalenaOre.mod.json
@@ -0,0 +1,139 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "deepslate_galena_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Galena Ore",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 3.0,
+ "resistance": 8.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": true,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": true,
+ "restrictionBiomes": [
+ {
+ "value": "#is_overworld"
+ }
+ ],
+ "blocksToReplace": [
+ {
+ "value": "TAG:deepslate_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 9,
+ "frequencyOnChunk": 8,
+ "minGenerateHeight": -64,
+ "maxGenerateHeight": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/DeepslateScheeliteOre.mod.json b/elements/DeepslateScheeliteOre.mod.json
new file mode 100644
index 000000000..6154f158f
--- /dev/null
+++ b/elements/DeepslateScheeliteOre.mod.json
@@ -0,0 +1,139 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "deepslate_scheelite_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Deepslate Scheelite Ore",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 3.0,
+ "resistance": 8.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": true,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": true,
+ "restrictionBiomes": [
+ {
+ "value": "#is_overworld"
+ }
+ ],
+ "blocksToReplace": [
+ {
+ "value": "TAG:deepslate_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 5,
+ "frequencyOnChunk": 6,
+ "minGenerateHeight": -64,
+ "maxGenerateHeight": 0
+ }
+}
\ No newline at end of file
diff --git a/elements/Devofire.mod.json b/elements/Devofire.mod.json
new file mode 100644
index 000000000..f5bab1bad
--- /dev/null
+++ b/elements/Devofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehanddevno_ext_triggerlocal:usehandThis example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1BulletfireNormalArDsplaysound target:devotion_fire_1p player @s ~ ~ ~ 2 1playsound target:devotion_fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:devotion_fire_3plocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Devotion.mod.json b/elements/Devotion.mod.json
new file mode 100644
index 000000000..f90f64e70
--- /dev/null
+++ b/elements/Devotion.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "devotion",
+ "name": "Devotion",
+ "idle": "animation.devotion.idle",
+ "rarity": "COMMON",
+ "displaySettings": "devotion.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "DevotionWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "devotion.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/DevotionAutofire.mod.json b/elements/DevotionAutofire.mod.json
new file mode 100644
index 000000000..0930700e7
--- /dev/null
+++ b/elements/DevotionAutofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehanddevplayer_tickslocal:usehandEQfiring1dvfireADDdvfire1GTdvfire0dvfireMINUSdvfire1EQfiring1ANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0EQdvfire1DevofireANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0EQdvfire5DevofireANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0EQdvfire9DevofireANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0EQdvfire12DevofireANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0EQdvfire15DevofireANDANDANDlocal:usehandCUSTOM:DevotionEQlocal:usehandreloading0GTlocal:usehandammo0OROREQdvfire17EQdvfire18EQdvfire19DevofireGTEdvfire19dvfire15"
+ }
+}
\ No newline at end of file
diff --git a/elements/DevotionBluprint.mod.json b/elements/DevotionBluprint.mod.json
new file mode 100644
index 000000000..cc8c1fb70
--- /dev/null
+++ b/elements/DevotionBluprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Devotion Bluprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/DevotionSmithing.mod.json b/elements/DevotionSmithing.mod.json
new file mode 100644
index 000000000..7b541d8c0
--- /dev/null
+++ b/elements/DevotionSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Devotion"
+ },
+ "name": "devotion_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/DevotionWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/DevotionWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..9c08ac579
--- /dev/null
+++ b/elements/DevotionWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime71idlocal:idplaysound target:devotion_reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime51idlocal:idplaysound target:devotion_reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/DevotionbpCrafting.mod.json b/elements/DevotionbpCrafting.mod.json
new file mode 100644
index 000000000..709ccce4a
--- /dev/null
+++ b/elements/DevotionbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:DevotionBluprint"
+ },
+ "name": "devotionbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Devotiongfire.mod.json b/elements/Devotiongfire.mod.json
new file mode 100644
index 000000000..c92d76e65
--- /dev/null
+++ b/elements/Devotiongfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:Devotionfiring1"
+ }
+}
\ No newline at end of file
diff --git a/elements/DismantlePress.mod.json b/elements/DismantlePress.mod.json
new file mode 100644
index 000000000..58de19a54
--- /dev/null
+++ b/elements/DismantlePress.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "stackno_ext_triggerlocal:stack0local:stacktarget:gunCOMMONlocal:stack1Items.IRON_INGOTRARElocal:stack1CUSTOM:IngotSteelEPIClocal:stack1CUSTOM:CementedCarbideIngotlocal:stacktarget:legendary_gun1Items.NETHERITE_INGOTlocal:stacktarget:special_gun1CUSTOM:SoulsteelIngotGTElocal:stacklevel10LTRANDOMMULTIPLY0.005local:stacklevel3CUSTOM:SoulsteelnuggetLTRANDOMMULTIPLY0.01local:stacklevel2CUSTOM:SoulsteelnuggetLTRANDOMMULTIPLY0.03local:stacklevel1CUSTOM:SoulsteelnuggetLTRANDOMMULTIPLY0.06local:stacklevel1CUSTOM:Soulsteelnugget1CUSTOM:Soulsteelnugget0"
+ }
+}
\ No newline at end of file
diff --git a/elements/DistantRange.mod.json b/elements/DistantRange.mod.json
new file mode 100644
index 000000000..20b8a0cc2
--- /dev/null
+++ b/elements/DistantRange.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksItems.SPYGLASSLTEOUTLINENONE1024512OUTLINENONE768##.#MTRUE---MTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Doublejump.mod.json b/elements/Doublejump.mod.json
new file mode 100644
index 000000000..1be8eddfb
--- /dev/null
+++ b/elements/Doublejump.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerEQglobal:playerdoublejumpTRUEMULTIPLY10.8MULTIPLY1blockCUSTOM:doublejump11global:playerdoublejumpFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Doublejumpinput.mod.json b/elements/Doublejumpinput.mod.json
new file mode 100644
index 000000000..d9b1ff0df
--- /dev/null
+++ b/elements/Doublejumpinput.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "keybind",
+ "definition": {
+ "triggerKey": "SPACE",
+ "keyBindingName": "Doublejump",
+ "keyBindingCategoryKey": "target",
+ "onKeyPressed": {
+ "name": "Doublejump"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/EmpCrafting.mod.json b/elements/EmpCrafting.mod.json
new file mode 100644
index 000000000..23b58d30e
--- /dev/null
+++ b/elements/EmpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:CementedCarbideBarrel"
+ },
+ {
+ "value": "CUSTOM:CementedCarbideAction"
+ },
+ {
+ "value": "CUSTOM:Cementedcarbidespring"
+ },
+ {
+ "value": "CUSTOM:CementedcarbideTrigger"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "name": "emp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/EntityRange.mod.json b/elements/EntityRange.mod.json
new file mode 100644
index 000000000..36b3b045c
--- /dev/null
+++ b/elements/EntityRange.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerAND1024EntityLiving10241024:1024##.#M"
+ }
+}
\ No newline at end of file
diff --git a/elements/EpicChest.mod.json b/elements/EpicChest.mod.json
new file mode 100644
index 000000000..767f13e6d
--- /dev/null
+++ b/elements/EpicChest.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/pillager_outpost",
+ "modifierTable": "BluePrintEpic"
+ }
+}
\ No newline at end of file
diff --git a/elements/EpicChest2.mod.json b/elements/EpicChest2.mod.json
new file mode 100644
index 000000000..aea25bbe0
--- /dev/null
+++ b/elements/EpicChest2.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/stronghold_library",
+ "modifierTable": "BluePrintEpic"
+ }
+}
\ No newline at end of file
diff --git a/elements/EpicChest3.mod.json b/elements/EpicChest3.mod.json
new file mode 100644
index 000000000..d691aa554
--- /dev/null
+++ b/elements/EpicChest3.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/woodland_mansion",
+ "modifierTable": "BluePrintEpic"
+ }
+}
\ No newline at end of file
diff --git a/elements/EpicChest4.mod.json b/elements/EpicChest4.mod.json
new file mode 100644
index 000000000..b20a9df2b
--- /dev/null
+++ b/elements/EpicChest4.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/end_city_treasure",
+ "modifierTable": "BluePrintEpic"
+ }
+}
\ No newline at end of file
diff --git a/elements/Epicmaterialpack.mod.json b/elements/Epicmaterialpack.mod.json
new file mode 100644
index 000000000..963d38652
--- /dev/null
+++ b/elements/Epicmaterialpack.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "epic_material_pack",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Epic material pack",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Firemode.mod.json b/elements/Firemode.mod.json
new file mode 100644
index 000000000..869876140
--- /dev/null
+++ b/elements/Firemode.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "keybind",
+ "definition": {
+ "triggerKey": "N",
+ "keyBindingName": "Firemode",
+ "keyBindingCategoryKey": "target",
+ "onKeyPressed": {
+ "name": "Changefiremode"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/Firestar.mod.json b/elements/Firestar.mod.json
new file mode 100644
index 000000000..ccf09c8dc
--- /dev/null
+++ b/elements/Firestar.mod.json
@@ -0,0 +1,21 @@
+{
+ "_fv": 57,
+ "_type": "particle",
+ "definition": {
+ "texture": "firestar.png",
+ "animate": true,
+ "frameDuration": 2,
+ "width": 0.2,
+ "height": 0.2,
+ "scale": 0.5,
+ "speedFactor": 1.0,
+ "gravity": 1.0,
+ "maxAge": 40,
+ "maxAgeDiff": 20,
+ "angularVelocity": 0.0,
+ "angularAcceleration": 0.0,
+ "canCollide": true,
+ "alwaysShow": false,
+ "renderType": "LIT"
+ }
+}
\ No newline at end of file
diff --git a/elements/Firetime.mod.json b/elements/Firetime.mod.json
new file mode 100644
index 000000000..a380fe3ee
--- /dev/null
+++ b/elements/Firetime.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksGTglobal:firing0global:firingMINUSglobal:firing0.1global:firingFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Fusee.mod.json b/elements/Fusee.mod.json
new file mode 100644
index 000000000..27fc98aad
--- /dev/null
+++ b/elements/Fusee.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "fusee",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Fusee",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/FuseeCrafting.mod.json b/elements/FuseeCrafting.mod.json
new file mode 100644
index 000000000..df003259a
--- /dev/null
+++ b/elements/FuseeCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.STONE_BUTTON"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.REDSTONE"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Fusee"
+ },
+ "name": "fusee_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Galena.mod.json b/elements/Galena.mod.json
new file mode 100644
index 000000000..1414153c7
--- /dev/null
+++ b/elements/Galena.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "galena",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Galena",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/GalenaOre.mod.json b/elements/GalenaOre.mod.json
new file mode 100644
index 000000000..806426554
--- /dev/null
+++ b/elements/GalenaOre.mod.json
@@ -0,0 +1,139 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "galena_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Galena Ore",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 3.0,
+ "resistance": 5.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": true,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": true,
+ "restrictionBiomes": [
+ {
+ "value": "#is_overworld"
+ }
+ ],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 8,
+ "frequencyOnChunk": 9,
+ "minGenerateHeight": 1,
+ "maxGenerateHeight": 36
+ }
+}
\ No newline at end of file
diff --git a/elements/Granade40mm.mod.json b/elements/Granade40mm.mod.json
new file mode 100644
index 000000000..09ba6f533
--- /dev/null
+++ b/elements/Granade40mm.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Fusee"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": "Blocks.TNT"
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": "Items.COPPER_INGOT"
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Grenade40mm"
+ },
+ "name": "granade_40mm",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Grenade40mm.mod.json b/elements/Grenade40mm.mod.json
new file mode 100644
index 000000000..acc462439
--- /dev/null
+++ b/elements/Grenade40mm.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "gungranade",
+ "customModelName": "gungranade:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Grenade 40mm",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Ground.mod.json b/elements/Ground.mod.json
new file mode 100644
index 000000000..99ef180da
--- /dev/null
+++ b/elements/Ground.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksglobal:playerdoublejumpFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Gun.mod.json b/elements/Gun.mod.json
new file mode 100644
index 000000000..5b45106fc
--- /dev/null
+++ b/elements/Gun.mod.json
@@ -0,0 +1,88 @@
+{
+ "_fv": 57,
+ "_type": "tag",
+ "definition": {
+ "type": "Items",
+ "items": [
+ {
+ "value": "CUSTOM:Taser"
+ },
+ {
+ "value": "CUSTOM:Trachelium"
+ },
+ {
+ "value": "CUSTOM:HuntingRifle"
+ },
+ {
+ "value": "CUSTOM:M79"
+ },
+ {
+ "value": "CUSTOM:Abekiri"
+ },
+ {
+ "value": "CUSTOM:Devotion"
+ },
+ {
+ "value": "CUSTOM:M4"
+ },
+ {
+ "value": "CUSTOM:Aa12"
+ },
+ {
+ "value": "CUSTOM:Bocek"
+ },
+ {
+ "value": "CUSTOM:Hk416"
+ },
+ {
+ "value": "CUSTOM:Rpk"
+ },
+ {
+ "value": "CUSTOM:Sks"
+ },
+ {
+ "value": "CUSTOM:Kraber"
+ },
+ {
+ "value": "CUSTOM:Vector"
+ },
+ {
+ "value": "CUSTOM:Minigun"
+ },
+ {
+ "value": "CUSTOM:Mk14"
+ },
+ {
+ "value": "CUSTOM:Sentinel"
+ },
+ {
+ "value": "CUSTOM:M60"
+ },
+ {
+ "value": "CUSTOM:Svd"
+ },
+ {
+ "value": "CUSTOM:Marlin"
+ },
+ {
+ "value": "CUSTOM:M870"
+ },
+ {
+ "value": "CUSTOM:M98b"
+ },
+ {
+ "value": "CUSTOM:AK47"
+ },
+ {
+ "value": "CUSTOM:Rpg"
+ }
+ ],
+ "blocks": [],
+ "functions": [],
+ "entities": [],
+ "biomes": [],
+ "damageTypes": [],
+ "name": "gun",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunGrenade.mod.json b/elements/GunGrenade.mod.json
new file mode 100644
index 000000000..aa28ec94a
--- /dev/null
+++ b/elements/GunGrenade.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": ""
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "ModelGrenade",
+ "customModelTexture": "grenade.png",
+ "onHitsBlock": {
+ "name": "GunGrenadeDanSheWuJiZhongFangKuaiShi"
+ },
+ "onHitsEntity": {
+ "name": "GunGrenadeDanSheWuJiZhongShiTiShi"
+ },
+ "onFlyingTick": {
+ "name": "GunGrenadeDanSheWuFeiXingShiMeiKeFaSheng"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/GunGrenadeDanSheWuFeiXingShiMeiKeFaSheng.mod.json b/elements/GunGrenadeDanSheWuFeiXingShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..c45f23241
--- /dev/null
+++ b/elements/GunGrenadeDanSheWuFeiXingShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerbaoxianADDbaoxian1particle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 1 force"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunGrenadeDanSheWuJiZhongFangKuaiShi.mod.json b/elements/GunGrenadeDanSheWuJiZhongFangKuaiShi.mod.json
new file mode 100644
index 000000000..ef6084720
--- /dev/null
+++ b/elements/GunGrenadeDanSheWuJiZhongFangKuaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTbaoxian1NONE5target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunGrenadeDanSheWuJiZhongShiTiShi.mod.json b/elements/GunGrenadeDanSheWuJiZhongShiTiShi.mod.json
new file mode 100644
index 000000000..920b6ef7c
--- /dev/null
+++ b/elements/GunGrenadeDanSheWuJiZhongShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTbaoxian1NONE7target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunRecoil.mod.json b/elements/GunRecoil.mod.json
new file mode 100644
index 000000000..52fd19cba
--- /dev/null
+++ b/elements/GunRecoil.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "rxryplayer_ticksfloat recoilx = ((float)(entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble(\"recoilx\")); float recoily = ((float)(entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble(\"recoily\"));ANDANDGTE1CUSTOM:Pronelocal:rx1.2local:ry0.8CUSTOM:ProneEQbipod1local:rx5local:ry0.1local:rx1.4local:ry0.7local:rx1local:ry1GTglobal:recoil0global:recoilADDglobal:recoil0.01GTEglobal:recoil1global:recoil0MINUSMULTIPLY0.1ADDSINMULTIPLYMULTIPLY2PIMINUSglobal:recoil0.08333333333330.5double[] recoilTimer = {0}; double totalTime = 100; int sleepTime = 2; double recoilDuration = totalTime / sleepTime; float speed = (float) ((Math.random() * 2) - 1) / recoilx; Runnable recoilRunnable = () -> { while (recoilTimer[0] < recoilDuration) { float newPitch = entity.getXRot() - recoily; float newYaw = entity.getYRot() - speed; entity.setYRot(newYaw); entity.setXRot(newPitch); entity.yRotO = entity.getYRot(); entity.xRotO = entity.getXRot(); recoilTimer[0]++; try { Thread.sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } } while (recoilTimer[0] > 0) { float newPitch = entity.getXRot() + recoily; float newYaw = entity.getYRot() + speed; entity.setXRot(newPitch); entity.setYRot(newYaw); entity.xRotO = entity.getXRot(); entity.yRotO = entity.getYRot(); recoilTimer[0]--; try { Thread.sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } } }; Thread recoilThread = new Thread(recoilRunnable); recoilThread.start();"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunRecycle.mod.json b/elements/GunRecycle.mod.json
new file mode 100644
index 000000000..207454921
--- /dev/null
+++ b/elements/GunRecycle.mod.json
@@ -0,0 +1,137 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "no_tex",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Gun Recycle",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "IRON"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "METAL"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "GunRecycleGui",
+ "openGUIOnRightClick": true,
+ "inventorySize": 1,
+ "inventoryStackSize": 1,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": false,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [
+ 0
+ ],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/GunRecycleCrafting.mod.json b/elements/GunRecycleCrafting.mod.json
new file mode 100644
index 000000000..7d1d30208
--- /dev/null
+++ b/elements/GunRecycleCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": "Blocks.PLANKS"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:GunRecycle"
+ },
+ "name": "gun_recycle_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunRecycleGui.mod.json b/elements/GunRecycleGui.mod.json
new file mode 100644
index 000000000..81cbf5909
--- /dev/null
+++ b/elements/GunRecycleGui.mod.json
@@ -0,0 +1,83 @@
+{
+ "_fv": 57,
+ "_type": "gui",
+ "definition": {
+ "type": 1,
+ "width": 176,
+ "height": 166,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "inputslot",
+ "data": {
+ "inputLimit": {
+ "value": "TAG:target:gun"
+ },
+ "disablePlacement": {
+ "fixedValue": false
+ },
+ "id": 0,
+ "disablePickup": {
+ "fixedValue": false
+ },
+ "dropItemsWhenNotBound": true,
+ "x": 204,
+ "y": 63
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_dismantle",
+ "text": "dismantle",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "DismantlePress"
+ },
+ "width": 52,
+ "height": 20,
+ "x": 188,
+ "y": 93
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_gun_recycle",
+ "text": {
+ "fixedValue": "Gun Recycle"
+ },
+ "color": {
+ "value": -12829636,
+ "falpha": 0.0
+ },
+ "x": 132,
+ "y": 43
+ }
+ },
+ {
+ "type": "tooltip",
+ "data": {
+ "name": "tooltip_if_guns_level_10you_will_get",
+ "text": {
+ "fixedValue": "If gun's level > 10,you will get soul nuggets"
+ },
+ "width": 58,
+ "height": 24,
+ "x": 184,
+ "y": 91
+ }
+ }
+ ],
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/Gunfire.mod.json b/elements/Gunfire.mod.json
new file mode 100644
index 000000000..56fde7cc9
--- /dev/null
+++ b/elements/Gunfire.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "damagetype",
+ "definition": {
+ "exhaustion": 0.0,
+ "scaling": "never",
+ "effects": "hurt",
+ "normalDeathMessage": "%1$s died",
+ "itemDeathMessage": "%1$s was killed by %2$s using %3$s",
+ "playerDeathMessage": "%1$s died whilst trying to escape %2$s"
+ }
+}
\ No newline at end of file
diff --git a/elements/Gunpickup.mod.json b/elements/Gunpickup.mod.json
new file mode 100644
index 000000000..d0d034e1a
--- /dev/null
+++ b/elements/Gunpickup.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_item_pickuptarget:gundrawtime0"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunsData.mod.json b/elements/GunsData.mod.json
new file mode 100644
index 000000000..b7f2d8962
--- /dev/null
+++ b/elements/GunsData.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksammolocktrueammolocktrueCUSTOM:TacAKammo20maxammo80zoom1gun1CUSTOM:TacAK47ammo30maxammo120zoom1gun1autorifle1CUSTOM:DevotionEQCUSTOM:Profession24ammo55maxammo220ammo48maxammo192zoom2gun1autorifle1CUSTOM:Tracheliumammo8maxammo40zoom1gun1CUSTOM:HuntingRifleammo1maxammo10zoom6gun1sniperguns1CUSTOM:Taserammo1maxammoINFINITYgun1CUSTOM:M79ammo1maxammo3zoom1gun1CUSTOM:Abekiriammo2maxammo20zoom1gun1CUSTOM:TacMradammo5maxammo30zoom4gun1sniperguns1CUSTOM:TacRpgammo1maxammo0zoom1gun1"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunsDev.mod.json b/elements/GunsDev.mod.json
new file mode 100644
index 000000000..b4c271b6b
--- /dev/null
+++ b/elements/GunsDev.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "walksprintqianxingbasicdevpronejumpxishuzoomfirerideplayer_tickslocal:basicdevdevOREQqian1OREQtui1OREQmover1EQmovel1local:walkMULTIPLY0.2local:basicdevlocal:walk0local:sprintMULTIPLY0.5local:basicdevlocal:sprint0local:qianxingMULTIPLY-0.25local:basicdevlocal:qianxing0CUSTOM:Pronelocal:proneMULTIPLY-0.5local:basicdevlocal:prone0local:jump0local:jumpMULTIPLY1.5local:basicdevGTmiaozhunshijian4EQsniperguns1local:zoom0.001EQshotgun1local:zoom0.9local:zoom0.1local:zoom1GTfireanim0local:fireMULTIPLY0.5local:basicdevlocal:fire0local:rideMULTIPLY-0.5local:basicdevlocal:ride0local:xishuMULTIPLYlocal:zoomADDlocal:basicdevADDlocal:walkADDlocal:sprintADDlocal:qianxingADDlocal:proneADDlocal:jumpADDlocal:firelocal:rideLTCUSTOM:Spreadlocal:xishuCUSTOM:SpreadADDCUSTOM:SpreadMULTIPLY0.01POWERMINUSlocal:xishuCUSTOM:Spread2CUSTOM:SpreadMINUSCUSTOM:SpreadMULTIPLY0.01POWERMINUSlocal:xishuCUSTOM:Spread2"
+ }
+}
\ No newline at end of file
diff --git a/elements/GunsTips.mod.json b/elements/GunsTips.mod.json
new file mode 100644
index 000000000..2de7d9246
--- /dev/null
+++ b/elements/GunsTips.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "firemodeusehandtooltip_eventtarget:gunLTElevel10CUSTOM:Bocek§l§7Damage:2.4*10/24§l§7Damage:ADDdamageadddamage##.##CUSTOM:Bocek§l§7Damage:(2.4 + MULTIPLYDIVIDEMINUSlevel102010##.##)*10/24 + MULTIPLYDIVIDEMINUSlevel102024##.##§l§7Damage:ADDdamageadddamage##.## + MULTIPLYDIVIDEMINUSlevel1020ADDdamageadddamage##.##LTlevel4§f§lLevel:level## MULTIPLY100DIVIDEdamagenowdamageneed##.##%ANDLTE4levelLTlevel6§b§lLevel:level## MULTIPLY100DIVIDEdamagenowdamageneed##.##%ANDLTE6levelLTlevel8§d§lLevel:level## MULTIPLY100DIVIDEdamagenowdamageneed##.##%ANDLTE8levelLTlevel10§6§lLevel:level## MULTIPLY100DIVIDEdamagenowdamageneed##.##%LTE10level§c§lLevel:level## MULTIPLY100DIVIDEdamagenowdamageneed##.##%CUSTOM:CreativeAmmoBoxCreative Ammo * 2147483647CUSTOM:RifleAmmoBoxRifle Ammo * 30CUSTOM:HandgunAmmoBoxHandgun Ammo * 30CUSTOM:ShotgunAmmoBoxShotgun Ammo * 12CUSTOM:SniperAmmoBoxSniper Ammo * 12"
+ }
+}
\ No newline at end of file
diff --git a/elements/HK416Blueprint.mod.json b/elements/HK416Blueprint.mod.json
new file mode 100644
index 000000000..1443a04a4
--- /dev/null
+++ b/elements/HK416Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "HK-416 Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/HRCrafting.mod.json b/elements/HRCrafting.mod.json
new file mode 100644
index 000000000..72324b451
--- /dev/null
+++ b/elements/HRCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "name": "hr_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hammer.mod.json b/elements/Hammer.mod.json
new file mode 100644
index 000000000..cedf177a0
--- /dev/null
+++ b/elements/Hammer.mod.json
@@ -0,0 +1,33 @@
+{
+ "_fv": 57,
+ "_type": "tool",
+ "definition": {
+ "toolType": "Sword",
+ "renderType": 1,
+ "blockingRenderType": 0,
+ "texture": "hammer",
+ "customModelName": "hammer:default",
+ "blockingModelName": "Normal blocking",
+ "name": "Hammer",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "harvestLevel": 1,
+ "efficiency": 4.0,
+ "attackSpeed": 0.8,
+ "enchantability": 14,
+ "damageVsEntity": 12.0,
+ "usageCount": 800,
+ "blocksAffected": [],
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "repairItems": [],
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": true,
+ "damageOnCrafting": true
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmo.mod.json b/elements/HandgunAmmo.mod.json
new file mode 100644
index 000000000..186fe9955
--- /dev/null
+++ b/elements/HandgunAmmo.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "handgunammo",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Handgun Ammo * 5",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "HandgunAmmoYouJiKongQiShiShiTiDeWeiZhi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmoBox.mod.json b/elements/HandgunAmmoBox.mod.json
new file mode 100644
index 000000000..bc9a6b2fc
--- /dev/null
+++ b/elements/HandgunAmmoBox.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "hk4163d",
+ "customModelName": "handgunammobox:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Handgun Ammo Box",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 16,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "HandgunAmmoBoxWanJiaWanChengShiYongWuPinShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 0,
+ "saturation": 0.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmoBoxCrafting.mod.json b/elements/HandgunAmmoBoxCrafting.mod.json
new file mode 100644
index 000000000..f8f77f797
--- /dev/null
+++ b/elements/HandgunAmmoBoxCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:HandgunAmmoBox"
+ },
+ "name": "handgun_ammo_box_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json b/elements/HandgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
new file mode 100644
index 000000000..05debda0d
--- /dev/null
+++ b/elements/HandgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger201CUSTOM:HandgunAmmoBoxglobal:handgunammoADDglobal:handgunammo30Handgun Ammo +30FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmoCrafting.mod.json b/elements/HandgunAmmoCrafting.mod.json
new file mode 100644
index 000000000..a961cc570
--- /dev/null
+++ b/elements/HandgunAmmoCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 3,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.COPPER_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:HandgunAmmo"
+ },
+ "name": "handgun_ammo_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json b/elements/HandgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
new file mode 100644
index 000000000..d5e45cb38
--- /dev/null
+++ b/elements/HandgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:handgunammoADDglobal:handgunammo5Handgun Ammo +5FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 11CUSTOM:HandgunAmmo10"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunReload1.mod.json b/elements/HandgunReload1.mod.json
new file mode 100644
index 000000000..d483d0e83
--- /dev/null
+++ b/elements/HandgunReload1.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1stackno_ext_triggerlocal:stacklocal:ammo1MINUSlocal:stackmaglocal:stackammoGTEglobal:handgunammolocal:ammo1global:handgunammoMINUSglobal:handgunammolocal:ammo1local:stackammoADDlocal:stackammolocal:ammo1local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:handgunammoglobal:handgunammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/HandgunReload2.mod.json b/elements/HandgunReload2.mod.json
new file mode 100644
index 000000000..8c9b98ba7
--- /dev/null
+++ b/elements/HandgunReload2.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo2stackno_ext_triggerlocal:stacklocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:handgunammolocal:ammo2global:handgunammoMINUSglobal:handgunammolocal:ammo2local:stackammoADDlocal:stackammolocal:ammo2local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:handgunammoglobal:handgunammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hitindication.mod.json b/elements/Hitindication.mod.json
new file mode 100644
index 000000000..5e195db9c
--- /dev/null
+++ b/elements/Hitindication.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksGTglobal:hitind0global:hitindMINUSglobal:hitind1global:hitindFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hitindication2.mod.json b/elements/Hitindication2.mod.json
new file mode 100644
index 000000000..1e881c491
--- /dev/null
+++ b/elements/Hitindication2.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_pre_hurtANDANDEntityPlayerOROREXPLOSIONPLAYER_EXPLOSIONCUSTOM:Mineplaysound target:indication voice @a ~ ~ ~ 1 1global:hitind25"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416.mod.json b/elements/Hk416.mod.json
new file mode 100644
index 000000000..a3405d501
--- /dev/null
+++ b/elements/Hk416.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "hk416",
+ "name": "Hk-416A5",
+ "idle": "animation.m4.idle",
+ "rarity": "COMMON",
+ "displaySettings": "hk416.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "Hk416WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "hk416.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416Smithing.mod.json b/elements/Hk416Smithing.mod.json
new file mode 100644
index 000000000..386bd483d
--- /dev/null
+++ b/elements/Hk416Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Hk416"
+ },
+ "name": "hk_416_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/Hk416WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..b6ddf2998
--- /dev/null
+++ b/elements/Hk416WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime55idlocal:idplaysound target:hk416reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:hk416reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416autofire.mod.json b/elements/Hk416autofire.mod.json
new file mode 100644
index 000000000..8e4bc1741
--- /dev/null
+++ b/elements/Hk416autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerlocal:usehandBulletfireNormalHkDsplaysound target:hk416_fire1p player @s ~ ~ ~ 2 1playsound target:hk416fire player @a ~ ~ ~ 4 1stopsound @s player target:hk416firelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416bpCrafting.mod.json b/elements/Hk416bpCrafting.mod.json
new file mode 100644
index 000000000..ca84e66c1
--- /dev/null
+++ b/elements/Hk416bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:HK416Blueprint"
+ },
+ "name": "hk_416bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416fire.mod.json b/elements/Hk416fire.mod.json
new file mode 100644
index 000000000..5a05625d2
--- /dev/null
+++ b/elements/Hk416fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:Hk416EQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2BulletfireNormalHkDsplaysound target:hk416_fire1p player @s ~ ~ ~ 2 1playsound target:hk416fire player @a ~ ~ ~ 4 1stopsound @s player target:hk416firelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hk416firerandom.mod.json b/elements/Hk416firerandom.mod.json
new file mode 100644
index 000000000..3358a1465
--- /dev/null
+++ b/elements/Hk416firerandom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1hkfireADDhkfire1hkfire0EQfiring1ANDANDANDlocal:usehandCUSTOM:Hk416EQlocal:usehandreloading0GTlocal:usehandammo0EQhkfire1Hk416autofireANDANDANDlocal:usehandCUSTOM:Hk416EQlocal:usehandreloading0GTlocal:usehandammo0EQhkfire3Hk416autofireANDANDANDlocal:usehandCUSTOM:Hk416EQlocal:usehandreloading0GTlocal:usehandammo0EQhkfire5Hk416autofireGTEhkfire5hkfire0"
+ }
+}
\ No newline at end of file
diff --git a/elements/HkDs.mod.json b/elements/HkDs.mod.json
new file mode 100644
index 000000000..0301c6ac4
--- /dev/null
+++ b/elements/HkDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:hk_far player @a ~ ~ ~ 12 1playsound target:hk_very_far player @a ~ ~ ~ 24 1stopsound @s player target:hk_farstopsound @s player target:hk_very_far"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hrfire.mod.json b/elements/Hrfire.mod.json
new file mode 100644
index 000000000..8fde2f4b7
--- /dev/null
+++ b/elements/Hrfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:HuntingRifleEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0BulletfireNormallocal:usehand13playsound target:hr_fire_1p player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hrreloding.mod.json b/elements/Hrreloding.mod.json
new file mode 100644
index 000000000..33783f546
--- /dev/null
+++ b/elements/Hrreloding.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idammo1ammo2no_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime61idlocal:idplaysound target:hr_reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1emptyreload0reloading0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload1WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hugeexp.mod.json b/elements/Hugeexp.mod.json
new file mode 100644
index 000000000..4d9a669e7
--- /dev/null
+++ b/elements/Hugeexp.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerblockCUSTOM:c4expADD1121blockCUSTOM:expfarADD1241blockCUSTOM:expveryfarADD1641ADD1particle minecraft:campfire_cosy_smoke ~ ~ ~ 1 3 1 0.04 200 forceADD1particle minecraft:large_smoke ~ ~1 ~ 1 3 1 0.02 1000 forceADD1particle minecraft:campfire_cosy_smoke ~ ~ ~ 6 0.01 6 0.02 500 forceADD1particle target:firestar ~ ~ ~ 0 0 0 0.5 600 force"
+ }
+}
\ No newline at end of file
diff --git a/elements/HuntingRifle.mod.json b/elements/HuntingRifle.mod.json
new file mode 100644
index 000000000..b8830e363
--- /dev/null
+++ b/elements/HuntingRifle.mod.json
@@ -0,0 +1,61 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "huntingrifle",
+ "name": "Hunting Rifle",
+ "idle": "animation.hunting_rifle.idle",
+ "rarity": "COMMON",
+ "displaySettings": "hunting_rifle.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 1,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "ZoomAnXiaAnJianShi"
+ },
+ "onItemInInventoryTick": {
+ "name": "Hrreloding"
+ },
+ "onStoppedUsing": {
+ "name": "ZoomSongKaiAnJianShi"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "hunting_rifle.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/HuntingRifleBlueprint.mod.json b/elements/HuntingRifleBlueprint.mod.json
new file mode 100644
index 000000000..a70a62dbf
--- /dev/null
+++ b/elements/HuntingRifleBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Hunting Rifle Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/HuntingRifleSmithing.mod.json b/elements/HuntingRifleSmithing.mod.json
new file mode 100644
index 000000000..4925fd5db
--- /dev/null
+++ b/elements/HuntingRifleSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.LOG"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:HuntingRifleBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:HuntingRifle"
+ },
+ "name": "hunting_rifle_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Hurtcancel.mod.json b/elements/Hurtcancel.mod.json
new file mode 100644
index 000000000..cd789d483
--- /dev/null
+++ b/elements/Hurtcancel.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDANDANDEntityPlayerORSPECTATORORORCUSTOM:ArrowInBrainCUSTOM:MineARROW"
+ }
+}
\ No newline at end of file
diff --git a/elements/IngotSteel.mod.json b/elements/IngotSteel.mod.json
new file mode 100644
index 000000000..972bf5bf8
--- /dev/null
+++ b/elements/IngotSteel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_ingot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Ingot Steel",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IngotSteelBlasting.mod.json b/elements/IngotSteelBlasting.mod.json
new file mode 100644
index 000000000..8099ed3e7
--- /dev/null
+++ b/elements/IngotSteelBlasting.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Blasting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 1.0,
+ "cookingTime": 400,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "blastingInputStack": {
+ "value": "CUSTOM:CoalIronPowder"
+ },
+ "blastingReturnStack": {
+ "value": "CUSTOM:IngotSteel"
+ },
+ "name": "ingot_steel_blasting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronAction.mod.json b/elements/IronAction.mod.json
new file mode 100644
index 000000000..b7eb5b112
--- /dev/null
+++ b/elements/IronAction.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "iron_action",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Iron Action",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronActionCrafting.mod.json b/elements/IronActionCrafting.mod.json
new file mode 100644
index 000000000..ad4658f84
--- /dev/null
+++ b/elements/IronActionCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:IronAction"
+ },
+ "name": "iron_action_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronBarrel.mod.json b/elements/IronBarrel.mod.json
new file mode 100644
index 000000000..d1f3b9f53
--- /dev/null
+++ b/elements/IronBarrel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "iron_barrel",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Iron Barrel",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronBarrelCrafting.mod.json b/elements/IronBarrelCrafting.mod.json
new file mode 100644
index 000000000..6bbb6e16b
--- /dev/null
+++ b/elements/IronBarrelCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:IronBarrel"
+ },
+ "name": "iron_barrel_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronPowder.mod.json b/elements/IronPowder.mod.json
new file mode 100644
index 000000000..12c77808c
--- /dev/null
+++ b/elements/IronPowder.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "iron_powder",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Iron Powder",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronPowderCrafting.mod.json b/elements/IronPowderCrafting.mod.json
new file mode 100644
index 000000000..8e88647e8
--- /dev/null
+++ b/elements/IronPowderCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "CUSTOM:Hammer"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:IronPowder"
+ },
+ "name": "iron_powder_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronSpring.mod.json b/elements/IronSpring.mod.json
new file mode 100644
index 000000000..f4d7ca962
--- /dev/null
+++ b/elements/IronSpring.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "iron_spring",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Iron Spring",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronSpringCrafting.mod.json b/elements/IronSpringCrafting.mod.json
new file mode 100644
index 000000000..16ad9ea9f
--- /dev/null
+++ b/elements/IronSpringCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:IronSpring"
+ },
+ "name": "iron_spring_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronTrigger.mod.json b/elements/IronTrigger.mod.json
new file mode 100644
index 000000000..555a1d8bd
--- /dev/null
+++ b/elements/IronTrigger.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "iron_trigger",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Iron Trigger",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/IronTriggerCrafting.mod.json b/elements/IronTriggerCrafting.mod.json
new file mode 100644
index 000000000..4301569fa
--- /dev/null
+++ b/elements/IronTriggerCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.TRIPWIRE_HOOK"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:IronTrigger"
+ },
+ "name": "iron_trigger_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/JumppadBlock.mod.json b/elements/JumppadBlock.mod.json
new file mode 100644
index 000000000..96aace179
--- /dev/null
+++ b/elements/JumppadBlock.mod.json
@@ -0,0 +1,183 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "pad",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 2,
+ "customModelName": "pad:default",
+ "rotationMode": 1,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": true,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 3.0,
+ "Mz": 16.0,
+ "subtract": false
+ },
+ {
+ "mx": 14.0,
+ "my": -0.1,
+ "mz": 14.0,
+ "Mx": 16.25,
+ "My": 3.25,
+ "Mz": 16.25,
+ "subtract": false
+ },
+ {
+ "mx": -0.25,
+ "my": -0.1,
+ "mz": 14.0,
+ "Mx": 2.0,
+ "My": 3.25,
+ "Mz": 16.25,
+ "subtract": false
+ },
+ {
+ "mx": -0.25,
+ "my": -0.1,
+ "mz": -0.25,
+ "Mx": 2.0,
+ "My": 3.25,
+ "Mz": 2.0,
+ "subtract": false
+ },
+ {
+ "mx": 14.0,
+ "my": -0.1,
+ "mz": -0.25,
+ "Mx": 16.25,
+ "My": 3.25,
+ "Mz": 2.0,
+ "subtract": false
+ },
+ {
+ "mx": 1.0,
+ "my": 3.0,
+ "mz": 1.0,
+ "Mx": 15.0,
+ "My": 4.0,
+ "Mz": 15.0,
+ "subtract": false
+ }
+ ],
+ "name": "Jumppad Block",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 1.0,
+ "resistance": 10.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 0,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": true,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": true,
+ "breakHarvestLevel": 1,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "onEntityCollides": {
+ "name": "JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShi"
+ },
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShi.mod.json b/elements/JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
new file mode 100644
index 000000000..faa71fa48
--- /dev/null
+++ b/elements/JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:Target1MULTIPLY51.5MULTIPLY5EQglobal:zoomingFALSEvy0.8blockCUSTOM:jump11MULTIPLY1.81.5MULTIPLY1.8EQglobal:zoomingFALSEvy0.8blockCUSTOM:jump11MULTIPLY0.71.7MULTIPLY0.7EQglobal:zoomingFALSEvy0.8blockCUSTOM:jump11global:playerdoublejumpTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/JumppadCrafting.mod.json b/elements/JumppadCrafting.mod.json
new file mode 100644
index 000000000..49fdbebc7
--- /dev/null
+++ b/elements/JumppadCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.STONE_PRESSURE_PLATE"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.CONCRETE#5"
+ },
+ {
+ "value": "Blocks.PISTON"
+ },
+ {
+ "value": "Blocks.CONCRETE#5"
+ },
+ {
+ "value": "Blocks.CONCRETE#5"
+ },
+ {
+ "value": "Blocks.CONCRETE#5"
+ },
+ {
+ "value": "Blocks.CONCRETE#5"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:JumppadBlock"
+ },
+ "name": "jumppad_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/KRABERBlueprint.mod.json b/elements/KRABERBlueprint.mod.json
new file mode 100644
index 000000000..ac2f0fb96
--- /dev/null
+++ b/elements/KRABERBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Kraber Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Killindication.mod.json b/elements/Killindication.mod.json
new file mode 100644
index 000000000..418a7dfab
--- /dev/null
+++ b/elements/Killindication.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_diesANDANDEntityPlayertarget:gunplaysound target:targetdown player @s ~ ~ ~ 100 1global:killind40"
+ }
+}
\ No newline at end of file
diff --git a/elements/Kraber.mod.json b/elements/Kraber.mod.json
new file mode 100644
index 000000000..24e497126
--- /dev/null
+++ b/elements/Kraber.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "kraber",
+ "name": "Kraber",
+ "idle": "animation.kraber.idle",
+ "rarity": "EPIC",
+ "displaySettings": "kraber.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "KraberWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "kraber.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/KraberDs.mod.json b/elements/KraberDs.mod.json
new file mode 100644
index 000000000..c94e153e4
--- /dev/null
+++ b/elements/KraberDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:kraberfar player @a ~ ~ ~ 16 1playsound target:kraberveryfar player @a ~ ~ ~ 32 1stopsound @s player target:kraberfarstopsound @s player target:kraberveryfar"
+ }
+}
\ No newline at end of file
diff --git a/elements/KraberSmithing.mod.json b/elements/KraberSmithing.mod.json
new file mode 100644
index 000000000..90b97208c
--- /dev/null
+++ b/elements/KraberSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Specialmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.SPYGLASS"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:KRABERBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Kraber"
+ },
+ "name": "kraber_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/KraberWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/KraberWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..55b4c28d2
--- /dev/null
+++ b/elements/KraberWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime83idlocal:idplaysound target:kraberreload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1emptyreload0reloading0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload1ANDEQreloading1GTammo0EQreloadtime65idlocal:idplaysound target:kraberreload1 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload2Weapondrawhavey"
+ }
+}
\ No newline at end of file
diff --git a/elements/KraberbpCrafting.mod.json b/elements/KraberbpCrafting.mod.json
new file mode 100644
index 000000000..6c5256437
--- /dev/null
+++ b/elements/KraberbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:KRABERBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:KRABERBlueprint"
+ },
+ "name": "kraberbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Kraberfire.mod.json b/elements/Kraberfire.mod.json
new file mode 100644
index 000000000..e16ccb7ae
--- /dev/null
+++ b/elements/Kraberfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:KraberEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0local:usehandfireanim40BulletfireNormalKraberDslocal:usehand40playsound target:kraber_fire_1p player @s ~ ~ ~ 2 1playsound target:kraber_fire_3p player @a ~ ~ ~ 6 1stopsound @s player target:kraber_fire_3plocal:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/LeadIngot.mod.json b/elements/LeadIngot.mod.json
new file mode 100644
index 000000000..56d84121b
--- /dev/null
+++ b/elements/LeadIngot.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "lead_ingot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Lead Ingot",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/LeadIngotBlasting.mod.json b/elements/LeadIngotBlasting.mod.json
new file mode 100644
index 000000000..666b40027
--- /dev/null
+++ b/elements/LeadIngotBlasting.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Blasting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.7,
+ "cookingTime": 100,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "blastingInputStack": {
+ "value": "CUSTOM:Galena"
+ },
+ "blastingReturnStack": {
+ "value": "CUSTOM:LeadIngot"
+ },
+ "name": "lead_ingot_blasting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/LeadIngotSmelting.mod.json b/elements/LeadIngotSmelting.mod.json
new file mode 100644
index 000000000..67eb1dcc7
--- /dev/null
+++ b/elements/LeadIngotSmelting.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smelting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.7,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smeltingInputStack": {
+ "value": "CUSTOM:Galena"
+ },
+ "smeltingReturnStack": {
+ "value": "CUSTOM:LeadIngot"
+ },
+ "name": "lead_ingot_smelting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/LegendaryGun.mod.json b/elements/LegendaryGun.mod.json
new file mode 100644
index 000000000..d35a8b1fc
--- /dev/null
+++ b/elements/LegendaryGun.mod.json
@@ -0,0 +1,25 @@
+{
+ "_fv": 57,
+ "_type": "tag",
+ "definition": {
+ "type": "Items",
+ "items": [
+ {
+ "value": "CUSTOM:Trachelium"
+ },
+ {
+ "value": "CUSTOM:Aa12"
+ },
+ {
+ "value": "CUSTOM:Sentinel"
+ }
+ ],
+ "blocks": [],
+ "functions": [],
+ "entities": [],
+ "biomes": [],
+ "damageTypes": [],
+ "name": "legendary_gun",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Legendarymaterialpack.mod.json b/elements/Legendarymaterialpack.mod.json
new file mode 100644
index 000000000..b518c2f05
--- /dev/null
+++ b/elements/Legendarymaterialpack.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "legendary_material_pack",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Legendary material pack",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/LightSaber.mod.json b/elements/LightSaber.mod.json
new file mode 100644
index 000000000..4a99c5483
--- /dev/null
+++ b/elements/LightSaber.mod.json
@@ -0,0 +1,52 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "lightsaber",
+ "name": "Light Saber",
+ "idle": "animation.lightsaber.idle",
+ "rarity": "RARE",
+ "displaySettings": "lightsaber.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": true,
+ "damageVsEntity": 28.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "lightsaber.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/LightsaberCrafting.mod.json b/elements/LightsaberCrafting.mod.json
new file mode 100644
index 000000000..eff3cfc97
--- /dev/null
+++ b/elements/LightsaberCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.STAINED_GLASS_PANE#14"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.BEACON"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.BLAZE_ROD"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:LightSaber"
+ },
+ "name": "lightsaber_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4.mod.json b/elements/M4.mod.json
new file mode 100644
index 000000000..45837f09a
--- /dev/null
+++ b/elements/M4.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "m4",
+ "name": "M4A1",
+ "idle": "animation.m4.idle",
+ "rarity": "RARE",
+ "displaySettings": "m4.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "M4WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "m4.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/M4Blueprint.mod.json b/elements/M4Blueprint.mod.json
new file mode 100644
index 000000000..78f15e65c
--- /dev/null
+++ b/elements/M4Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "M4 Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4Smithing.mod.json b/elements/M4Smithing.mod.json
new file mode 100644
index 000000000..6a57f3fa2
--- /dev/null
+++ b/elements/M4Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:IngotSteel"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:M4"
+ },
+ "name": "m_4_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/M4WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..801d70b5e
--- /dev/null
+++ b/elements/M4WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime55playsound target:m4reload player @s ~ ~ ~ 100 1idlocal:idANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime41playsound target:m4reload2 player @s ~ ~ ~ 100 1idlocal:idANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4autofire.mod.json b/elements/M4autofire.mod.json
new file mode 100644
index 000000000..e4493745a
--- /dev/null
+++ b/elements/M4autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerlocal:usehandBulletfireNormalArDsplaysound target:m4fire player @s ~ ~ ~ 2 1playsound target:m4fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:m4fire_3plocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4bpCrafting.mod.json b/elements/M4bpCrafting.mod.json
new file mode 100644
index 000000000..0561b7a34
--- /dev/null
+++ b/elements/M4bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:M4Blueprint"
+ },
+ "name": "m_4bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4fire.mod.json b/elements/M4fire.mod.json
new file mode 100644
index 000000000..2dd60b57c
--- /dev/null
+++ b/elements/M4fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "poseusehandweaponzoomno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:M4EQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2BulletfireNormalArDsplaysound target:m4fire player @s ~ ~ ~ 2 1playsound target:m4fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:m4fire_3plocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/M4firerandom.mod.json b/elements/M4firerandom.mod.json
new file mode 100644
index 000000000..7dfcd8bc6
--- /dev/null
+++ b/elements/M4firerandom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1m4fireADDm4fire1m4fire0EQfiring1ANDANDANDlocal:usehandCUSTOM:M4EQlocal:usehandreloading0GTlocal:usehandammo0EQm4fire1M4autofireANDANDANDlocal:usehandCUSTOM:M4EQlocal:usehandreloading0GTlocal:usehandammo0EQm4fire3M4autofireANDANDANDlocal:usehandCUSTOM:M4EQlocal:usehandreloading0GTlocal:usehandammo0EQm4fire5M4autofireGTEm4fire5m4fire0"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60.mod.json b/elements/M60.mod.json
new file mode 100644
index 000000000..82a60084e
--- /dev/null
+++ b/elements/M60.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "m60",
+ "name": "M 6 0",
+ "idle": "animation.m60.idle",
+ "rarity": "RARE",
+ "displaySettings": "m60.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "M60WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "m60.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/M60Blueprint.mod.json b/elements/M60Blueprint.mod.json
new file mode 100644
index 000000000..f8591f3e9
--- /dev/null
+++ b/elements/M60Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "M60 Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60Smithing.mod.json b/elements/M60Smithing.mod.json
new file mode 100644
index 000000000..2134e5827
--- /dev/null
+++ b/elements/M60Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:M60"
+ },
+ "name": "m_60_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/M60WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..34bc83a64
--- /dev/null
+++ b/elements/M60WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime129idlocal:idplaysound target:m60reload player @s ~ ~ ~ 100 1LTEreloadtime55empty0ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime111idlocal:idplaysound target:m60reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1Weapondrawhavey"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60autofire.mod.json b/elements/M60autofire.mod.json
new file mode 100644
index 000000000..9ebd1009e
--- /dev/null
+++ b/elements/M60autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1ANDANDANDlocal:usehandCUSTOM:M60EQlocal:usehandreloading0GTlocal:usehandammo0local:usehandEQlocal:usehandanimindex1local:usehandanimindex0local:usehandanimindex1local:usehand2BulletfireNormalplaysound target:m60fire player @a ~ ~ ~ 4 1local:usehandammoMINUSlocal:usehandammo1local:usehandempty1local:usehandfireanim2global:firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60bpCrafting.mod.json b/elements/M60bpCrafting.mod.json
new file mode 100644
index 000000000..4ff9dce65
--- /dev/null
+++ b/elements/M60bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:M60Blueprint"
+ },
+ "name": "m_60bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M60fire.mod.json b/elements/M60fire.mod.json
new file mode 100644
index 000000000..24735a104
--- /dev/null
+++ b/elements/M60fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:M60firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79.mod.json b/elements/M79.mod.json
new file mode 100644
index 000000000..8c717cf02
--- /dev/null
+++ b/elements/M79.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "m79",
+ "name": "M79 Grenade Launcher",
+ "idle": "animation.m79.idle",
+ "rarity": "RARE",
+ "displaySettings": "m79.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": true,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "M79WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "m79.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/M79Blueprint.mod.json b/elements/M79Blueprint.mod.json
new file mode 100644
index 000000000..69e15487a
--- /dev/null
+++ b/elements/M79Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "M79 Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79Smithing.mod.json b/elements/M79Smithing.mod.json
new file mode 100644
index 000000000..0240c588b
--- /dev/null
+++ b/elements/M79Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.LOG"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:M79"
+ },
+ "name": "m_79_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/M79WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..00843b49a
--- /dev/null
+++ b/elements/M79WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idammo1no_ext_triggerlocal:ididlocal:ammo1MINUS1ammoNEQididemptyreload0reloading0reloadtime0EQreloading1EQreloadtime86idlocal:idplaysound target:m79reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0reloadtime0emptyreload0ANDEQreloadtime1EQidlocal:idGTEmaxammolocal:ammo1ammoADDammolocal:ammo11CUSTOM:Grenade40mmreloading0emptyreload0ammoADDammomaxammo1CUSTOM:Grenade40mmreloading0emptyreload0WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79bpCrafting.mod.json b/elements/M79bpCrafting.mod.json
new file mode 100644
index 000000000..503248087
--- /dev/null
+++ b/elements/M79bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:M79Blueprint"
+ },
+ "name": "m_79bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79fire.mod.json b/elements/M79fire.mod.json
new file mode 100644
index 000000000..74b138671
--- /dev/null
+++ b/elements/M79fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:M79EQlocal:usehandreloading0local:usehandGTlocal:usehandammo0This example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1CUSTOM:GunGrenadeFALSEFALSEDISALLOWEDMULTIPLYDIVIDElocal:usehanddamagelocal:usehandvelocityADD1MULTIPLY0.05local:usehandlevel00local:usehandvelocityCUSTOM:Spreadparticle minecraft:cloud ADDMULTIPLY1.8 ADDADDMINUS0.1MULTIPLY1.8 ADDMULTIPLY1.8 0.1 0.1 0.1 0.002 4 force @slocal:usehand15playsound target:m79_fire_1p player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/M79ui.mod.json b/elements/M79ui.mod.json
new file mode 100644
index 000000000..50e021fd6
--- /dev/null
+++ b/elements/M79ui.mod.json
@@ -0,0 +1,31 @@
+{
+ "_fv": 57,
+ "_type": "overlay",
+ "definition": {
+ "priority": "NORMAL",
+ "components": [
+ {
+ "type": "image",
+ "data": {
+ "image": "rex.png",
+ "use1Xscale": true,
+ "anchorPoint": "CENTER",
+ "x": 197,
+ "y": 104
+ }
+ }
+ ],
+ "baseTexture": "",
+ "overlayTarget": "Ingame",
+ "displayCondition": {
+ "name": "M79uiXianShiYouXiNeiDieJiaCeng"
+ },
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/M79uiXianShiYouXiNeiDieJiaCeng.mod.json b/elements/M79uiXianShiYouXiNeiDieJiaCeng.mod.json
new file mode 100644
index 000000000..04973bca9
--- /dev/null
+++ b/elements/M79uiXianShiYouXiNeiDieJiaCeng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerANDANDCUSTOM:M79CameraType.FIRST_PERSONEQglobal:zoomingFALSETRUEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/M870.mod.json b/elements/M870.mod.json
new file mode 100644
index 000000000..16851c7c7
--- /dev/null
+++ b/elements/M870.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "m870",
+ "name": "M 8 7 0",
+ "idle": "animation.m870.idle",
+ "rarity": "RARE",
+ "displaySettings": "m870.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "M870WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "m870.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/M870Blueprint.mod.json b/elements/M870Blueprint.mod.json
new file mode 100644
index 000000000..648949850
--- /dev/null
+++ b/elements/M870Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "M870 Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/M870Smithing.mod.json b/elements/M870Smithing.mod.json
new file mode 100644
index 000000000..913b20162
--- /dev/null
+++ b/elements/M870Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:IngotSteel"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:M870"
+ },
+ "name": "m_870_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M870WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/M870WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..3ab3cb7fd
--- /dev/null
+++ b/elements/M870WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idno_ext_triggerlocal:ididlocal:ammo1MINUS8ammoNEQididfinish0reloading0prepare0loading0forcestop0stop0emptyreload0GTprepare0prepareMINUSprepare1GTloading0loadingMINUSloading1ANDGTfinish0EQloading0finishMINUSfinish1NEQididreloading0ANDEQreloading1EQidlocal:idANDEQprepare10EQemptyreload1ammoADDammo1global:shotgunammoMINUSglobal:shotgunammo1ANDANDEQprepare0EQloading0ORGTEammo8EQglobal:shotgunammo0EQforcestop1stop1loading1616playsound target:m870_reloadloop player @s ~ ~ ~ 100 1EQloadindex0loadindex1loadindex0EQloading9ammoADDammo1global:shotgunammoMINUSglobal:shotgunammo1ORANDORGTEammo8EQglobal:shotgunammo0EQloading0EQstop1forcestop0stop0finish1212reloading0emptyreload0GTfiring0firingMINUSfiring1WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/M870bpCrafting.mod.json b/elements/M870bpCrafting.mod.json
new file mode 100644
index 000000000..acb7c3774
--- /dev/null
+++ b/elements/M870bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:M870Blueprint"
+ },
+ "name": "m_870bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M870fire.mod.json b/elements/M870fire.mod.json
new file mode 100644
index 000000000..313e6d75c
--- /dev/null
+++ b/elements/M870fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDEQlocal:usehandreloading1EQlocal:usehandprepare0GTlocal:usehandammo0local:usehandforcestop1ANDANDANDlocal:usehandCUSTOM:M870EQlocal:usehandreloading0local:usehandGTlocal:usehandammo012BulletfireNormallocal:usehand13local:usehandrecoil1local:usehandfiring13playsound target:m870_fire1p player @s ~ ~ ~ 100 1playsound target:m870_fire3p player @a ~ ~ ~ 4 1stopsound @s player target:m870_fire3plocal:usehandammoMINUSlocal:usehandammo1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/M89bSmithing.mod.json b/elements/M89bSmithing.mod.json
new file mode 100644
index 000000000..a6ae484b1
--- /dev/null
+++ b/elements/M89bSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:M98b"
+ },
+ "name": "m_89b_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M98b.mod.json b/elements/M98b.mod.json
new file mode 100644
index 000000000..d12556ae6
--- /dev/null
+++ b/elements/M98b.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "m98b",
+ "name": "M98B",
+ "idle": "animation.m98b.idle",
+ "rarity": "RARE",
+ "displaySettings": "m98b.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "M98bWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "m98b.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/M98bBlueprint.mod.json b/elements/M98bBlueprint.mod.json
new file mode 100644
index 000000000..21b82f15e
--- /dev/null
+++ b/elements/M98bBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "M98B Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/M98bWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/M98bWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..659628e08
--- /dev/null
+++ b/elements/M98bWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idammo2no_ext_triggerlocal:ididlocal:ammo1MINUS5ammolocal:ammo2MINUS6ammoNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime79idlocal:idplaysound target:m98breload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload1ANDEQreloading1GTammo0EQreloadtime57idlocal:idplaysound target:m98breload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/M98bbpCrafting.mod.json b/elements/M98bbpCrafting.mod.json
new file mode 100644
index 000000000..e00d9e64d
--- /dev/null
+++ b/elements/M98bbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:M98bBlueprint"
+ },
+ "name": "m_98bbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/M98bfire.mod.json b/elements/M98bfire.mod.json
new file mode 100644
index 000000000..0aa64f6c4
--- /dev/null
+++ b/elements/M98bfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:M98bEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0local:usehandfireanim17BulletfireNormallocal:usehand17playsound target:m98b_fire_1p player @s ~ ~ ~ 100 1playsound target:m98b_fire_3p player @a ~ ~ ~ 4 1playsound target:shift @a ~ ~ ~ 1 1stopsound @s player target:m98b_fire_3pstopsound @s player target:shiftlocal:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Marlin.mod.json b/elements/Marlin.mod.json
new file mode 100644
index 000000000..e8bd09b2a
--- /dev/null
+++ b/elements/Marlin.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "marlin",
+ "name": "Marlin",
+ "idle": "animation.marlin.idle",
+ "rarity": "RARE",
+ "displaySettings": "marlin.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "MarlinWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "marlin.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/MarlinBlueprint.mod.json b/elements/MarlinBlueprint.mod.json
new file mode 100644
index 000000000..2654f01a7
--- /dev/null
+++ b/elements/MarlinBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Marlin Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/MarlinSmithing.mod.json b/elements/MarlinSmithing.mod.json
new file mode 100644
index 000000000..551d386e4
--- /dev/null
+++ b/elements/MarlinSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:IngotSteel"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Marlin"
+ },
+ "name": "marlin_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MarlinWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/MarlinWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..bb13fef4c
--- /dev/null
+++ b/elements/MarlinWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idcidno_ext_triggerlocal:ididlocal:ammo1MINUS8ammoNEQididfinish0reloading0prepare0loading0forcestop0stop0GTprepare0prepareMINUSprepare1GTloading0loadingMINUSloading1ANDGTfinish0EQloading0finishMINUSfinish1NEQididreloading0ANDEQreloading1EQidlocal:idANDANDEQprepare0EQloading0ORGTEammo8EQglobal:rifleammo0EQforcestop1stop1loading1616playsound target:marlin_loop player @s ~ ~ ~ 100 1EQloadindex0loadindex1loadindex0EQloading9ammoADDammo1global:rifleammoMINUSglobal:rifleammo1ORANDORGTEammo8EQglobal:rifleammo0EQloading0EQstop1forcestop0stop0finish1919reloading0playsound target:marlin_end player @s ~ ~ ~ 100 1GTfiring0firingMINUSfiring1WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Marlinbpcrafting.mod.json b/elements/Marlinbpcrafting.mod.json
new file mode 100644
index 000000000..a0b269886
--- /dev/null
+++ b/elements/Marlinbpcrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MarlinBlueprint"
+ },
+ "name": "marlinbpcrafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Marlinfire.mod.json b/elements/Marlinfire.mod.json
new file mode 100644
index 000000000..d6c4da314
--- /dev/null
+++ b/elements/Marlinfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandammo1idno_ext_triggerSPECTATORlocal:usehandANDANDEQlocal:usehandreloading1EQlocal:usehandprepare0GTlocal:usehandammo0local:usehandforcestop1ANDANDANDlocal:usehandCUSTOM:MarlinEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0EQglobal:zoomingTRUElocal:usehand15local:usehandfiring15local:usehandfastfiring0local:usehand10local:usehandfastfiring1local:usehandfiring10BulletfireNormalplaysound target:marlin_fire1p player @s ~ ~ ~ 100 1playsound target:marlin_fire3p player @a ~ ~ ~ 4 1stopsound @s player target:marlin_fire3plocal:usehandammoMINUSlocal:usehandammo1EQlocal:usehandanimindex1local:usehandanimindex0local:usehandanimindex1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/Medexp.mod.json b/elements/Medexp.mod.json
new file mode 100644
index 000000000..230514d30
--- /dev/null
+++ b/elements/Medexp.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerblockCUSTOM:expADD1121blockCUSTOM:expfarADD1281blockCUSTOM:expveryfarADD1481ADD1particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.4 1 0.4 0.02 80 forceADD1particle minecraft:large_smoke ~ ~1 ~ 0.4 1 0.4 0.02 100 forceADD1particle minecraft:campfire_cosy_smoke ~ ~ ~ 2 0.001 2 0.01 100 forceADD1particle target:firestar ~ ~ ~ 0 0 0 0.2 100 force"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mediumexp.mod.json b/elements/Mediumexp.mod.json
new file mode 100644
index 000000000..bdc5aa551
--- /dev/null
+++ b/elements/Mediumexp.mod.json
@@ -0,0 +1,10 @@
+{
+ "_fv": 57,
+ "_type": "command",
+ "definition": {
+ "commandName": "target:mediumexp",
+ "type": "STANDARD",
+ "permissionLevel": "No requirement",
+ "argsxml": "Medexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mianyishanghai.mod.json b/elements/Mianyishanghai.mod.json
new file mode 100644
index 000000000..ed7edc1d2
--- /dev/null
+++ b/elements/Mianyishanghai.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDCUSTOM:Target1GTtargetdown0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mine.mod.json b/elements/Mine.mod.json
new file mode 100644
index 000000000..56fde7cc9
--- /dev/null
+++ b/elements/Mine.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "damagetype",
+ "definition": {
+ "exhaustion": 0.0,
+ "scaling": "never",
+ "effects": "hurt",
+ "normalDeathMessage": "%1$s died",
+ "itemDeathMessage": "%1$s was killed by %2$s using %3$s",
+ "playerDeathMessage": "%1$s died whilst trying to escape %2$s"
+ }
+}
\ No newline at end of file
diff --git a/elements/Minigun.mod.json b/elements/Minigun.mod.json
new file mode 100644
index 000000000..f863f1773
--- /dev/null
+++ b/elements/Minigun.mod.json
@@ -0,0 +1,93 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "minigun",
+ "name": "Minigun",
+ "idle": "animation.minigun.idle",
+ "rarity": "EPIC",
+ "displaySettings": "minigun.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": true,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "minigun.geo.json",
+ "armPoseList": [
+ {
+ "armHeld": "RIGHT",
+ "arm": "RIGHT",
+ "angle": "X",
+ "rotation": -0.2,
+ "swings": false,
+ "followsHead": true
+ },
+ {
+ "armHeld": "RIGHT",
+ "arm": "RIGHT",
+ "angle": "Y",
+ "rotation": -0.2,
+ "swings": false,
+ "followsHead": false
+ },
+ {
+ "armHeld": "RIGHT",
+ "arm": "LEFT",
+ "angle": "X",
+ "rotation": -1.0,
+ "swings": false,
+ "followsHead": true
+ },
+ {
+ "armHeld": "RIGHT",
+ "arm": "LEFT",
+ "angle": "Y",
+ "rotation": 1.0,
+ "swings": false,
+ "followsHead": false
+ },
+ {
+ "armHeld": "RIGHT",
+ "arm": "LEFT",
+ "angle": "Z",
+ "rotation": -0.5,
+ "swings": false,
+ "followsHead": false
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/MinigunBlueprint.mod.json b/elements/MinigunBlueprint.mod.json
new file mode 100644
index 000000000..33bee6f21
--- /dev/null
+++ b/elements/MinigunBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Minigun Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/MinigunSmithing.mod.json b/elements/MinigunSmithing.mod.json
new file mode 100644
index 000000000..071af89a2
--- /dev/null
+++ b/elements/MinigunSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Specialmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:MinigunBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Minigun"
+ },
+ "name": "minigun_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Minigunautofire.mod.json b/elements/Minigunautofire.mod.json
new file mode 100644
index 000000000..fe0bd4e23
--- /dev/null
+++ b/elements/Minigunautofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandlocal:usehandCUSTOM:MinigunANDEQminifiring1LTlocal:usehandrot10local:usehandrotADDlocal:usehandrot1playsound target:minigunstop player @s ~ ~ ~ 4 1GTlocal:usehandrot0local:usehandrotMINUSlocal:usehandrot0.5ANDANDANDANDlocal:usehandCUSTOM:MinigunEQlocal:usehandoverheat0GTglobal:rifleammo0local:usehandGTElocal:usehandrot10local:usehandheatADDlocal:usehandheat1GTElocal:usehandheat50.5local:usehandoverheat40local:usehand40playsound target:overheat player @s ~ ~ ~ 2 1EQlocal:usehandheat40playsound target:overheat_warn player @s ~ ~ ~ 2 1LTElocal:usehandheat40playsound target:minigun_fire_1p player @s ~ ~ ~ 2 1playsound target:minigun_fire_1p player @s ~ ~ ~ 2 MINUS1MULTIPLY0.025ABSMINUS40local:usehandheatplaysound target:minigun_fire_3p player @a ~ ~ ~ 4 1stopsound @s player target:minigun_fire_3pBulletfireNormalglobal:rifleammoMINUSglobal:rifleammo1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/MinigunbpCrafting.mod.json b/elements/MinigunbpCrafting.mod.json
new file mode 100644
index 000000000..ff0283b0f
--- /dev/null
+++ b/elements/MinigunbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:MinigunBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MinigunBlueprint"
+ },
+ "name": "minigunbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Minigunfire.mod.json b/elements/Minigunfire.mod.json
new file mode 100644
index 000000000..9d1d91a4d
--- /dev/null
+++ b/elements/Minigunfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:Minigunminifiring1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Miniguninbackpack.mod.json b/elements/Miniguninbackpack.mod.json
new file mode 100644
index 000000000..b9e00679a
--- /dev/null
+++ b/elements/Miniguninbackpack.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idammo2no_ext_triggerGTheat0heatMINUSheat0.5EQheat0heatbar51heatbarheatCUSTOM:Minigunminigunfiring0GToverheat0minifiring0overheatMINUSoverheat1Weapondrawhavey"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14.mod.json b/elements/Mk14.mod.json
new file mode 100644
index 000000000..45da4b617
--- /dev/null
+++ b/elements/Mk14.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "mk14",
+ "name": "MK14EBR",
+ "idle": "animation.model.idle",
+ "rarity": "RARE",
+ "displaySettings": "mk14ebr.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "Mk14WuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "mk14ebr.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14Blueprint.mod.json b/elements/Mk14Blueprint.mod.json
new file mode 100644
index 000000000..c24bd67ae
--- /dev/null
+++ b/elements/Mk14Blueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Mk-14 Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14Smithing.mod.json b/elements/Mk14Smithing.mod.json
new file mode 100644
index 000000000..7d7630883
--- /dev/null
+++ b/elements/Mk14Smithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Mk14"
+ },
+ "name": "mk_14_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/Mk14WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..b5eec4073
--- /dev/null
+++ b/elements/Mk14WuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime55idlocal:idplaysound target:mk14_reload_empty player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime5EQidlocal:idgj0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime45idlocal:idplaysound target:mk14_reload_normal player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14autofire.mod.json b/elements/Mk14autofire.mod.json
new file mode 100644
index 000000000..5d58e332a
--- /dev/null
+++ b/elements/Mk14autofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1ANDANDANDlocal:usehandCUSTOM:Mk14EQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2BulletfireNormalplaysound target:mk14fire player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14bpCrafting.mod.json b/elements/Mk14bpCrafting.mod.json
new file mode 100644
index 000000000..7c21ec1be
--- /dev/null
+++ b/elements/Mk14bpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Mk14Blueprint"
+ },
+ "name": "mk_14bp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mk14fire.mod.json b/elements/Mk14fire.mod.json
new file mode 100644
index 000000000..4cfcc538a
--- /dev/null
+++ b/elements/Mk14fire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:Mk14EQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandBulletfireNormallocal:usehand2playsound target:mk14fire player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/MoratrBasePlate.mod.json b/elements/MoratrBasePlate.mod.json
new file mode 100644
index 000000000..bcb0d078c
--- /dev/null
+++ b/elements/MoratrBasePlate.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "base_plate",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Moratr Base Plate",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mortar.mod.json b/elements/Mortar.mod.json
new file mode 100644
index 000000000..d50f05a30
--- /dev/null
+++ b/elements/Mortar.mod.json
@@ -0,0 +1,159 @@
+{
+ "_fv": 57,
+ "_type": "animatedentity",
+ "definition": {
+ "mobName": "Mortar",
+ "mobLabel": "",
+ "mobModelTexture": "mortar.png",
+ "mobModelGlowTexture": "",
+ "visualScale": {
+ "fixedValue": 1.0
+ },
+ "boundingBoxScale": {
+ "fixedValue": 1.0
+ },
+ "entityDataEntries": [],
+ "modelWidth": 0.8,
+ "modelHeight": 1.4,
+ "modelShadowSize": 0.0,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": false,
+ "spawnEggBaseColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Creature",
+ "mobCreatureType": "UNDEFINED",
+ "attackStrength": 0,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 1.0,
+ "movementSpeed": 0.0,
+ "armorBaseValue": 0.0,
+ "trackingRange": 64,
+ "followRange": 16,
+ "health": 300,
+ "xpAmount": 0,
+ "waterMob": false,
+ "flyingMob": false,
+ "guiBoundTo": "",
+ "inventorySize": 0,
+ "inventoryStackSize": 64,
+ "deathTime": 5,
+ "lerp": 0,
+ "disableCollisions": true,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": true,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": true,
+ "immuneToPotions": true,
+ "immuneToPlayer": false,
+ "immuneToExplosion": false,
+ "immuneToTrident": false,
+ "immuneToAnvil": true,
+ "immuneToWither": true,
+ "immuneToDragonBreath": true,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": ""
+ },
+ "hurtSound": {
+ "value": "CUSTOM:hit"
+ },
+ "deathSound": {
+ "value": "CUSTOM:hit"
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "onRightClickedOn": {
+ "name": "MortarYouJiShiTiShi"
+ },
+ "onInitialSpawn": {
+ "name": "MortarShiTiChuShiShengChengShi"
+ },
+ "finishedDying": {
+ "name": "MortarDangXiaoShiShiJianDaoShi"
+ },
+ "hasAI": false,
+ "aiBase": "(none)",
+ "aixml": "",
+ "model": "mortar.geo.json",
+ "groupName": "paoguan",
+ "animation1": "animation.mortar.idle",
+ "animation2": "",
+ "animation3": "",
+ "animation4": "",
+ "animation5": "",
+ "animation6": "animation.mortar.fire",
+ "animation7": "",
+ "animation8": "",
+ "animation9": "",
+ "animation10": "",
+ "enable2": false,
+ "enable3": false,
+ "enable4": false,
+ "enable5": false,
+ "enable6": true,
+ "enable7": false,
+ "enable8": false,
+ "enable9": false,
+ "enable10": false,
+ "breedable": false,
+ "tameable": false,
+ "disableDeathRotation": true,
+ "headMovement": true,
+ "eyeHeight": true,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "height": 0.15,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "creature",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarAngle.mod.json b/elements/MortarAngle.mod.json
new file mode 100644
index 000000000..307b9cef0
--- /dev/null
+++ b/elements/MortarAngle.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "mortarno_ext_trigger6local:mortar6Angle: local:mortar##.#"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarBarrelCrafting.mod.json b/elements/MortarBarrelCrafting.mod.json
new file mode 100644
index 000000000..49d81e27a
--- /dev/null
+++ b/elements/MortarBarrelCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "TAG:forge:ingots/steel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:ingots/steel"
+ },
+ {
+ "value": "TAG:forge:ingots/steel"
+ },
+ {
+ "value": "Items.DYE#2"
+ },
+ {
+ "value": "TAG:forge:ingots/steel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Mortarbarrel"
+ },
+ "name": "mortar_barrel_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarBasePlateCrafting.mod.json b/elements/MortarBasePlateCrafting.mod.json
new file mode 100644
index 000000000..6e208691b
--- /dev/null
+++ b/elements/MortarBasePlateCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.DYE#2"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Blocks.IRON_BLOCK"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MoratrBasePlate"
+ },
+ "name": "mortar_base_plate_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarBipodCrafting.mod.json b/elements/MortarBipodCrafting.mod.json
new file mode 100644
index 000000000..58452062a
--- /dev/null
+++ b/elements/MortarBipodCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Items.IRON_NUGGET"
+ },
+ {
+ "value": "Blocks.IRON_BARS"
+ },
+ {
+ "value": "Items.DYE#2"
+ },
+ {
+ "value": "Blocks.IRON_BARS"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Mortarbipod"
+ },
+ "name": "mortar_bipod_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarCrafting.mod.json b/elements/MortarCrafting.mod.json
new file mode 100644
index 000000000..b109665ba
--- /dev/null
+++ b/elements/MortarCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Mortarbarrel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Mortarbipod"
+ },
+ {
+ "value": "CUSTOM:MoratrBasePlate"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MortarDepolyer"
+ },
+ "name": "mortar_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarDangXiaoShiShiJianDaoShi.mod.json b/elements/MortarDangXiaoShiShiJianDaoShi.mod.json
new file mode 100644
index 000000000..242d41429
--- /dev/null
+++ b/elements/MortarDangXiaoShiShiJianDaoShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerNONE0TRUEADD1CUSTOM:Mortarbarrel10TRUEADD1CUSTOM:Mortarbipod10TRUEADD1CUSTOM:MoratrBasePlate10"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarDepolyer.mod.json b/elements/MortarDepolyer.mod.json
new file mode 100644
index 000000000..42787e023
--- /dev/null
+++ b/elements/MortarDepolyer.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "motar",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Mortar Depolyer",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "Rengchumortar"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarGUI.mod.json b/elements/MortarGUI.mod.json
new file mode 100644
index 000000000..dde5114a2
--- /dev/null
+++ b/elements/MortarGUI.mod.json
@@ -0,0 +1,149 @@
+{
+ "_fv": 57,
+ "_type": "gui",
+ "definition": {
+ "type": 0,
+ "width": 0,
+ "height": 166,
+ "inventoryOffsetX": 0,
+ "inventoryOffsetY": 0,
+ "renderBgLayer": true,
+ "doesPauseGame": false,
+ "components": [
+ {
+ "type": "label",
+ "data": {
+ "name": "label_proc_mortar_angle",
+ "text": {
+ "fixedValue": "",
+ "name": "MortarAngle"
+ },
+ "color": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "x": 184,
+ "y": 197
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_zeng_da_yang_jiao",
+ "text": "+1",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleAdd"
+ },
+ "width": 29,
+ "height": 20,
+ "x": 256,
+ "y": 161
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_empty",
+ "text": "-1",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleReduce"
+ },
+ "width": 30,
+ "height": 20,
+ "x": 141,
+ "y": 161
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_10",
+ "text": "+10",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleAddPlus"
+ },
+ "width": 28,
+ "height": 20,
+ "x": 257,
+ "y": 188
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_101",
+ "text": "-10",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleReducePlus"
+ },
+ "width": 30,
+ "height": 20,
+ "x": 141,
+ "y": 188
+ }
+ },
+ {
+ "type": "label",
+ "data": {
+ "name": "label_proc_range",
+ "text": {
+ "fixedValue": "Estimated range:"
+ },
+ "color": {
+ "value": -16711885,
+ "falpha": 0.0
+ },
+ "x": 202,
+ "y": 126
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_05",
+ "text": "-0.5",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleReduceMini"
+ },
+ "width": 30,
+ "height": 20,
+ "x": 141,
+ "y": 134
+ }
+ },
+ {
+ "type": "button",
+ "data": {
+ "name": "button_051",
+ "text": "+0.5",
+ "isUndecorated": false,
+ "onClick": {
+ "name": "AngleAddMini"
+ },
+ "width": 29,
+ "height": 20,
+ "x": 256,
+ "y": 134
+ }
+ }
+ ],
+ "onOpen": {
+ "name": "MortarGUIGaiGUIDaKaiShi"
+ },
+ "onTick": {
+ "name": "MotarGUITick"
+ },
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarGUIGaiGUIDaKaiShi.mod.json b/elements/MortarGUIGaiGUIDaKaiShi.mod.json
new file mode 100644
index 000000000..2ec22d0a1
--- /dev/null
+++ b/elements/MortarGUIGaiGUIDaKaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6pitch6##"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarGUIGaiGUIDaKaiShiMeiKeFaSheng.mod.json b/elements/MortarGUIGaiGUIDaKaiShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..f5a72abf1
--- /dev/null
+++ b/elements/MortarGUIGaiGUIDaKaiShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6ANDLTE20pitchLTEpitch9066CUSTOM:MotarPitch6playsound minecraft:entity.arrow.hit_player player @s ~ ~ ~ 1 1playsound minecraft:block.note_block.bass player @s ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarHEShells.mod.json b/elements/MortarHEShells.mod.json
new file mode 100644
index 000000000..8e6ff05e8
--- /dev/null
+++ b/elements/MortarHEShells.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Fusee"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Blocks.TNT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:MortarShells"
+ },
+ "name": "mortar_he_shells",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarPitch.mod.json b/elements/MortarPitch.mod.json
new file mode 100644
index 000000000..54a7379d7
--- /dev/null
+++ b/elements/MortarPitch.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger660"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarShell.mod.json b/elements/MortarShell.mod.json
new file mode 100644
index 000000000..33bd30481
--- /dev/null
+++ b/elements/MortarShell.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": "entity.arrow.shoot"
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "Modelmortar_shell_Converted",
+ "customModelTexture": "mortar_shell.png",
+ "onHitsBlock": {
+ "name": "MortarShellDanSheWuJiZhongShiTiShi"
+ },
+ "onHitsEntity": {
+ "name": "MortarShellDanSheWuJiZhongShiTiShi"
+ },
+ "onFlyingTick": {
+ "name": "MortarShellDanSheWuFeiXingShiMeiKeFaSheng"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarShellDanSheWuFeiXingShiMeiKeFaSheng.mod.json b/elements/MortarShellDanSheWuFeiXingShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..d65354fd7
--- /dev/null
+++ b/elements/MortarShellDanSheWuFeiXingShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerparticle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 2 force"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarShellDanSheWuJiZhongShiTiShi.mod.json b/elements/MortarShellDanSheWuJiZhongShiTiShi.mod.json
new file mode 100644
index 000000000..3e0840746
--- /dev/null
+++ b/elements/MortarShellDanSheWuJiZhongShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggertarget:mediumexpNONE9"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarShells.mod.json b/elements/MortarShells.mod.json
new file mode 100644
index 000000000..530b5076f
--- /dev/null
+++ b/elements/MortarShells.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "mortar_shells",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Mortar Shells",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarShiTiChuShiShengChengShi.mod.json b/elements/MortarShiTiChuShiShengChengShi.mod.json
new file mode 100644
index 000000000..d87b1e10a
--- /dev/null
+++ b/elements/MortarShiTiChuShiShengChengShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger-70"
+ }
+}
\ No newline at end of file
diff --git a/elements/MortarYouJiShiTiShi.mod.json b/elements/MortarYouJiShiTiShi.mod.json
new file mode 100644
index 000000000..c38c50938
--- /dev/null
+++ b/elements/MortarYouJiShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerMortarGUIANDCUSTOM:MortarShellsCUSTOM:MortarShellsCUSTOM:MortarShells30CREATIVE1CUSTOM:MortarShellsplaysound target:mortar_load player @a ~ ~ ~ 1 1playsound target:mortar_fire player @a ~ ~ ~ 8 1playsound target:mortar_distant player @a ~ ~ ~ 32 120CUSTOM:MortarShellFALSEFALSEDISALLOWED1000080.5CAMPFIRE_COSY_SMOKE40ADDMULTIPLY2.2ADDADD0.1MULTIPLY2.2ADDMULTIPLY2.20.40.40.40.015"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mortarbarrel.mod.json b/elements/Mortarbarrel.mod.json
new file mode 100644
index 000000000..1d61dcc3c
--- /dev/null
+++ b/elements/Mortarbarrel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "motar_barrel",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Mortar Barrel",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": true,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Mortarbipod.mod.json b/elements/Mortarbipod.mod.json
new file mode 100644
index 000000000..d3dff982e
--- /dev/null
+++ b/elements/Mortarbipod.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "motar_bipod",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Mortarbipod",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/MotarGUITick.mod.json b/elements/MotarGUITick.mod.json
new file mode 100644
index 000000000..4a842541d
--- /dev/null
+++ b/elements/MotarGUITick.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger6ANDLTE20pitchLTEpitch90CUSTOM:MotarPitch6pitch"
+ }
+}
\ No newline at end of file
diff --git a/elements/MotarPitch.mod.json b/elements/MotarPitch.mod.json
new file mode 100644
index 000000000..7161a66ec
--- /dev/null
+++ b/elements/MotarPitch.mod.json
@@ -0,0 +1,16 @@
+{
+ "_fv": 57,
+ "_type": "attribute",
+ "definition": {
+ "description": "Motar Pitch",
+ "minValue": 20.0,
+ "maxValue": 90.0,
+ "defaultValue": 70.0,
+ "isPersistent": false,
+ "entities": [
+ {
+ "value": "CUSTOM:Mortar"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteAction.mod.json b/elements/NetheriteAction.mod.json
new file mode 100644
index 000000000..b6578c220
--- /dev/null
+++ b/elements/NetheriteAction.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "netherite_action",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Netherite Action",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteActionCrafting.mod.json b/elements/NetheriteActionCrafting.mod.json
new file mode 100644
index 000000000..a2d1459d2
--- /dev/null
+++ b/elements/NetheriteActionCrafting.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:CementedCarbideAction"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:NetheriteAction"
+ },
+ "name": "netherite_action_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteBarrel.mod.json b/elements/NetheriteBarrel.mod.json
new file mode 100644
index 000000000..4b9d754e3
--- /dev/null
+++ b/elements/NetheriteBarrel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "netherite_barrel",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Netherite Barrel",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteBarrelSmithing.mod.json b/elements/NetheriteBarrelSmithing.mod.json
new file mode 100644
index 000000000..1a7043014
--- /dev/null
+++ b/elements/NetheriteBarrelSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:CementedCarbideBarrel"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:NetheriteBarrel"
+ },
+ "name": "netherite_barrel_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteSpring.mod.json b/elements/NetheriteSpring.mod.json
new file mode 100644
index 000000000..3201a9404
--- /dev/null
+++ b/elements/NetheriteSpring.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "netherite_spring",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Netherite Spring",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteSpringCrafting.mod.json b/elements/NetheriteSpringCrafting.mod.json
new file mode 100644
index 000000000..d58eecd42
--- /dev/null
+++ b/elements/NetheriteSpringCrafting.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Cementedcarbidespring"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:NetheriteSpring"
+ },
+ "name": "netherite_spring_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteTrigger.mod.json b/elements/NetheriteTrigger.mod.json
new file mode 100644
index 000000000..3ae2505dc
--- /dev/null
+++ b/elements/NetheriteTrigger.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "netherite_trigger",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Netherite Trigger",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/NetheriteTriggerCrafting.mod.json b/elements/NetheriteTriggerCrafting.mod.json
new file mode 100644
index 000000000..033686a5f
--- /dev/null
+++ b/elements/NetheriteTriggerCrafting.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:CementedcarbideTrigger"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "Items.NETHERITE_UPGRADE"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:NetheriteTrigger"
+ },
+ "name": "netherite_trigger_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/OutZoom.mod.json b/elements/OutZoom.mod.json
new file mode 100644
index 000000000..37514b521
--- /dev/null
+++ b/elements/OutZoom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:zoomFALSEglobal:zoomingFALSEmiaozhunshijian0"
+ }
+}
\ No newline at end of file
diff --git a/elements/PlayerReload.mod.json b/elements/PlayerReload.mod.json
new file mode 100644
index 000000000..11c827cb8
--- /dev/null
+++ b/elements/PlayerReload.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idno_ext_triggerSPECTATOREQglobal:zoomingFALSEANDANDCUSTOM:TaserANDEQreloading0LTammo1reloading1id11919810reloadtime55ANDANDCUSTOM:TracheliumANDANDEQreloading0LTammo8GTglobal:handgunammo0reloading1emptyreload1id11919810reloadtime57ANDANDCUSTOM:HuntingRifleANDANDEQreloading0LTammo1GTglobal:sniperammo0reloading1reloadtime61emptyreload1id11919810ANDANDCUSTOM:M79ANDANDEQreloading0LTammo1GTmaxammo0reloading1emptyreload1id11919810reloadtime86ANDANDCUSTOM:RpgANDANDEQreloading0LTammo1GTmaxammo0reloading1emptyreload1id11919810reloadtime91ANDANDCUSTOM:AbekiriANDANDEQreloading0LTammo2GTglobal:shotgunammo0EQammo1reloading1emptyreload0id11919810reloadtime83EQammo0reloading1emptyreload1id11919810reloadtime99ANDANDCUSTOM:M98bANDANDEQreloading0LTammo6GTglobal:sniperammo0GTammo0reloading1emptyreload0id11919810reloadtime57EQammo0reloading1emptyreload1id11919810reloadtime79ANDANDCUSTOM:KraberANDANDEQreloading0LTammo5GTglobal:sniperammo0GTammo0reloading1emptyreload0id11919810reloadtime65EQammo0reloading1emptyreload1id11919810reloadtime83ANDANDCUSTOM:VectorANDANDEQreloading0LTammo34GTglobal:handgunammo0GTammo0reloading1emptyreload0id11919810reloadtime47EQammo0reloading1emptyreload1id11919810reloadtime61ANDANDCUSTOM:Mk14ANDANDEQreloading0LTammo21GTglobal:rifleammo0GTammo0reloading1emptyreload0id11919810reloadtime45EQammo0reloading1emptyreload1id11919810reloadtime55ANDANDCUSTOM:SksANDANDEQreloading0LTammo21GTglobal:rifleammo0GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime57ANDANDCUSTOM:AK47ANDANDEQreloading0LTammo31GTglobal:rifleammo0GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime57ANDANDORCUSTOM:M4CUSTOM:Hk416ANDANDEQreloading0LTammo31GTglobal:rifleammo0GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime55ANDANDCUSTOM:Aa12ANDANDEQreloading0LTammo26GTglobal:shotgunammo0GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime52ANDANDCUSTOM:DevotionANDANDEQreloading0GTglobal:rifleammo0LTammo56GTammo0reloading1emptyreload0id11919810reloadtime51EQammo0reloading1emptyreload1id11919810reloadtime71ANDANDCUSTOM:RpkANDANDEQreloading0GTglobal:rifleammo0LTammo51GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime57ANDANDCUSTOM:SentinelANDANDEQreloading0LTammo6GTglobal:sniperammo0GTammo0reloading1emptyreload0id11919810reloadtime53EQammo0reloading1emptyreload1id11919810reloadtime73ANDANDCUSTOM:SvdANDANDEQreloading0LTammo11GTglobal:sniperammo0GTammo0reloading1emptyreload0id11919810reloadtime41EQammo0reloading1emptyreload1id11919810reloadtime57ANDANDCUSTOM:M60ANDANDEQreloading0GTglobal:rifleammo0LTammo100GTammo0reloading1emptyreload0id11919810reloadtime111EQammo0reloading1emptyreload1id11919810reloadtime129ANDANDCUSTOM:MarlinANDANDEQreloading0LTammo8GTglobal:rifleammo0reloading1id119198105prepare5playsound target:marlin_start player @s ~ ~ ~ 100 1ANDANDCUSTOM:M870ANDANDEQreloading0LTammo8GTglobal:shotgunammo0EQammo0emptyreload1reloading1id1191981036prepare36playsound target:m870_preparealt player @s ~ ~ ~ 100 1reloading1id119198107prepare7"
+ }
+}
\ No newline at end of file
diff --git a/elements/PlayerRespawnReward.mod.json b/elements/PlayerRespawnReward.mod.json
new file mode 100644
index 000000000..29ad255ea
--- /dev/null
+++ b/elements/PlayerRespawnReward.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_respawntarget:gunammolockfalse"
+ }
+}
\ No newline at end of file
diff --git a/elements/Playertick.mod.json b/elements/Playertick.mod.json
new file mode 100644
index 000000000..2ee76403b
--- /dev/null
+++ b/elements/Playertick.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksANDEntityPlayerLTE1prone3ANDANDADDMULTIPLY0.7ADD0.5ADDMULTIPLY0.7ADDMULTIPLY0.7ADD1.5ADDMULTIPLY0.7prone3GTprone0proneMINUSprone1EQglobal:refreshFALSEglobal:refreshTRUEglobal:refreshFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/PrepareToZoom.mod.json b/elements/PrepareToZoom.mod.json
new file mode 100644
index 000000000..668ea7646
--- /dev/null
+++ b/elements/PrepareToZoom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksANDANDANDtarget:gunEQreloading1SPECTATORCUSTOM:MinigunEQglobal:zoomTRUEFALSEglobal:zoomingTRUELTmiaozhunshijian10miaozhunshijianADDmiaozhunshijian1miaozhunshijian0"
+ }
+}
\ No newline at end of file
diff --git a/elements/PressFire.mod.json b/elements/PressFire.mod.json
new file mode 100644
index 000000000..e4989ef43
--- /dev/null
+++ b/elements/PressFire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerTracheliumfireTaserfireHrfireM79fireAbkrfireM98bfireDevotiongfireRpgfireM4fireAa12fireHk416fireRpkfireSksfireKraberfireVecfireMinigunfireMk14fireSentinelFireM60fireSvdfireMarlinfireM870fireAKfireANDANDANDANDtarget:gunCUSTOM:BocekCUSTOM:MinigunEQammo0NEQreloading1playsound target:triggerclick player @s ~ ~ ~ 10 1ANDCUSTOM:MinigunEQglobal:rifleammo0playsound target:triggerclick player @s ~ ~ ~ 10 1global:bowpullholdTRUEEQammo0PlayerReload"
+ }
+}
\ No newline at end of file
diff --git a/elements/PullXiaoGuoChiXuShiMeiKeFaSheng.mod.json b/elements/PullXiaoGuoChiXuShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..514d59b01
--- /dev/null
+++ b/elements/PullXiaoGuoChiXuShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksEQglobal:bowpullholdTRUEANDANDANDCUSTOM:BocekGTmaxammo0LTpower12powerADDpower1global:bowpullTRUEEQpower1playsound target:bowpull1p player @s ~ ~ ~ 10 1playsound target:bowpull player @a ~ ~ ~ 0.5 1stopsound @s player target:bowpullCUSTOM:Bocekpower0global:bowpullFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Quxiaoshanghai.mod.json b/elements/Quxiaoshanghai.mod.json
new file mode 100644
index 000000000..e940e55f7
--- /dev/null
+++ b/elements/Quxiaoshanghai.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_attackedANDANDANDCUSTOM:ClaymoreCREATIVEANDCUSTOM:ClaymoreCUSTOM:Elbow"
+ }
+}
\ No newline at end of file
diff --git a/elements/Quxiaowafangkuai.mod.json b/elements/Quxiaowafangkuai.mod.json
new file mode 100644
index 000000000..02081f7d8
--- /dev/null
+++ b/elements/Quxiaowafangkuai.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_left_click_blockCREATIVECUSTOM:LightSabertarget:gun"
+ }
+}
\ No newline at end of file
diff --git a/elements/RPKBlueprint.mod.json b/elements/RPKBlueprint.mod.json
new file mode 100644
index 000000000..ebbd2e7e1
--- /dev/null
+++ b/elements/RPKBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "RPK Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest.mod.json b/elements/RareChest.mod.json
new file mode 100644
index 000000000..4348202cf
--- /dev/null
+++ b/elements/RareChest.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/ancient_city",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest10.mod.json b/elements/RareChest10.mod.json
new file mode 100644
index 000000000..4567a9fb2
--- /dev/null
+++ b/elements/RareChest10.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/jungle_temple_dispenser",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest2.mod.json b/elements/RareChest2.mod.json
new file mode 100644
index 000000000..bfcaba6b0
--- /dev/null
+++ b/elements/RareChest2.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/ancient_city_ice_box",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest3.mod.json b/elements/RareChest3.mod.json
new file mode 100644
index 000000000..1e56290ae
--- /dev/null
+++ b/elements/RareChest3.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/bastion_bridge",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest4.mod.json b/elements/RareChest4.mod.json
new file mode 100644
index 000000000..755e44d5d
--- /dev/null
+++ b/elements/RareChest4.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/bastion_hoglin_stable",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest5.mod.json b/elements/RareChest5.mod.json
new file mode 100644
index 000000000..755e7d35e
--- /dev/null
+++ b/elements/RareChest5.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/bastion_other",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest6.mod.json b/elements/RareChest6.mod.json
new file mode 100644
index 000000000..9e835ff24
--- /dev/null
+++ b/elements/RareChest6.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/buried_treasure",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest7.mod.json b/elements/RareChest7.mod.json
new file mode 100644
index 000000000..b1ebb63c1
--- /dev/null
+++ b/elements/RareChest7.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/desert_pyramid",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest8.mod.json b/elements/RareChest8.mod.json
new file mode 100644
index 000000000..4a6fffeba
--- /dev/null
+++ b/elements/RareChest8.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/igloo",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/RareChest9.mod.json b/elements/RareChest9.mod.json
new file mode 100644
index 000000000..270e4d66a
--- /dev/null
+++ b/elements/RareChest9.mod.json
@@ -0,0 +1,8 @@
+{
+ "_fv": 57,
+ "_type": "lootmodifier",
+ "definition": {
+ "modifiedTable": "minecraft:chests/jungle_temple",
+ "modifierTable": "BluePrintRare"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rarematerialpack.mod.json b/elements/Rarematerialpack.mod.json
new file mode 100644
index 000000000..8a89cd22b
--- /dev/null
+++ b/elements/Rarematerialpack.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "rare_material_pack",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Rare material pack",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Reload.mod.json b/elements/Reload.mod.json
new file mode 100644
index 000000000..72f15b054
--- /dev/null
+++ b/elements/Reload.mod.json
@@ -0,0 +1,12 @@
+{
+ "_fv": 57,
+ "_type": "keybind",
+ "definition": {
+ "triggerKey": "R",
+ "keyBindingName": "Reload",
+ "keyBindingCategoryKey": "target",
+ "onKeyPressed": {
+ "name": "PlayerReload"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/Reload1.mod.json b/elements/Reload1.mod.json
new file mode 100644
index 000000000..8781e8271
--- /dev/null
+++ b/elements/Reload1.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1stackno_ext_triggerlocal:stacklocal:ammo1MINUSlocal:stackmaglocal:stackammoGTEglobal:rifleammolocal:ammo1global:rifleammoMINUSglobal:rifleammolocal:ammo1local:stackammoADDlocal:stackammolocal:ammo1local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:rifleammoglobal:rifleammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Reload2.mod.json b/elements/Reload2.mod.json
new file mode 100644
index 000000000..5357e1fce
--- /dev/null
+++ b/elements/Reload2.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "stackammo2ammo1no_ext_triggerlocal:stacklocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:rifleammolocal:ammo2global:rifleammoMINUSglobal:rifleammolocal:ammo2local:stackammoADDlocal:stackammolocal:ammo2local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:rifleammoglobal:rifleammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Reloading.mod.json b/elements/Reloading.mod.json
new file mode 100644
index 000000000..c056df548
--- /dev/null
+++ b/elements/Reloading.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idammo1no_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0EQreloading1EQreloadtime57idlocal:idplaysound target:reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idHandgunReload1WeaponDrawLightGTfireanim0fireanimMINUSfireanim1LTdrawtime11drawtimeADDdrawtime1drawtime0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Reloadsoundstop.mod.json b/elements/Reloadsoundstop.mod.json
new file mode 100644
index 000000000..7b97212fa
--- /dev/null
+++ b/elements/Reloadsoundstop.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksNEQididstopsound @s player target:taserreloadstopsound @s player target:ak47reloadstopsound @s player target:ak47reload2stopsound @s player target:reloadstopsound @s player target:hr_reloadstopsound @s player target:m79reloadstopsound @s player target:akreloadstopsound @s player target:akreload2stopsound @s player target:abkr_reload2stopsound @s player target:abkr_reloadstopsound @s player target:m98breloadstopsound @s player target:m98breload2stopsound @s player target:m4reloadstopsound @s player target:m4reload2stopsound @s player target:devotion_reloadstopsound @s player target:devotion_reload2stopsound @s player target:rpg7_reloadstopsound @s player target:aa12reloadstopsound @s player target:aa12reload2stopsound @s player target:hk416reloadstopsound @s player target:hk416reload2stopsound @s player target:rpkreloadstopsound @s player target:rpkreload2stopsound @s player target:kraberreloadstopsound @s player target:kraberreload2stopsound @s player target:vecreloadstopsound @s player target:vecreload2stopsound @s player target:sentinel_reloadstopsound @s player target:sentinel_reload2stopsound @s player target:chargestopsound @s player target:m60reloadstopsound @s player target:m60reload2stopsound @s player target:svdreloadstopsound @s player target:svdreload2CUSTOM:Marlinstopsound @s player target:marlin_loopstopsound @s player target:marlin_startstopsound @s player target:marlin_endCUSTOM:M870stopsound @s player target:m870_reloadloopstopsound @s player target:m870_preparealtNEQcidcidstopsound @s player target:charge"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rengchumortar.mod.json b/elements/Rengchumortar.mod.json
new file mode 100644
index 000000000..2aa97ed88
--- /dev/null
+++ b/elements/Rengchumortar.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:MortarADDMULTIPLY1.5ADDMULTIPLY1.5-70000CREATIVE1CUSTOM:MortarDepolyer"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmo.mod.json b/elements/RifleAmmo.mod.json
new file mode 100644
index 000000000..5d6b57b4f
--- /dev/null
+++ b/elements/RifleAmmo.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "rifleammo",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Rifle Ammo * 5",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "RifleAmmoYouJiKongQiShiShiTiDeWeiZhi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmoBox.mod.json b/elements/RifleAmmoBox.mod.json
new file mode 100644
index 000000000..7a7433e58
--- /dev/null
+++ b/elements/RifleAmmoBox.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "hk4163d",
+ "customModelName": "rifleammobox:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Rifle Ammo Box",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 16,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "RifleAmmoBoxWanJiaWanChengShiYongWuPinShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 0,
+ "saturation": 0.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmoBoxCrafting.mod.json b/elements/RifleAmmoBoxCrafting.mod.json
new file mode 100644
index 000000000..5ed7c677e
--- /dev/null
+++ b/elements/RifleAmmoBoxCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:RifleAmmoBox"
+ },
+ "name": "rifle_ammo_box_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json b/elements/RifleAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
new file mode 100644
index 000000000..1a5326443
--- /dev/null
+++ b/elements/RifleAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger201CUSTOM:RifleAmmoBoxglobal:rifleammoADDglobal:rifleammo30Rifle Ammo +30FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmoCrafting.mod.json b/elements/RifleAmmoCrafting.mod.json
new file mode 100644
index 000000000..73fc324a7
--- /dev/null
+++ b/elements/RifleAmmoCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 3,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:ingots/steel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:RifleAmmo"
+ },
+ "name": "rifle_ammo_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/RifleAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json b/elements/RifleAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
new file mode 100644
index 000000000..9f34b3085
--- /dev/null
+++ b/elements/RifleAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:rifleammoADDglobal:rifleammo5Rifle Ammo +5FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 11CUSTOM:RifleAmmo10"
+ }
+}
\ No newline at end of file
diff --git a/elements/RleaseFire.mod.json b/elements/RleaseFire.mod.json
new file mode 100644
index 000000000..ce4769816
--- /dev/null
+++ b/elements/RleaseFire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerfiring0minifiring0minigunfiring0global:bowpullholdFALSEBowloose"
+ }
+}
\ No newline at end of file
diff --git a/elements/RmpCrafting.mod.json b/elements/RmpCrafting.mod.json
new file mode 100644
index 000000000..db29cc32b
--- /dev/null
+++ b/elements/RmpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SteelBarrel"
+ },
+ {
+ "value": "CUSTOM:SteelAction"
+ },
+ {
+ "value": "CUSTOM:SteelSpring"
+ },
+ {
+ "value": "CUSTOM:SteelTrigger"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "name": "rmp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rocket.mod.json b/elements/Rocket.mod.json
new file mode 100644
index 000000000..16d41c7eb
--- /dev/null
+++ b/elements/Rocket.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "rpg7",
+ "name": "RPG Rocket(Yasin105)",
+ "idle": "animation.rpg.idle",
+ "rarity": "COMMON",
+ "displaySettings": "rpg_head.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "firstPersonArms": false,
+ "stackSize": 4,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": true,
+ "damageVsEntity": 8.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onEntityHitWith": {
+ "name": "RocketShiTiBeiGongJuJiZhongShi"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "rpg.head.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/RocketCrafting.mod.json b/elements/RocketCrafting.mod.json
new file mode 100644
index 000000000..78a712da2
--- /dev/null
+++ b/elements/RocketCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:Fusee"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": "Blocks.TNT"
+ },
+ {
+ "value": "Items.IRON_INGOT"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.FIREWORKS"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Rocket"
+ },
+ "name": "rocket_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/RocketHit.mod.json b/elements/RocketHit.mod.json
new file mode 100644
index 000000000..a9bf5484e
--- /dev/null
+++ b/elements/RocketHit.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTEtime1NONE6target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/RocketShiTiBeiGongJuJiZhongShi.mod.json b/elements/RocketShiTiBeiGongJuJiZhongShi.mod.json
new file mode 100644
index 000000000..1e818aecc
--- /dev/null
+++ b/elements/RocketShiTiBeiGongJuJiZhongShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerThis example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.25NONEADD15NONEADD151CUSTOM:Rockettarget:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rocketborn.mod.json b/elements/Rocketborn.mod.json
new file mode 100644
index 000000000..38078c944
--- /dev/null
+++ b/elements/Rocketborn.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "entity_spawnsCUSTOM:RpgRocketTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpg.mod.json b/elements/Rpg.mod.json
new file mode 100644
index 000000000..efcbacd9b
--- /dev/null
+++ b/elements/Rpg.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "rpg7",
+ "name": "RPG-7(Yasin-105)",
+ "idle": "animation.rpg.idle",
+ "rarity": "RARE",
+ "displaySettings": "rpg.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "rpg.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgBlueprint.mod.json b/elements/RpgBlueprint.mod.json
new file mode 100644
index 000000000..4980c08f6
--- /dev/null
+++ b/elements/RpgBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Rpg Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgRocket.mod.json b/elements/RpgRocket.mod.json
new file mode 100644
index 000000000..40b3c66c0
--- /dev/null
+++ b/elements/RpgRocket.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": ""
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "Modelrpg7_rocket_Converted",
+ "customModelTexture": "rocket.png",
+ "onHitsBlock": {
+ "name": "RpgRocketDanSheWuJiZhongFangKuaiShi"
+ },
+ "onHitsEntity": {
+ "name": "RocketHit"
+ },
+ "onFlyingTick": {
+ "name": "RpgRocketDanSheWuFeiXingShiMeiKeFaSheng"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgRocketDanSheWuFeiXingShiMeiKeFaSheng.mod.json b/elements/RpgRocketDanSheWuFeiXingShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..1799c5a9d
--- /dev/null
+++ b/elements/RpgRocketDanSheWuFeiXingShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "lifeno_ext_triggertimeADD1timelocal:lifetimeEQlocal:life4particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.8 0.8 0.8 0.01 50 forceGTElocal:life4MULTIPLY1.04MINUSMULTIPLY1.040.02MULTIPLY1.04particle minecraft:smoke ~ ~ ~ 0 0 0 0 2 forceparticle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 2 forceGTElocal:life90target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgRocketDanSheWuJiZhongFangKuaiShi.mod.json b/elements/RpgRocketDanSheWuJiZhongFangKuaiShi.mod.json
new file mode 100644
index 000000000..a9bf5484e
--- /dev/null
+++ b/elements/RpgRocketDanSheWuJiZhongFangKuaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerGTEtime1NONE6target:mediumexp"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgSmithing.mod.json b/elements/RpgSmithing.mod.json
new file mode 100644
index 000000000..d394bd40d
--- /dev/null
+++ b/elements/RpgSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.LOG"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Rpg"
+ },
+ "name": "rpg_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpgbpCrafting.mod.json b/elements/RpgbpCrafting.mod.json
new file mode 100644
index 000000000..4e89084bb
--- /dev/null
+++ b/elements/RpgbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:RpgBlueprint"
+ },
+ "name": "rpgbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpgempty.mod.json b/elements/Rpgempty.mod.json
new file mode 100644
index 000000000..45e0b328b
--- /dev/null
+++ b/elements/Rpgempty.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksANDCUSTOM:RpgEQammo1empty0ANDCUSTOM:BocekEQammo1empty0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpgfire.mod.json b/elements/Rpgfire.mod.json
new file mode 100644
index 000000000..c61714980
--- /dev/null
+++ b/elements/Rpgfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:RpgEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0This example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1CUSTOM:RpgRocketFALSEFALSEDISALLOWEDMULTIPLYDIVIDElocal:usehanddamagelocal:usehandvelocityADD1MULTIPLY0.05local:usehandlevel00local:usehandvelocityCUSTOM:Spreadparticle minecraft:cloud ADDMULTIPLY1.8 ADDADDMINUS0.1MULTIPLY1.8 ADDMULTIPLY1.8 0.4 0.4 0.4 0.005 30 force @sEQlocal:usehandammo1local:usehandempty1local:usehand10playsound target:rpg7_fire player @a ~ ~ ~ 3 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpk.mod.json b/elements/Rpk.mod.json
new file mode 100644
index 000000000..83e9e2d62
--- /dev/null
+++ b/elements/Rpk.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "rpk",
+ "name": "Rpk",
+ "idle": "animation.ak47.idle",
+ "rarity": "RARE",
+ "displaySettings": "rpk.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "RpkWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "rpk.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/RpkSmithing.mod.json b/elements/RpkSmithing.mod.json
new file mode 100644
index 000000000..8f3ba02e9
--- /dev/null
+++ b/elements/RpkSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.LOG"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Rpk"
+ },
+ "name": "rpk_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpkWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/RpkWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..8952baed7
--- /dev/null
+++ b/elements/RpkWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime57idlocal:idplaysound target:rpkreload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:rpkreload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpkautofire.mod.json b/elements/Rpkautofire.mod.json
new file mode 100644
index 000000000..872c7f001
--- /dev/null
+++ b/elements/Rpkautofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1ANDANDANDlocal:usehandCUSTOM:RpkEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2BulletfireNormalAkDsplaysound target:rpk_fire1p player @s ~ ~ ~ 2 1playsound target:rpkfire player @a ~ ~ ~ 4 1stopsound @s player target:rpkfirelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/RpkbpCrafting.mod.json b/elements/RpkbpCrafting.mod.json
new file mode 100644
index 000000000..bd291cb97
--- /dev/null
+++ b/elements/RpkbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:RPKBlueprint"
+ },
+ "name": "rpkbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Rpkfire.mod.json b/elements/Rpkfire.mod.json
new file mode 100644
index 000000000..2d27047ad
--- /dev/null
+++ b/elements/Rpkfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:RpkEQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand2BulletfireNormalAkDsplaysound target:rpk_fire1p player @s ~ ~ ~ 2 1playsound target:rpkfire player @a ~ ~ ~ 4 1stopsound @s player target:rpkfirelocal:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/SKSBlueprint.mod.json b/elements/SKSBlueprint.mod.json
new file mode 100644
index 000000000..8aa96703c
--- /dev/null
+++ b/elements/SKSBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "SKS Blueprint",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Sandbag.mod.json b/elements/Sandbag.mod.json
new file mode 100644
index 000000000..1e842e6d3
--- /dev/null
+++ b/elements/Sandbag.mod.json
@@ -0,0 +1,135 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "sandbagdi",
+ "textureTop": "sand",
+ "textureLeft": "sandbag",
+ "textureFront": "sandbag",
+ "textureRight": "sandbag",
+ "textureBack": "sandbag",
+ "renderType": 10,
+ "customModelName": "Normal",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Sandbag",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 10.0,
+ "resistance": 20.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "Not specified",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": false,
+ "requiresCorrectTool": false,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "SAND"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "SAND"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 1,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": false,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": false,
+ "restrictionBiomes": [],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 10,
+ "frequencyOnChunk": 16,
+ "minGenerateHeight": 0,
+ "maxGenerateHeight": 64
+ }
+}
\ No newline at end of file
diff --git a/elements/SandbagCrafting.mod.json b/elements/SandbagCrafting.mod.json
new file mode 100644
index 000000000..ef72e7d00
--- /dev/null
+++ b/elements/SandbagCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "BUILDING",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "CUSTOM:Sandbag"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.STRING"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.STRING"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Sandbag"
+ },
+ "name": "sandbag_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Scheelite.mod.json b/elements/Scheelite.mod.json
new file mode 100644
index 000000000..de83769da
--- /dev/null
+++ b/elements/Scheelite.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "scheelite",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Scheelite",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/ScheeliteOre.mod.json b/elements/ScheeliteOre.mod.json
new file mode 100644
index 000000000..b1c79238b
--- /dev/null
+++ b/elements/ScheeliteOre.mod.json
@@ -0,0 +1,139 @@
+{
+ "_fv": 57,
+ "_type": "block",
+ "definition": {
+ "texture": "scheelite_ore",
+ "textureTop": "",
+ "textureLeft": "",
+ "textureFront": "",
+ "textureRight": "",
+ "textureBack": "",
+ "renderType": 11,
+ "customModelName": "Single texture",
+ "rotationMode": 0,
+ "enablePitch": false,
+ "emissiveRendering": false,
+ "displayFluidOverlay": false,
+ "itemTexture": "",
+ "particleTexture": "",
+ "tintType": "No tint",
+ "isItemTinted": false,
+ "hasTransparency": false,
+ "connectedSides": false,
+ "transparencyType": "SOLID",
+ "disableOffset": false,
+ "boundingBoxes": [
+ {
+ "mx": 0.0,
+ "my": 0.0,
+ "mz": 0.0,
+ "Mx": 16.0,
+ "My": 16.0,
+ "Mz": 16.0,
+ "subtract": false
+ }
+ ],
+ "name": "Galena Ore",
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hardness": 3.0,
+ "resistance": 5.0,
+ "hasGravity": false,
+ "isWaterloggable": false,
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "destroyTool": "pickaxe",
+ "customDrop": {
+ "value": ""
+ },
+ "dropAmount": 1,
+ "useLootTableForDrops": true,
+ "requiresCorrectTool": true,
+ "enchantPowerBonus": 0.0,
+ "plantsGrowOn": false,
+ "canRedstoneConnect": false,
+ "lightOpacity": 15,
+ "material": {
+ "value": "ROCK"
+ },
+ "tickRate": 0,
+ "tickRandomly": false,
+ "isReplaceable": false,
+ "canProvidePower": false,
+ "emittedRedstonePower": {
+ "fixedValue": 15.0
+ },
+ "colorOnMap": "DEFAULT",
+ "creativePickItem": {
+ "value": ""
+ },
+ "offsetType": "NONE",
+ "aiPathNodeType": "DEFAULT",
+ "flammability": 0,
+ "fireSpreadSpeed": 0,
+ "isLadder": false,
+ "slipperiness": 0.6,
+ "speedFactor": 1.0,
+ "jumpFactor": 1.0,
+ "reactionToPushing": "NORMAL",
+ "isNotColidable": false,
+ "isCustomSoundType": false,
+ "soundOnStep": {
+ "value": "STONE"
+ },
+ "breakSound": {
+ "value": ""
+ },
+ "fallSound": {
+ "value": ""
+ },
+ "hitSound": {
+ "value": ""
+ },
+ "placeSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "luminance": 0,
+ "unbreakable": false,
+ "breakHarvestLevel": 2,
+ "isBonemealable": false,
+ "hasInventory": false,
+ "guiBoundTo": "",
+ "openGUIOnRightClick": false,
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "inventoryDropWhenDestroyed": true,
+ "inventoryComparatorPower": true,
+ "inventoryOutSlotIDs": [],
+ "inventoryInSlotIDs": [],
+ "hasEnergyStorage": false,
+ "energyInitial": 0,
+ "energyCapacity": 400000,
+ "energyMaxReceive": 200,
+ "energyMaxExtract": 200,
+ "isFluidTank": false,
+ "fluidCapacity": 8000,
+ "fluidRestrictions": [],
+ "generateFeature": true,
+ "restrictionBiomes": [
+ {
+ "value": "#is_overworld"
+ }
+ ],
+ "blocksToReplace": [
+ {
+ "value": "TAG:stone_ore_replaceables"
+ }
+ ],
+ "generationShape": "UNIFORM",
+ "frequencyPerChunks": 1,
+ "frequencyOnChunk": 3,
+ "minGenerateHeight": 1,
+ "maxGenerateHeight": 128
+ }
+}
\ No newline at end of file
diff --git a/elements/Senpai.mod.json b/elements/Senpai.mod.json
new file mode 100644
index 000000000..e141fa1c5
--- /dev/null
+++ b/elements/Senpai.mod.json
@@ -0,0 +1,268 @@
+{
+ "_fv": 57,
+ "_type": "animatedentity",
+ "definition": {
+ "mobName": "Senpai",
+ "mobLabel": "",
+ "mobModelTexture": "senpai.png",
+ "mobModelGlowTexture": "",
+ "visualScale": {
+ "fixedValue": 1.0
+ },
+ "boundingBoxScale": {
+ "fixedValue": 1.0
+ },
+ "entityDataEntries": [],
+ "modelWidth": 0.6,
+ "modelHeight": 2.0,
+ "modelShadowSize": 0.5,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": true,
+ "spawnEggBaseColor": {
+ "value": -11584987,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -14014413,
+ "falpha": 0.0
+ },
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Mob",
+ "mobCreatureType": "ILLAGER",
+ "attackStrength": 5,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 0.5,
+ "movementSpeed": 0.25,
+ "armorBaseValue": 0.0,
+ "trackingRange": 1024,
+ "followRange": 1024,
+ "health": 51,
+ "xpAmount": 20,
+ "waterMob": false,
+ "flyingMob": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "deathTime": 540,
+ "lerp": 4,
+ "disableCollisions": false,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": false,
+ "immuneToArrows": false,
+ "immuneToFallDamage": false,
+ "immuneToCactus": false,
+ "immuneToDrowning": false,
+ "immuneToLightning": false,
+ "immuneToPotions": false,
+ "immuneToPlayer": false,
+ "immuneToExplosion": false,
+ "immuneToTrident": false,
+ "immuneToAnvil": false,
+ "immuneToWither": false,
+ "immuneToDragonBreath": false,
+ "mobDrop": {
+ "value": "Items.GOLDEN_APPLE#0"
+ },
+ "livingSound": {
+ "value": "CUSTOM:idle"
+ },
+ "hurtSound": {
+ "value": "CUSTOM:ouch"
+ },
+ "deathSound": {
+ "value": "CUSTOM:growl"
+ },
+ "stepSound": {
+ "value": "CUSTOM:step"
+ },
+ "onMobTickUpdate": {
+ "name": "SenpaiDangShiTiGengXinKeShi"
+ },
+ "hasAI": true,
+ "aiBase": "Spider",
+ "aixml": "1.6FALSEnull,nullTRUEnull,nullnull,nullnull,null0.8null,nullFALSEFALSEEntityPlayernull,null",
+ "model": "senpai.geo.json",
+ "groupName": "head",
+ "animation1": "animation.senpai.idle",
+ "animation2": "animation.senpai.walk",
+ "animation3": "animation.senpai.die",
+ "animation4": "",
+ "animation5": "",
+ "animation6": "",
+ "animation7": "",
+ "animation8": "",
+ "animation9": "",
+ "animation10": "animation.senpai.run",
+ "enable2": true,
+ "enable3": true,
+ "enable4": false,
+ "enable5": false,
+ "enable6": false,
+ "enable7": false,
+ "enable8": false,
+ "enable9": false,
+ "enable10": true,
+ "breedable": false,
+ "tameable": false,
+ "disableDeathRotation": true,
+ "headMovement": true,
+ "eyeHeight": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "height": 1.0,
+ "spawnThisMob": true,
+ "doesDespawnWhenIdle": true,
+ "spawningProbability": 20,
+ "mobSpawningType": "monster",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [
+ {
+ "value": "badlands"
+ },
+ {
+ "value": "bamboo_jungle"
+ },
+ {
+ "value": "birch_forest"
+ },
+ {
+ "value": "cherry_grove"
+ },
+ {
+ "value": "roofed_forest"
+ },
+ {
+ "value": "desert"
+ },
+ {
+ "value": "dripstone_caves"
+ },
+ {
+ "value": "mutated_mesa"
+ },
+ {
+ "value": "mutated_forest"
+ },
+ {
+ "value": "forest"
+ },
+ {
+ "value": "frozen_peaks"
+ },
+ {
+ "value": "grove"
+ },
+ {
+ "value": "mutated_ice_flats"
+ },
+ {
+ "value": "jagged_peaks"
+ },
+ {
+ "value": "jungle"
+ },
+ {
+ "value": "lush_caves"
+ },
+ {
+ "value": "mangrove_swamp"
+ },
+ {
+ "value": "meadow"
+ },
+ {
+ "value": "mutated_birch_forest"
+ },
+ {
+ "value": "redwood_taiga"
+ },
+ {
+ "value": "mutated_redwood_taiga"
+ },
+ {
+ "value": "plains"
+ },
+ {
+ "value": "savanna"
+ },
+ {
+ "value": "savanna_rock"
+ },
+ {
+ "value": "snowy_slopes"
+ },
+ {
+ "value": "cold_beach"
+ },
+ {
+ "value": "snowy_tundra"
+ },
+ {
+ "value": "taiga_cold"
+ },
+ {
+ "value": "stony_peaks"
+ },
+ {
+ "value": "stone_beach"
+ },
+ {
+ "value": "mutated_plains"
+ },
+ {
+ "value": "swamp"
+ },
+ {
+ "value": "taiga"
+ },
+ {
+ "value": "extreme_hills_with_trees"
+ },
+ {
+ "value": "mutated_extreme_hills"
+ },
+ {
+ "value": "mountains"
+ },
+ {
+ "value": "mutated_savanna"
+ },
+ {
+ "value": "wooded_badlands_plateau"
+ }
+ ],
+ "spawnInDungeons": true
+ }
+}
\ No newline at end of file
diff --git a/elements/SenpaiDangShiTiGengXinKeShi.mod.json b/elements/SenpaiDangShiTiGengXinKeShi.mod.json
new file mode 100644
index 000000000..fc2a2e222
--- /dev/null
+++ b/elements/SenpaiDangShiTiGengXinKeShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "targetno_ext_triggerfindtargetADDfindtarget1local:targetfindtargetEQlocal:target11024ANDEntityPlayerCREATIVEGTElocal:target100findtarget0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Sentinel.mod.json b/elements/Sentinel.mod.json
new file mode 100644
index 000000000..6e11ee4de
--- /dev/null
+++ b/elements/Sentinel.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "sentinel",
+ "name": "Sentinel",
+ "idle": "animation.sentinel.idle",
+ "rarity": "RARE",
+ "displaySettings": "sentinel.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "SentinelWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "sentinel.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/SentinelBlueprint.mod.json b/elements/SentinelBlueprint.mod.json
new file mode 100644
index 000000000..49315dc33
--- /dev/null
+++ b/elements/SentinelBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Sentinel Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SentinelFire.mod.json b/elements/SentinelFire.mod.json
new file mode 100644
index 000000000..9ebf3cdd4
--- /dev/null
+++ b/elements/SentinelFire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:SentinelEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0This example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1GTlocal:usehandpower0EQglobal:zoomingTRUElocal:usehandzoomfiring24local:usehandfiring24playsound target:sentinelfirecharge1 player @s ~ ~ ~ 100 1playsound target:sentinelfirecharge3 player @a ~ ~ ~ 4 1GTlocal:usehandpower20local:usehandpowerMINUSlocal:usehandpower20local:usehandpower0EQglobal:zoomingTRUElocal:usehandzoomfiring24local:usehandfiring24playsound target:sentinelfire1 player @s ~ ~ ~ 100 1playsound target:sentinelfire3 player @a ~ ~ ~ 4 1CUSTOM:BulletFALSEFALSEDISALLOWEDDIVIDEADDlocal:usehanddamagelocal:usehandadddamagelocal:usehandvelocity0050CUSTOM:Spreadlocal:usehandcrot20local:usehand23stopsound @s player target:sentinelfire3stopsound @s player target:sentinelfirecharge3local:usehandammoMINUSlocal:usehandammo1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/SentinelSmithing.mod.json b/elements/SentinelSmithing.mod.json
new file mode 100644
index 000000000..a9b5adb3a
--- /dev/null
+++ b/elements/SentinelSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Legendarymaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:SentinelBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Sentinel"
+ },
+ "name": "sentinel_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SentinelWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/SentinelWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..42a7ede0d
--- /dev/null
+++ b/elements/SentinelWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idcidno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime73idlocal:idplaysound target:sentinel_reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload1ANDEQreloading1GTammo0EQreloadtime53idlocal:idplaysound target:sentinel_reload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload2GTfiring0firingMINUSfiring1GTzoomfiring0zoomfiringMINUSzoomfiring1WeaponDrawlocal:cidcidNEQcidcidcharging0chargingtime0EQcharging1EQchargingtime127cidlocal:cidplaysound target:charge player @s ~ ~ ~ 100 1ANDEQcidlocal:cidGTchargingtime0chargingtimeMINUSchargingtime1charging0chargingtime0ANDEQchargingtime16EQcidlocal:cidpower100ANDEQchargingtime1EQcidlocal:cidcharging0GTpower0adddamage10powerMINUSpower0.025adddamage0GTcrot0crotMINUScrot1"
+ }
+}
\ No newline at end of file
diff --git a/elements/SentinelbpCrafting.mod.json b/elements/SentinelbpCrafting.mod.json
new file mode 100644
index 000000000..792fecd92
--- /dev/null
+++ b/elements/SentinelbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:SentinelBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SentinelBlueprint"
+ },
+ "name": "sentinelbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Shock.mod.json b/elements/Shock.mod.json
new file mode 100644
index 000000000..6edfbd11c
--- /dev/null
+++ b/elements/Shock.mod.json
@@ -0,0 +1,23 @@
+{
+ "_fv": 57,
+ "_type": "potioneffect",
+ "definition": {
+ "effectName": "Shock",
+ "icon": "shock.png",
+ "color": {
+ "value": -256,
+ "falpha": 0.0
+ },
+ "isInstant": false,
+ "isBad": false,
+ "isBenefitical": true,
+ "renderStatusInInventory": true,
+ "renderStatusInHUD": true,
+ "onStarted": {
+ "name": "ShockDangYaoShuiXiaoGuoKaiShiYingYongShi"
+ },
+ "onActiveTick": {
+ "name": "ShockZaiXiaoGuoChiXuShiMeiKeFaSheng"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/ShockDangYaoShuiXiaoGuoKaiShiYingYongShi.mod.json b/elements/ShockDangYaoShuiXiaoGuoKaiShiYingYongShi.mod.json
new file mode 100644
index 000000000..96366a84c
--- /dev/null
+++ b/elements/ShockDangYaoShuiXiaoGuoKaiShiYingYongShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:shockhostile11"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShockZaiXiaoGuoChiXuShiMeiKeFaSheng.mod.json b/elements/ShockZaiXiaoGuoChiXuShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..ec10bb19a
--- /dev/null
+++ b/elements/ShockZaiXiaoGuoChiXuShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger00SLOWNESS1010TRUEADD-1515-20-23"
+ }
+}
\ No newline at end of file
diff --git a/elements/Shockcamera.mod.json b/elements/Shockcamera.mod.json
new file mode 100644
index 000000000..c00fd0217
--- /dev/null
+++ b/elements/Shockcamera.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "compute_cameraanglesANDCUSTOM:ShockCameraType.FIRST_PERSON812"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmo.mod.json b/elements/ShotgunAmmo.mod.json
new file mode 100644
index 000000000..8cabcac84
--- /dev/null
+++ b/elements/ShotgunAmmo.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "shotgunammo",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Shotgun Ammo * 2",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmoBox.mod.json b/elements/ShotgunAmmoBox.mod.json
new file mode 100644
index 000000000..038a34305
--- /dev/null
+++ b/elements/ShotgunAmmoBox.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "hk4163d",
+ "customModelName": "shotgunammobox:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Shougun Ammo Box",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 8,
+ "enchantability": 0,
+ "useDuration": 16,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 0,
+ "saturation": 0.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmoBoxCrafting.mod.json b/elements/ShotgunAmmoBoxCrafting.mod.json
new file mode 100644
index 000000000..772e9f627
--- /dev/null
+++ b/elements/ShotgunAmmoBoxCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:ShotgunAmmoBox"
+ },
+ "name": "shotgun_ammo_box_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json b/elements/ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
new file mode 100644
index 000000000..63e82b30e
--- /dev/null
+++ b/elements/ShotgunAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger201CUSTOM:ShotgunAmmoBoxglobal:shotgunammoADDglobal:shotgunammo12Shotgun Ammo +12FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmoCrafting.mod.json b/elements/ShotgunAmmoCrafting.mod.json
new file mode 100644
index 000000000..43bbbc7b8
--- /dev/null
+++ b/elements/ShotgunAmmoCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 3,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "CUSTOM:Buckshot"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "CUSTOM:Buckshot"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:ShotgunAmmo"
+ },
+ "name": "shotgun_ammo_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json b/elements/ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
new file mode 100644
index 000000000..3b8508e3f
--- /dev/null
+++ b/elements/ShotgunAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:shotgunammoADDglobal:shotgunammo2Shotgun Ammo +2FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 11CUSTOM:ShotgunAmmo10"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunReload1.mod.json b/elements/ShotgunReload1.mod.json
new file mode 100644
index 000000000..75b9808ef
--- /dev/null
+++ b/elements/ShotgunReload1.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1stackno_ext_triggerlocal:stacklocal:idlocal:stackidlocal:ammo1MINUSlocal:stackmaglocal:stackammolocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:shotgunammolocal:ammo1global:shotgunammoMINUSglobal:shotgunammolocal:ammo1local:stackammoADDlocal:stackammolocal:ammo1local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:shotgunammoglobal:shotgunammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/ShotgunReload2.mod.json b/elements/ShotgunReload2.mod.json
new file mode 100644
index 000000000..4ca7b7b5b
--- /dev/null
+++ b/elements/ShotgunReload2.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "stackammo2ammo1no_ext_triggerlocal:stacklocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:shotgunammolocal:ammo2global:shotgunammoMINUSglobal:shotgunammolocal:ammo2local:stackammoADDlocal:stackammolocal:ammo2local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:shotgunammoglobal:shotgunammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Sks.mod.json b/elements/Sks.mod.json
new file mode 100644
index 000000000..9006c6e71
--- /dev/null
+++ b/elements/Sks.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "sks",
+ "name": "SKS",
+ "idle": "animation.sks.idle",
+ "rarity": "RARE",
+ "displaySettings": "sks.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "SksWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "sks.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/SksDs.mod.json b/elements/SksDs.mod.json
new file mode 100644
index 000000000..bb7bcc80f
--- /dev/null
+++ b/elements/SksDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:sksfar player @a ~ ~ ~ 12 1playsound target:sksveryfar player @a ~ ~ ~ 24 1stopsound @s player target:sksfarstopsound @s player target:sksveryfar"
+ }
+}
\ No newline at end of file
diff --git a/elements/SksSmithing.mod.json b/elements/SksSmithing.mod.json
new file mode 100644
index 000000000..8b67651b2
--- /dev/null
+++ b/elements/SksSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Rarematerialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:IngotSteel"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:SKSBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Sks"
+ },
+ "name": "sks_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SksWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/SksWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..00782aaf5
--- /dev/null
+++ b/elements/SksWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime57idlocal:idplaysound target:akreload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0reloadtime0emptyreload0ANDEQreloadtime14EQidlocal:idgj0ANDEQreloadtime1EQidlocal:idReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:akreload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/SksbpCrafting.mod.json b/elements/SksbpCrafting.mod.json
new file mode 100644
index 000000000..eb8667680
--- /dev/null
+++ b/elements/SksbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:SKSBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SKSBlueprint"
+ },
+ "name": "sksbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Sksfire.mod.json b/elements/Sksfire.mod.json
new file mode 100644
index 000000000..df61393fd
--- /dev/null
+++ b/elements/Sksfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:SksEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0BulletfireNormalSksDsplaysound target:ak_fire_1p player @s ~ ~ ~ 2 1playsound target:ak_fire_3p player @a ~ ~ ~ 5 1stopsound @s player target:ak_fire_3pEQlocal:usehandammo1local:usehand10local:usehandgj1local:usehand3local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/SmpCrafting.mod.json b/elements/SmpCrafting.mod.json
new file mode 100644
index 000000000..7c9c58194
--- /dev/null
+++ b/elements/SmpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:NetheriteBarrel"
+ },
+ {
+ "value": "CUSTOM:NetheriteSpring"
+ },
+ {
+ "value": "CUSTOM:NetheriteAction"
+ },
+ {
+ "value": "CUSTOM:NetheriteTrigger"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Legendarymaterialpack"
+ },
+ "name": "smp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmo.mod.json b/elements/SniperAmmo.mod.json
new file mode 100644
index 000000000..146a4ed44
--- /dev/null
+++ b/elements/SniperAmmo.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "sniperammo",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Sniper Ammo*2",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "SniperAmmoYouJiKongQiShiShiTiDeWeiZhi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmoBox.mod.json b/elements/SniperAmmoBox.mod.json
new file mode 100644
index 000000000..69e0c77bc
--- /dev/null
+++ b/elements/SniperAmmoBox.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "hk4163d",
+ "customModelName": "sniperammobox:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Sniper Ammo Box",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 16,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedInAir": {
+ "name": "SniperAmmoBoxWanJiaWanChengShiYongWuPinShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 0,
+ "saturation": 0.0,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": true,
+ "animation": "eat"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmoBoxCrafting.mod.json b/elements/SniperAmmoBoxCrafting.mod.json
new file mode 100644
index 000000000..d3188a583
--- /dev/null
+++ b/elements/SniperAmmoBoxCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ },
+ {
+ "value": "Items.PAPER"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SniperAmmoBox"
+ },
+ "name": "sniper_ammo_box_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json b/elements/SniperAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
new file mode 100644
index 000000000..702b81d50
--- /dev/null
+++ b/elements/SniperAmmoBoxWanJiaWanChengShiYongWuPinShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger201CUSTOM:SniperAmmoBoxglobal:sniperammoADDglobal:sniperammo12Sniper Ammo +12FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 1"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmoCrafting.mod.json b/elements/SniperAmmoCrafting.mod.json
new file mode 100644
index 000000000..2b36a40bb
--- /dev/null
+++ b/elements/SniperAmmoCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 3,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:ingots/tungsten"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ },
+ {
+ "value": "Items.GUNPOWDER"
+ },
+ {
+ "value": "TAG:forge:plates/copper"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SniperAmmo"
+ },
+ "name": "sniper_ammo_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json b/elements/SniperAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
new file mode 100644
index 000000000..f55d82b98
--- /dev/null
+++ b/elements/SniperAmmoYouJiKongQiShiShiTiDeWeiZhi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:sniperammoADDglobal:sniperammo2Sniper Ammo +2FALSEplaysound target:bulletsupply voice @a ~ ~ ~ 1 11CUSTOM:SniperAmmo10"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperReload1.mod.json b/elements/SniperReload1.mod.json
new file mode 100644
index 000000000..81bf5a221
--- /dev/null
+++ b/elements/SniperReload1.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idammo2stackno_ext_triggerlocal:stacklocal:idlocal:stackidlocal:ammo1MINUSlocal:stackmaglocal:stackammolocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:sniperammolocal:ammo1global:sniperammoMINUSglobal:sniperammolocal:ammo1local:stackammoADDlocal:stackammolocal:ammo1local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:sniperammoglobal:sniperammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/SniperReload2.mod.json b/elements/SniperReload2.mod.json
new file mode 100644
index 000000000..47da3d1ba
--- /dev/null
+++ b/elements/SniperReload2.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idammo2stackno_ext_triggerlocal:stacklocal:idlocal:stackidlocal:ammo1MINUSlocal:stackmaglocal:stackammolocal:ammo2MINUSADDlocal:stackmag1local:stackammoGTEglobal:sniperammolocal:ammo2global:sniperammoMINUSglobal:sniperammolocal:ammo2local:stackammoADDlocal:stackammolocal:ammo2local:stackreloading0local:stackemptyreload0local:stackammoADDlocal:stackammoglobal:sniperammoglobal:sniperammo0local:stackreloading0local:stackemptyreload0"
+ }
+}
\ No newline at end of file
diff --git a/elements/SoulsteelIngot.mod.json b/elements/SoulsteelIngot.mod.json
new file mode 100644
index 000000000..8d21835f0
--- /dev/null
+++ b/elements/SoulsteelIngot.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "soulsteel_ingot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Soulsteel Ingot",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SoulsteelIngotCrafting.mod.json b/elements/SoulsteelIngotCrafting.mod.json
new file mode 100644
index 000000000..bdf04b355
--- /dev/null
+++ b/elements/SoulsteelIngotCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ {
+ "value": "CUSTOM:Soulsteelnugget"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SoulsteelIngot"
+ },
+ "name": "soulsteel_ingot_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SoulsteelNuggetCrafting.mod.json b/elements/SoulsteelNuggetCrafting.mod.json
new file mode 100644
index 000000000..9eb8f5b43
--- /dev/null
+++ b/elements/SoulsteelNuggetCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 9,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:SoulsteelIngot"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Soulsteelnugget"
+ },
+ "name": "soulsteel_nugget_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Soulsteelnugget.mod.json b/elements/Soulsteelnugget.mod.json
new file mode 100644
index 000000000..a60d112e9
--- /dev/null
+++ b/elements/Soulsteelnugget.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "soulsteel_nugget",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Soulsteel nugget",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Specialgun.mod.json b/elements/Specialgun.mod.json
new file mode 100644
index 000000000..3def3ec04
--- /dev/null
+++ b/elements/Specialgun.mod.json
@@ -0,0 +1,25 @@
+{
+ "_fv": 57,
+ "_type": "tag",
+ "definition": {
+ "type": "Items",
+ "items": [
+ {
+ "value": "CUSTOM:Bocek"
+ },
+ {
+ "value": "CUSTOM:Kraber"
+ },
+ {
+ "value": "CUSTOM:Minigun"
+ }
+ ],
+ "blocks": [],
+ "functions": [],
+ "entities": [],
+ "biomes": [],
+ "damageTypes": [],
+ "name": "specialgun",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Specialmaterialpack.mod.json b/elements/Specialmaterialpack.mod.json
new file mode 100644
index 000000000..138e05139
--- /dev/null
+++ b/elements/Specialmaterialpack.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "special_material_pack",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Special material pack",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SpecialmaterialpackCrafting.mod.json b/elements/SpecialmaterialpackCrafting.mod.json
new file mode 100644
index 000000000..14d96c0b0
--- /dev/null
+++ b/elements/SpecialmaterialpackCrafting.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:SoulsteelIngot"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHER_STAR"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:Legendarymaterialpack"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Specialmaterialpack"
+ },
+ "name": "specialmaterialpack_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Spread.mod.json b/elements/Spread.mod.json
new file mode 100644
index 000000000..5dd834f5f
--- /dev/null
+++ b/elements/Spread.mod.json
@@ -0,0 +1,16 @@
+{
+ "_fv": 57,
+ "_type": "attribute",
+ "definition": {
+ "description": "Spread",
+ "minValue": 0.0,
+ "maxValue": 1024.0,
+ "defaultValue": 0.0,
+ "isPersistent": false,
+ "entities": [
+ {
+ "value": "EntityPlayer"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/elements/SpyglassRange.mod.json b/elements/SpyglassRange.mod.json
new file mode 100644
index 000000000..439757b60
--- /dev/null
+++ b/elements/SpyglassRange.mod.json
@@ -0,0 +1,38 @@
+{
+ "_fv": 57,
+ "_type": "overlay",
+ "definition": {
+ "priority": "NORMAL",
+ "components": [
+ {
+ "type": "label",
+ "data": {
+ "name": "label_proc_entity_range",
+ "text": {
+ "fixedValue": "",
+ "name": "EntityRange"
+ },
+ "color": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "anchorPoint": "CENTER",
+ "x": 232,
+ "y": 97
+ }
+ }
+ ],
+ "baseTexture": "",
+ "overlayTarget": "Ingame",
+ "displayCondition": {
+ "name": "SpyglassRangeXianShiYouXiNeiDieJiaCeng"
+ },
+ "gridSettings": {
+ "sx": 18,
+ "sy": 18,
+ "ox": 11,
+ "oy": 15,
+ "snapOnGrid": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/SpyglassRangeXianShiYouXiNeiDieJiaCeng.mod.json b/elements/SpyglassRangeXianShiYouXiNeiDieJiaCeng.mod.json
new file mode 100644
index 000000000..1d1e6495e
--- /dev/null
+++ b/elements/SpyglassRangeXianShiYouXiNeiDieJiaCeng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerItems.SPYGLASSTRUEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelAction.mod.json b/elements/SteelAction.mod.json
new file mode 100644
index 000000000..00470c393
--- /dev/null
+++ b/elements/SteelAction.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_action",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Steel Action",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelActionCrafting.mod.json b/elements/SteelActionCrafting.mod.json
new file mode 100644
index 000000000..b299f0dbc
--- /dev/null
+++ b/elements/SteelActionCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelAction"
+ },
+ "name": "steel_action_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelBarrel.mod.json b/elements/SteelBarrel.mod.json
new file mode 100644
index 000000000..5a530b3a7
--- /dev/null
+++ b/elements/SteelBarrel.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_barrel",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Steel Barrel",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelBarrelCrafting.mod.json b/elements/SteelBarrelCrafting.mod.json
new file mode 100644
index 000000000..32384ba13
--- /dev/null
+++ b/elements/SteelBarrelCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelBarrel"
+ },
+ "name": "steel_barrel_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelSpring.mod.json b/elements/SteelSpring.mod.json
new file mode 100644
index 000000000..3d5a05ed7
--- /dev/null
+++ b/elements/SteelSpring.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_spring",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Steel Spring",
+ "rarity": "RARE",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelSpringCrafting.mod.json b/elements/SteelSpringCrafting.mod.json
new file mode 100644
index 000000000..e39a35461
--- /dev/null
+++ b/elements/SteelSpringCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelSpring"
+ },
+ "name": "steel_spring_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelTrigger.mod.json b/elements/SteelTrigger.mod.json
new file mode 100644
index 000000000..91cdcf467
--- /dev/null
+++ b/elements/SteelTrigger.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "steel_trigger",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Steel Trigger",
+ "rarity": "UNCOMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SteelTriggerCrafting.mod.json b/elements/SteelTriggerCrafting.mod.json
new file mode 100644
index 000000000..ce6e50d07
--- /dev/null
+++ b/elements/SteelTriggerCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.TRIPWIRE_HOOK"
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SteelTrigger"
+ },
+ "name": "steel_trigger_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Svd.mod.json b/elements/Svd.mod.json
new file mode 100644
index 000000000..287f83025
--- /dev/null
+++ b/elements/Svd.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "svd",
+ "name": "Svd",
+ "idle": "animation.svd.idle",
+ "rarity": "RARE",
+ "displaySettings": "svd.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "SvdWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "svd.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/SvdBlueprint.mod.json b/elements/SvdBlueprint.mod.json
new file mode 100644
index 000000000..4b916f799
--- /dev/null
+++ b/elements/SvdBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Svd Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/SvdDs.mod.json b/elements/SvdDs.mod.json
new file mode 100644
index 000000000..410ff4809
--- /dev/null
+++ b/elements/SvdDs.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerplaysound target:svdfar player @a ~ ~ ~ 16 1playsound target:svdveryfar player @a ~ ~ ~ 32 1stopsound @s player target:svdfarstopsound @s player target:svdveryfar"
+ }
+}
\ No newline at end of file
diff --git a/elements/SvdSmithing.mod.json b/elements/SvdSmithing.mod.json
new file mode 100644
index 000000000..c4f4c6b0a
--- /dev/null
+++ b/elements/SvdSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Svd"
+ },
+ "name": "svd_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/SvdWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/SvdWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..5bf8c26e3
--- /dev/null
+++ b/elements/SvdWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime57idlocal:idplaysound target:svdreload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0reloadtime0emptyreload0ANDEQreloadtime14EQidlocal:idgj0ANDEQreloadtime1EQidlocal:idSniperReload1ANDEQreloading1GTammo0EQreloadtime41idlocal:idplaysound target:svdreload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idSniperReload2WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/SvdbpCrafting.mod.json b/elements/SvdbpCrafting.mod.json
new file mode 100644
index 000000000..e4f60fc11
--- /dev/null
+++ b/elements/SvdbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:SvdBlueprint"
+ },
+ "name": "svdbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Svdfire.mod.json b/elements/Svdfire.mod.json
new file mode 100644
index 000000000..ac767d747
--- /dev/null
+++ b/elements/Svdfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:SvdEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0BulletfireNormalSvdDsplaysound target:svdfire1p player @s ~ ~ ~ 2 1playsound target:svdfire3p player @a ~ ~ ~ 6 1stopsound @s player target:svdfire3pEQlocal:usehandammo1local:usehand10local:usehandgj1local:usehand5local:usehandammoMINUSlocal:usehandammo1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..901122d4a
--- /dev/null
+++ b/elements/TacRpgWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idno_ext_triggerlocal:ididlocal:ammo1MINUS1ammoNEQididemptyreload0reloading0reloadtime0EQreloading1EQreloadtime91idlocal:idplaysound target:rpg7_reload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0reloadtime0emptyreload0EQreloadtime84empty0ANDEQreloadtime1EQidlocal:idGTEmaxammo0ammo11CUSTOM:Rocketreloading0emptyreload0WeaponDraw"
+ }
+}
\ No newline at end of file
diff --git a/elements/Target.mod.json b/elements/Target.mod.json
new file mode 100644
index 000000000..aa8a83f60
--- /dev/null
+++ b/elements/Target.mod.json
@@ -0,0 +1,150 @@
+{
+ "_fv": 57,
+ "_type": "animatedentity",
+ "definition": {
+ "mobName": "Target",
+ "mobLabel": "",
+ "mobModelTexture": "target.png",
+ "mobModelGlowTexture": "target_e.png",
+ "visualScale": {
+ "fixedValue": 1.0
+ },
+ "boundingBoxScale": {
+ "fixedValue": 1.0
+ },
+ "entityDataEntries": [],
+ "modelWidth": 0.875,
+ "modelHeight": 2.0,
+ "modelShadowSize": 0.0,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": false,
+ "spawnEggBaseColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "creativeTab": {
+ "value": "No creative tab entry"
+ },
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Creature",
+ "mobCreatureType": "UNDEFINED",
+ "attackStrength": 0,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 10.0,
+ "movementSpeed": 0.0,
+ "armorBaseValue": 0.0,
+ "trackingRange": 64,
+ "followRange": 16,
+ "health": 5,
+ "xpAmount": 0,
+ "waterMob": false,
+ "flyingMob": true,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "deathTime": 20,
+ "lerp": 0,
+ "disableCollisions": true,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": true,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": true,
+ "immuneToPotions": true,
+ "immuneToPlayer": false,
+ "immuneToExplosion": true,
+ "immuneToTrident": false,
+ "immuneToAnvil": true,
+ "immuneToWither": true,
+ "immuneToDragonBreath": true,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": ""
+ },
+ "hurtSound": {
+ "value": "CUSTOM:hit"
+ },
+ "deathSound": {
+ "value": "CUSTOM:hit"
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "hasAI": false,
+ "aiBase": "(none)",
+ "aixml": "1.2FALSEnull,null1null,nullFALSEnull,nullnull,nullnull,null",
+ "model": "target2.geo.json",
+ "groupName": "",
+ "animation1": "animation.target2.idle",
+ "animation2": "",
+ "animation3": "animation.target2.down",
+ "animation4": "",
+ "animation5": "",
+ "animation6": "",
+ "animation7": "",
+ "animation8": "",
+ "animation9": "",
+ "animation10": "",
+ "enable2": false,
+ "enable3": true,
+ "enable4": false,
+ "enable5": false,
+ "enable6": false,
+ "enable7": false,
+ "enable8": false,
+ "enable9": false,
+ "enable10": false,
+ "breedable": false,
+ "tameable": false,
+ "disableDeathRotation": true,
+ "headMovement": false,
+ "eyeHeight": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "height": 1.0,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "creature",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1.mod.json b/elements/Target1.mod.json
new file mode 100644
index 000000000..df7f8582c
--- /dev/null
+++ b/elements/Target1.mod.json
@@ -0,0 +1,163 @@
+{
+ "_fv": 57,
+ "_type": "animatedentity",
+ "definition": {
+ "mobName": "Target 1",
+ "mobLabel": "",
+ "mobModelTexture": "target.png",
+ "mobModelGlowTexture": "",
+ "visualScale": {
+ "fixedValue": 1.0
+ },
+ "boundingBoxScale": {
+ "fixedValue": 1.0,
+ "name": "Bazipengzhuang"
+ },
+ "entityDataEntries": [],
+ "modelWidth": 0.875,
+ "modelHeight": 2.0,
+ "modelShadowSize": 0.0,
+ "mountedYOffset": 0.0,
+ "hasSpawnEgg": false,
+ "spawnEggBaseColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "spawnEggDotColor": {
+ "value": -1,
+ "falpha": 0.0
+ },
+ "creativeTab": {
+ "value": "MISC"
+ },
+ "isBoss": false,
+ "bossBarColor": "PINK",
+ "bossBarType": "PROGRESS",
+ "equipmentMainHand": {
+ "value": ""
+ },
+ "equipmentOffHand": {
+ "value": ""
+ },
+ "equipmentHelmet": {
+ "value": ""
+ },
+ "equipmentBody": {
+ "value": ""
+ },
+ "equipmentLeggings": {
+ "value": ""
+ },
+ "equipmentBoots": {
+ "value": ""
+ },
+ "mobBehaviourType": "Creature",
+ "mobCreatureType": "UNDEFINED",
+ "attackStrength": 0,
+ "attackKnockback": 0.0,
+ "knockbackResistance": 10.0,
+ "movementSpeed": 0.0,
+ "armorBaseValue": 0.0,
+ "trackingRange": 256,
+ "followRange": 16,
+ "health": 100,
+ "xpAmount": 0,
+ "waterMob": false,
+ "flyingMob": true,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "deathTime": 100,
+ "lerp": 4,
+ "disableCollisions": true,
+ "ridable": false,
+ "canControlForward": false,
+ "canControlStrafe": false,
+ "immuneToFire": true,
+ "immuneToArrows": false,
+ "immuneToFallDamage": true,
+ "immuneToCactus": true,
+ "immuneToDrowning": true,
+ "immuneToLightning": true,
+ "immuneToPotions": true,
+ "immuneToPlayer": false,
+ "immuneToExplosion": false,
+ "immuneToTrident": false,
+ "immuneToAnvil": true,
+ "immuneToWither": true,
+ "immuneToDragonBreath": true,
+ "mobDrop": {
+ "value": ""
+ },
+ "livingSound": {
+ "value": ""
+ },
+ "hurtSound": {
+ "value": ""
+ },
+ "deathSound": {
+ "value": ""
+ },
+ "stepSound": {
+ "value": ""
+ },
+ "whenMobIsHurt": {
+ "name": "Target1DangShiTiShouShangShi"
+ },
+ "onRightClickedOn": {
+ "name": "Target1DangYouJiShiTiShi"
+ },
+ "onMobTickUpdate": {
+ "name": "Target1DangShiTiGengXinKeShi"
+ },
+ "onInitialSpawn": {
+ "name": "Target1ShiTiChuShiShengChengShi"
+ },
+ "hasAI": false,
+ "aiBase": "(none)",
+ "aixml": "",
+ "model": "target.geo.json",
+ "groupName": "",
+ "animation1": "animation.target.idle",
+ "animation2": "",
+ "animation3": "",
+ "animation4": "",
+ "animation5": "",
+ "animation6": "",
+ "animation7": "",
+ "animation8": "",
+ "animation9": "",
+ "animation10": "",
+ "enable2": false,
+ "enable3": false,
+ "enable4": false,
+ "enable5": false,
+ "enable6": false,
+ "enable7": false,
+ "enable8": false,
+ "enable9": false,
+ "enable10": false,
+ "breedable": false,
+ "tameable": false,
+ "disableDeathRotation": true,
+ "headMovement": false,
+ "eyeHeight": false,
+ "breedTriggerItems": [],
+ "ranged": false,
+ "rangedAttackItem": {
+ "value": ""
+ },
+ "rangedItemType": "Default item",
+ "rangedAttackInterval": 20,
+ "rangedAttackRadius": 10.0,
+ "height": 1.0,
+ "spawnThisMob": false,
+ "doesDespawnWhenIdle": false,
+ "spawningProbability": 20,
+ "mobSpawningType": "creature",
+ "minNumberOfMobsPerGroup": 4,
+ "maxNumberOfMobsPerGroup": 4,
+ "restrictionBiomes": [],
+ "spawnInDungeons": false
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1DangShiTiGengXinKeShi.mod.json b/elements/Target1DangShiTiGengXinKeShi.mod.json
new file mode 100644
index 000000000..fd8a07801
--- /dev/null
+++ b/elements/Target1DangShiTiGengXinKeShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerHP:##.##/##.##GTtargetdown-1targetdownMINUStargetdown1GTtargetdown300MULTIPLYMINUS400targetdown-0.9ANDLTtargetdown100GTtargetdown0ADD-90MULTIPLYMINUS100targetdown0.9"
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1DangShiTiShouShangShi.mod.json b/elements/Target1DangShiTiShouShangShi.mod.json
new file mode 100644
index 000000000..425304099
--- /dev/null
+++ b/elements/Target1DangShiTiShouShangShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerblockCUSTOM:hit21"
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1DangYouJiShiTiShi.mod.json b/elements/Target1DangYouJiShiTiShi.mod.json
new file mode 100644
index 000000000..61c12c19c
--- /dev/null
+++ b/elements/Target1DangYouJiShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger1CUSTOM:TargetdeployerEQglobal:zoomingFALSE0targetdown0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1ShiTiChuShiShengChengShi.mod.json b/elements/Target1ShiTiChuShiShengChengShi.mod.json
new file mode 100644
index 000000000..af6dcc0db
--- /dev/null
+++ b/elements/Target1ShiTiChuShiShengChengShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_trigger00"
+ }
+}
\ No newline at end of file
diff --git a/elements/Target1ShiXinPengZhuangXiangTiaoJian.mod.json b/elements/Target1ShiXinPengZhuangXiangTiaoJian.mod.json
new file mode 100644
index 000000000..b3b04376c
--- /dev/null
+++ b/elements/Target1ShiXinPengZhuangXiangTiaoJian.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/TargetCrafting.mod.json b/elements/TargetCrafting.mod.json
new file mode 100644
index 000000000..07bd38bbb
--- /dev/null
+++ b/elements/TargetCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.TARGET"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "CUSTOM:IngotSteel"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.ARMOR_STAND"
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Targetdeployer"
+ },
+ "name": "target_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TargetItem.mod.json b/elements/TargetItem.mod.json
new file mode 100644
index 000000000..e734e3bb4
--- /dev/null
+++ b/elements/TargetItem.mod.json
@@ -0,0 +1,11 @@
+{
+ "_fv": 57,
+ "_type": "tab",
+ "definition": {
+ "name": "Target Item",
+ "icon": {
+ "value": "CUSTOM:Targetdeployer"
+ },
+ "showSearch": false
+ }
+}
\ No newline at end of file
diff --git a/elements/Targetdeployer.mod.json b/elements/Targetdeployer.mod.json
new file mode 100644
index 000000000..10af914f0
--- /dev/null
+++ b/elements/Targetdeployer.mod.json
@@ -0,0 +1,56 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "targetdeploy",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Targetdeployer",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onRightClickedOnBlock": {
+ "name": "TargetdeployerDangYouJianDianJiFangKuaiShi"
+ },
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TargetdeployerDangYouJianDianJiFangKuaiShi.mod.json b/elements/TargetdeployerDangYouJianDianJiFangKuaiShi.mod.json
new file mode 100644
index 000000000..642ff3777
--- /dev/null
+++ b/elements/TargetdeployerDangYouJianDianJiFangKuaiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerCUSTOM:Target1ADD0.5ADD1ADD0.5000001CUSTOM:Targetdeployer"
+ }
+}
\ No newline at end of file
diff --git a/elements/Taser.mod.json b/elements/Taser.mod.json
new file mode 100644
index 000000000..b2895a138
--- /dev/null
+++ b/elements/Taser.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "tasergun",
+ "name": "Taser",
+ "idle": "animation.taser.idle",
+ "rarity": "UNCOMMON",
+ "displaySettings": "taser.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "Tasercooldown"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "taser.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserBlueprint.mod.json b/elements/TaserBlueprint.mod.json
new file mode 100644
index 000000000..ede6b1e0c
--- /dev/null
+++ b/elements/TaserBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Taser Blueprint",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserBulletDangTouZhiWuJiZhongShiTiShi.mod.json b/elements/TaserBulletDangTouZhiWuJiZhongShiTiShi.mod.json
new file mode 100644
index 000000000..f233e827b
--- /dev/null
+++ b/elements/TaserBulletDangTouZhiWuJiZhongShiTiShi.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerhitcountADDhitcount1CREATIVECUSTOM:Target1CUSTOM:Shock0100"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserBulletProjectile.mod.json b/elements/TaserBulletProjectile.mod.json
new file mode 100644
index 000000000..278d1c4a7
--- /dev/null
+++ b/elements/TaserBulletProjectile.mod.json
@@ -0,0 +1,25 @@
+{
+ "_fv": 57,
+ "_type": "projectile",
+ "definition": {
+ "projectileItem": {
+ "value": "Blocks.AIR"
+ },
+ "showParticles": false,
+ "actionSound": {
+ "value": ""
+ },
+ "igniteFire": false,
+ "power": 1.0,
+ "damage": 5.0,
+ "knockback": 5,
+ "entityModel": "Modeltaser_rod",
+ "customModelTexture": "taser_rod.png",
+ "onHitsEntity": {
+ "name": "TaserBulletDangTouZhiWuJiZhongShiTiShi"
+ },
+ "onFlyingTick": {
+ "name": "TaserBulletTouZhiWuFeiXingKe"
+ }
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserBulletTouZhiWuFeiXingKe.mod.json b/elements/TaserBulletTouZhiWuFeiXingKe.mod.json
new file mode 100644
index 000000000..f4d632f56
--- /dev/null
+++ b/elements/TaserBulletTouZhiWuFeiXingKe.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerliveADDlive1EQlive5000"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserElectrode.mod.json b/elements/TaserElectrode.mod.json
new file mode 100644
index 000000000..79bbb7605
--- /dev/null
+++ b/elements/TaserElectrode.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 1,
+ "texture": "tasergun",
+ "customModelName": "taser_electrode:default",
+ "customProperties": {},
+ "states": [],
+ "name": "Taser Electrode",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:Ammo"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserElectrodeCrafting.mod.json b/elements/TaserElectrodeCrafting.mod.json
new file mode 100644
index 000000000..f530ac314
--- /dev/null
+++ b/elements/TaserElectrodeCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 4,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "EQUIPMENT",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Blocks.LIGHTNING_ROD"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Blocks.LIGHTNING_ROD"
+ },
+ {
+ "value": "Items.STRING"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STRING"
+ },
+ {
+ "value": "Items.STRING"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": "Items.STRING"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TaserElectrode"
+ },
+ "name": "taser_electrode_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserSmithing.mod.json b/elements/TaserSmithing.mod.json
new file mode 100644
index 000000000..b8231dfa1
--- /dev/null
+++ b/elements/TaserSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Commonmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Blocks.CONCRETE#4"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:TaserBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Taser"
+ },
+ "name": "taser_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TaserbpCrafting.mod.json b/elements/TaserbpCrafting.mod.json
new file mode 100644
index 000000000..5092d2b12
--- /dev/null
+++ b/elements/TaserbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:TaserBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TaserBlueprint"
+ },
+ "name": "taserbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Tasercooldown.mod.json b/elements/Tasercooldown.mod.json
new file mode 100644
index 000000000..829ec13ea
--- /dev/null
+++ b/elements/Tasercooldown.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "idno_ext_triggerlocal:ididNEQididemptyreload0reloading0reloadtime0EQreloading1EQreloadtime55idlocal:idplaysound target:taserreload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0reloadtime0emptyreload0ANDEQreloadtime1EQidlocal:idGTEmaxammo1ammo11CUSTOM:TaserElectrodereloading0emptyreload0WeaponDrawLightGTfireanim0fireanimMINUSfireanim1LTdrawtime11drawtimeADDdrawtime1drawtime0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Taserfire.mod.json b/elements/Taserfire.mod.json
new file mode 100644
index 000000000..6dd532527
--- /dev/null
+++ b/elements/Taserfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:TaserEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0This example will test if the random number is less than 0.7 (70%). Random numbers range between (0.0 and 1.0). If it is true, then it will run what is in the \"do\" section of the if statement.LTRANDOM0.5global:recoilhorizon-1global:recoilhorizon1global:recoil0.1global:firing1local:usehand5playsound target:taserfire player @a ~ ~ ~ 1 1CUSTOM:TaserBulletProjectileFALSEFALSEDISALLOWEDDIVIDElocal:usehanddamagelocal:usehandvelocity00local:usehandvelocityCUSTOM:Spreadlocal:usehandfireanim4local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/TbpCrafting.mod.json b/elements/TbpCrafting.mod.json
new file mode 100644
index 000000000..0e4528ad1
--- /dev/null
+++ b/elements/TbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:TracheliumBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TracheliumBlueprint"
+ },
+ "name": "tbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/ToZoom.mod.json b/elements/ToZoom.mod.json
new file mode 100644
index 000000000..bcc23b728
--- /dev/null
+++ b/elements/ToZoom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerglobal:zoomTRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/Trachelium.mod.json b/elements/Trachelium.mod.json
new file mode 100644
index 000000000..846953aad
--- /dev/null
+++ b/elements/Trachelium.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "trachelium_texture",
+ "name": "Trachelium",
+ "idle": "animation.trachelium.idle",
+ "rarity": "EPIC",
+ "displaySettings": "trachelium.item.json",
+ "leftArm": "Lefthand",
+ "rightArm": "Righthand",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": true,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 8,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "Reloading"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "trachelium.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/TracheliumBlueprint.mod.json b/elements/TracheliumBlueprint.mod.json
new file mode 100644
index 000000000..673ce07f7
--- /dev/null
+++ b/elements/TracheliumBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Trachelium Blueprint",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TracheliumSmithing.mod.json b/elements/TracheliumSmithing.mod.json
new file mode 100644
index 000000000..30db1c83d
--- /dev/null
+++ b/elements/TracheliumSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Legendarymaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "Items.NETHERITE_INGOT"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:TracheliumBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Trachelium"
+ },
+ "name": "trachelium_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Tracheliumfire.mod.json b/elements/Tracheliumfire.mod.json
new file mode 100644
index 000000000..b4d5e4c73
--- /dev/null
+++ b/elements/Tracheliumfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandANDANDANDlocal:usehandCUSTOM:TracheliumEQlocal:usehandreloading0local:usehandGTlocal:usehandammo0BulletfireNormallocal:usehand4playsound target:trachelium3p player @a ~ ~ ~ 4 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/TungstenBlasting.mod.json b/elements/TungstenBlasting.mod.json
new file mode 100644
index 000000000..73155ca4f
--- /dev/null
+++ b/elements/TungstenBlasting.mod.json
@@ -0,0 +1,22 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Blasting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 4.0,
+ "cookingTime": 400,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "blastingInputStack": {
+ "value": "CUSTOM:Scheelite"
+ },
+ "blastingReturnStack": {
+ "value": "CUSTOM:TungstenIngot"
+ },
+ "name": "tungsten_blasting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/TungstenIngot.mod.json b/elements/TungstenIngot.mod.json
new file mode 100644
index 000000000..d4667de52
--- /dev/null
+++ b/elements/TungstenIngot.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "tungsten_ingot",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Tungsten Ingot",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TungstenPowder.mod.json b/elements/TungstenPowder.mod.json
new file mode 100644
index 000000000..f98283113
--- /dev/null
+++ b/elements/TungstenPowder.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "tungsten_powder",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Tungsten Powder",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/TungstenPowderCrafting.mod.json b/elements/TungstenPowderCrafting.mod.json
new file mode 100644
index 000000000..3790b17f0
--- /dev/null
+++ b/elements/TungstenPowderCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": true,
+ "recipeSlots": [
+ {
+ "value": "TAG:forge:ingots/tungsten"
+ },
+ {
+ "value": "CUSTOM:Hammer"
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ },
+ {
+ "value": ""
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:TungstenPowder"
+ },
+ "name": "tungsten_powder_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/UccpCrafting.mod.json b/elements/UccpCrafting.mod.json
new file mode 100644
index 000000000..6992add43
--- /dev/null
+++ b/elements/UccpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 4,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/tungsten"
+ },
+ {
+ "value": "TAG:forge:dusts/iron"
+ },
+ {
+ "value": "TAG:forge:dusts/coal_coke"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:Unblastedcementedcarbidepodwer"
+ },
+ "name": "uccp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/Unblastedcementedcarbidepodwer.mod.json b/elements/Unblastedcementedcarbidepodwer.mod.json
new file mode 100644
index 000000000..8addf2487
--- /dev/null
+++ b/elements/Unblastedcementedcarbidepodwer.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "unblasted_cemented_carbide_podwer",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Unblasted Cemented Carbide Podwer",
+ "rarity": "COMMON",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/Unsprintable.mod.json b/elements/Unsprintable.mod.json
new file mode 100644
index 000000000..399073ab6
--- /dev/null
+++ b/elements/Unsprintable.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "player_ticksGTfireanim0unspringtable20OROROREQglobal:zoomingTRUEunspringtable1GTunspringtable0unspringtableMINUSunspringtable1EQglobal:zoomingTRUEFALSE"
+ }
+}
\ No newline at end of file
diff --git a/elements/VecBurstFire.mod.json b/elements/VecBurstFire.mod.json
new file mode 100644
index 000000000..20395236c
--- /dev/null
+++ b/elements/VecBurstFire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandlocal:usehandtarget:gunEQlocal:usehandfiremode1firing0EQlocal:usehandammo0local:usehandburst0ANDANDANDANDlocal:usehandCUSTOM:VectorEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandGTlocal:usehandburst0EQlocal:usehandburst1local:usehand5local:usehand1local:usehandburstMINUSlocal:usehandburst1BulletfireNormalplaysound target:vec3 player @a ~ ~ ~ 2 1local:usehandfireanim2local:usehandammoMINUSlocal:usehandammo1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Vecautofire.mod.json b/elements/Vecautofire.mod.json
new file mode 100644
index 000000000..1ab59f884
--- /dev/null
+++ b/elements/Vecautofire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandplayer_tickslocal:usehandEQfiring1ANDANDANDlocal:usehandCUSTOM:VectorEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand1BulletfireNormalplaysound target:vec3 player @a ~ ~ ~ 2 1local:usehandammoMINUSlocal:usehandammo1local:usehandfireanim2"
+ }
+}
\ No newline at end of file
diff --git a/elements/Vecfire.mod.json b/elements/Vecfire.mod.json
new file mode 100644
index 000000000..8f380e7f0
--- /dev/null
+++ b/elements/Vecfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "usehandno_ext_triggerSPECTATORlocal:usehandlocal:usehandCUSTOM:VectorEQlocal:usehandfiremode0ANDANDEQlocal:usehandreloading0GTlocal:usehandammo0local:usehandlocal:usehand1BulletfireNormalplaysound target:vec3 player @a ~ ~ ~ 2 1local:usehandammoMINUSlocal:usehandammo1local:usehandfireanim2ANDEQlocal:usehandfiremode1EQlocal:usehandburst0local:usehandburst3EQlocal:usehandfiremode2firing1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Vector.mod.json b/elements/Vector.mod.json
new file mode 100644
index 000000000..518d38d15
--- /dev/null
+++ b/elements/Vector.mod.json
@@ -0,0 +1,55 @@
+{
+ "_fv": 57,
+ "_type": "animateditem",
+ "definition": {
+ "renderType": 0,
+ "texture": "vector",
+ "name": "Vector",
+ "idle": "animation.vec.idle",
+ "rarity": "EPIC",
+ "displaySettings": "vector.item.json",
+ "leftArm": "",
+ "rightArm": "",
+ "perspective": "First Person",
+ "creativeTab": {
+ "value": "CUSTOM:TargetGuns"
+ },
+ "firstPersonArms": false,
+ "stackSize": 1,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "enableArmPose": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "hasGlow": false,
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "onItemInInventoryTick": {
+ "name": "VectorWuPinZaiBeiBaoZhongShiMeiKeFaSheng"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none",
+ "normal": "vector.geo.json",
+ "armPoseList": []
+ }
+}
\ No newline at end of file
diff --git a/elements/VectorBlueprint.mod.json b/elements/VectorBlueprint.mod.json
new file mode 100644
index 000000000..5c77a7d0e
--- /dev/null
+++ b/elements/VectorBlueprint.mod.json
@@ -0,0 +1,53 @@
+{
+ "_fv": 57,
+ "_type": "item",
+ "definition": {
+ "renderType": 0,
+ "texture": "gun_blueprint",
+ "customModelName": "Normal",
+ "customProperties": {},
+ "states": [],
+ "name": "Vector Blueprint",
+ "rarity": "EPIC",
+ "creativeTab": {
+ "value": "CUSTOM:TargetItem"
+ },
+ "stackSize": 64,
+ "enchantability": 0,
+ "useDuration": 0,
+ "toolType": 1.0,
+ "damageCount": 0,
+ "recipeRemainder": {
+ "value": ""
+ },
+ "destroyAnyBlock": false,
+ "immuneToFire": false,
+ "stayInGridWhenCrafting": false,
+ "damageOnCrafting": false,
+ "enableMeleeDamage": false,
+ "damageVsEntity": 0.0,
+ "specialInformation": {
+ "fixedValue": []
+ },
+ "glowCondition": {
+ "fixedValue": false
+ },
+ "guiBoundTo": "",
+ "inventorySize": 9,
+ "inventoryStackSize": 64,
+ "enableRanged": false,
+ "shootConstantly": false,
+ "projectile": {
+ "value": "CUSTOM:TaserBulletProjectile"
+ },
+ "isFood": false,
+ "nutritionalValue": 4,
+ "saturation": 0.3,
+ "eatResultItem": {
+ "value": ""
+ },
+ "isMeat": false,
+ "isAlwaysEdible": false,
+ "animation": "none"
+ }
+}
\ No newline at end of file
diff --git a/elements/VectorSmithing.mod.json b/elements/VectorSmithing.mod.json
new file mode 100644
index 000000000..bf73195c4
--- /dev/null
+++ b/elements/VectorSmithing.mod.json
@@ -0,0 +1,28 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Smithing",
+ "recipeRetstackSize": 1,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "smithingInputStack": {
+ "value": "CUSTOM:Epicmaterialpack"
+ },
+ "smithingInputAdditionStack": {
+ "value": "CUSTOM:CementedCarbideIngot"
+ },
+ "smithingInputTemplateStack": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "smithingReturnStack": {
+ "value": "CUSTOM:Vector"
+ },
+ "name": "vector_smithing",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/VectorWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json b/elements/VectorWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
new file mode 100644
index 000000000..3926e6208
--- /dev/null
+++ b/elements/VectorWuPinZaiBeiBaoZhongShiMeiKeFaSheng.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "ammo1idammo2no_ext_triggerlocal:ididlocal:ammo1MINUS33ammolocal:ammo2MINUS34ammoNEQididemptyreload0reloading0reloadtime0ANDEQreloading1EQammo0EQreloadtime61idlocal:idplaysound target:vecreload player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idHandgunReload1ANDEQreloading1GTammo0EQreloadtime47idlocal:idplaysound target:vecreload2 player @s ~ ~ ~ 100 1ANDEQidlocal:idGTreloadtime0reloadtimeMINUSreloadtime1reloading0emptyreload0reloadtime0ANDEQreloadtime1EQidlocal:idHandgunReload2WeaponDrawLight"
+ }
+}
\ No newline at end of file
diff --git a/elements/VectorbpCrafting.mod.json b/elements/VectorbpCrafting.mod.json
new file mode 100644
index 000000000..1a8852a29
--- /dev/null
+++ b/elements/VectorbpCrafting.mod.json
@@ -0,0 +1,48 @@
+{
+ "_fv": 57,
+ "_type": "recipe",
+ "definition": {
+ "recipeType": "Crafting",
+ "recipeRetstackSize": 2,
+ "group": "",
+ "cookingBookCategory": "MISC",
+ "xpReward": 0.0,
+ "cookingTime": 200,
+ "craftingBookCategory": "MISC",
+ "recipeShapeless": false,
+ "recipeSlots": [
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DYE#4"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ },
+ {
+ "value": "Items.DIAMOND"
+ }
+ ],
+ "recipeReturnStack": {
+ "value": "CUSTOM:VectorBlueprint"
+ },
+ "name": "vectorbp_crafting",
+ "namespace": "mod"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponDraw.mod.json b/elements/WeaponDraw.mod.json
new file mode 100644
index 000000000..be38ad043
--- /dev/null
+++ b/elements/WeaponDraw.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "stackno_ext_triggerLTdraw2drawADDdraw1draw0EQdraw1global:zoomingFALSE16ANDCUSTOM:RpgEQammo0empty1ANDCUSTOM:SksEQammo0gj1LTdrawtime16drawtimeADDdrawtime1drawtime0GTfireanim0fireanimMINUSfireanim1"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponDrawLight.mod.json b/elements/WeaponDrawLight.mod.json
new file mode 100644
index 000000000..30570338e
--- /dev/null
+++ b/elements/WeaponDrawLight.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerLTdraw2drawADDdraw1draw0EQdraw1global:zoomingFALSE13GTfireanim0fireanimMINUSfireanim1LTdrawtime11drawtimeADDdrawtime1drawtime0"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponLevel.mod.json b/elements/WeaponLevel.mod.json
new file mode 100644
index 000000000..db9fde233
--- /dev/null
+++ b/elements/WeaponLevel.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "stackplayer_tickslocal:stacklocal:stacktarget:gunEQlocal:stacklevel0local:stackexp220local:stackexp2ADDlocal:stackexp1MULTIPLYlocal:stacklevel500GTElocal:stackdamagetotallocal:stackexp2local:stackexp1local:stackexp2local:stacklevelADDlocal:stacklevel1local:stackdamagenowMINUSlocal:stackdamagetotallocal:stackexp1local:stackdamageneedMINUSlocal:stackexp2local:stackexp1local:stackdamagetotal##.##TRUE"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponMove.mod.json b/elements/WeaponMove.mod.json
new file mode 100644
index 000000000..cc721837b
--- /dev/null
+++ b/elements/WeaponMove.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "compute_cameraanglestarget:gunfloat fps = Minecraft.getInstance().getFps(); if (fps <= 0) { fps = 1f; } float times = 90f / fps;LTmove0moveMULTIPLYADDmoveMULTIPLYMULTIPLYMULTIPLY1timesPOWERmove2MINUS1MULTIPLY1zoomtimeMINUS1MULTIPLY1zoomtimemoveMULTIPLYMINUSmoveMULTIPLYMULTIPLYMULTIPLY1timesPOWERmove2MINUS1MULTIPLY1zoomtimeMINUS1MULTIPLY1zoomtimeEQmovel1moveMULTIPLYADDmoveMULTIPLYMULTIPLYPOWERADDABSmove0.052MULTIPLY0.2timesMINUS1MULTIPLY0.1zoomtimeMINUS1MULTIPLY0.1zoomtimeEQmover1moveMULTIPLYMINUSmoveMULTIPLYMULTIPLYPOWERADDABSmove0.052MULTIPLY0.2timesMINUS1MULTIPLY0.1zoomtimeMINUS1MULTIPLY0.1zoomtimeEQturnr1turntimeyawADDturntimeyawMULTIPLYMULTIPLY0.08timesPOWERamplitudeyaw2EQturnl1turntimeyawMINUSturntimeyawMULTIPLYMULTIPLY0.08timesPOWERamplitudeyaw2GTturntimeyaw1turntimeyaw1LTturntimeyaw-1turntimeyaw-1GTEturntimeyaw0EQturnr0turntimeyawMINUSturntimeyawMULTIPLY0.02timesLTturntimeyaw0EQturnl0turntimeyawADDturntimeyawMULTIPLY0.02timesLTamplitudeyawABSMINUSr1r2amplitudeyawADDamplitudeyawMULTIPLY0.005SINMULTIPLY0.5MULTIPLYPIMINUSABSMINUSr1r2amplitudeyawamplitudeyawMINUSamplitudeyawMULTIPLY0.005SINMULTIPLY0.5MULTIPLYPIMINUSABSMINUSr1r2amplitudeyawGTamplitudeyaw0amplitudeyawMINUSamplitudeyawMULTIPLY0.01POWERamplitudeyaw2amplitudeyawADDamplitudeyawMULTIPLY0.01POWERamplitudeyaw2yawMULTIPLYMULTIPLY0.04TANMULTIPLY0.25MULTIPLYPIturntimeyawMINUS1MULTIPLY1zoomtimeEQturnu1turntimepitchADDturntimepitchMULTIPLY0.02timesEQturnd1turntimepitchMINUSturntimepitchMULTIPLY0.02timesGTturntimepitch1turntimepitch1LTturntimepitch-1turntimepitch-1GTEturntimepitch0EQturnu0turntimepitchMINUSturntimepitchMULTIPLY0.04timesLTturntimepitch0EQturnd0turntimepitchADDturntimepitchMULTIPLY0.04timesLTamplitudepitchABSMINUSp1p2amplitudepitchADDamplitudepitchMULTIPLY0.00001POWERMINUSABSMINUSp1p2amplitudepitch2amplitudepitchMINUSamplitudepitchMULTIPLY0.00001POWERMINUSABSMINUSp1p2amplitudepitch2GTamplitudepitch0amplitudepitchMINUSamplitudepitchMULTIPLY0.01POWERamplitudepitch2amplitudepitchADDamplitudepitchMULTIPLY0.01POWERamplitudepitch2gunpitchMULTIPLYMINUSMULTIPLYMULTIPLYMULTIPLY0.15amplitudepitchTANMULTIPLY0.25MULTIPLYPIturntimepitchMINUS1MULTIPLY0.8zoomtimeMULTIPLY0.05vyMINUS1MULTIPLY1zoomtimeEQfiretime0rottimeADDrottime1GTErottime3rottime0EQrottime1r1p1EQrottime2r2p2GT0MINUSr1r2rotMINUSrot0.01LT0MINUSr1r2rotADDrot0.01EQ0MINUSr1r2rot0GT0MINUSp1p2pitMINUSpit0.01LT0MINUSp1p2pitADDpit0.01EQ0MINUSp1p2pit0LTrot0rotADDrotMULTIPLYMULTIPLY2timesPOWERrot2LTrot-0.04turnr1turnl0GTrot0rotMINUSrotMULTIPLYMULTIPLY2timesPOWERrot2GTrot0.04turnl1turnr0rot0turnl0turnr0LTpit0pitADDpitMULTIPLYMULTIPLY2timesPOWERpit2LTpit-0.034turnu1turnd0GTpit0pitMINUSpitMULTIPLYMULTIPLY2timesPOWERpit2GTpit0.034turnd1turnu0pit0turnd0turnu0pit0turnl0turnr0turnd0turnu0ANDLT-0.8ADD0.078LTADD0.0780.8LTvyADD0.078vyMULTIPLYADDvyMULTIPLY2POWERMINUSADD0.078vy2MINUS1MULTIPLY1zoomtimevyMULTIPLYMINUSvyMULTIPLY2POWERMINUSADD0.078vy2MINUS1MULTIPLY1zoomtimeGTvy0.8vy0.8LTvy-0.8vy-0.8"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponSway.mod.json b/elements/WeaponSway.mod.json
new file mode 100644
index 000000000..6d7e2ce19
--- /dev/null
+++ b/elements/WeaponSway.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "poseplayer_ticksANDANDGTE1CUSTOM:Pronelocal:pose0.85CUSTOM:ProneEQbipod1local:pose0local:pose0.25local:pose1timeADDtime0.0001xMULTIPLYlocal:poseMULTIPLYMULTIPLY-0.008SINMULTIPLY1timeMINUS1MULTIPLY0.9zoomtimeyMULTIPLYlocal:poseMULTIPLYMULTIPLY0.125SINMINUStime1.585MINUS1MULTIPLY0.9zoomtime"
+ }
+}
\ No newline at end of file
diff --git a/elements/WeaponZom.mod.json b/elements/WeaponZom.mod.json
new file mode 100644
index 000000000..0c77b3fc1
--- /dev/null
+++ b/elements/WeaponZom.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "timecompute_cameraanglesfloat fps = Minecraft.getInstance().getFps(); if (fps <= 0) { fps = 1f; } float times = 110f / fps;EQglobal:zoomingTRUELTzoomtime1zoomtimeADDzoomtimeMULTIPLYzoomspeedMULTIPLY0.02timeszoomtime1GTzoomtime0zoomtimeMINUSzoomtimeMULTIPLY0.02timeszoomtime0zoomposADDMULTIPLY0.5COSMULTIPLYPIPOWERMINUSPOWERzoomtime2120.5zoomposzADDPOWERMINUSMULTIPLY2zoomtime121"
+ }
+}
\ No newline at end of file
diff --git a/elements/Weapondrawhavey.mod.json b/elements/Weapondrawhavey.mod.json
new file mode 100644
index 000000000..bd72d7ff2
--- /dev/null
+++ b/elements/Weapondrawhavey.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "no_ext_triggerLTdraw2drawADDdraw1draw0EQdraw1global:zoomingFALSE32LTdrawtime29drawtimeADDdrawtime1drawtime0GTfireanim0fireanimMINUSfireanim1"
+ }
+}
\ No newline at end of file
diff --git a/elements/Weaponfire.mod.json b/elements/Weaponfire.mod.json
new file mode 100644
index 000000000..e228cb3e1
--- /dev/null
+++ b/elements/Weaponfire.mod.json
@@ -0,0 +1,7 @@
+{
+ "_fv": 57,
+ "_type": "procedure",
+ "definition": {
+ "procedurexml": "poseamplitudecompute_cameraanglesfloat fps = Minecraft.getInstance().getFps(); if (fps <= 0) { fps = 1f; } float times = 45f / fps;local:amplitudeMULTIPLY15000MULTIPLYrecoilyrecoilxANDANDGTE1EQprone0local:pose0.9GTprone0EQbipod1local:pose0.75local:pose0.8local:pose1GTglobal:firing0firetime0.2GT0.3firepos2firepos2ADDfirepos2MULTIPLY0.04timesLT0firepos2firepos2MINUSfirepos2MULTIPLY0.02timesfirepos20LT0firetimefiretimeADDfiretimeMULTIPLY0.075timesANDLT0firetimeLTfiretime0.2fireposMULTIPLYlocal:poseADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimefirepos2EQglobal:recoilhorizon1MINUSyawMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1ADDpitchMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1ADDrollMULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1EQglobal:recoilhorizon-1MINUSyawMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1ADDpitchMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1MINUSrollMULTIPLYlocal:amplitudeADDADDMULTIPLY-18.34POWERfiretime2MULTIPLY8.58firetimeMULTIPLY0.7MINUSMULTIPLY2RANDOM1ANDLTE0.2firetimeLTfiretime1fireposMULTIPLYlocal:poseADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167firepos2EQglobal:recoilhorizon1MINUSyawMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1ADDpitchMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1ADDrollMULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1EQglobal:recoilhorizon-1ADDyawMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1MINUSpitchMULTIPLY0.2MULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1MINUSrollMULTIPLYlocal:amplitudeADDADDMINUSMULTIPLY3.34POWERfiretime2MULTIPLY5.5firetime2.167MULTIPLY0.7MINUSMULTIPLY2RANDOM1ANDLTE0firetimeLTEfiretime0.25boltposADDPOWERMINUSMULTIPLY8firetime121ANDLT0.25firetimeLTfiretime1boltpos0GTEfiretime1firetime0"
+ }
+}
\ No newline at end of file
diff --git a/elements/Zoom.mod.json b/elements/Zoom.mod.json
new file mode 100644
index 000000000..a7d7e051b
--- /dev/null
+++ b/elements/Zoom.mod.json
@@ -0,0 +1,15 @@
+{
+ "_fv": 57,
+ "_type": "keybind",
+ "definition": {
+ "triggerKey": "MOUSE_RIGHT",
+ "keyBindingName": "Zoom",
+ "keyBindingCategoryKey": "target",
+ "onKeyPressed": {
+ "name": "ToZoom"
+ },
+ "onKeyReleased": {
+ "name": "OutZoom"
+ }
+ }
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 000000000..f237dcf65
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,2 @@
+org.gradle.jvmargs=-Xmx3G
+org.gradle.daemon=false
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..37aef8d3f
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
+networkTimeout=10000
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100644
index 000000000..65dcd68d6
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,244 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 000000000..93e3f59f1
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/mcreator.gradle b/mcreator.gradle
new file mode 100644
index 000000000..7dc9b8f08
--- /dev/null
+++ b/mcreator.gradle
@@ -0,0 +1,57 @@
+repositories {
+maven {
+ url = "https://maven.theillusivec4.top/"
+ }
+}
+
+dependencies {
+ runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:5.4.2+1.20.1")
+ compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:5.4.2+1.20.1:api")
+}
+minecraft {
+ runs {
+ client {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+
+ server {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+ data {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+ }
+}
+
+
+repositories {
+ maven {
+ url = 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/'
+ }
+}
+
+dependencies {
+ implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.20.1:4.4.2')
+}
+
+minecraft {
+ runs {
+ client {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+ server {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+ data {
+ property 'mixin.env.remapRefMap', 'true'
+ property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
+ }
+ }
+}
+
+
diff --git a/models/ammobox.json b/models/ammobox.json
new file mode 100644
index 000000000..4963508aa
--- /dev/null
+++ b/models/ammobox.json
@@ -0,0 +1,299 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "creativeammobox",
+ "particle": "creativeammobox"
+ },
+ "elements": [
+ {
+ "from": [9.9, 7, 5.1],
+ "to": [10, 9.3, 10.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [0.5, 9.5, 0.625, 10.625], "texture": "#0"},
+ "east": {"uv": [4, 3, 6.875, 4.125], "texture": "#0"},
+ "south": {"uv": [1, 9.5, 1.125, 10.625], "texture": "#0"},
+ "west": {"uv": [4, 4.5, 6.875, 5.625], "texture": "#0"},
+ "up": {"uv": [7.625, 11.375, 7.5, 8.5], "texture": "#0"},
+ "down": {"uv": [9.125, 0, 9, 2.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6, 7, 10.9],
+ "to": [10, 9.3, 11],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [0, 5, 2, 6.125], "texture": "#0"},
+ "east": {"uv": [9, 5, 9.125, 6.125], "texture": "#0"},
+ "south": {"uv": [2, 5, 4, 6.125], "texture": "#0"},
+ "west": {"uv": [9, 6.5, 9.125, 7.625], "texture": "#0"},
+ "up": {"uv": [11, 3.125, 9, 3], "texture": "#0"},
+ "down": {"uv": [11, 3.5, 9, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6, 7, 5],
+ "to": [10, 9.3, 5.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [4, 6, 6, 7.125], "texture": "#0"},
+ "east": {"uv": [8, 9, 8.125, 10.125], "texture": "#0"},
+ "south": {"uv": [6, 6, 8, 7.125], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 9.125], "texture": "#0"},
+ "up": {"uv": [11, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [11, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6, 7, 5.1],
+ "to": [6.1, 9.3, 10.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 10.625], "texture": "#0"},
+ "east": {"uv": [4, 0, 6.875, 1.125], "texture": "#0"},
+ "south": {"uv": [9.5, 0, 9.625, 1.125], "texture": "#0"},
+ "west": {"uv": [4, 1.5, 6.875, 2.625], "texture": "#0"},
+ "up": {"uv": [7.125, 11.375, 7, 8.5], "texture": "#0"},
+ "down": {"uv": [8.625, 7, 8.5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.1, 7, 5.1],
+ "to": [9.9, 8.1, 10.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [7, 0, 8.875, 0.5], "texture": "#0"},
+ "east": {"uv": [0, 6.5, 2.875, 7], "texture": "#0"},
+ "south": {"uv": [7, 0.5, 8.875, 1], "texture": "#0"},
+ "west": {"uv": [0, 7, 2.875, 7.5], "texture": "#0"},
+ "up": {"uv": [1.875, 2.875, 0, 0], "texture": "#0"},
+ "down": {"uv": [3.875, 0, 2, 2.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.1, 8.9, 7.2],
+ "to": [9.9, 9.3, 10.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [7, 1, 8.875, 1.25], "texture": "#0"},
+ "east": {"uv": [7, 1.5, 8.875, 1.75], "texture": "#0"},
+ "south": {"uv": [7, 2, 8.875, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 2.5, 8.875, 2.75], "texture": "#0"},
+ "up": {"uv": [1.875, 4.875, 0, 3], "texture": "#0"},
+ "down": {"uv": [3.875, 3, 2, 4.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.1, 7.1, 7],
+ "to": [6.9, 9.1, 7.8],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [5.5, 8.5, 5.875, 9.5], "texture": "#0"},
+ "east": {"uv": [6, 8.5, 6.375, 9.5], "texture": "#0"},
+ "south": {"uv": [8.5, 6, 8.875, 7], "texture": "#0"},
+ "west": {"uv": [6.5, 8.5, 6.875, 9.5], "texture": "#0"},
+ "up": {"uv": [9.375, 9.875, 9, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 9, 9.5, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.03047, 7.1, 5.1],
+ "to": [8.83047, 9.1, 5.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [1.5, 7.5, 1.875, 8.5], "texture": "#0"},
+ "east": {"uv": [2, 7.5, 2.375, 8.5], "texture": "#0"},
+ "south": {"uv": [2.5, 7.5, 2.875, 8.5], "texture": "#0"},
+ "west": {"uv": [3, 7.5, 3.375, 8.5], "texture": "#0"},
+ "up": {"uv": [2.875, 9.875, 2.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 2.5, 9.5, 2.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [9, 7.1, 5.1],
+ "to": [9.8, 9.1, 5.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [7.5, 3, 7.875, 4], "texture": "#0"},
+ "east": {"uv": [3.5, 7.5, 3.875, 8.5], "texture": "#0"},
+ "south": {"uv": [4, 7.5, 4.375, 8.5], "texture": "#0"},
+ "west": {"uv": [7.5, 4, 7.875, 5], "texture": "#0"},
+ "up": {"uv": [3.375, 9.875, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [3.875, 9.5, 3.5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [9, 7.1, 6.05],
+ "to": [9.8, 9.1, 6.85],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [4.5, 7.5, 4.875, 8.5], "texture": "#0"},
+ "east": {"uv": [5, 7.5, 5.375, 8.5], "texture": "#0"},
+ "south": {"uv": [7.5, 5, 7.875, 6], "texture": "#0"},
+ "west": {"uv": [5.5, 7.5, 5.875, 8.5], "texture": "#0"},
+ "up": {"uv": [4.375, 9.875, 4, 9.5], "texture": "#0"},
+ "down": {"uv": [4.875, 9.5, 4.5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.03047, 7.1, 6.05],
+ "to": [8.83047, 9.1, 6.85],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [6, 7.5, 6.375, 8.5], "texture": "#0"},
+ "east": {"uv": [6.5, 7.5, 6.875, 8.5], "texture": "#0"},
+ "south": {"uv": [7, 7.5, 7.375, 8.5], "texture": "#0"},
+ "west": {"uv": [7.5, 7.5, 7.875, 8.5], "texture": "#0"},
+ "up": {"uv": [5.375, 9.875, 5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 5, 9.5, 5.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.06953, 7.1, 6.05],
+ "to": [7.86953, 9.1, 6.85],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [8, 3, 8.375, 4], "texture": "#0"},
+ "east": {"uv": [8, 4, 8.375, 5], "texture": "#0"},
+ "south": {"uv": [8, 5, 8.375, 6], "texture": "#0"},
+ "west": {"uv": [8, 6, 8.375, 7], "texture": "#0"},
+ "up": {"uv": [5.875, 9.875, 5.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 5.5, 9.5, 5.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.1, 7.1, 6.05],
+ "to": [6.9, 9.1, 6.85],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [8, 7, 8.375, 8], "texture": "#0"},
+ "east": {"uv": [8, 8, 8.375, 9], "texture": "#0"},
+ "south": {"uv": [0, 8.5, 0.375, 9.5], "texture": "#0"},
+ "west": {"uv": [0.5, 8.5, 0.875, 9.5], "texture": "#0"},
+ "up": {"uv": [6.375, 9.875, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 6, 9.5, 6.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [9, 7.1, 7],
+ "to": [9.8, 9.1, 7.8],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [1, 8.5, 1.375, 9.5], "texture": "#0"},
+ "east": {"uv": [1.5, 8.5, 1.875, 9.5], "texture": "#0"},
+ "south": {"uv": [2, 8.5, 2.375, 9.5], "texture": "#0"},
+ "west": {"uv": [2.5, 8.5, 2.875, 9.5], "texture": "#0"},
+ "up": {"uv": [6.875, 9.875, 6.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 6.5, 9.5, 6.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.03047, 7.1, 7],
+ "to": [8.83047, 9.1, 7.8],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [3, 8.5, 3.375, 9.5], "texture": "#0"},
+ "east": {"uv": [8.5, 3, 8.875, 4], "texture": "#0"},
+ "south": {"uv": [3.5, 8.5, 3.875, 9.5], "texture": "#0"},
+ "west": {"uv": [4, 8.5, 4.375, 9.5], "texture": "#0"},
+ "up": {"uv": [9.875, 7.375, 9.5, 7], "texture": "#0"},
+ "down": {"uv": [9.875, 7.5, 9.5, 7.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.06953, 7.1, 7],
+ "to": [7.86953, 9.1, 7.8],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [8.5, 4, 8.875, 5], "texture": "#0"},
+ "east": {"uv": [4.5, 8.5, 4.875, 9.5], "texture": "#0"},
+ "south": {"uv": [5, 8.5, 5.375, 9.5], "texture": "#0"},
+ "west": {"uv": [8.5, 5, 8.875, 6], "texture": "#0"},
+ "up": {"uv": [9.875, 8.375, 9.5, 8], "texture": "#0"},
+ "down": {"uv": [9.875, 8.5, 9.5, 8.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.1, 7.1, 5.1],
+ "to": [6.9, 9.1, 5.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [3, 6.5, 3.375, 7.5], "texture": "#0"},
+ "east": {"uv": [3.5, 6.5, 3.875, 7.5], "texture": "#0"},
+ "south": {"uv": [7, 3, 7.375, 4], "texture": "#0"},
+ "west": {"uv": [7, 4, 7.375, 5], "texture": "#0"},
+ "up": {"uv": [1.875, 9.875, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 1.5, 9.5, 1.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.06953, 7.1, 5.1],
+ "to": [7.86953, 9.1, 5.9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.325, 8]},
+ "faces": {
+ "north": {"uv": [7, 5, 7.375, 6], "texture": "#0"},
+ "east": {"uv": [0, 7.5, 0.375, 8.5], "texture": "#0"},
+ "south": {"uv": [0.5, 7.5, 0.875, 8.5], "texture": "#0"},
+ "west": {"uv": [1, 7.5, 1.375, 8.5], "texture": "#0"},
+ "up": {"uv": [2.375, 9.875, 2, 9.5], "texture": "#0"},
+ "down": {"uv": [9.875, 2, 9.5, 2.375], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 0.75, 0],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "thirdperson_lefthand": {
+ "translation": [0, 0.75, 0],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "firstperson_righthand": {
+ "rotation": [91.82, -12.22, 77.05],
+ "translation": [1, 2, 0]
+ },
+ "firstperson_lefthand": {
+ "rotation": [91.82, -12.22, 77.05],
+ "translation": [1, 2, 0]
+ },
+ "ground": {
+ "translation": [0, -1.75, 0]
+ },
+ "gui": {
+ "rotation": [-135, 55, -180],
+ "scale": [2.05, 2.05, 2.05]
+ },
+ "head": {
+ "translation": [0, 7.25, 0]
+ },
+ "fixed": {
+ "rotation": [90, 45, 180],
+ "translation": [0, 0, -0.5],
+ "scale": [1.5, 1.5, 1.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [0, 0, 0],
+ "color": 0,
+ "children": [
+ {
+ "name": "group",
+ "origin": [8, 1.325, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5]
+ },
+ {
+ "name": "group",
+ "origin": [8, 1.325, 8],
+ "color": 0,
+ "children": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/ammobox.json.textures b/models/ammobox.json.textures
new file mode 100644
index 000000000..0f8dfac53
--- /dev/null
+++ b/models/ammobox.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "creativeammobox"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/claymore.json b/models/claymore.json
new file mode 100644
index 000000000..37bed3a68
--- /dev/null
+++ b/models/claymore.json
@@ -0,0 +1,193 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "1": "block/claymore"
+ },
+ "elements": [
+ {
+ "from": [4.5, 2.75, 7.5],
+ "to": [11.5, 7.75, 9.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.75, 8]},
+ "faces": {
+ "north": {"uv": [1, 1, 4.5, 3.5], "texture": "#1"},
+ "east": {"uv": [0, 1, 1, 3.5], "texture": "#1"},
+ "south": {"uv": [5.5, 1, 9, 3.5], "texture": "#1"},
+ "west": {"uv": [4.5, 1, 5.5, 3.5], "texture": "#1"},
+ "up": {"uv": [4.5, 1, 1, 0], "texture": "#1"},
+ "down": {"uv": [8, 0, 4.5, 1], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6, 7, 8],
+ "to": [10, 8, 9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.75, 8]},
+ "faces": {
+ "north": {"uv": [0.5, 7.5, 2.5, 8], "texture": "#1"},
+ "east": {"uv": [0, 7.5, 0.5, 8], "texture": "#1"},
+ "south": {"uv": [3, 7.5, 5, 8], "texture": "#1"},
+ "west": {"uv": [2.5, 7.5, 3, 8], "texture": "#1"},
+ "up": {"uv": [2.5, 7.5, 0.5, 7], "texture": "#1"},
+ "down": {"uv": [4.5, 7, 2.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 7.75, 8],
+ "to": [6, 8.75, 9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.75, 8]},
+ "faces": {
+ "north": {"uv": [7.5, 4, 8, 4.5], "texture": "#1"},
+ "east": {"uv": [7, 4, 7.5, 4.5], "texture": "#1"},
+ "south": {"uv": [8.5, 4, 9, 4.5], "texture": "#1"},
+ "west": {"uv": [8, 4, 8.5, 4.5], "texture": "#1"},
+ "up": {"uv": [8, 4, 7.5, 3.5], "texture": "#1"},
+ "down": {"uv": [8.5, 3.5, 8, 4], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10, 7.75, 8],
+ "to": [11, 8.75, 9],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.75, 8]},
+ "faces": {
+ "north": {"uv": [3.5, 4, 4, 4.5], "texture": "#1"},
+ "east": {"uv": [3, 4, 3.5, 4.5], "texture": "#1"},
+ "south": {"uv": [4.5, 4, 5, 4.5], "texture": "#1"},
+ "west": {"uv": [4, 4, 4.5, 4.5], "texture": "#1"},
+ "up": {"uv": [4, 4, 3.5, 3.5], "texture": "#1"},
+ "down": {"uv": [4.5, 3.5, 4, 4], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, -0.65, 7.8],
+ "to": [5, 3.35, 8.8],
+ "rotation": {"angle": 45, "axis": "x", "origin": [5, 2.6, 8.3]},
+ "faces": {
+ "north": {"uv": [0.5, 8, 0.5, 10], "texture": "#1"},
+ "east": {"uv": [0, 8, 0.5, 10], "texture": "#1"},
+ "south": {"uv": [1, 8, 1, 10], "texture": "#1"},
+ "west": {"uv": [0.5, 8, 1, 10], "texture": "#1"},
+ "up": {"uv": [0.5, 8, 0.5, 7.5], "texture": "#1"},
+ "down": {"uv": [0.5, 7.5, 0.5, 8], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, -0.9, 8.05],
+ "to": [5, 3.1, 9.05],
+ "rotation": {"angle": -45, "axis": "x", "origin": [5, 2.6, 8.3]},
+ "faces": {
+ "north": {"uv": [7.5, 7, 7.5, 9], "texture": "#1"},
+ "east": {"uv": [7, 7, 7.5, 9], "texture": "#1"},
+ "south": {"uv": [8, 7, 8, 9], "texture": "#1"},
+ "west": {"uv": [7.5, 7, 8, 9], "texture": "#1"},
+ "up": {"uv": [7.5, 7, 7.5, 6.5], "texture": "#1"},
+ "down": {"uv": [7.5, 6.5, 7.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [11, -0.9, 8.05],
+ "to": [11, 3.1, 9.05],
+ "rotation": {"angle": -45, "axis": "x", "origin": [11, 2.6, 8.3]},
+ "faces": {
+ "north": {"uv": [5.5, 7, 5.5, 9], "texture": "#1"},
+ "east": {"uv": [5, 7, 5.5, 9], "texture": "#1"},
+ "south": {"uv": [6, 7, 6, 9], "texture": "#1"},
+ "west": {"uv": [5.5, 7, 6, 9], "texture": "#1"},
+ "up": {"uv": [5.5, 7, 5.5, 6.5], "texture": "#1"},
+ "down": {"uv": [5.5, 6.5, 5.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [11, -0.65, 7.8],
+ "to": [11, 3.35, 8.8],
+ "rotation": {"angle": 45, "axis": "x", "origin": [11, 2.6, 8.3]},
+ "faces": {
+ "north": {"uv": [6.5, 7, 6.5, 9], "texture": "#1"},
+ "east": {"uv": [6, 7, 6.5, 9], "texture": "#1"},
+ "south": {"uv": [7, 7, 7, 9], "texture": "#1"},
+ "west": {"uv": [6.5, 7, 7, 9], "texture": "#1"},
+ "up": {"uv": [6.5, 7, 6.5, 6.5], "texture": "#1"},
+ "down": {"uv": [6.5, 6.5, 6.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [11.11836, 2.75, 6.58135],
+ "to": [13.11836, 7.75, 8.58135],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [13.61836, 1.75, 8.08135]},
+ "faces": {
+ "north": {"uv": [1, 4.5, 2, 7], "texture": "#1"},
+ "east": {"uv": [0, 4.5, 1, 7], "texture": "#1"},
+ "south": {"uv": [3, 4.5, 4, 7], "texture": "#1"},
+ "west": {"uv": [2, 4.5, 3, 7], "texture": "#1"},
+ "up": {"uv": [2, 4.5, 1, 3.5], "texture": "#1"},
+ "down": {"uv": [3, 3.5, 2, 4.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [3.18821, 2.75, 7.04016],
+ "to": [5.18821, 7.75, 9.04016],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [3.68821, 1.75, 7.54016]},
+ "faces": {
+ "north": {"uv": [5, 4.5, 6, 7], "texture": "#1"},
+ "east": {"uv": [4, 4.5, 5, 7], "texture": "#1"},
+ "south": {"uv": [7, 4.5, 8, 7], "texture": "#1"},
+ "west": {"uv": [6, 4.5, 7, 7], "texture": "#1"},
+ "up": {"uv": [6, 4.5, 5, 3.5], "texture": "#1"},
+ "down": {"uv": [7, 3.5, 6, 4.5], "texture": "#1"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [90, 180, 0],
+ "translation": [0, -1.5, 0],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [90, 180, 0],
+ "translation": [0, -1.5, 0],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "firstperson_righthand": {
+ "rotation": [-180, 0, 171.25],
+ "translation": [-6, 4.75, 2.75]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-180, 0, 171.25],
+ "translation": [-6, 4.75, 2.75]
+ },
+ "ground": {
+ "translation": [0, 1, 0],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "gui": {
+ "rotation": [30, 45, 0],
+ "translation": [0, 4.5, 0],
+ "scale": [1.3, 1.3, 1.3]
+ },
+ "head": {
+ "rotation": [0, 180, 0],
+ "translation": [0, 14.5, 0]
+ },
+ "fixed": {
+ "rotation": [0, 180, 0],
+ "translation": [0, 4.5, 0],
+ "scale": [1.5, 1.5, 1.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "claymore",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "bone",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/claymore.json.textures b/models/claymore.json.textures
new file mode 100644
index 000000000..5dcb9b040
--- /dev/null
+++ b/models/claymore.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "1": "claymore"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/gungranade.json b/models/gungranade.json
new file mode 100644
index 000000000..e919db144
--- /dev/null
+++ b/models/gungranade.json
@@ -0,0 +1,527 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "gungranade",
+ "particle": "gungranade"
+ },
+ "elements": [
+ {
+ "from": [7.60219, 6.27939, 7.02386],
+ "to": [8.39953, 8.68395, 8.35276],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [0.5, 6, 1, 7.25], "texture": "#0"},
+ "east": {"uv": [0, 0, 0.75, 1.25], "texture": "#0"},
+ "south": {"uv": [6, 2, 6.5, 3.25], "texture": "#0"},
+ "west": {"uv": [1, 0, 1.75, 1.25], "texture": "#0"},
+ "up": {"uv": [8.5, 0.75, 8, 0], "texture": "#0"},
+ "down": {"uv": [1.5, 8, 1, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.60218, 6.27939, 7.02387],
+ "to": [8.39952, 8.68395, 8.35277],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [6, 3.5, 6.5, 4.75], "texture": "#0"},
+ "east": {"uv": [0, 1.5, 0.75, 2.75], "texture": "#0"},
+ "south": {"uv": [5, 6, 5.5, 7.25], "texture": "#0"},
+ "west": {"uv": [1, 1.5, 1.75, 2.75], "texture": "#0"},
+ "up": {"uv": [8.5, 1.75, 8, 1], "texture": "#0"},
+ "down": {"uv": [2, 8, 1.5, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.63443, 6.27939, 7.58766],
+ "to": [8.96333, 8.68395, 8.385],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [2, 0, 2.75, 1.25], "texture": "#0"},
+ "east": {"uv": [6, 5, 6.5, 6.25], "texture": "#0"},
+ "south": {"uv": [2, 1.5, 2.75, 2.75], "texture": "#0"},
+ "west": {"uv": [5.5, 6, 6, 7.25], "texture": "#0"},
+ "up": {"uv": [2.75, 8.5, 2, 8], "texture": "#0"},
+ "down": {"uv": [8.75, 2, 8, 2.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.63442, 6.27939, 7.58767],
+ "to": [8.96332, 8.68395, 8.38501],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [0, 3, 0.75, 4.25], "texture": "#0"},
+ "east": {"uv": [6.5, 0, 7, 1.25], "texture": "#0"},
+ "south": {"uv": [3, 0, 3.75, 1.25], "texture": "#0"},
+ "west": {"uv": [1, 6.5, 1.5, 7.75], "texture": "#0"},
+ "up": {"uv": [8.75, 3, 8, 2.5], "texture": "#0"},
+ "down": {"uv": [3.75, 8, 3, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.60219, 6.27939, 7.6199],
+ "to": [8.39953, 8.68395, 8.9488],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [1.5, 6.5, 2, 7.75], "texture": "#0"},
+ "east": {"uv": [1, 3, 1.75, 4.25], "texture": "#0"},
+ "south": {"uv": [6.5, 1.5, 7, 2.75], "texture": "#0"},
+ "west": {"uv": [3, 1.5, 3.75, 2.75], "texture": "#0"},
+ "up": {"uv": [8.5, 3.75, 8, 3], "texture": "#0"},
+ "down": {"uv": [4.5, 8, 4, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.0384, 6.27939, 7.58766],
+ "to": [8.3673, 8.68395, 8.385],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [2, 3, 2.75, 4.25], "texture": "#0"},
+ "east": {"uv": [2, 6.5, 2.5, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 3, 3.75, 4.25], "texture": "#0"},
+ "west": {"uv": [2.5, 6.5, 3, 7.75], "texture": "#0"},
+ "up": {"uv": [8.75, 4.5, 8, 4], "texture": "#0"},
+ "down": {"uv": [8.75, 4.5, 8, 5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.03839, 6.27939, 7.58766],
+ "to": [8.36729, 8.68395, 8.385],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [4, 0, 4.75, 1.25], "texture": "#0"},
+ "east": {"uv": [3, 6.5, 3.5, 7.75], "texture": "#0"},
+ "south": {"uv": [4, 1.5, 4.75, 2.75], "texture": "#0"},
+ "west": {"uv": [6.5, 3, 7, 4.25], "texture": "#0"},
+ "up": {"uv": [8.75, 5.5, 8, 5], "texture": "#0"},
+ "down": {"uv": [8.75, 5.5, 8, 6], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.6022, 6.27939, 7.02386],
+ "to": [8.39954, 8.68395, 8.35276],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.60667, 7.98633]},
+ "faces": {
+ "north": {"uv": [3.5, 6.5, 4, 7.75], "texture": "#0"},
+ "east": {"uv": [4, 3, 4.75, 4.25], "texture": "#0"},
+ "south": {"uv": [4, 6.5, 4.5, 7.75], "texture": "#0"},
+ "west": {"uv": [0, 4.5, 0.75, 5.75], "texture": "#0"},
+ "up": {"uv": [8.5, 6.75, 8, 6], "texture": "#0"},
+ "down": {"uv": [7.5, 8, 7, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.60219, 5.87939, 7.02386],
+ "to": [8.39953, 6.07939, 7.65276],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [8, 7, 8.5, 7.25], "texture": "#0"},
+ "east": {"uv": [9.5, 6.5, 9.75, 6.75], "texture": "#0"},
+ "south": {"uv": [7.5, 8, 8, 8.25], "texture": "#0"},
+ "west": {"uv": [7, 9.5, 7.25, 9.75], "texture": "#0"},
+ "up": {"uv": [8.5, 7.75, 8, 7.5], "texture": "#0"},
+ "down": {"uv": [8.5, 8, 8, 8.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.60218, 5.87939, 7.02387],
+ "to": [8.39952, 6.07939, 7.65277],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [8.5, 0, 9, 0.25], "texture": "#0"},
+ "east": {"uv": [9.5, 7, 9.75, 7.25], "texture": "#0"},
+ "south": {"uv": [8.5, 0.5, 9, 0.75], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.75, 9.75], "texture": "#0"},
+ "up": {"uv": [9, 1.25, 8.5, 1], "texture": "#0"},
+ "down": {"uv": [9, 1.5, 8.5, 1.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.33443, 5.87939, 7.58766],
+ "to": [8.96333, 6.07939, 8.385],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [9.5, 7.5, 9.75, 7.75], "texture": "#0"},
+ "east": {"uv": [2, 8.5, 2.5, 8.75], "texture": "#0"},
+ "south": {"uv": [8, 9.5, 8.25, 9.75], "texture": "#0"},
+ "west": {"uv": [2.5, 8.5, 3, 8.75], "texture": "#0"},
+ "up": {"uv": [3.25, 9, 3, 8.5], "texture": "#0"},
+ "down": {"uv": [8.75, 3, 8.5, 3.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.33442, 5.87939, 7.58767],
+ "to": [8.96332, 6.07939, 8.38501],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [9.5, 8, 9.75, 8.25], "texture": "#0"},
+ "east": {"uv": [3.5, 8.5, 4, 8.75], "texture": "#0"},
+ "south": {"uv": [8.5, 9.5, 8.75, 9.75], "texture": "#0"},
+ "west": {"uv": [8.5, 3.5, 9, 3.75], "texture": "#0"},
+ "up": {"uv": [4.75, 9, 4.5, 8.5], "texture": "#0"},
+ "down": {"uv": [6.25, 8.5, 6, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.60219, 5.87939, 8.3199],
+ "to": [8.39953, 6.07939, 8.9488],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [8.5, 6, 9, 6.25], "texture": "#0"},
+ "east": {"uv": [9.5, 8.5, 9.75, 8.75], "texture": "#0"},
+ "south": {"uv": [6.5, 8.5, 7, 8.75], "texture": "#0"},
+ "west": {"uv": [9, 9.5, 9.25, 9.75], "texture": "#0"},
+ "up": {"uv": [9, 6.75, 8.5, 6.5], "texture": "#0"},
+ "down": {"uv": [9, 7, 8.5, 7.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.0384, 5.87939, 7.58766],
+ "to": [7.6673, 6.07939, 8.385],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [9.5, 9, 9.75, 9.25], "texture": "#0"},
+ "east": {"uv": [7.5, 8.5, 8, 8.75], "texture": "#0"},
+ "south": {"uv": [9.5, 9.5, 9.75, 9.75], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 9, 7.75], "texture": "#0"},
+ "up": {"uv": [8.25, 9, 8, 8.5], "texture": "#0"},
+ "down": {"uv": [8.75, 8, 8.5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.03839, 5.87939, 7.58766],
+ "to": [7.66729, 6.07939, 8.385],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [0, 10, 0.25, 10.25], "texture": "#0"},
+ "east": {"uv": [8.5, 8.5, 9, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 0, 10.25, 0.25], "texture": "#0"},
+ "west": {"uv": [9, 0, 9.5, 0.25], "texture": "#0"},
+ "up": {"uv": [9.25, 1, 9, 0.5], "texture": "#0"},
+ "down": {"uv": [1.25, 9, 1, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.6022, 5.87939, 7.02386],
+ "to": [8.39954, 6.07939, 7.65276],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.40667, 7.98633]},
+ "faces": {
+ "north": {"uv": [9, 1, 9.5, 1.25], "texture": "#0"},
+ "east": {"uv": [0.5, 10, 0.75, 10.25], "texture": "#0"},
+ "south": {"uv": [1.5, 9, 2, 9.25], "texture": "#0"},
+ "west": {"uv": [10, 0.5, 10.25, 0.75], "texture": "#0"},
+ "up": {"uv": [9.5, 1.75, 9, 1.5], "texture": "#0"},
+ "down": {"uv": [2.5, 9, 2, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 5.92704, 7.12011],
+ "to": [8.35966, 9.27939, 8.31612],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [4.5, 6.5, 4.75, 8.25], "texture": "#0"},
+ "east": {"uv": [1, 4.5, 1.5, 6.25], "texture": "#0"},
+ "south": {"uv": [6.5, 4.5, 6.75, 6.25], "texture": "#0"},
+ "west": {"uv": [1.5, 4.5, 2, 6.25], "texture": "#0"},
+ "up": {"uv": [9.25, 2.5, 9, 2], "texture": "#0"},
+ "down": {"uv": [2.75, 9, 2.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 5.92704, 7.12012],
+ "to": [8.35965, 9.27939, 8.31613],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [6, 6.5, 6.25, 8.25], "texture": "#0"},
+ "east": {"uv": [2, 4.5, 2.5, 6.25], "texture": "#0"},
+ "south": {"uv": [6.5, 6.5, 6.75, 8.25], "texture": "#0"},
+ "west": {"uv": [2.5, 4.5, 3, 6.25], "texture": "#0"},
+ "up": {"uv": [9.25, 3, 9, 2.5], "texture": "#0"},
+ "down": {"uv": [3.25, 9, 3, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.67107, 5.92704, 7.62753],
+ "to": [8.86708, 9.27939, 8.34513],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [3, 4.5, 3.5, 6.25], "texture": "#0"},
+ "east": {"uv": [7, 0, 7.25, 1.75], "texture": "#0"},
+ "south": {"uv": [3.5, 4.5, 4, 6.25], "texture": "#0"},
+ "west": {"uv": [7, 2, 7.25, 3.75], "texture": "#0"},
+ "up": {"uv": [9.5, 3.25, 9, 3], "texture": "#0"},
+ "down": {"uv": [4, 9, 3.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.67106, 5.92704, 7.62754],
+ "to": [8.86707, 9.27939, 8.34514],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [4, 4.5, 4.5, 6.25], "texture": "#0"},
+ "east": {"uv": [7, 4, 7.25, 5.75], "texture": "#0"},
+ "south": {"uv": [4.5, 4.5, 5, 6.25], "texture": "#0"},
+ "west": {"uv": [7, 6, 7.25, 7.75], "texture": "#0"},
+ "up": {"uv": [9.5, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.5, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 5.92704, 7.65654],
+ "to": [8.35966, 9.27939, 8.85255],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [7.5, 0, 7.75, 1.75], "texture": "#0"},
+ "east": {"uv": [5, 0, 5.5, 1.75], "texture": "#0"},
+ "south": {"uv": [0.5, 7.5, 0.75, 9.25], "texture": "#0"},
+ "west": {"uv": [5, 2, 5.5, 3.75], "texture": "#0"},
+ "up": {"uv": [9.25, 4.5, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.13464, 5.92704, 7.62752],
+ "to": [8.33065, 9.27939, 8.34513],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [5, 4, 5.5, 5.75], "texture": "#0"},
+ "east": {"uv": [7.5, 2, 7.75, 3.75], "texture": "#0"},
+ "south": {"uv": [5.5, 0, 6, 1.75], "texture": "#0"},
+ "west": {"uv": [7.5, 4, 7.75, 5.75], "texture": "#0"},
+ "up": {"uv": [9.5, 4.75, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [9.5, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.13463, 5.92704, 7.62753],
+ "to": [8.33064, 9.27939, 8.34513],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [5.5, 2, 6, 3.75], "texture": "#0"},
+ "east": {"uv": [5, 7.5, 5.25, 9.25], "texture": "#0"},
+ "south": {"uv": [5.5, 4, 6, 5.75], "texture": "#0"},
+ "west": {"uv": [5.5, 7.5, 5.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.5, 5.75, 9, 5.5], "texture": "#0"},
+ "down": {"uv": [6.5, 9, 6, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64206, 5.92704, 7.1201],
+ "to": [8.35967, 9.27939, 8.31611],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.00086, 8.37394, 7.98633]},
+ "faces": {
+ "north": {"uv": [7.5, 6, 7.75, 7.75], "texture": "#0"},
+ "east": {"uv": [0, 6, 0.5, 7.75], "texture": "#0"},
+ "south": {"uv": [0, 8, 0.25, 9.75], "texture": "#0"},
+ "west": {"uv": [6, 0, 6.5, 1.75], "texture": "#0"},
+ "up": {"uv": [9.25, 6.5, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.75, 9, 6.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.93604, 9.08099, 7.62752],
+ "to": [8.13205, 9.58099, 8.34512],
+ "rotation": {"angle": -22.5, "axis": "z", "origin": [7.53405, 8.68099, 7.98632]},
+ "faces": {
+ "north": {"uv": [9, 6.5, 9.5, 6.75], "texture": "#0"},
+ "east": {"uv": [1, 10, 1.25, 10.25], "texture": "#0"},
+ "south": {"uv": [7, 9, 7.5, 9.25], "texture": "#0"},
+ "west": {"uv": [10, 1, 10.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.5, 7.25, 9, 7], "texture": "#0"},
+ "down": {"uv": [8, 9, 7.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.89528, 8.36691, 7.62752],
+ "to": [8.33825, 9.56292, 8.34512],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.39528, 8.96492, 7.98632]},
+ "faces": {
+ "north": {"uv": [9, 7.5, 9.25, 8], "texture": "#0"},
+ "east": {"uv": [8, 9, 8.25, 9.5], "texture": "#0"},
+ "south": {"uv": [9, 8, 9.25, 8.5], "texture": "#0"},
+ "west": {"uv": [8.5, 9, 8.75, 9.5], "texture": "#0"},
+ "up": {"uv": [1.75, 10.25, 1.5, 10], "texture": "#0"},
+ "down": {"uv": [10.25, 1.5, 10, 1.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.86795, 9.08099, 7.62752],
+ "to": [9.06396, 9.58099, 8.34512],
+ "rotation": {"angle": 22.5, "axis": "z", "origin": [8.46595, 8.68099, 7.98632]},
+ "faces": {
+ "north": {"uv": [9, 8.5, 9.5, 8.75], "texture": "#0"},
+ "east": {"uv": [2, 10, 2.25, 10.25], "texture": "#0"},
+ "south": {"uv": [9, 9, 9.5, 9.25], "texture": "#0"},
+ "west": {"uv": [10, 2, 10.25, 2.25], "texture": "#0"},
+ "up": {"uv": [10, 0.25, 9.5, 0], "texture": "#0"},
+ "down": {"uv": [1, 9.5, 0.5, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.66175, 8.36691, 7.62752],
+ "to": [8.10472, 9.56292, 8.34512],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.60472, 8.96492, 7.98632]},
+ "faces": {
+ "north": {"uv": [9.5, 0.5, 9.75, 1], "texture": "#0"},
+ "east": {"uv": [1, 9.5, 1.25, 10], "texture": "#0"},
+ "south": {"uv": [9.5, 1, 9.75, 1.5], "texture": "#0"},
+ "west": {"uv": [1.5, 9.5, 1.75, 10], "texture": "#0"},
+ "up": {"uv": [2.75, 10.25, 2.5, 10], "texture": "#0"},
+ "down": {"uv": [10.25, 2.5, 10, 2.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 9.08099, 6.92323],
+ "to": [8.35966, 9.58099, 8.11924],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8.00086, 8.68099, 7.52123]},
+ "faces": {
+ "north": {"uv": [3, 10, 3.25, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 1.5, 10, 1.75], "texture": "#0"},
+ "south": {"uv": [10, 3, 10.25, 3.25], "texture": "#0"},
+ "west": {"uv": [2, 9.5, 2.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.75, 2.5, 9.5, 2], "texture": "#0"},
+ "down": {"uv": [2.75, 9.5, 2.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 8.36691, 7.88246],
+ "to": [8.35966, 9.56292, 8.32543],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8.00086, 8.96492, 7.38246]},
+ "faces": {
+ "north": {"uv": [9.5, 2.5, 9.75, 3], "texture": "#0"},
+ "east": {"uv": [3, 9.5, 3.25, 10], "texture": "#0"},
+ "south": {"uv": [9.5, 3, 9.75, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 9.5, 3.75, 10], "texture": "#0"},
+ "up": {"uv": [3.75, 10.25, 3.5, 10], "texture": "#0"},
+ "down": {"uv": [10.25, 3.5, 10, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 9.08099, 7.85514],
+ "to": [8.35966, 9.58099, 9.05115],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8.00086, 8.68099, 8.45314]},
+ "faces": {
+ "north": {"uv": [4, 10, 4.25, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 3.5, 10, 3.75], "texture": "#0"},
+ "south": {"uv": [10, 4, 10.25, 4.25], "texture": "#0"},
+ "west": {"uv": [4, 9.5, 4.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.75, 4.5, 9.5, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9.5, 4.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 8.85854, 7.62767],
+ "to": [8.35966, 10.05455, 8.34799],
+ "rotation": {"angle": 0, "axis": "x", "origin": [8.00086, 9.45655, 8.1265]},
+ "faces": {
+ "north": {"uv": [9.5, 4.5, 9.75, 5], "texture": "#0"},
+ "east": {"uv": [5, 9.5, 5.25, 10], "texture": "#0"},
+ "south": {"uv": [9.5, 5, 9.75, 5.5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.5, 5.75, 10], "texture": "#0"},
+ "up": {"uv": [4.75, 10.25, 4.5, 10], "texture": "#0"},
+ "down": {"uv": [10.25, 4.5, 10, 4.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64205, 8.36691, 7.64894],
+ "to": [8.35966, 9.56292, 8.09191],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8.00086, 8.96492, 8.59191]},
+ "faces": {
+ "north": {"uv": [9.5, 5.5, 9.75, 6], "texture": "#0"},
+ "east": {"uv": [6, 9.5, 6.25, 10], "texture": "#0"},
+ "south": {"uv": [9.5, 6, 9.75, 6.5], "texture": "#0"},
+ "west": {"uv": [6.5, 9.5, 6.75, 10], "texture": "#0"},
+ "up": {"uv": [5.25, 10.25, 5, 10], "texture": "#0"},
+ "down": {"uv": [10.25, 5, 10, 5.25], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "firstperson_righthand": {
+ "rotation": [-75.06, -82.18, -88.02],
+ "translation": [0, 2, 0],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-75.06, -82.18, -88.02],
+ "translation": [0, 2, 0],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "ground": {
+ "translation": [0, -0.75, 0]
+ },
+ "gui": {
+ "rotation": [45, 35, 0],
+ "translation": [-0.25, 0.25, 0],
+ "scale": [3, 3, 3]
+ },
+ "head": {
+ "translation": [0, 8.25, 0]
+ },
+ "fixed": {
+ "translation": [0, -0.25, 0],
+ "scale": [2, 2, 2]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7]
+ }
+ ]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [8, 9, 10, 11, 12, 13, 14, 15]
+ }
+ ]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [16, 17, 18, 19, 20, 21, 22, 23]
+ },
+ {
+ "name": "group",
+ "origin": [7.76365, 8.73531, 7.98633],
+ "color": 0,
+ "children": [24, 25, 26, 27]
+ },
+ {
+ "name": "group",
+ "origin": [7.76365, 8.73531, 7.98633],
+ "color": 0,
+ "children": [28, 29, 30, 31, 32]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/gungranade.json.textures b/models/gungranade.json.textures
new file mode 100644
index 000000000..9cbfdfc71
--- /dev/null
+++ b/models/gungranade.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "gungranade"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/hammer.json b/models/hammer.json
new file mode 100644
index 000000000..7ccd60133
--- /dev/null
+++ b/models/hammer.json
@@ -0,0 +1,757 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "target:hammer",
+ "particle": "target:hammer"
+ },
+ "elements": [
+ {
+ "from": [7.66052, -0.25663, 7.8683],
+ "to": [8.03246, 15.44413, 8.1317],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.70989, -0.17038, 3.78597]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.125, 7.875], "texture": "#0"},
+ "east": {"uv": [0.5, 0, 0.625, 7.875], "texture": "#0"},
+ "south": {"uv": [1, 0, 1.125, 7.875], "texture": "#0"},
+ "west": {"uv": [1.5, 0, 1.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 13.125, 14.5, 13], "texture": "#0"},
+ "down": {"uv": [13.625, 14.5, 13.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.73437, -0.25663, 8.04656],
+ "to": [8.14104, 15.44413, 8.30993],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.80019, 0.61974, 8.17826]},
+ "faces": {
+ "north": {"uv": [2, 0, 2.125, 7.875], "texture": "#0"},
+ "east": {"uv": [2.5, 0, 2.625, 7.875], "texture": "#0"},
+ "south": {"uv": [3, 0, 3.125, 7.875], "texture": "#0"},
+ "west": {"uv": [3.5, 0, 3.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 13.625, 14.5, 13.5], "texture": "#0"},
+ "down": {"uv": [14.125, 14.5, 14, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.84675, -0.25663, 7.91123],
+ "to": [8.11015, 15.44413, 8.31793],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.92389, 0.61974, 8.25208]},
+ "faces": {
+ "north": {"uv": [4, 0, 4.125, 7.875], "texture": "#0"},
+ "east": {"uv": [4.5, 0, 4.625, 7.875], "texture": "#0"},
+ "south": {"uv": [5, 0, 5.125, 7.875], "texture": "#0"},
+ "west": {"uv": [5.5, 0, 5.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 14.125, 14.5, 14], "texture": "#0"},
+ "down": {"uv": [14.625, 14.5, 14.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81586, -0.25663, 8.04656],
+ "to": [8.22254, 15.44413, 8.30993],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.15671, 0.61974, 8.17826]},
+ "faces": {
+ "north": {"uv": [6, 0, 6.125, 7.875], "texture": "#0"},
+ "east": {"uv": [6.5, 0, 6.625, 7.875], "texture": "#0"},
+ "south": {"uv": [7, 0, 7.125, 7.875], "texture": "#0"},
+ "west": {"uv": [7.5, 0, 7.625, 7.875], "texture": "#0"},
+ "up": {"uv": [15.125, 0.125, 15, 0], "texture": "#0"},
+ "down": {"uv": [15.125, 0.5, 15, 0.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81586, -0.25663, 7.69007],
+ "to": [8.22254, 15.44413, 7.95344],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.15671, 0.61974, 7.82174]},
+ "faces": {
+ "north": {"uv": [0, 8, 0.125, 15.875], "texture": "#0"},
+ "east": {"uv": [8, 0, 8.125, 7.875], "texture": "#0"},
+ "south": {"uv": [0.5, 8, 0.625, 15.875], "texture": "#0"},
+ "west": {"uv": [1, 8, 1.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 1.125, 15, 1], "texture": "#0"},
+ "down": {"uv": [15.125, 1.5, 15, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.73437, -0.25663, 7.69007],
+ "to": [8.14104, 15.44413, 7.95344],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.80019, 0.61974, 7.82174]},
+ "faces": {
+ "north": {"uv": [1.5, 8, 1.625, 15.875], "texture": "#0"},
+ "east": {"uv": [2, 8, 2.125, 15.875], "texture": "#0"},
+ "south": {"uv": [2.5, 8, 2.625, 15.875], "texture": "#0"},
+ "west": {"uv": [3, 8, 3.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 2.125, 15, 2], "texture": "#0"},
+ "down": {"uv": [15.125, 2.5, 15, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.84675, -0.25663, 7.68207],
+ "to": [8.11015, 15.44413, 8.08877],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.92389, 0.61974, 7.74792]},
+ "faces": {
+ "north": {"uv": [3.5, 8, 3.625, 15.875], "texture": "#0"},
+ "east": {"uv": [4, 8, 4.125, 15.875], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.625, 15.875], "texture": "#0"},
+ "west": {"uv": [5, 8, 5.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 3.125, 15, 3], "texture": "#0"},
+ "down": {"uv": [15.125, 3.5, 15, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.88969, -0.25663, 7.8683],
+ "to": [8.29639, 15.44413, 8.1317],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.24701, -0.17038, 3.78597]},
+ "faces": {
+ "north": {"uv": [5.5, 8, 5.625, 15.875], "texture": "#0"},
+ "east": {"uv": [6, 8, 6.125, 15.875], "texture": "#0"},
+ "south": {"uv": [6.5, 8, 6.625, 15.875], "texture": "#0"},
+ "west": {"uv": [7, 8, 7.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 4.125, 15, 4], "texture": "#0"},
+ "down": {"uv": [15.125, 4.5, 15, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64278, 14.5821, 7.86172],
+ "to": [8.03331, 16.7054, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.49462, -0.55234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.125, 7], "texture": "#0"},
+ "east": {"uv": [13.5, 10, 13.625, 10.5], "texture": "#0"},
+ "south": {"uv": [10.5, 13.5, 10.625, 14], "texture": "#0"},
+ "west": {"uv": [13.5, 10.5, 13.625, 11], "texture": "#0"},
+ "up": {"uv": [15.125, 5.125, 15, 5], "texture": "#0"},
+ "down": {"uv": [15.125, 5.5, 15, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 14.5821, 8.04889],
+ "to": [8.13358, 16.7054, 8.32543],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.78944, 0.27729, 8.18717]},
+ "faces": {
+ "north": {"uv": [13.5, 11, 13.625, 11.5], "texture": "#0"},
+ "east": {"uv": [11.5, 13.5, 11.625, 14], "texture": "#0"},
+ "south": {"uv": [13.5, 11.5, 13.625, 12], "texture": "#0"},
+ "west": {"uv": [13.5, 12, 13.625, 12.5], "texture": "#0"},
+ "up": {"uv": [15.125, 6.125, 15, 6], "texture": "#0"},
+ "down": {"uv": [15.125, 6.5, 15, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 14.5821, 7.92055],
+ "to": [8.11489, 16.7054, 8.33383],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, 0.27729, 8.26469]},
+ "faces": {
+ "north": {"uv": [13, 13.5, 13.125, 14], "texture": "#0"},
+ "east": {"uv": [13.5, 13.5, 13.625, 14], "texture": "#0"},
+ "south": {"uv": [14, 0, 14.125, 0.5], "texture": "#0"},
+ "west": {"uv": [14, 0.5, 14.125, 1], "texture": "#0"},
+ "up": {"uv": [15.125, 7.125, 15, 7], "texture": "#0"},
+ "down": {"uv": [7.625, 15, 7.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81964, 14.5821, 8.04889],
+ "to": [8.23289, 16.7054, 8.32543],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.16378, 0.27729, 8.18717]},
+ "faces": {
+ "north": {"uv": [14, 1, 14.125, 1.5], "texture": "#0"},
+ "east": {"uv": [14, 1.5, 14.125, 2], "texture": "#0"},
+ "south": {"uv": [14, 2, 14.125, 2.5], "texture": "#0"},
+ "west": {"uv": [14, 3.5, 14.125, 4], "texture": "#0"},
+ "up": {"uv": [15.125, 7.625, 15, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 15, 8, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81964, 14.5821, 7.67457],
+ "to": [8.23289, 16.7054, 7.95111],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.16378, 0.27729, 7.81283]},
+ "faces": {
+ "north": {"uv": [14, 4, 14.125, 4.5], "texture": "#0"},
+ "east": {"uv": [14, 4.5, 14.125, 5], "texture": "#0"},
+ "south": {"uv": [14, 5, 14.125, 5.5], "texture": "#0"},
+ "west": {"uv": [14, 5.5, 14.125, 6], "texture": "#0"},
+ "up": {"uv": [15.125, 8.125, 15, 8], "texture": "#0"},
+ "down": {"uv": [8.625, 15, 8.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 14.5821, 7.67457],
+ "to": [8.13358, 16.7054, 7.95111],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.78944, 0.27729, 7.81283]},
+ "faces": {
+ "north": {"uv": [14, 6, 14.125, 6.5], "texture": "#0"},
+ "east": {"uv": [14, 7.5, 14.125, 8], "texture": "#0"},
+ "south": {"uv": [14, 8, 14.125, 8.5], "texture": "#0"},
+ "west": {"uv": [8.5, 14, 8.625, 14.5], "texture": "#0"},
+ "up": {"uv": [15.125, 8.625, 15, 8.5], "texture": "#0"},
+ "down": {"uv": [9.125, 15, 9, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 14.5821, 7.66617],
+ "to": [8.11489, 16.7054, 8.07945],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, 0.27729, 7.73531]},
+ "faces": {
+ "north": {"uv": [9, 14, 9.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 9, 14.125, 9.5], "texture": "#0"},
+ "south": {"uv": [14, 9.5, 14.125, 10], "texture": "#0"},
+ "west": {"uv": [14, 10, 14.125, 10.5], "texture": "#0"},
+ "up": {"uv": [15.125, 9.125, 15, 9], "texture": "#0"},
+ "down": {"uv": [9.625, 15, 9.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.89715, 14.5821, 7.86172],
+ "to": [8.31044, 16.7054, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.45859, -0.55234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10.5, 14, 10.625, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 10.5, 14.125, 11], "texture": "#0"},
+ "south": {"uv": [11, 14, 11.125, 14.5], "texture": "#0"},
+ "west": {"uv": [14, 11, 14.125, 11.5], "texture": "#0"},
+ "up": {"uv": [15.125, 9.625, 15, 9.5], "texture": "#0"},
+ "down": {"uv": [10.125, 15, 10, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64278, 0.1321, 7.86172],
+ "to": [8.03331, 4.7304, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.49462, -16.50234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10, 3, 10.125, 5.25], "texture": "#0"},
+ "east": {"uv": [7.5, 10, 7.625, 12.25], "texture": "#0"},
+ "south": {"uv": [8, 10, 8.125, 12.25], "texture": "#0"},
+ "west": {"uv": [10, 8, 10.125, 10.25], "texture": "#0"},
+ "up": {"uv": [15.125, 10.125, 15, 10], "texture": "#0"},
+ "down": {"uv": [10.625, 15, 10.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 0.1321, 8.04889],
+ "to": [7.85858, 4.7304, 8.32543],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.78944, -15.67271, 8.18717]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 12.25], "texture": "#0"},
+ "east": {"uv": [9, 10, 9.125, 12.25], "texture": "#0"},
+ "south": {"uv": [9.5, 10, 9.625, 12.25], "texture": "#0"},
+ "west": {"uv": [10.5, 0, 10.625, 2.25], "texture": "#0"},
+ "up": {"uv": [15.125, 10.625, 15, 10.5], "texture": "#0"},
+ "down": {"uv": [11.125, 15, 11, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 0.1321, 8.19555],
+ "to": [8.11489, 4.7304, 8.33383],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, -15.67271, 8.26469]},
+ "faces": {
+ "north": {"uv": [10.5, 2.5, 10.625, 4.75], "texture": "#0"},
+ "east": {"uv": [10.5, 5, 10.625, 7.25], "texture": "#0"},
+ "south": {"uv": [10.5, 7.5, 10.625, 9.75], "texture": "#0"},
+ "west": {"uv": [10, 10.5, 10.125, 12.75], "texture": "#0"},
+ "up": {"uv": [15.125, 11.125, 15, 11], "texture": "#0"},
+ "down": {"uv": [11.625, 15, 11.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.09464, 0.1321, 8.04889],
+ "to": [8.23289, 4.7304, 8.32543],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.16378, -15.67271, 8.18717]},
+ "faces": {
+ "north": {"uv": [10.5, 10, 10.625, 12.25], "texture": "#0"},
+ "east": {"uv": [11, 0, 11.125, 2.25], "texture": "#0"},
+ "south": {"uv": [11, 2.5, 11.125, 4.75], "texture": "#0"},
+ "west": {"uv": [11, 5, 11.125, 7.25], "texture": "#0"},
+ "up": {"uv": [15.125, 11.625, 15, 11.5], "texture": "#0"},
+ "down": {"uv": [12.125, 15, 12, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.09464, 0.1321, 7.67457],
+ "to": [8.23289, 4.7304, 7.95111],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.16378, -15.67271, 7.81283]},
+ "faces": {
+ "north": {"uv": [11, 7.5, 11.125, 9.75], "texture": "#0"},
+ "east": {"uv": [11, 10, 11.125, 12.25], "texture": "#0"},
+ "south": {"uv": [11.5, 0, 11.625, 2.25], "texture": "#0"},
+ "west": {"uv": [11.5, 2.5, 11.625, 4.75], "texture": "#0"},
+ "up": {"uv": [15.125, 12.125, 15, 12], "texture": "#0"},
+ "down": {"uv": [12.625, 15, 12.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 0.1321, 7.67457],
+ "to": [7.85858, 4.7304, 7.95111],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.78944, -15.67271, 7.81283]},
+ "faces": {
+ "north": {"uv": [11.5, 5, 11.625, 7.25], "texture": "#0"},
+ "east": {"uv": [11.5, 7.5, 11.625, 9.75], "texture": "#0"},
+ "south": {"uv": [11.5, 10, 11.625, 12.25], "texture": "#0"},
+ "west": {"uv": [12, 0, 12.125, 2.25], "texture": "#0"},
+ "up": {"uv": [15.125, 12.625, 15, 12.5], "texture": "#0"},
+ "down": {"uv": [13.125, 15, 13, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 0.1321, 7.66617],
+ "to": [8.11489, 4.7304, 7.80445],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, -15.67271, 7.73531]},
+ "faces": {
+ "north": {"uv": [12, 2.5, 12.125, 4.75], "texture": "#0"},
+ "east": {"uv": [12, 5, 12.125, 7.25], "texture": "#0"},
+ "south": {"uv": [12, 7.5, 12.125, 9.75], "texture": "#0"},
+ "west": {"uv": [12, 10, 12.125, 12.25], "texture": "#0"},
+ "up": {"uv": [15.125, 13.125, 15, 13], "texture": "#0"},
+ "down": {"uv": [13.625, 15, 13.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.17215, 0.1321, 7.86172],
+ "to": [8.31044, 4.7304, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.45859, -16.50234, 3.57527]},
+ "faces": {
+ "north": {"uv": [12.5, 0, 12.625, 2.25], "texture": "#0"},
+ "east": {"uv": [12.5, 2.5, 12.625, 4.75], "texture": "#0"},
+ "south": {"uv": [12.5, 5, 12.625, 7.25], "texture": "#0"},
+ "west": {"uv": [7.5, 12.5, 7.625, 14.75], "texture": "#0"},
+ "up": {"uv": [15.125, 13.625, 15, 13.5], "texture": "#0"},
+ "down": {"uv": [14.125, 15, 14, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.25, 7.3],
+ "to": [8.7, 16.65, 8.7],
+ "faces": {
+ "north": {"uv": [7.5, 8, 8.25, 8.75], "texture": "#0"},
+ "east": {"uv": [8.5, 0, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [8.5, 1, 9.25, 1.75], "texture": "#0"},
+ "west": {"uv": [8.5, 2, 9.25, 2.75], "texture": "#0"},
+ "up": {"uv": [9.25, 3.75, 8.5, 3], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 8.5, 4.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.25, 6.05],
+ "to": [8.525, 15.425, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [11.5, 14, 12, 14.125], "texture": "#0"},
+ "east": {"uv": [12.5, 7.5, 13.125, 7.625], "texture": "#0"},
+ "south": {"uv": [14, 11.5, 14.5, 11.625], "texture": "#0"},
+ "west": {"uv": [8, 12.5, 8.625, 12.625], "texture": "#0"},
+ "up": {"uv": [9, 5.625, 8.5, 5], "texture": "#0"},
+ "down": {"uv": [9, 6, 8.5, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.425, 5.975],
+ "to": [8.525, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [10, 0, 10.5, 0.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7, 9.125, 7.5], "texture": "#0"},
+ "south": {"uv": [10, 0.5, 10.5, 1], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 9.125, 8], "texture": "#0"},
+ "up": {"uv": [9, 8.625, 8.5, 8], "texture": "#0"},
+ "down": {"uv": [9.5, 5, 9, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.27764, 5.80437],
+ "to": [8.525, 16.46514, 5.97937],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 15.94014, 6.39187]},
+ "faces": {
+ "north": {"uv": [12, 14, 12.5, 14.125], "texture": "#0"},
+ "east": {"uv": [15, 14, 15.125, 14.125], "texture": "#0"},
+ "south": {"uv": [14, 12, 14.5, 12.125], "texture": "#0"},
+ "west": {"uv": [14.5, 15, 14.625, 15.125], "texture": "#0"},
+ "up": {"uv": [13, 14.125, 12.5, 14], "texture": "#0"},
+ "down": {"uv": [14.5, 12.5, 14, 12.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.28019, 15.425, 6.16789],
+ "to": [8.46769, 16.475, 6.35539],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [8.88019, 15.95, 6.69289]},
+ "faces": {
+ "north": {"uv": [13, 14, 13.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 13, 14.125, 13.5], "texture": "#0"},
+ "south": {"uv": [13.5, 14, 13.625, 14.5], "texture": "#0"},
+ "west": {"uv": [14, 13.5, 14.125, 14], "texture": "#0"},
+ "up": {"uv": [15.125, 14.625, 15, 14.5], "texture": "#0"},
+ "down": {"uv": [15.125, 15, 15, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83792, 15.425, 5.70431],
+ "to": [8.02542, 16.475, 5.89181],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [8.43792, 15.95, 7.22931]},
+ "faces": {
+ "north": {"uv": [14, 14, 14.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14.5, 0, 14.625, 0.5], "texture": "#0"},
+ "south": {"uv": [14.5, 0.5, 14.625, 1], "texture": "#0"},
+ "west": {"uv": [14.5, 1, 14.625, 1.5], "texture": "#0"},
+ "up": {"uv": [15.625, 0.125, 15.5, 0], "texture": "#0"},
+ "down": {"uv": [15.625, 0.5, 15.5, 0.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.50229, 6.13119],
+ "to": [8.525, 15.68979, 6.30619],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15.16479, 6.71869]},
+ "faces": {
+ "north": {"uv": [14.5, 1.5, 15, 1.625], "texture": "#0"},
+ "east": {"uv": [15.5, 1, 15.625, 1.125], "texture": "#0"},
+ "south": {"uv": [14.5, 2, 15, 2.125], "texture": "#0"},
+ "west": {"uv": [15.5, 1.5, 15.625, 1.625], "texture": "#0"},
+ "up": {"uv": [15, 2.625, 14.5, 2.5], "texture": "#0"},
+ "down": {"uv": [15, 3, 14.5, 3.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.475, 6.05],
+ "to": [8.525, 16.65, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 3.5, 15, 3.625], "texture": "#0"},
+ "east": {"uv": [12.5, 8, 13.125, 8.125], "texture": "#0"},
+ "south": {"uv": [14.5, 4, 15, 4.125], "texture": "#0"},
+ "west": {"uv": [12.5, 8.5, 13.125, 8.625], "texture": "#0"},
+ "up": {"uv": [9.5, 6.625, 9, 6], "texture": "#0"},
+ "down": {"uv": [8, 9, 7.5, 9.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.425, 6.05],
+ "to": [7.475, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 4.5, 14.625, 5], "texture": "#0"},
+ "east": {"uv": [8, 9, 8.625, 9.5], "texture": "#0"},
+ "south": {"uv": [14.5, 5, 14.625, 5.5], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.625, 8.5], "texture": "#0"},
+ "up": {"uv": [10.125, 6.125, 10, 5.5], "texture": "#0"},
+ "down": {"uv": [9.125, 12.5, 9, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.525, 15.425, 6.05],
+ "to": [8.7, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 5.5, 14.625, 6], "texture": "#0"},
+ "east": {"uv": [9, 8.5, 9.625, 9], "texture": "#0"},
+ "south": {"uv": [14.5, 6, 14.625, 6.5], "texture": "#0"},
+ "west": {"uv": [9, 9, 9.625, 9.5], "texture": "#0"},
+ "up": {"uv": [12.625, 9.625, 12.5, 9], "texture": "#0"},
+ "down": {"uv": [9.625, 12.5, 9.5, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44064, 16.1294, 6.05],
+ "to": [7.69064, 16.3044, 7.3],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.16564, 16.2169, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 2, 15.625, 2.125], "texture": "#0"},
+ "east": {"uv": [12.5, 10, 13.125, 10.125], "texture": "#0"},
+ "south": {"uv": [15.5, 2.5, 15.625, 2.625], "texture": "#0"},
+ "west": {"uv": [10.5, 12.5, 11.125, 12.625], "texture": "#0"},
+ "up": {"uv": [12.625, 11.125, 12.5, 10.5], "texture": "#0"},
+ "down": {"uv": [11.625, 12.5, 11.5, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30936, 16.1294, 6.05],
+ "to": [8.55936, 16.3044, 7.3],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.83436, 16.2169, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 3, 15.625, 3.125], "texture": "#0"},
+ "east": {"uv": [12.5, 11.5, 13.125, 11.625], "texture": "#0"},
+ "south": {"uv": [15.5, 3.5, 15.625, 3.625], "texture": "#0"},
+ "west": {"uv": [12, 12.5, 12.625, 12.625], "texture": "#0"},
+ "up": {"uv": [13.125, 0.625, 13, 0], "texture": "#0"},
+ "down": {"uv": [13.125, 1, 13, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30758, 15.59383, 6.05],
+ "to": [8.55758, 15.76883, 7.3],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.83258, 15.68133, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 4, 15.625, 4.125], "texture": "#0"},
+ "east": {"uv": [12.5, 12, 13.125, 12.125], "texture": "#0"},
+ "south": {"uv": [15.5, 4.5, 15.625, 4.625], "texture": "#0"},
+ "west": {"uv": [13, 2, 13.625, 2.125], "texture": "#0"},
+ "up": {"uv": [13.125, 3.125, 13, 2.5], "texture": "#0"},
+ "down": {"uv": [13.125, 3.5, 13, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44242, 15.59383, 6.05],
+ "to": [7.69242, 15.76883, 7.3],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.16742, 15.68133, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 5, 15.625, 5.125], "texture": "#0"},
+ "east": {"uv": [13, 4.5, 13.625, 4.625], "texture": "#0"},
+ "south": {"uv": [15.5, 5.5, 15.625, 5.625], "texture": "#0"},
+ "west": {"uv": [13, 5, 13.625, 5.125], "texture": "#0"},
+ "up": {"uv": [13.125, 6.125, 13, 5.5], "texture": "#0"},
+ "down": {"uv": [13.125, 6.5, 13, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.25, 8.7],
+ "to": [8.525, 15.425, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 6.5, 15, 6.625], "texture": "#0"},
+ "east": {"uv": [8, 13, 8.625, 13.125], "texture": "#0"},
+ "south": {"uv": [14.5, 7, 15, 7.125], "texture": "#0"},
+ "west": {"uv": [13, 9, 13.625, 9.125], "texture": "#0"},
+ "up": {"uv": [10, 0.625, 9.5, 0], "texture": "#0"},
+ "down": {"uv": [10, 1, 9.5, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.425, 8.7],
+ "to": [8.525, 16.475, 10.025],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [10, 1, 10.5, 1.5], "texture": "#0"},
+ "east": {"uv": [9.5, 2, 10.125, 2.5], "texture": "#0"},
+ "south": {"uv": [10, 1.5, 10.5, 2], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.125, 3], "texture": "#0"},
+ "up": {"uv": [10, 3.625, 9.5, 3], "texture": "#0"},
+ "down": {"uv": [10, 4, 9.5, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.27764, 10.02063],
+ "to": [8.525, 16.46514, 10.19563],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15.94014, 9.60813]},
+ "faces": {
+ "north": {"uv": [14.5, 7.5, 15, 7.625], "texture": "#0"},
+ "east": {"uv": [15.5, 6, 15.625, 6.125], "texture": "#0"},
+ "south": {"uv": [8, 14.5, 8.5, 14.625], "texture": "#0"},
+ "west": {"uv": [15.5, 6.5, 15.625, 6.625], "texture": "#0"},
+ "up": {"uv": [15, 8.125, 14.5, 8], "texture": "#0"},
+ "down": {"uv": [9, 14.5, 8.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.28019, 15.425, 9.64461],
+ "to": [8.46769, 16.475, 9.83211],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [8.88019, 15.95, 9.30711]},
+ "faces": {
+ "north": {"uv": [14.5, 8.5, 14.625, 9], "texture": "#0"},
+ "east": {"uv": [9, 14.5, 9.125, 15], "texture": "#0"},
+ "south": {"uv": [14.5, 9, 14.625, 9.5], "texture": "#0"},
+ "west": {"uv": [9.5, 14.5, 9.625, 15], "texture": "#0"},
+ "up": {"uv": [15.625, 7.125, 15.5, 7], "texture": "#0"},
+ "down": {"uv": [7.625, 15.5, 7.5, 15.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83792, 15.425, 10.10819],
+ "to": [8.02542, 16.475, 10.29569],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [8.43792, 15.95, 8.77069]},
+ "faces": {
+ "north": {"uv": [14.5, 9.5, 14.625, 10], "texture": "#0"},
+ "east": {"uv": [10, 14.5, 10.125, 15], "texture": "#0"},
+ "south": {"uv": [14.5, 10, 14.625, 10.5], "texture": "#0"},
+ "west": {"uv": [10.5, 14.5, 10.625, 15], "texture": "#0"},
+ "up": {"uv": [15.625, 7.625, 15.5, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 15.5, 8, 15.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.50229, 9.69381],
+ "to": [8.525, 15.68979, 9.86881],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 15.16479, 9.28131]},
+ "faces": {
+ "north": {"uv": [14.5, 10.5, 15, 10.625], "texture": "#0"},
+ "east": {"uv": [15.5, 8, 15.625, 8.125], "texture": "#0"},
+ "south": {"uv": [11, 14.5, 11.5, 14.625], "texture": "#0"},
+ "west": {"uv": [8.5, 15.5, 8.625, 15.625], "texture": "#0"},
+ "up": {"uv": [15, 11.125, 14.5, 11], "texture": "#0"},
+ "down": {"uv": [12, 14.5, 11.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.475, 8.7],
+ "to": [8.525, 16.65, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 11.5, 15, 11.625], "texture": "#0"},
+ "east": {"uv": [13, 9.5, 13.625, 9.625], "texture": "#0"},
+ "south": {"uv": [12, 14.5, 12.5, 14.625], "texture": "#0"},
+ "west": {"uv": [10, 13, 10.625, 13.125], "texture": "#0"},
+ "up": {"uv": [10, 5.625, 9.5, 5], "texture": "#0"},
+ "down": {"uv": [10, 6, 9.5, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.425, 8.7],
+ "to": [7.475, 16.475, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 12, 14.625, 12.5], "texture": "#0"},
+ "east": {"uv": [9.5, 7, 10.125, 7.5], "texture": "#0"},
+ "south": {"uv": [12.5, 14.5, 12.625, 15], "texture": "#0"},
+ "west": {"uv": [9.5, 7.5, 10.125, 8], "texture": "#0"},
+ "up": {"uv": [13.125, 11.125, 13, 10.5], "texture": "#0"},
+ "down": {"uv": [11.125, 13, 11, 13.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.525, 15.425, 8.7],
+ "to": [8.7, 16.475, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 12.5, 14.625, 13], "texture": "#0"},
+ "east": {"uv": [8, 9.5, 8.625, 10], "texture": "#0"},
+ "south": {"uv": [13, 14.5, 13.125, 15], "texture": "#0"},
+ "west": {"uv": [9, 9.5, 9.625, 10], "texture": "#0"},
+ "up": {"uv": [12.125, 13.625, 12, 13], "texture": "#0"},
+ "down": {"uv": [12.625, 13, 12.5, 13.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44064, 16.1294, 8.7],
+ "to": [7.69064, 16.3044, 9.95],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.16564, 16.2169, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 8.5, 15.625, 8.625], "texture": "#0"},
+ "east": {"uv": [13, 12.5, 13.625, 12.625], "texture": "#0"},
+ "south": {"uv": [9, 15.5, 9.125, 15.625], "texture": "#0"},
+ "west": {"uv": [13, 13, 13.625, 13.125], "texture": "#0"},
+ "up": {"uv": [13.625, 0.625, 13.5, 0], "texture": "#0"},
+ "down": {"uv": [13.625, 1, 13.5, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30936, 16.1294, 8.7],
+ "to": [8.55936, 16.3044, 9.95],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.83436, 16.2169, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 9, 15.625, 9.125], "texture": "#0"},
+ "east": {"uv": [13.5, 2.5, 14.125, 2.625], "texture": "#0"},
+ "south": {"uv": [9.5, 15.5, 9.625, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 3, 14.125, 3.125], "texture": "#0"},
+ "up": {"uv": [13.625, 4.125, 13.5, 3.5], "texture": "#0"},
+ "down": {"uv": [13.625, 5.5, 13.5, 6.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30758, 15.59383, 8.7],
+ "to": [8.55758, 15.76883, 9.95],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.83258, 15.68133, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 9.5, 15.625, 9.625], "texture": "#0"},
+ "east": {"uv": [13.5, 6.5, 14.125, 6.625], "texture": "#0"},
+ "south": {"uv": [10, 15.5, 10.125, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 7, 14.125, 7.125], "texture": "#0"},
+ "up": {"uv": [13.625, 8.125, 13.5, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 13.5, 8, 14.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44242, 15.59383, 8.7],
+ "to": [7.69242, 15.76883, 9.95],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.16742, 15.68133, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 10, 15.625, 10.125], "texture": "#0"},
+ "east": {"uv": [8.5, 13.5, 9.125, 13.625], "texture": "#0"},
+ "south": {"uv": [10.5, 15.5, 10.625, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 8.5, 14.125, 8.625], "texture": "#0"},
+ "up": {"uv": [9.625, 14.125, 9.5, 13.5], "texture": "#0"},
+ "down": {"uv": [10.125, 13.5, 10, 14.125], "texture": "#0"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 4.25, 1.25],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "thirdperson_lefthand": {
+ "translation": [0, 4.25, 1.25],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [4.96, -17.47, -53.84],
+ "translation": [-8.75, 2, 3.25]
+ },
+ "firstperson_lefthand": {
+ "rotation": [170.76, 11.48, -117.47],
+ "translation": [-9.5, 2.5, 4.5]
+ },
+ "ground": {
+ "rotation": [180, 0, 0],
+ "translation": [0, 8.75, 0],
+ "scale": [1.2, 1.2, 1.2]
+ },
+ "gui": {
+ "rotation": [-90, 135, 90],
+ "translation": [-0.75, -0.75, -0.25],
+ "scale": [1.1, 1.1, 1.1]
+ },
+ "head": {
+ "rotation": [61.5, 0, 0],
+ "translation": [0, 1, -19],
+ "scale": [2.5, 2.5, 2.5]
+ },
+ "fixed": {
+ "rotation": [90, 0, 90],
+ "translation": [1.5, 0, -0.25],
+ "scale": [3, 3, 3]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [8, 9, 10, 11, 12, 13, 14, 15]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [16, 17, 18, 19, 20, 21, 22, 23]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [
+ 24,
+ {
+ "name": "group",
+ "origin": [0, 0, 0],
+ "color": 8,
+ "children": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]
+ },
+ {
+ "name": "group",
+ "origin": [0, 0, 0],
+ "color": 8,
+ "children": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/hammer.json.textures b/models/hammer.json.textures
new file mode 100644
index 000000000..039bb493a
--- /dev/null
+++ b/models/hammer.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "hammer"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/hammer2.json b/models/hammer2.json
new file mode 100644
index 000000000..81d57085c
--- /dev/null
+++ b/models/hammer2.json
@@ -0,0 +1,757 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "target:hammer",
+ "particle": "target:hammer"
+ },
+ "elements": [
+ {
+ "from": [7.66052, -0.25663, 7.8683],
+ "to": [8.03246, 15.44413, 8.1317],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.70989, -0.17038, 3.78597]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.125, 7.875], "texture": "#0"},
+ "east": {"uv": [0.5, 0, 0.625, 7.875], "texture": "#0"},
+ "south": {"uv": [1, 0, 1.125, 7.875], "texture": "#0"},
+ "west": {"uv": [1.5, 0, 1.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 13.125, 14.5, 13], "texture": "#0"},
+ "down": {"uv": [13.625, 14.5, 13.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.73437, -0.25663, 8.04656],
+ "to": [8.14104, 15.44413, 8.30993],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.80019, 0.61974, 8.17826]},
+ "faces": {
+ "north": {"uv": [2, 0, 2.125, 7.875], "texture": "#0"},
+ "east": {"uv": [2.5, 0, 2.625, 7.875], "texture": "#0"},
+ "south": {"uv": [3, 0, 3.125, 7.875], "texture": "#0"},
+ "west": {"uv": [3.5, 0, 3.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 13.625, 14.5, 13.5], "texture": "#0"},
+ "down": {"uv": [14.125, 14.5, 14, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.84675, -0.25663, 7.91123],
+ "to": [8.11015, 15.44413, 8.31793],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.92389, 0.61974, 8.25208]},
+ "faces": {
+ "north": {"uv": [4, 0, 4.125, 7.875], "texture": "#0"},
+ "east": {"uv": [4.5, 0, 4.625, 7.875], "texture": "#0"},
+ "south": {"uv": [5, 0, 5.125, 7.875], "texture": "#0"},
+ "west": {"uv": [5.5, 0, 5.625, 7.875], "texture": "#0"},
+ "up": {"uv": [14.625, 14.125, 14.5, 14], "texture": "#0"},
+ "down": {"uv": [14.625, 14.5, 14.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81586, -0.25663, 8.04656],
+ "to": [8.22254, 15.44413, 8.30993],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.15671, 0.61974, 8.17826]},
+ "faces": {
+ "north": {"uv": [6, 0, 6.125, 7.875], "texture": "#0"},
+ "east": {"uv": [6.5, 0, 6.625, 7.875], "texture": "#0"},
+ "south": {"uv": [7, 0, 7.125, 7.875], "texture": "#0"},
+ "west": {"uv": [7.5, 0, 7.625, 7.875], "texture": "#0"},
+ "up": {"uv": [15.125, 0.125, 15, 0], "texture": "#0"},
+ "down": {"uv": [15.125, 0.5, 15, 0.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81586, -0.25663, 7.69007],
+ "to": [8.22254, 15.44413, 7.95344],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.15671, 0.61974, 7.82174]},
+ "faces": {
+ "north": {"uv": [0, 8, 0.125, 15.875], "texture": "#0"},
+ "east": {"uv": [8, 0, 8.125, 7.875], "texture": "#0"},
+ "south": {"uv": [0.5, 8, 0.625, 15.875], "texture": "#0"},
+ "west": {"uv": [1, 8, 1.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 1.125, 15, 1], "texture": "#0"},
+ "down": {"uv": [15.125, 1.5, 15, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.73437, -0.25663, 7.69007],
+ "to": [8.14104, 15.44413, 7.95344],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.80019, 0.61974, 7.82174]},
+ "faces": {
+ "north": {"uv": [1.5, 8, 1.625, 15.875], "texture": "#0"},
+ "east": {"uv": [2, 8, 2.125, 15.875], "texture": "#0"},
+ "south": {"uv": [2.5, 8, 2.625, 15.875], "texture": "#0"},
+ "west": {"uv": [3, 8, 3.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 2.125, 15, 2], "texture": "#0"},
+ "down": {"uv": [15.125, 2.5, 15, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.84675, -0.25663, 7.68207],
+ "to": [8.11015, 15.44413, 8.08877],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.92389, 0.61974, 7.74792]},
+ "faces": {
+ "north": {"uv": [3.5, 8, 3.625, 15.875], "texture": "#0"},
+ "east": {"uv": [4, 8, 4.125, 15.875], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.625, 15.875], "texture": "#0"},
+ "west": {"uv": [5, 8, 5.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 3.125, 15, 3], "texture": "#0"},
+ "down": {"uv": [15.125, 3.5, 15, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.88969, -0.25663, 7.8683],
+ "to": [8.29639, 15.44413, 8.1317],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.24701, -0.17038, 3.78597]},
+ "faces": {
+ "north": {"uv": [5.5, 8, 5.625, 15.875], "texture": "#0"},
+ "east": {"uv": [6, 8, 6.125, 15.875], "texture": "#0"},
+ "south": {"uv": [6.5, 8, 6.625, 15.875], "texture": "#0"},
+ "west": {"uv": [7, 8, 7.125, 15.875], "texture": "#0"},
+ "up": {"uv": [15.125, 4.125, 15, 4], "texture": "#0"},
+ "down": {"uv": [15.125, 4.5, 15, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64278, 14.5821, 7.86172],
+ "to": [8.03331, 16.7054, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.49462, -0.55234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.125, 7], "texture": "#0"},
+ "east": {"uv": [13.5, 10, 13.625, 10.5], "texture": "#0"},
+ "south": {"uv": [10.5, 13.5, 10.625, 14], "texture": "#0"},
+ "west": {"uv": [13.5, 10.5, 13.625, 11], "texture": "#0"},
+ "up": {"uv": [15.125, 5.125, 15, 5], "texture": "#0"},
+ "down": {"uv": [15.125, 5.5, 15, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 14.5821, 8.04889],
+ "to": [8.13358, 16.7054, 8.32543],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.78944, 0.27729, 8.18717]},
+ "faces": {
+ "north": {"uv": [13.5, 11, 13.625, 11.5], "texture": "#0"},
+ "east": {"uv": [11.5, 13.5, 11.625, 14], "texture": "#0"},
+ "south": {"uv": [13.5, 11.5, 13.625, 12], "texture": "#0"},
+ "west": {"uv": [13.5, 12, 13.625, 12.5], "texture": "#0"},
+ "up": {"uv": [15.125, 6.125, 15, 6], "texture": "#0"},
+ "down": {"uv": [15.125, 6.5, 15, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 14.5821, 7.92055],
+ "to": [8.11489, 16.7054, 8.33383],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, 0.27729, 8.26469]},
+ "faces": {
+ "north": {"uv": [13, 13.5, 13.125, 14], "texture": "#0"},
+ "east": {"uv": [13.5, 13.5, 13.625, 14], "texture": "#0"},
+ "south": {"uv": [14, 0, 14.125, 0.5], "texture": "#0"},
+ "west": {"uv": [14, 0.5, 14.125, 1], "texture": "#0"},
+ "up": {"uv": [15.125, 7.125, 15, 7], "texture": "#0"},
+ "down": {"uv": [7.625, 15, 7.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81964, 14.5821, 8.04889],
+ "to": [8.23289, 16.7054, 8.32543],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.16378, 0.27729, 8.18717]},
+ "faces": {
+ "north": {"uv": [14, 1, 14.125, 1.5], "texture": "#0"},
+ "east": {"uv": [14, 1.5, 14.125, 2], "texture": "#0"},
+ "south": {"uv": [14, 2, 14.125, 2.5], "texture": "#0"},
+ "west": {"uv": [14, 3.5, 14.125, 4], "texture": "#0"},
+ "up": {"uv": [15.125, 7.625, 15, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 15, 8, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.81964, 14.5821, 7.67457],
+ "to": [8.23289, 16.7054, 7.95111],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.16378, 0.27729, 7.81283]},
+ "faces": {
+ "north": {"uv": [14, 4, 14.125, 4.5], "texture": "#0"},
+ "east": {"uv": [14, 4.5, 14.125, 5], "texture": "#0"},
+ "south": {"uv": [14, 5, 14.125, 5.5], "texture": "#0"},
+ "west": {"uv": [14, 5.5, 14.125, 6], "texture": "#0"},
+ "up": {"uv": [15.125, 8.125, 15, 8], "texture": "#0"},
+ "down": {"uv": [8.625, 15, 8.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 14.5821, 7.67457],
+ "to": [8.13358, 16.7054, 7.95111],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.78944, 0.27729, 7.81283]},
+ "faces": {
+ "north": {"uv": [14, 6, 14.125, 6.5], "texture": "#0"},
+ "east": {"uv": [14, 7.5, 14.125, 8], "texture": "#0"},
+ "south": {"uv": [14, 8, 14.125, 8.5], "texture": "#0"},
+ "west": {"uv": [8.5, 14, 8.625, 14.5], "texture": "#0"},
+ "up": {"uv": [15.125, 8.625, 15, 8.5], "texture": "#0"},
+ "down": {"uv": [9.125, 15, 9, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 14.5821, 7.66617],
+ "to": [8.11489, 16.7054, 8.07945],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, 0.27729, 7.73531]},
+ "faces": {
+ "north": {"uv": [9, 14, 9.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 9, 14.125, 9.5], "texture": "#0"},
+ "south": {"uv": [14, 9.5, 14.125, 10], "texture": "#0"},
+ "west": {"uv": [14, 10, 14.125, 10.5], "texture": "#0"},
+ "up": {"uv": [15.125, 9.125, 15, 9], "texture": "#0"},
+ "down": {"uv": [9.625, 15, 9.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.89715, 14.5821, 7.86172],
+ "to": [8.31044, 16.7054, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.45859, -0.55234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10.5, 14, 10.625, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 10.5, 14.125, 11], "texture": "#0"},
+ "south": {"uv": [11, 14, 11.125, 14.5], "texture": "#0"},
+ "west": {"uv": [14, 11, 14.125, 11.5], "texture": "#0"},
+ "up": {"uv": [15.125, 9.625, 15, 9.5], "texture": "#0"},
+ "down": {"uv": [10.125, 15, 10, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.64278, 0.1321, 7.86172],
+ "to": [8.03331, 4.7304, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [3.49462, -16.50234, 3.57527]},
+ "faces": {
+ "north": {"uv": [10, 3, 10.125, 5.25], "texture": "#0"},
+ "east": {"uv": [7.5, 10, 7.625, 12.25], "texture": "#0"},
+ "south": {"uv": [8, 10, 8.125, 12.25], "texture": "#0"},
+ "west": {"uv": [10, 8, 10.125, 10.25], "texture": "#0"},
+ "up": {"uv": [15.125, 10.125, 15, 10], "texture": "#0"},
+ "down": {"uv": [10.625, 15, 10.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 0.1321, 8.04889],
+ "to": [7.85858, 4.7304, 8.32543],
+ "rotation": {"angle": 45, "axis": "y", "origin": [7.78944, -15.67271, 8.18717]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 12.25], "texture": "#0"},
+ "east": {"uv": [9, 10, 9.125, 12.25], "texture": "#0"},
+ "south": {"uv": [9.5, 10, 9.625, 12.25], "texture": "#0"},
+ "west": {"uv": [10.5, 0, 10.625, 2.25], "texture": "#0"},
+ "up": {"uv": [15.125, 10.625, 15, 10.5], "texture": "#0"},
+ "down": {"uv": [11.125, 15, 11, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 0.1321, 8.19555],
+ "to": [8.11489, 4.7304, 8.33383],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, -15.67271, 8.26469]},
+ "faces": {
+ "north": {"uv": [10.5, 2.5, 10.625, 4.75], "texture": "#0"},
+ "east": {"uv": [10.5, 5, 10.625, 7.25], "texture": "#0"},
+ "south": {"uv": [10.5, 7.5, 10.625, 9.75], "texture": "#0"},
+ "west": {"uv": [10, 10.5, 10.125, 12.75], "texture": "#0"},
+ "up": {"uv": [15.125, 11.125, 15, 11], "texture": "#0"},
+ "down": {"uv": [11.625, 15, 11.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.09464, 0.1321, 8.04889],
+ "to": [8.23289, 4.7304, 8.32543],
+ "rotation": {"angle": -45, "axis": "y", "origin": [8.16378, -15.67271, 8.18717]},
+ "faces": {
+ "north": {"uv": [10.5, 10, 10.625, 12.25], "texture": "#0"},
+ "east": {"uv": [11, 0, 11.125, 2.25], "texture": "#0"},
+ "south": {"uv": [11, 2.5, 11.125, 4.75], "texture": "#0"},
+ "west": {"uv": [11, 5, 11.125, 7.25], "texture": "#0"},
+ "up": {"uv": [15.125, 11.625, 15, 11.5], "texture": "#0"},
+ "down": {"uv": [12.125, 15, 12, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.09464, 0.1321, 7.67457],
+ "to": [8.23289, 4.7304, 7.95111],
+ "rotation": {"angle": 45, "axis": "y", "origin": [8.16378, -15.67271, 7.81283]},
+ "faces": {
+ "north": {"uv": [11, 7.5, 11.125, 9.75], "texture": "#0"},
+ "east": {"uv": [11, 10, 11.125, 12.25], "texture": "#0"},
+ "south": {"uv": [11.5, 0, 11.625, 2.25], "texture": "#0"},
+ "west": {"uv": [11.5, 2.5, 11.625, 4.75], "texture": "#0"},
+ "up": {"uv": [15.125, 12.125, 15, 12], "texture": "#0"},
+ "down": {"uv": [12.625, 15, 12.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.72032, 0.1321, 7.67457],
+ "to": [7.85858, 4.7304, 7.95111],
+ "rotation": {"angle": -45, "axis": "y", "origin": [7.78944, -15.67271, 7.81283]},
+ "faces": {
+ "north": {"uv": [11.5, 5, 11.625, 7.25], "texture": "#0"},
+ "east": {"uv": [11.5, 7.5, 11.625, 9.75], "texture": "#0"},
+ "south": {"uv": [11.5, 10, 11.625, 12.25], "texture": "#0"},
+ "west": {"uv": [12, 0, 12.125, 2.25], "texture": "#0"},
+ "up": {"uv": [15.125, 12.625, 15, 12.5], "texture": "#0"},
+ "down": {"uv": [13.125, 15, 13, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83832, 0.1321, 7.66617],
+ "to": [8.11489, 4.7304, 7.80445],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.91932, -15.67271, 7.73531]},
+ "faces": {
+ "north": {"uv": [12, 2.5, 12.125, 4.75], "texture": "#0"},
+ "east": {"uv": [12, 5, 12.125, 7.25], "texture": "#0"},
+ "south": {"uv": [12, 7.5, 12.125, 9.75], "texture": "#0"},
+ "west": {"uv": [12, 10, 12.125, 12.25], "texture": "#0"},
+ "up": {"uv": [15.125, 13.125, 15, 13], "texture": "#0"},
+ "down": {"uv": [13.625, 15, 13.5, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.17215, 0.1321, 7.86172],
+ "to": [8.31044, 4.7304, 8.13828],
+ "rotation": {"angle": 0, "axis": "y", "origin": [12.45859, -16.50234, 3.57527]},
+ "faces": {
+ "north": {"uv": [12.5, 0, 12.625, 2.25], "texture": "#0"},
+ "east": {"uv": [12.5, 2.5, 12.625, 4.75], "texture": "#0"},
+ "south": {"uv": [12.5, 5, 12.625, 7.25], "texture": "#0"},
+ "west": {"uv": [7.5, 12.5, 7.625, 14.75], "texture": "#0"},
+ "up": {"uv": [15.125, 13.625, 15, 13.5], "texture": "#0"},
+ "down": {"uv": [14.125, 15, 14, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.25, 7.3],
+ "to": [8.7, 16.65, 8.7],
+ "faces": {
+ "north": {"uv": [7.5, 8, 8.25, 8.75], "texture": "#0"},
+ "east": {"uv": [8.5, 0, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [8.5, 1, 9.25, 1.75], "texture": "#0"},
+ "west": {"uv": [8.5, 2, 9.25, 2.75], "texture": "#0"},
+ "up": {"uv": [9.25, 3.75, 8.5, 3], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 8.5, 4.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.25, 6.05],
+ "to": [8.525, 15.425, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [11.5, 14, 12, 14.125], "texture": "#0"},
+ "east": {"uv": [12.5, 7.5, 13.125, 7.625], "texture": "#0"},
+ "south": {"uv": [14, 11.5, 14.5, 11.625], "texture": "#0"},
+ "west": {"uv": [8, 12.5, 8.625, 12.625], "texture": "#0"},
+ "up": {"uv": [9, 5.625, 8.5, 5], "texture": "#0"},
+ "down": {"uv": [9, 6, 8.5, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.425, 5.975],
+ "to": [8.525, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [10, 0, 10.5, 0.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7, 9.125, 7.5], "texture": "#0"},
+ "south": {"uv": [10, 0.5, 10.5, 1], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 9.125, 8], "texture": "#0"},
+ "up": {"uv": [9, 8.625, 8.5, 8], "texture": "#0"},
+ "down": {"uv": [9.5, 5, 9, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.27764, 5.80437],
+ "to": [8.525, 16.46514, 5.97937],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 15.94014, 6.39187]},
+ "faces": {
+ "north": {"uv": [12, 14, 12.5, 14.125], "texture": "#0"},
+ "east": {"uv": [15, 14, 15.125, 14.125], "texture": "#0"},
+ "south": {"uv": [14, 12, 14.5, 12.125], "texture": "#0"},
+ "west": {"uv": [14.5, 15, 14.625, 15.125], "texture": "#0"},
+ "up": {"uv": [13, 14.125, 12.5, 14], "texture": "#0"},
+ "down": {"uv": [14.5, 12.5, 14, 12.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.28019, 15.425, 6.16789],
+ "to": [8.46769, 16.475, 6.35539],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [8.88019, 15.95, 6.69289]},
+ "faces": {
+ "north": {"uv": [13, 14, 13.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14, 13, 14.125, 13.5], "texture": "#0"},
+ "south": {"uv": [13.5, 14, 13.625, 14.5], "texture": "#0"},
+ "west": {"uv": [14, 13.5, 14.125, 14], "texture": "#0"},
+ "up": {"uv": [15.125, 14.625, 15, 14.5], "texture": "#0"},
+ "down": {"uv": [15.125, 15, 15, 15.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83792, 15.425, 5.70431],
+ "to": [8.02542, 16.475, 5.89181],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [8.43792, 15.95, 7.22931]},
+ "faces": {
+ "north": {"uv": [14, 14, 14.125, 14.5], "texture": "#0"},
+ "east": {"uv": [14.5, 0, 14.625, 0.5], "texture": "#0"},
+ "south": {"uv": [14.5, 0.5, 14.625, 1], "texture": "#0"},
+ "west": {"uv": [14.5, 1, 14.625, 1.5], "texture": "#0"},
+ "up": {"uv": [15.625, 0.125, 15.5, 0], "texture": "#0"},
+ "down": {"uv": [15.625, 0.5, 15.5, 0.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.50229, 6.13119],
+ "to": [8.525, 15.68979, 6.30619],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15.16479, 6.71869]},
+ "faces": {
+ "north": {"uv": [14.5, 1.5, 15, 1.625], "texture": "#0"},
+ "east": {"uv": [15.5, 1, 15.625, 1.125], "texture": "#0"},
+ "south": {"uv": [14.5, 2, 15, 2.125], "texture": "#0"},
+ "west": {"uv": [15.5, 1.5, 15.625, 1.625], "texture": "#0"},
+ "up": {"uv": [15, 2.625, 14.5, 2.5], "texture": "#0"},
+ "down": {"uv": [15, 3, 14.5, 3.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.475, 6.05],
+ "to": [8.525, 16.65, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 3.5, 15, 3.625], "texture": "#0"},
+ "east": {"uv": [12.5, 8, 13.125, 8.125], "texture": "#0"},
+ "south": {"uv": [14.5, 4, 15, 4.125], "texture": "#0"},
+ "west": {"uv": [12.5, 8.5, 13.125, 8.625], "texture": "#0"},
+ "up": {"uv": [9.5, 6.625, 9, 6], "texture": "#0"},
+ "down": {"uv": [8, 9, 7.5, 9.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.425, 6.05],
+ "to": [7.475, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 4.5, 14.625, 5], "texture": "#0"},
+ "east": {"uv": [8, 9, 8.625, 9.5], "texture": "#0"},
+ "south": {"uv": [14.5, 5, 14.625, 5.5], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.625, 8.5], "texture": "#0"},
+ "up": {"uv": [10.125, 6.125, 10, 5.5], "texture": "#0"},
+ "down": {"uv": [9.125, 12.5, 9, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.525, 15.425, 6.05],
+ "to": [8.7, 16.475, 7.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, -0.25]},
+ "faces": {
+ "north": {"uv": [14.5, 5.5, 14.625, 6], "texture": "#0"},
+ "east": {"uv": [9, 8.5, 9.625, 9], "texture": "#0"},
+ "south": {"uv": [14.5, 6, 14.625, 6.5], "texture": "#0"},
+ "west": {"uv": [9, 9, 9.625, 9.5], "texture": "#0"},
+ "up": {"uv": [12.625, 9.625, 12.5, 9], "texture": "#0"},
+ "down": {"uv": [9.625, 12.5, 9.5, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44064, 16.1294, 6.05],
+ "to": [7.69064, 16.3044, 7.3],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.16564, 16.2169, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 2, 15.625, 2.125], "texture": "#0"},
+ "east": {"uv": [12.5, 10, 13.125, 10.125], "texture": "#0"},
+ "south": {"uv": [15.5, 2.5, 15.625, 2.625], "texture": "#0"},
+ "west": {"uv": [10.5, 12.5, 11.125, 12.625], "texture": "#0"},
+ "up": {"uv": [12.625, 11.125, 12.5, 10.5], "texture": "#0"},
+ "down": {"uv": [11.625, 12.5, 11.5, 13.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30936, 16.1294, 6.05],
+ "to": [8.55936, 16.3044, 7.3],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.83436, 16.2169, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 3, 15.625, 3.125], "texture": "#0"},
+ "east": {"uv": [12.5, 11.5, 13.125, 11.625], "texture": "#0"},
+ "south": {"uv": [15.5, 3.5, 15.625, 3.625], "texture": "#0"},
+ "west": {"uv": [12, 12.5, 12.625, 12.625], "texture": "#0"},
+ "up": {"uv": [13.125, 0.625, 13, 0], "texture": "#0"},
+ "down": {"uv": [13.125, 1, 13, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30758, 15.59383, 6.05],
+ "to": [8.55758, 15.76883, 7.3],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.83258, 15.68133, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 4, 15.625, 4.125], "texture": "#0"},
+ "east": {"uv": [12.5, 12, 13.125, 12.125], "texture": "#0"},
+ "south": {"uv": [15.5, 4.5, 15.625, 4.625], "texture": "#0"},
+ "west": {"uv": [13, 2, 13.625, 2.125], "texture": "#0"},
+ "up": {"uv": [13.125, 3.125, 13, 2.5], "texture": "#0"},
+ "down": {"uv": [13.125, 3.5, 13, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44242, 15.59383, 6.05],
+ "to": [7.69242, 15.76883, 7.3],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.16742, 15.68133, 6.55]},
+ "faces": {
+ "north": {"uv": [15.5, 5, 15.625, 5.125], "texture": "#0"},
+ "east": {"uv": [13, 4.5, 13.625, 4.625], "texture": "#0"},
+ "south": {"uv": [15.5, 5.5, 15.625, 5.625], "texture": "#0"},
+ "west": {"uv": [13, 5, 13.625, 5.125], "texture": "#0"},
+ "up": {"uv": [13.125, 6.125, 13, 5.5], "texture": "#0"},
+ "down": {"uv": [13.125, 6.5, 13, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.25, 8.7],
+ "to": [8.525, 15.425, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 6.5, 15, 6.625], "texture": "#0"},
+ "east": {"uv": [8, 13, 8.625, 13.125], "texture": "#0"},
+ "south": {"uv": [14.5, 7, 15, 7.125], "texture": "#0"},
+ "west": {"uv": [13, 9, 13.625, 9.125], "texture": "#0"},
+ "up": {"uv": [10, 0.625, 9.5, 0], "texture": "#0"},
+ "down": {"uv": [10, 1, 9.5, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.425, 8.7],
+ "to": [8.525, 16.475, 10.025],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [10, 1, 10.5, 1.5], "texture": "#0"},
+ "east": {"uv": [9.5, 2, 10.125, 2.5], "texture": "#0"},
+ "south": {"uv": [10, 1.5, 10.5, 2], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.125, 3], "texture": "#0"},
+ "up": {"uv": [10, 3.625, 9.5, 3], "texture": "#0"},
+ "down": {"uv": [10, 4, 9.5, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.27764, 10.02063],
+ "to": [8.525, 16.46514, 10.19563],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15.94014, 9.60813]},
+ "faces": {
+ "north": {"uv": [14.5, 7.5, 15, 7.625], "texture": "#0"},
+ "east": {"uv": [15.5, 6, 15.625, 6.125], "texture": "#0"},
+ "south": {"uv": [8, 14.5, 8.5, 14.625], "texture": "#0"},
+ "west": {"uv": [15.5, 6.5, 15.625, 6.625], "texture": "#0"},
+ "up": {"uv": [15, 8.125, 14.5, 8], "texture": "#0"},
+ "down": {"uv": [9, 14.5, 8.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.28019, 15.425, 9.64461],
+ "to": [8.46769, 16.475, 9.83211],
+ "rotation": {"angle": 22.5, "axis": "y", "origin": [8.88019, 15.95, 9.30711]},
+ "faces": {
+ "north": {"uv": [14.5, 8.5, 14.625, 9], "texture": "#0"},
+ "east": {"uv": [9, 14.5, 9.125, 15], "texture": "#0"},
+ "south": {"uv": [14.5, 9, 14.625, 9.5], "texture": "#0"},
+ "west": {"uv": [9.5, 14.5, 9.625, 15], "texture": "#0"},
+ "up": {"uv": [15.625, 7.125, 15.5, 7], "texture": "#0"},
+ "down": {"uv": [7.625, 15.5, 7.5, 15.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.83792, 15.425, 10.10819],
+ "to": [8.02542, 16.475, 10.29569],
+ "rotation": {"angle": -22.5, "axis": "y", "origin": [8.43792, 15.95, 8.77069]},
+ "faces": {
+ "north": {"uv": [14.5, 9.5, 14.625, 10], "texture": "#0"},
+ "east": {"uv": [10, 14.5, 10.125, 15], "texture": "#0"},
+ "south": {"uv": [14.5, 10, 14.625, 10.5], "texture": "#0"},
+ "west": {"uv": [10.5, 14.5, 10.625, 15], "texture": "#0"},
+ "up": {"uv": [15.625, 7.625, 15.5, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 15.5, 8, 15.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 15.50229, 9.69381],
+ "to": [8.525, 15.68979, 9.86881],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 15.16479, 9.28131]},
+ "faces": {
+ "north": {"uv": [14.5, 10.5, 15, 10.625], "texture": "#0"},
+ "east": {"uv": [15.5, 8, 15.625, 8.125], "texture": "#0"},
+ "south": {"uv": [11, 14.5, 11.5, 14.625], "texture": "#0"},
+ "west": {"uv": [8.5, 15.5, 8.625, 15.625], "texture": "#0"},
+ "up": {"uv": [15, 11.125, 14.5, 11], "texture": "#0"},
+ "down": {"uv": [12, 14.5, 11.5, 14.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.475, 16.475, 8.7],
+ "to": [8.525, 16.65, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 11.5, 15, 11.625], "texture": "#0"},
+ "east": {"uv": [13, 9.5, 13.625, 9.625], "texture": "#0"},
+ "south": {"uv": [12, 14.5, 12.5, 14.625], "texture": "#0"},
+ "west": {"uv": [10, 13, 10.625, 13.125], "texture": "#0"},
+ "up": {"uv": [10, 5.625, 9.5, 5], "texture": "#0"},
+ "down": {"uv": [10, 6, 9.5, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.3, 15.425, 8.7],
+ "to": [7.475, 16.475, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 12, 14.625, 12.5], "texture": "#0"},
+ "east": {"uv": [9.5, 7, 10.125, 7.5], "texture": "#0"},
+ "south": {"uv": [12.5, 14.5, 12.625, 15], "texture": "#0"},
+ "west": {"uv": [9.5, 7.5, 10.125, 8], "texture": "#0"},
+ "up": {"uv": [13.125, 11.125, 13, 10.5], "texture": "#0"},
+ "down": {"uv": [11.125, 13, 11, 13.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.525, 15.425, 8.7],
+ "to": [8.7, 16.475, 9.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16.25]},
+ "faces": {
+ "north": {"uv": [14.5, 12.5, 14.625, 13], "texture": "#0"},
+ "east": {"uv": [8, 9.5, 8.625, 10], "texture": "#0"},
+ "south": {"uv": [13, 14.5, 13.125, 15], "texture": "#0"},
+ "west": {"uv": [9, 9.5, 9.625, 10], "texture": "#0"},
+ "up": {"uv": [12.125, 13.625, 12, 13], "texture": "#0"},
+ "down": {"uv": [12.625, 13, 12.5, 13.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44064, 16.1294, 8.7],
+ "to": [7.69064, 16.3044, 9.95],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.16564, 16.2169, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 8.5, 15.625, 8.625], "texture": "#0"},
+ "east": {"uv": [13, 12.5, 13.625, 12.625], "texture": "#0"},
+ "south": {"uv": [9, 15.5, 9.125, 15.625], "texture": "#0"},
+ "west": {"uv": [13, 13, 13.625, 13.125], "texture": "#0"},
+ "up": {"uv": [13.625, 0.625, 13.5, 0], "texture": "#0"},
+ "down": {"uv": [13.625, 1, 13.5, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30936, 16.1294, 8.7],
+ "to": [8.55936, 16.3044, 9.95],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.83436, 16.2169, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 9, 15.625, 9.125], "texture": "#0"},
+ "east": {"uv": [13.5, 2.5, 14.125, 2.625], "texture": "#0"},
+ "south": {"uv": [9.5, 15.5, 9.625, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 3, 14.125, 3.125], "texture": "#0"},
+ "up": {"uv": [13.625, 4.125, 13.5, 3.5], "texture": "#0"},
+ "down": {"uv": [13.625, 5.5, 13.5, 6.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [8.30758, 15.59383, 8.7],
+ "to": [8.55758, 15.76883, 9.95],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.83258, 15.68133, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 9.5, 15.625, 9.625], "texture": "#0"},
+ "east": {"uv": [13.5, 6.5, 14.125, 6.625], "texture": "#0"},
+ "south": {"uv": [10, 15.5, 10.125, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 7, 14.125, 7.125], "texture": "#0"},
+ "up": {"uv": [13.625, 8.125, 13.5, 7.5], "texture": "#0"},
+ "down": {"uv": [8.125, 13.5, 8, 14.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.44242, 15.59383, 8.7],
+ "to": [7.69242, 15.76883, 9.95],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.16742, 15.68133, 9.45]},
+ "faces": {
+ "north": {"uv": [15.5, 10, 15.625, 10.125], "texture": "#0"},
+ "east": {"uv": [8.5, 13.5, 9.125, 13.625], "texture": "#0"},
+ "south": {"uv": [10.5, 15.5, 10.625, 15.625], "texture": "#0"},
+ "west": {"uv": [13.5, 8.5, 14.125, 8.625], "texture": "#0"},
+ "up": {"uv": [9.625, 14.125, 9.5, 13.5], "texture": "#0"},
+ "down": {"uv": [10.125, 13.5, 10, 14.125], "texture": "#0"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 4.25, 1.25],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "thirdperson_lefthand": {
+ "translation": [0, 4.25, 1.25],
+ "scale": [1.5, 1.5, 1.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [13.99, -5.47, -54.85],
+ "translation": [-9.5, 5.5, 5.75]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-170.78, 0.87, -120.4],
+ "translation": [-11.75, 6, 6]
+ },
+ "ground": {
+ "rotation": [180, 0, 0],
+ "translation": [0, 8.75, 0],
+ "scale": [1.2, 1.2, 1.2]
+ },
+ "gui": {
+ "rotation": [-90, 135, 90],
+ "translation": [-0.75, -0.75, -0.25],
+ "scale": [1.1, 1.1, 1.1]
+ },
+ "head": {
+ "rotation": [61.5, 0, 0],
+ "translation": [0, 1, -19],
+ "scale": [2.5, 2.5, 2.5]
+ },
+ "fixed": {
+ "rotation": [90, 0, 90],
+ "translation": [1.5, 0, -0.25],
+ "scale": [3, 3, 3]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [8, 9, 10, 11, 12, 13, 14, 15]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [16, 17, 18, 19, 20, 21, 22, 23]
+ },
+ {
+ "name": "group",
+ "origin": [-0.10355, 0, 0],
+ "color": 0,
+ "children": [
+ 24,
+ {
+ "name": "group",
+ "origin": [0, 0, 0],
+ "color": 8,
+ "children": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]
+ },
+ {
+ "name": "group",
+ "origin": [0, 0, 0],
+ "color": 8,
+ "children": [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/hammer2.json.textures b/models/hammer2.json.textures
new file mode 100644
index 000000000..039bb493a
--- /dev/null
+++ b/models/hammer2.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "hammer"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/handgunammobox.json b/models/handgunammobox.json
new file mode 100644
index 000000000..7b4ae09d2
--- /dev/null
+++ b/models/handgunammobox.json
@@ -0,0 +1,1810 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "handgunammobox",
+ "particle": "handgunammobox"
+ },
+ "elements": [
+ {
+ "from": [5.43541, 8.12145, 6.15485],
+ "to": [5.65867, 9.28473, 6.69319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.12145, 6.31207],
+ "to": [5.81589, 9.28473, 6.53533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.12145, 6.31215],
+ "to": [5.81599, 9.28473, 6.53541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.12145, 6.15493],
+ "to": [5.65877, 9.28473, 6.69327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45215, 9.28473, 6.1952],
+ "to": [5.64191, 9.70473, 6.65279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31796, 9.28473, 6.32884],
+ "to": [5.77555, 9.70473, 6.51861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31805, 9.28473, 6.32891],
+ "to": [5.77564, 9.70473, 6.51867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45223, 9.28473, 6.19527],
+ "to": [5.642, 9.70473, 6.65286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63541, 8.12145, 6.15485],
+ "to": [6.85867, 9.28473, 6.69319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47764, 8.12145, 6.31215],
+ "to": [7.01599, 9.28473, 6.53541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63551, 8.12145, 6.15493],
+ "to": [6.85877, 9.28473, 6.69327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47754, 8.12145, 6.31207],
+ "to": [7.01589, 9.28473, 6.53533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65223, 9.28473, 6.19527],
+ "to": [6.842, 9.70473, 6.65286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51805, 9.28473, 6.32891],
+ "to": [6.97564, 9.70473, 6.51867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51796, 9.28473, 6.32884],
+ "to": [6.97555, 9.70473, 6.51861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65215, 9.28473, 6.1952],
+ "to": [6.84191, 9.70473, 6.65279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 6.42386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43541, 8.12145, 7.35485],
+ "to": [5.65867, 9.28473, 7.89319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.12145, 7.51207],
+ "to": [5.81589, 9.28473, 7.73533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.12145, 7.51215],
+ "to": [5.81599, 9.28473, 7.73541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.12145, 7.35493],
+ "to": [5.65877, 9.28473, 7.89327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45215, 9.28473, 7.3952],
+ "to": [5.64191, 9.70473, 7.85279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31796, 9.28473, 7.52884],
+ "to": [5.77555, 9.70473, 7.71861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31805, 9.28473, 7.52891],
+ "to": [5.77564, 9.70473, 7.71867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45223, 9.28473, 7.39527],
+ "to": [5.642, 9.70473, 7.85286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63541, 8.12145, 7.35485],
+ "to": [6.85867, 9.28473, 7.89319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47754, 8.12145, 7.51207],
+ "to": [7.01589, 9.28473, 7.73533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47764, 8.12145, 7.51215],
+ "to": [7.01599, 9.28473, 7.73541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63551, 8.12145, 7.35493],
+ "to": [6.85877, 9.28473, 7.89327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65215, 9.28473, 7.3952],
+ "to": [6.84191, 9.70473, 7.85279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51796, 9.28473, 7.52884],
+ "to": [6.97555, 9.70473, 7.71861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51805, 9.28473, 7.52891],
+ "to": [6.97564, 9.70473, 7.71867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65223, 9.28473, 7.39527],
+ "to": [6.842, 9.70473, 7.85286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 7.62386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03541, 8.12145, 6.75485],
+ "to": [6.25867, 9.28473, 7.29319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87754, 8.12145, 6.91207],
+ "to": [6.41589, 9.28473, 7.13533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87764, 8.12145, 6.91215],
+ "to": [6.41599, 9.28473, 7.13541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03551, 8.12145, 6.75493],
+ "to": [6.25877, 9.28473, 7.29327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.05215, 9.28473, 6.7952],
+ "to": [6.24191, 9.70473, 7.25279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.91796, 9.28473, 6.92884],
+ "to": [6.37555, 9.70473, 7.11861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.91805, 9.28473, 6.92891],
+ "to": [6.37564, 9.70473, 7.11867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.05223, 9.28473, 6.79527],
+ "to": [6.242, 9.70473, 7.25286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 7.02386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03541, 8.12145, 7.95485],
+ "to": [6.25867, 9.28473, 8.49319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87754, 8.12145, 8.11207],
+ "to": [6.41589, 9.28473, 8.33533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87764, 8.12145, 8.11215],
+ "to": [6.41599, 9.28473, 8.33541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03551, 8.12145, 7.95493],
+ "to": [6.25877, 9.28473, 8.49327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.05215, 9.28473, 7.9952],
+ "to": [6.24191, 9.70473, 8.45279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.91796, 9.28473, 8.12884],
+ "to": [6.37555, 9.70473, 8.31861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.91805, 9.28473, 8.12891],
+ "to": [6.37564, 9.70473, 8.31867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.05223, 9.28473, 7.99527],
+ "to": [6.242, 9.70473, 8.45286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.85226, 8.22386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43541, 8.12145, 8.55485],
+ "to": [5.65867, 9.28473, 9.09319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.12145, 8.71207],
+ "to": [5.81589, 9.28473, 8.93533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.12145, 8.71215],
+ "to": [5.81599, 9.28473, 8.93541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.12145, 8.55493],
+ "to": [5.65877, 9.28473, 9.09327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45215, 9.28473, 8.5952],
+ "to": [5.64191, 9.70473, 9.05279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31796, 9.28473, 8.72884],
+ "to": [5.77555, 9.70473, 8.91861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31805, 9.28473, 8.72891],
+ "to": [5.77564, 9.70473, 8.91867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45223, 9.28473, 8.59527],
+ "to": [5.642, 9.70473, 9.05286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63541, 8.12145, 8.55485],
+ "to": [6.85867, 9.28473, 9.09319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8.5, 2.5, 8.625, 3.125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.25, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 8.625, 4.125], "texture": "#0"},
+ "west": {"uv": [3.5, 8, 3.75, 8.625], "texture": "#0"},
+ "up": {"uv": [9.125, 3.75, 9, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 9, 4, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47754, 8.12145, 8.71207],
+ "to": [7.01589, 9.28473, 8.93533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [4, 8, 4.25, 8.625], "texture": "#0"},
+ "east": {"uv": [8.5, 4.5, 8.625, 5.125], "texture": "#0"},
+ "south": {"uv": [4.5, 8, 4.75, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 8.625, 6.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.125, 9, 4], "texture": "#0"},
+ "down": {"uv": [4.75, 9, 4.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47764, 8.12145, 8.71215],
+ "to": [7.01599, 9.28473, 8.93541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 4.5, 8.25, 5.125], "texture": "#0"},
+ "east": {"uv": [8.5, 6.5, 8.625, 7.125], "texture": "#0"},
+ "south": {"uv": [5, 8, 5.25, 8.625], "texture": "#0"},
+ "west": {"uv": [8.5, 7.5, 8.625, 8.125], "texture": "#0"},
+ "up": {"uv": [9.25, 4.625, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63551, 8.12145, 8.55493],
+ "to": [6.85877, 9.28473, 9.09327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 8.5, 8.125, 9.125], "texture": "#0"},
+ "east": {"uv": [5.5, 8, 5.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 8.625, 9.125], "texture": "#0"},
+ "west": {"uv": [8, 5.5, 8.25, 6.125], "texture": "#0"},
+ "up": {"uv": [9.125, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [5.625, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65215, 9.28473, 8.5952],
+ "to": [6.84191, 9.70473, 9.05279],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 9.125, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 0.5, 9.25, 0.75], "texture": "#0"},
+ "south": {"uv": [6, 9, 6.125, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 1, 9.25, 1.25], "texture": "#0"},
+ "up": {"uv": [9.125, 6.25, 9, 6], "texture": "#0"},
+ "down": {"uv": [6.625, 9, 6.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51796, 9.28473, 8.72884],
+ "to": [6.97555, 9.70473, 8.91861],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 1.5, 9.25, 1.75], "texture": "#0"},
+ "east": {"uv": [9, 6.5, 9.125, 6.75], "texture": "#0"},
+ "south": {"uv": [9, 2, 9.25, 2.25], "texture": "#0"},
+ "west": {"uv": [7, 9, 7.125, 9.25], "texture": "#0"},
+ "up": {"uv": [9.25, 7.125, 9, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 9, 7.5, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.51805, 9.28473, 8.72891],
+ "to": [6.97564, 9.70473, 8.91867],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [9, 2.5, 9.25, 2.75], "texture": "#0"},
+ "east": {"uv": [9, 7.5, 9.125, 7.75], "texture": "#0"},
+ "south": {"uv": [3, 9, 3.25, 9.25], "texture": "#0"},
+ "west": {"uv": [9, 8, 9.125, 8.25], "texture": "#0"},
+ "up": {"uv": [9.25, 8.625, 9, 8.5], "texture": "#0"},
+ "down": {"uv": [9.25, 9, 9, 9.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65223, 9.28473, 8.59527],
+ "to": [6.842, 9.70473, 9.05286],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.85226, 8.82386]},
+ "faces": {
+ "north": {"uv": [0, 9.5, 0.125, 9.75], "texture": "#0"},
+ "east": {"uv": [9, 3, 9.25, 3.25], "texture": "#0"},
+ "south": {"uv": [0.5, 9.5, 0.625, 9.75], "texture": "#0"},
+ "west": {"uv": [3.5, 9, 3.75, 9.25], "texture": "#0"},
+ "up": {"uv": [9.625, 0.75, 9.5, 0.5], "texture": "#0"},
+ "down": {"uv": [1.125, 9.5, 1, 9.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43541, 8.53558, 7.95485],
+ "to": [5.65867, 9.69886, 8.49319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.53558, 8.11207],
+ "to": [5.81589, 9.69886, 8.33533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.53558, 8.11215],
+ "to": [5.81599, 9.69886, 8.33541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.53558, 7.95493],
+ "to": [5.65877, 9.69886, 8.49327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.49388, 9.51558, 8.09581],
+ "to": [5.60015, 9.70546, 8.35206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.41873, 9.51558, 8.17065],
+ "to": [5.67498, 9.70546, 8.27692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.41878, 9.51558, 8.17069],
+ "to": [5.67503, 9.70546, 8.27696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.49393, 9.51558, 8.09585],
+ "to": [5.6002, 9.70546, 8.3521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63541, 8.53558, 7.95485],
+ "to": [6.85867, 9.69886, 8.49319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47754, 8.53558, 8.11207],
+ "to": [7.01589, 9.69886, 8.33533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47764, 8.53558, 8.11215],
+ "to": [7.01599, 9.69886, 8.33541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63551, 8.53558, 7.95493],
+ "to": [6.85877, 9.69886, 8.49327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.69388, 9.51558, 8.09581],
+ "to": [6.80015, 9.70546, 8.35206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.61873, 9.51558, 8.17065],
+ "to": [6.87498, 9.70546, 8.27692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.61878, 9.51558, 8.17069],
+ "to": [6.87503, 9.70546, 8.27696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.69393, 9.51558, 8.09585],
+ "to": [6.8002, 9.70546, 8.3521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 8.22386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43541, 8.53558, 6.75485],
+ "to": [5.65867, 9.69886, 7.29319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.53558, 6.91207],
+ "to": [5.81589, 9.69886, 7.13533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.53558, 6.91215],
+ "to": [5.81599, 9.69886, 7.13541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.53558, 6.75493],
+ "to": [5.65877, 9.69886, 7.29327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.49388, 9.51558, 6.89581],
+ "to": [5.60015, 9.70546, 7.15206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.41873, 9.51558, 6.97065],
+ "to": [5.67498, 9.70546, 7.07692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.41878, 9.51558, 6.97069],
+ "to": [5.67503, 9.70546, 7.07696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.49393, 9.51558, 6.89585],
+ "to": [5.6002, 9.70546, 7.1521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [5.54699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63541, 8.53558, 6.75485],
+ "to": [6.85867, 9.69886, 7.29319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47754, 8.53558, 6.91207],
+ "to": [7.01589, 9.69886, 7.13533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.47764, 8.53558, 6.91215],
+ "to": [7.01599, 9.69886, 7.13541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.63551, 8.53558, 6.75493],
+ "to": [6.85877, 9.69886, 7.29327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.69388, 9.51558, 6.89581],
+ "to": [6.80015, 9.70546, 7.15206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.61873, 9.51558, 6.97065],
+ "to": [6.87498, 9.70546, 7.07692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.61878, 9.51558, 6.97069],
+ "to": [6.87503, 9.70546, 7.07696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.69393, 9.51558, 6.89585],
+ "to": [6.8002, 9.70546, 7.1521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.74699, 8.96805, 7.02386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03541, 8.53558, 7.35485],
+ "to": [6.25867, 9.69886, 7.89319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87754, 8.53558, 7.51207],
+ "to": [6.41589, 9.69886, 7.73533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87764, 8.53558, 7.51215],
+ "to": [6.41599, 9.69886, 7.73541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03551, 8.53558, 7.35493],
+ "to": [6.25877, 9.69886, 7.89327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09388, 9.51558, 7.49581],
+ "to": [6.20015, 9.70546, 7.75206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01873, 9.51558, 7.57065],
+ "to": [6.27498, 9.70546, 7.67692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01878, 9.51558, 7.57069],
+ "to": [6.27503, 9.70546, 7.67696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09393, 9.51558, 7.49585],
+ "to": [6.2002, 9.70546, 7.7521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 7.62386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03541, 8.53558, 6.15485],
+ "to": [6.25867, 9.69886, 6.69319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87754, 8.53558, 6.31207],
+ "to": [6.41589, 9.69886, 6.53533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87764, 8.53558, 6.31215],
+ "to": [6.41599, 9.69886, 6.53541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03551, 8.53558, 6.15493],
+ "to": [6.25877, 9.69886, 6.69327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09388, 9.51558, 6.29581],
+ "to": [6.20015, 9.70546, 6.55206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01873, 9.51558, 6.37065],
+ "to": [6.27498, 9.70546, 6.47692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01878, 9.51558, 6.37069],
+ "to": [6.27503, 9.70546, 6.47696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09393, 9.51558, 6.29585],
+ "to": [6.2002, 9.70546, 6.5521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 6.42386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03541, 8.53558, 8.55485],
+ "to": [6.25867, 9.69886, 9.09319],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [8.5, 3.125, 8.625, 2.5], "texture": "#0"},
+ "east": {"uv": [3, 8.625, 3.25, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 4.125, 8.625, 3.5], "texture": "#0"},
+ "west": {"uv": [3.5, 8.625, 3.75, 8], "texture": "#0"},
+ "up": {"uv": [4.125, 9.25, 4, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 3.5, 9, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87754, 8.53558, 8.71207],
+ "to": [6.41589, 9.69886, 8.93533],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [4, 8.625, 4.25, 8], "texture": "#0"},
+ "east": {"uv": [8.5, 5.125, 8.625, 4.5], "texture": "#0"},
+ "south": {"uv": [4.5, 8.625, 4.75, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 6.125, 8.625, 5.5], "texture": "#0"},
+ "up": {"uv": [4.75, 9.125, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4, 9, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.87764, 8.53558, 8.71215],
+ "to": [6.41599, 9.69886, 8.93541],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 5.125, 8.25, 4.5], "texture": "#0"},
+ "east": {"uv": [8.5, 7.125, 8.625, 6.5], "texture": "#0"},
+ "south": {"uv": [5, 8.625, 5.25, 8], "texture": "#0"},
+ "west": {"uv": [8.5, 8.125, 8.625, 7.5], "texture": "#0"},
+ "up": {"uv": [5.25, 9.125, 5, 9], "texture": "#0"},
+ "down": {"uv": [9.25, 4.5, 9, 4.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.03551, 8.53558, 8.55493],
+ "to": [6.25877, 9.69886, 9.09327],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [8, 9.125, 8.125, 8.5], "texture": "#0"},
+ "east": {"uv": [5.5, 8.625, 5.75, 8], "texture": "#0"},
+ "south": {"uv": [8.5, 9.125, 8.625, 8.5], "texture": "#0"},
+ "west": {"uv": [8, 6.125, 8.25, 5.5], "texture": "#0"},
+ "up": {"uv": [5.625, 9.25, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [9.125, 5, 9, 5.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09388, 9.51558, 8.69581],
+ "to": [6.20015, 9.70546, 8.95206],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [9.5, 1.125, 9.625, 1], "texture": "#0"},
+ "east": {"uv": [1.5, 9.625, 1.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 1.625, 9.625, 1.5], "texture": "#0"},
+ "west": {"uv": [9.5, 2.125, 9.625, 2], "texture": "#0"},
+ "up": {"uv": [3.125, 9.625, 3, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 2.5, 9.5, 2.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01873, 9.51558, 8.77065],
+ "to": [6.27498, 9.70546, 8.87692],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [9.5, 3.125, 9.625, 3], "texture": "#0"},
+ "east": {"uv": [3.5, 9.625, 3.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 3.625, 9.625, 3.5], "texture": "#0"},
+ "west": {"uv": [4, 9.625, 4.125, 9.5], "texture": "#0"},
+ "up": {"uv": [4.625, 9.625, 4.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 4, 9.5, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.01878, 9.51558, 8.77069],
+ "to": [6.27503, 9.70546, 8.87696],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [9.5, 4.625, 9.625, 4.5], "texture": "#0"},
+ "east": {"uv": [5, 9.625, 5.125, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 5.125, 9.625, 5], "texture": "#0"},
+ "west": {"uv": [5.5, 9.625, 5.625, 9.5], "texture": "#0"},
+ "up": {"uv": [6.125, 9.625, 6, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 5.5, 9.5, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.09393, 9.51558, 8.69585],
+ "to": [6.2002, 9.70546, 8.9521],
+ "rotation": {"angle": 45, "axis": "y", "origin": [6.14699, 8.96805, 8.82386]},
+ "faces": {
+ "north": {"uv": [9.5, 6.125, 9.625, 6], "texture": "#0"},
+ "east": {"uv": [6.5, 9.625, 6.625, 9.5], "texture": "#0"},
+ "south": {"uv": [9.5, 6.625, 9.625, 6.5], "texture": "#0"},
+ "west": {"uv": [7, 9.625, 7.125, 9.5], "texture": "#0"},
+ "up": {"uv": [7.625, 9.625, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 7, 9.5, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 6.1],
+ "to": [8.85, 9.1, 9.15],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 1.75, 0], "texture": "#0"},
+ "east": {"uv": [0, 0, 1.5, 0], "texture": "#0"},
+ "south": {"uv": [0, 0, 1.75, 0], "texture": "#0"},
+ "west": {"uv": [0, 0, 1.5, 0], "texture": "#0"},
+ "up": {"uv": [1.75, 5.5, 0, 4], "texture": "#0"},
+ "down": {"uv": [5.75, 0, 4, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.75, 7.95, 6],
+ "to": [10.85, 8, 9.25],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [6, 5, 8, 5.125], "texture": "#0"},
+ "east": {"uv": [4, 7.5, 5.625, 7.625], "texture": "#0"},
+ "south": {"uv": [6, 5.5, 8, 5.625], "texture": "#0"},
+ "west": {"uv": [6, 7.5, 7.625, 7.625], "texture": "#0"},
+ "up": {"uv": [2, 1.625, 0, 0], "texture": "#0"},
+ "down": {"uv": [2, 2, 0, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.75, 9.7, 6],
+ "to": [10.85, 9.75, 9.25],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 7.65, 8]},
+ "faces": {
+ "north": {"uv": [6, 6, 8, 6.125], "texture": "#0"},
+ "east": {"uv": [0, 8, 1.625, 8.125], "texture": "#0"},
+ "south": {"uv": [0, 6.5, 2, 6.625], "texture": "#0"},
+ "west": {"uv": [8, 0, 9.625, 0.125], "texture": "#0"},
+ "up": {"uv": [4, 1.625, 2, 0], "texture": "#0"},
+ "down": {"uv": [4, 2, 2, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.75, 7.95, 9.25],
+ "to": [10.85, 9.75, 9.3],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4, 1.5, 6, 2.375], "texture": "#0"},
+ "east": {"uv": [6, 8, 6.125, 8.875], "texture": "#0"},
+ "south": {"uv": [2, 4, 4, 4.875], "texture": "#0"},
+ "west": {"uv": [6.5, 8, 6.625, 8.875], "texture": "#0"},
+ "up": {"uv": [6, 6.625, 4, 6.5], "texture": "#0"},
+ "down": {"uv": [8, 6.5, 6, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.75, 7.95, 5.95],
+ "to": [10.85, 9.75, 6],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8.7]},
+ "faces": {
+ "north": {"uv": [4, 2.5, 6, 3.375], "texture": "#0"},
+ "east": {"uv": [8, 6.5, 8.125, 7.375], "texture": "#0"},
+ "south": {"uv": [4, 3.5, 6, 4.375], "texture": "#0"},
+ "west": {"uv": [7, 8, 7.125, 8.875], "texture": "#0"},
+ "up": {"uv": [2, 7.125, 0, 7], "texture": "#0"},
+ "down": {"uv": [4, 7, 2, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.05, 8, 6.1],
+ "to": [8.85, 9.7, 9.15],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [7.5, 8, 7.625, 8.875], "texture": "#0"},
+ "east": {"uv": [6, 0, 7.625, 0.875], "texture": "#0"},
+ "south": {"uv": [8, 7.5, 8.125, 8.375], "texture": "#0"},
+ "west": {"uv": [6, 1, 7.625, 1.875], "texture": "#0"},
+ "up": {"uv": [8.125, 2.125, 8, 0.5], "texture": "#0"},
+ "down": {"uv": [2.125, 8, 2, 9.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [10.85, 8, 6],
+ "to": [10.85, 9.7, 9.25],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
+ "east": {"uv": [2, 6, 3.625, 6.875], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
+ "west": {"uv": [6, 2, 7.625, 2.875], "texture": "#0"},
+ "up": {"uv": [0, 1.625, 0, 0], "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.15, 8, 6],
+ "to": [5.25, 9.7, 9.25],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 8.5, 0.125, 9.375], "texture": "#0"},
+ "east": {"uv": [6, 3, 7.625, 3.875], "texture": "#0"},
+ "south": {"uv": [0.5, 8.5, 0.625, 9.375], "texture": "#0"},
+ "west": {"uv": [6, 4, 7.625, 4.875], "texture": "#0"},
+ "up": {"uv": [2.625, 9.625, 2.5, 8], "texture": "#0"},
+ "down": {"uv": [8.125, 2.5, 8, 4.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 9.15],
+ "to": [8.85, 9.7, 9.25],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4, 4.5, 5.75, 5.375], "texture": "#0"},
+ "east": {"uv": [8.5, 0.5, 8.625, 1.375], "texture": "#0"},
+ "south": {"uv": [2, 5, 3.75, 5.875], "texture": "#0"},
+ "west": {"uv": [1, 8.5, 1.125, 9.375], "texture": "#0"},
+ "up": {"uv": [5.75, 7.125, 4, 7], "texture": "#0"},
+ "down": {"uv": [7.75, 7, 6, 7.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 6],
+ "to": [8.85, 9.7, 6.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 5.5, 1.75, 6.375], "texture": "#0"},
+ "east": {"uv": [1.5, 8.5, 1.625, 9.375], "texture": "#0"},
+ "south": {"uv": [4, 5.5, 5.75, 6.375], "texture": "#0"},
+ "west": {"uv": [8.5, 1.5, 8.625, 2.375], "texture": "#0"},
+ "up": {"uv": [1.75, 7.625, 0, 7.5], "texture": "#0"},
+ "down": {"uv": [3.75, 7.5, 2, 7.625], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "firstperson_righthand": {
+ "rotation": [-174.72, -59.12, 111.9],
+ "translation": [0.25, 2.25, 0.25]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 42.5, 66.5],
+ "translation": [0.25, 2.25, 0.5]
+ },
+ "ground": {
+ "translation": [0, -2, 0],
+ "scale": [0.8, 0.8, 0.8]
+ },
+ "gui": {
+ "rotation": [45, 35, 0],
+ "translation": [0.5, -2, 0],
+ "scale": [2.2, 2.2, 2.2]
+ },
+ "head": {
+ "translation": [0, 6.25, 0]
+ },
+ "fixed": {
+ "rotation": [90, 0, -180],
+ "translation": [0, -1.25, 0],
+ "scale": [2.5, 2.5, 2.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [32, 33, 34, 35, 36, 37, 38, 39]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [40, 41, 42, 43, 44, 45, 46, 47]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [96, 97, 98, 99, 100, 101, 102, 103]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [104, 105, 106, 107, 108, 109, 110, 111]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [112, 113, 114, 115, 116, 117, 118, 119]
+ }
+ ]
+ },
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [120, 121, 122, 123, 124, 125, 126, 127, 128, 129]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/handgunammobox.json.textures b/models/handgunammobox.json.textures
new file mode 100644
index 000000000..f77495524
--- /dev/null
+++ b/models/handgunammobox.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "handgunammobox"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/ModelGrenade.java b/models/mojmap-1.20.x/ModelGrenade.java
new file mode 100644
index 000000000..08fb12b46
--- /dev/null
+++ b/models/mojmap-1.20.x/ModelGrenade.java
@@ -0,0 +1,43 @@
+// Made with Blockbench 4.9.2
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class ModelGrenade extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "grenade"), "main");
+ private final ModelPart bone;
+
+ public ModelGrenade(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition cube_r1 = bone
+ .addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(2, 2).addBox(-0.5F, -0.5F, -23.0F, 1.0F, 1.0F, 2.0F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F));
+
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelbocekarrow.java b/models/mojmap-1.20.x/Modelbocekarrow.java
new file mode 100644
index 000000000..4f399d534
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelbocekarrow.java
@@ -0,0 +1,150 @@
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelbocekarrow extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "bocekarrow"), "main");
+ private final ModelPart jian;
+
+ public Modelbocekarrow(ModelPart root) {
+ this.jian = root.getChild("jian");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition jian = partdefinition.addOrReplaceChild("jian",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.068F, -0.068F, -12.7575F, 0.1361F, 0.1361F, 25.515F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.0011F, 5.3718F, -0.0975F, -1.5708F, 0.0F, 0.0F));
+
+ PartDefinition bone5 = jian.addOrReplaceChild("bone5", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 0.0F, -12.0507F));
+
+ PartDefinition cube_r1 = bone5.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+
+ PartDefinition cube_r2 = bone5.addOrReplaceChild("cube_r2",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+
+ PartDefinition bone6 = jian.addOrReplaceChild("bone6", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition cube_r3 = bone6.addOrReplaceChild("cube_r3",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+
+ PartDefinition cube_r4 = bone6.addOrReplaceChild("cube_r4",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+
+ PartDefinition bone7 = jian.addOrReplaceChild("bone7", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, -3.1416F));
+
+ PartDefinition cube_r5 = bone7.addOrReplaceChild("cube_r5",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+
+ PartDefinition cube_r6 = bone7.addOrReplaceChild("cube_r6",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+
+ PartDefinition bone8 = jian.addOrReplaceChild("bone8", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition cube_r7 = bone8.addOrReplaceChild("cube_r7",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+
+ PartDefinition cube_r8 = bone8.addOrReplaceChild("cube_r8",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+
+ PartDefinition bone10 = jian.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F,
+ -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0F, 0.0F, 7.6545F));
+
+ PartDefinition cube_r9 = bone10.addOrReplaceChild("cube_r9",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 0.034F, 0.068F, 0.1361F, 0.8845F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, 2.7282F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r10 = bone10.addOrReplaceChild("cube_r10",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.4252F, 0.068F, 0.1361F, 0.6804F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 3.0964F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r11 = bone10.addOrReplaceChild("cube_r11",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 0.2381F, -0.2211F, 0.068F, 0.1361F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, 3.0032F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition bone3 = jian.addOrReplaceChild("bone3",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 7.6545F, 0.0F, 0.0F, 2.138F));
+
+ PartDefinition cube_r12 = bone3.addOrReplaceChild("cube_r12",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.1531F, 2.623F, 0.068F, 0.1361F, 0.8845F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, -0.3677F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r13 = bone3.addOrReplaceChild("cube_r13",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.6294F, 2.1637F, 0.068F, 0.1361F, 0.6804F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 0.0006F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r14 = bone3.addOrReplaceChild("cube_r14",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.9356F, 2.3679F, 0.068F, 0.1361F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, -0.0927F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition bone4 = jian.addOrReplaceChild("bone4",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 7.6545F, 0.0F, 0.0F, -2.0944F));
+
+ PartDefinition cube_r15 = bone4.addOrReplaceChild("cube_r15",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.1531F, 2.623F, 0.068F, 0.1361F, 0.8845F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, -0.3677F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r16 = bone4.addOrReplaceChild("cube_r16",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.6294F, 2.1637F, 0.068F, 0.1361F, 0.6804F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 0.0006F, 0.5803F, 0.0F, 0.0F));
+
+ PartDefinition cube_r17 = bone4.addOrReplaceChild("cube_r17",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.9356F, 2.3679F, 0.068F, 0.1361F, 0.4763F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, -0.0927F, 0.5803F, 0.0F, 0.0F));
+
+ return LayerDefinition.create(meshdefinition, 64, 64);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ jian.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelbullet.java b/models/mojmap-1.20.x/Modelbullet.java
new file mode 100644
index 000000000..d86388bb0
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelbullet.java
@@ -0,0 +1,46 @@
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelbullet extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "bullet"), "main");
+ private final ModelPart bone;
+
+ public Modelbullet(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 8.0F, 0.0F));
+
+ PartDefinition bone2 = bone.addOrReplaceChild("bone2", CubeListBuilder.create(),
+ PartPose.offset(-2.1213F, 8.5F, 0.0F));
+
+ PartDefinition cube_r1 = bone2
+ .addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(1, 1).addBox(-1.5F, -21.5F, -1.5F, 1.0F, 5.0F, 1.0F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.7854F, 0.0F));
+
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelclaymore.java b/models/mojmap-1.20.x/Modelclaymore.java
new file mode 100644
index 000000000..9833b5b42
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelclaymore.java
@@ -0,0 +1,67 @@
+// Made with Blockbench 4.9.3
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelclaymore extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "claymore"), "main");
+ private final ModelPart claymore;
+
+ public Modelclaymore(ModelPart root) {
+ this.claymore = root.getChild("claymore");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition claymore = partdefinition.addOrReplaceChild("claymore", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 24.0F, 0.0F));
+
+ PartDefinition bone = claymore.addOrReplaceChild("bone",
+ CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-3.5F, -7.75F, -0.5F, 7.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 14)
+ .addBox(-2.0F, -8.0F, 0.0F, 4.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(14, 7)
+ .addBox(2.0F, -8.75F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 7)
+ .addBox(-3.0F, -8.75F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F));
+
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(8, 7).addBox(-1.5F, -6.0F, -0.5F, 2.0F, 5.0F, 2.0F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(4.3118F, -1.75F, -0.4598F, 0.0F, 0.3927F, 0.0F));
+
+ PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2",
+ CubeListBuilder.create().texOffs(0, 7).addBox(0.5F, -6.0F, -1.5F, 2.0F, 5.0F, 2.0F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-5.6184F, -1.75F, 0.0814F, 0.0F, -0.3927F, 0.0F));
+
+ PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3",
+ CubeListBuilder.create().texOffs(12, 13)
+ .addBox(0.0F, -0.75F, -0.5F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 15)
+ .addBox(6.0F, -0.75F, -0.5F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-3.0F, -2.6F, 0.3F, -0.7854F, 0.0F, 0.0F));
+
+ PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4",
+ CubeListBuilder.create().texOffs(10, 13)
+ .addBox(0.0F, -0.5F, -0.25F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(14, 13)
+ .addBox(6.0F, -0.5F, -0.25F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-3.0F, -2.6F, 0.3F, 0.7854F, 0.0F, 0.0F));
+
+ return LayerDefinition.create(meshdefinition, 32, 32);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ claymore.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelmortar_shell_Converted.java b/models/mojmap-1.20.x/Modelmortar_shell_Converted.java
new file mode 100644
index 000000000..c876360dd
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelmortar_shell_Converted.java
@@ -0,0 +1,124 @@
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelmortar_shell_Converted extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "mortar_shell_converted"), "main");
+ private final ModelPart Rockets;
+
+ public Modelmortar_shell_Converted(ModelPart root) {
+ this.Rockets = root.getChild("Rockets");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition Rockets = partdefinition.addOrReplaceChild("Rockets", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, -24.7579F, 0.4535F, -1.5708F, 0.0F, 0.0F));
+
+ PartDefinition octagon_r1 = Rockets.addOrReplaceChild("octagon_r1",
+ CubeListBuilder.create().texOffs(6, 3).addBox(-1.3735F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(1.8097F, 0.0033F, 5.8407F, 0.0F, 0.3927F, 0.0F));
+
+ PartDefinition octagon_r2 = Rockets.addOrReplaceChild("octagon_r2",
+ CubeListBuilder.create().texOffs(7, 0).addBox(0.627F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-1.8097F, 0.0033F, 5.8407F, 0.0F, -0.3927F, 0.0F));
+
+ PartDefinition octagon_r3 = Rockets.addOrReplaceChild("octagon_r3",
+ CubeListBuilder.create().texOffs(0, 8).addBox(-0.2401F, 0.627F, -1.4075F, 0.4803F, 0.684F, 1.6355F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, -0.3927F, 0.0F, 0.0F));
+
+ PartDefinition octagon_r4 = Rockets.addOrReplaceChild("octagon_r4",
+ CubeListBuilder.create().texOffs(4, 8).addBox(-0.2401F, -1.311F, -1.4075F, 0.4803F, 0.684F, 1.6355F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, 0.3927F, 0.0F, 0.0F));
+
+ PartDefinition octagon_r5 = Rockets.addOrReplaceChild("octagon_r5", CubeListBuilder.create().texOffs(2, 0)
+ .addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 3)
+ .addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 15)
+ .addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 0)
+ .addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(13, 13)
+ .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F)).texOffs(19, 0)
+ .addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F))
+ .texOffs(29, 23).addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F))
+ .texOffs(28, 0).addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F))
+ .texOffs(29, 30).addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F))
+ .texOffs(0, 0).addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F))
+ .texOffs(0, 8).addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F))
+ .texOffs(7, 5).addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, -0.3927F));
+
+ PartDefinition octagon_r6 = Rockets.addOrReplaceChild("octagon_r6", CubeListBuilder.create().texOffs(4, 0)
+ .addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 4)
+ .addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F)).texOffs(11, 17)
+ .addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 3)
+ .addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(0, 15)
+ .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F))
+ .texOffs(11, 21)
+ .addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F)).texOffs(24, 9)
+ .addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F)).texOffs(9, 30)
+ .addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F)).texOffs(0, 31)
+ .addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F)).texOffs(33, 6)
+ .addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F)).texOffs(11, 15)
+ .addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F)).texOffs(0, 18)
+ .addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, 0.3927F));
+
+ PartDefinition group2 = Rockets.addOrReplaceChild("group2", CubeListBuilder.create(),
+ PartPose.offset(0.0F, -6.0003F, 12.3571F));
+
+ PartDefinition group3 = Rockets.addOrReplaceChild("group3", CubeListBuilder.create(),
+ PartPose.offset(0.0F, -9.7972F, 8.7641F));
+
+ PartDefinition octagon_r7 = group3.addOrReplaceChild("octagon_r7",
+ CubeListBuilder.create().texOffs(20, 21)
+ .addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F))
+ .texOffs(28, 15)
+ .addBox(-0.3079F, -0.7435F, 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, -0.3927F));
+
+ PartDefinition octagon_r8 = group3.addOrReplaceChild("octagon_r8",
+ CubeListBuilder.create().texOffs(0, 24)
+ .addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F))
+ .texOffs(21, 28)
+ .addBox(-0.308F, -0.7435F, 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, 0.3927F));
+
+ PartDefinition group4 = Rockets.addOrReplaceChild("group4", CubeListBuilder.create(),
+ PartPose.offset(0.0F, -9.7972F, 8.7641F));
+
+ PartDefinition group = Rockets.addOrReplaceChild("group", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 0.2029F, -5.0537F));
+
+ PartDefinition octagon_r9 = group.addOrReplaceChild("octagon_r9", CubeListBuilder.create().texOffs(0, 1)
+ .addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, -0.3927F));
+
+ PartDefinition octagon_r10 = group.addOrReplaceChild("octagon_r10", CubeListBuilder.create().texOffs(8, 8)
+ .addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 1)
+ .addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, 0.3927F));
+
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ Rockets.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modelrpg7_rocket_Converted.java b/models/mojmap-1.20.x/Modelrpg7_rocket_Converted.java
new file mode 100644
index 000000000..32e20ec32
--- /dev/null
+++ b/models/mojmap-1.20.x/Modelrpg7_rocket_Converted.java
@@ -0,0 +1,774 @@
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modelrpg7_rocket_Converted extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "rpg7_rocket_converted"), "main");
+ private final ModelPart Rockets;
+
+ public Modelrpg7_rocket_Converted(ModelPart root) {
+ this.Rockets = root.getChild("Rockets");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition Rockets = partdefinition.addOrReplaceChild("Rockets", CubeListBuilder.create(),
+ PartPose.offsetAndRotation(0.0F, -24.7579F, 0.4535F, -1.5708F, 0.0F, 0.0F));
+
+ PartDefinition Rockets2 = Rockets.addOrReplaceChild("Rockets2", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 0.4579F, -0.0535F));
+
+ PartDefinition bone23 = Rockets2
+ .addOrReplaceChild(
+ "bone23", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -10.1988F, 0.8014F,
+ 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -1.0385F));
+
+ PartDefinition octagon_r1 = bone23.addOrReplaceChild("octagon_r1",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r2 = bone23.addOrReplaceChild("octagon_r2",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r3 = bone23.addOrReplaceChild("octagon_r3",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r4 = bone23.addOrReplaceChild("octagon_r4",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r5 = bone23.addOrReplaceChild("octagon_r5",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r6 = bone23.addOrReplaceChild("octagon_r6",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r7 = bone23.addOrReplaceChild("octagon_r7",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone24 = Rockets2
+ .addOrReplaceChild(
+ "bone24", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -0.2217F, 1.1043F,
+ 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -10.1912F));
+
+ PartDefinition octagon_r8 = bone24.addOrReplaceChild("octagon_r8",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r9 = bone24.addOrReplaceChild("octagon_r9",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r10 = bone24.addOrReplaceChild("octagon_r10",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r11 = bone24.addOrReplaceChild("octagon_r11",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r12 = bone24.addOrReplaceChild("octagon_r12",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r13 = bone24.addOrReplaceChild("octagon_r13",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r14 = bone24.addOrReplaceChild("octagon_r14",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone34 = Rockets2
+ .addOrReplaceChild(
+ "bone34", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, 0.3534F, 1.2662F,
+ 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -10.312F));
+
+ PartDefinition octagon_r15 = bone34.addOrReplaceChild("octagon_r15",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r16 = bone34.addOrReplaceChild("octagon_r16",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r17 = bone34.addOrReplaceChild("octagon_r17",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r18 = bone34.addOrReplaceChild("octagon_r18",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r19 = bone34.addOrReplaceChild("octagon_r19",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r20 = bone34.addOrReplaceChild("octagon_r20",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r21 = bone34.addOrReplaceChild("octagon_r21",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone26 = Rockets2
+ .addOrReplaceChild(
+ "bone26", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -1.5592F, 0.9276F,
+ 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -9.2513F));
+
+ PartDefinition octagon_r22 = bone26.addOrReplaceChild("octagon_r22",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r23 = bone26.addOrReplaceChild("octagon_r23",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r24 = bone26.addOrReplaceChild("octagon_r24",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r25 = bone26.addOrReplaceChild("octagon_r25",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r26 = bone26.addOrReplaceChild("octagon_r26",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r27 = bone26.addOrReplaceChild("octagon_r27",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r28 = bone26.addOrReplaceChild("octagon_r28",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone19 = Rockets2
+ .addOrReplaceChild(
+ "bone19", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, 0.9259F, 1.2943F,
+ 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -6.0195F));
+
+ PartDefinition octagon_r29 = bone19.addOrReplaceChild("octagon_r29",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r30 = bone19.addOrReplaceChild("octagon_r30",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r31 = bone19.addOrReplaceChild("octagon_r31",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r32 = bone19.addOrReplaceChild("octagon_r32",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r33 = bone19.addOrReplaceChild("octagon_r33",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r34 = bone19.addOrReplaceChild("octagon_r34",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r35 = bone19.addOrReplaceChild("octagon_r35",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone33 = bone19.addOrReplaceChild("bone33", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.6913F, -1.6689F, -2.4449F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0F, 0.0F, -1.0285F));
+
+ PartDefinition octagon_r36 = bone33.addOrReplaceChild("octagon_r36",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r37 = bone33.addOrReplaceChild("octagon_r37",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r38 = bone33.addOrReplaceChild("octagon_r38",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r39 = bone33.addOrReplaceChild("octagon_r39",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r40 = bone33.addOrReplaceChild("octagon_r40",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r41 = bone33.addOrReplaceChild("octagon_r41",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition octagon_r42 = bone33.addOrReplaceChild("octagon_r42",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition bone20 = Rockets2.addOrReplaceChild("bone20", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.3182F, -0.7683F, -1.2F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, 2.8992F));
+
+ PartDefinition octagon_r43 = bone20.addOrReplaceChild("octagon_r43",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r44 = bone20.addOrReplaceChild("octagon_r44",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r45 = bone20.addOrReplaceChild("octagon_r45",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r46 = bone20.addOrReplaceChild("octagon_r46",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r47 = bone20.addOrReplaceChild("octagon_r47",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r48 = bone20.addOrReplaceChild("octagon_r48",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r49 = bone20.addOrReplaceChild("octagon_r49",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone22 = Rockets2.addOrReplaceChild("bone22", CubeListBuilder.create(),
+ PartPose.offset(0.0268F, 0.0407F, 3.383F));
+
+ PartDefinition octagon_r50 = bone22.addOrReplaceChild("octagon_r50",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.3224F, -0.7931F, -0.5685F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r51 = bone22.addOrReplaceChild("octagon_r51",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.3224F, -0.7982F, -0.4228F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r52 = bone22.addOrReplaceChild("octagon_r52",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.0278F, -0.5846F, -0.5258F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -1.5708F));
+
+ PartDefinition octagon_r53 = bone22.addOrReplaceChild("octagon_r53",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.0278F, -0.6255F, -0.4008F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -1.5708F));
+
+ PartDefinition octagon_r54 = bone22.addOrReplaceChild("octagon_r54",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3482F, -0.6542F, -0.4296F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r55 = bone22.addOrReplaceChild("octagon_r55",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3482F, -0.6213F, -0.5081F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r56 = bone22.addOrReplaceChild("octagon_r56",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5852F, -0.8866F, -0.3801F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -3.1416F));
+
+ PartDefinition octagon_r57 = bone22.addOrReplaceChild("octagon_r57",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.5852F, -0.8626F, -0.6379F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r58 = bone22.addOrReplaceChild("octagon_r58",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.4137F, -0.1891F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, -0.7854F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r59 = bone22.addOrReplaceChild("octagon_r59",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.3149F, -0.6559F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, 0.4494F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r60 = bone22.addOrReplaceChild("octagon_r60",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.3282F, -0.6495F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, 0.4494F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r61 = bone22.addOrReplaceChild("octagon_r61",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.4242F, -0.1995F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, -0.7854F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r62 = bone22.addOrReplaceChild("octagon_r62",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.4137F, -0.1891F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, -0.7854F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r63 = bone22.addOrReplaceChild("octagon_r63",
+ CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.3149F, -0.6559F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, 0.4494F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r64 = bone22.addOrReplaceChild("octagon_r64",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.3282F, -0.6495F, 0.2221F, 0.4016F, 0.9842F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, 0.4494F, 0.0F, 0.0F));
+
+ PartDefinition octagon_r65 = bone22.addOrReplaceChild("octagon_r65",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.4242F, -0.1995F, 0.2221F, 0.3016F, 0.4099F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, -0.7854F, 0.0F, 0.0F));
+
+ PartDefinition bone21 = Rockets2
+ .addOrReplaceChild(
+ "bone21", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, 2.6961F));
+
+ PartDefinition octagon_r66 = bone21.addOrReplaceChild(
+ "octagon_r66", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r67 = bone21.addOrReplaceChild(
+ "octagon_r67", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r68 = bone21.addOrReplaceChild(
+ "octagon_r68", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r69 = bone21.addOrReplaceChild(
+ "octagon_r69", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r70 = bone21.addOrReplaceChild(
+ "octagon_r70", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r71 = bone21.addOrReplaceChild(
+ "octagon_r71", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r72 = bone21.addOrReplaceChild(
+ "octagon_r72", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F,
+ 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone18 = Rockets2
+ .addOrReplaceChild(
+ "bone18", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2378F, -0.6508F, -9.1073F, 0.5336F,
+ 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offset(-0.0021F, 0.0474F, 7.8333F));
+
+ PartDefinition octagon_r73 = bone18.addOrReplaceChild("octagon_r73",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r74 = bone18.addOrReplaceChild("octagon_r74",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r75 = bone18.addOrReplaceChild("octagon_r75",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r76 = bone18.addOrReplaceChild("octagon_r76",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r77 = bone18.addOrReplaceChild("octagon_r77",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r78 = bone18.addOrReplaceChild("octagon_r78",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r79 = bone18.addOrReplaceChild("octagon_r79",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone25 = Rockets2
+ .addOrReplaceChild(
+ "bone25", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 0.2985F, 0.6561F,
+ 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -12.411F));
+
+ PartDefinition octagon_r80 = bone25.addOrReplaceChild("octagon_r80",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r81 = bone25.addOrReplaceChild("octagon_r81",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r82 = bone25.addOrReplaceChild("octagon_r82",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r83 = bone25.addOrReplaceChild("octagon_r83",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r84 = bone25.addOrReplaceChild("octagon_r84",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r85 = bone25.addOrReplaceChild("octagon_r85",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r86 = bone25.addOrReplaceChild("octagon_r86",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone30 = Rockets2
+ .addOrReplaceChild(
+ "bone30", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, -3.9858F, 0.5905F,
+ 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -18.5853F));
+
+ PartDefinition octagon_r87 = bone30.addOrReplaceChild("octagon_r87",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r88 = bone30.addOrReplaceChild("octagon_r88",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r89 = bone30.addOrReplaceChild("octagon_r89",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r90 = bone30.addOrReplaceChild("octagon_r90",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r91 = bone30.addOrReplaceChild("octagon_r91",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r92 = bone30.addOrReplaceChild("octagon_r92",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r93 = bone30.addOrReplaceChild("octagon_r93",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone31 = Rockets2
+ .addOrReplaceChild(
+ "bone31", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 1.3934F, 0.5551F,
+ 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -25.0853F));
+
+ PartDefinition octagon_r94 = bone31.addOrReplaceChild("octagon_r94",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r95 = bone31.addOrReplaceChild("octagon_r95",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r96 = bone31.addOrReplaceChild("octagon_r96",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r97 = bone31.addOrReplaceChild("octagon_r97",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r98 = bone31.addOrReplaceChild("octagon_r98",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r99 = bone31.addOrReplaceChild("octagon_r99",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r100 = bone31.addOrReplaceChild("octagon_r100",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone32 = Rockets2
+ .addOrReplaceChild(
+ "bone32", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, -0.4736F, 0.5551F,
+ 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -24.5343F));
+
+ PartDefinition octagon_r101 = bone32.addOrReplaceChild("octagon_r101",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r102 = bone32.addOrReplaceChild("octagon_r102",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r103 = bone32.addOrReplaceChild("octagon_r103",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r104 = bone32.addOrReplaceChild("octagon_r104",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r105 = bone32.addOrReplaceChild("octagon_r105",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r106 = bone32.addOrReplaceChild("octagon_r106",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r107 = bone32.addOrReplaceChild("octagon_r107",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone29 = Rockets2
+ .addOrReplaceChild(
+ "bone29", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, -0.5789F, 0.5104F,
+ 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -12.2801F));
+
+ PartDefinition octagon_r108 = bone29.addOrReplaceChild("octagon_r108",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r109 = bone29.addOrReplaceChild("octagon_r109",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r110 = bone29.addOrReplaceChild("octagon_r110",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r111 = bone29.addOrReplaceChild("octagon_r111",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r112 = bone29.addOrReplaceChild("octagon_r112",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r113 = bone29.addOrReplaceChild("octagon_r113",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r114 = bone29.addOrReplaceChild("octagon_r114",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone28 = Rockets2
+ .addOrReplaceChild(
+ "bone28", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, -3.0583F, 0.7086F,
+ 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -19.1553F));
+
+ PartDefinition octagon_r115 = bone28.addOrReplaceChild("octagon_r115",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r116 = bone28.addOrReplaceChild("octagon_r116",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r117 = bone28.addOrReplaceChild("octagon_r117",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r118 = bone28.addOrReplaceChild("octagon_r118",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r119 = bone28.addOrReplaceChild("octagon_r119",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r120 = bone28.addOrReplaceChild("octagon_r120",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r121 = bone28.addOrReplaceChild("octagon_r121",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F,
+ new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -1.5708F));
+
+ PartDefinition bone27 = Rockets2.addOrReplaceChild("bone27", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, -4.8664F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -11.3624F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -13.0786F));
+
+ PartDefinition octagon_r122 = bone27.addOrReplaceChild("octagon_r122", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 0.7854F));
+
+ PartDefinition octagon_r123 = bone27.addOrReplaceChild("octagon_r123", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 2.3562F));
+
+ PartDefinition octagon_r124 = bone27.addOrReplaceChild("octagon_r124", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 1.5708F));
+
+ PartDefinition octagon_r125 = bone27.addOrReplaceChild("octagon_r125", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 3.1416F));
+
+ PartDefinition octagon_r126 = bone27.addOrReplaceChild("octagon_r126", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -2.3562F));
+
+ PartDefinition octagon_r127 = bone27.addOrReplaceChild("octagon_r127", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -0.7854F));
+
+ PartDefinition octagon_r128 = bone27.addOrReplaceChild("octagon_r128", CubeListBuilder.create().texOffs(0, 0)
+ .addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -1.5708F));
+
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ Rockets.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/mojmap-1.20.x/Modeltaser_rod.java b/models/mojmap-1.20.x/Modeltaser_rod.java
new file mode 100644
index 000000000..9724edede
--- /dev/null
+++ b/models/mojmap-1.20.x/Modeltaser_rod.java
@@ -0,0 +1,45 @@
+// Made with Blockbench 4.9.3
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+
+public class Modeltaser_rod extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(
+ new ResourceLocation("modid", "taser_rod"), "main");
+ private final ModelPart bone;
+
+ public Modeltaser_rod(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(),
+ PartPose.offset(0.0F, 24.0F, 0.0F));
+
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(0, 4)
+ .addBox(-0.5F, -27.0F, -2.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-1.0F, -23.0F, -7.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-1.0F, -23.0F, -3.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 4)
+ .addBox(-0.5F, -27.0F, -6.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F));
+
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw,
+ float headPitch) {
+
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay,
+ float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
\ No newline at end of file
diff --git a/models/pad.json b/models/pad.json
new file mode 100644
index 000000000..ced6e1181
--- /dev/null
+++ b/models/pad.json
@@ -0,0 +1,122 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [64, 64],
+ "textures": {
+ "0": "target:blocks/pad",
+ "particle": "target:blocks/pad"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [16, 3, 16],
+ "faces": {
+ "north": {"uv": [4, 7, 8, 7.75], "texture": "#0"},
+ "east": {"uv": [7.5, 0, 11.5, 0.75], "texture": "#0"},
+ "south": {"uv": [7.5, 0.75, 11.5, 1.5], "texture": "#0"},
+ "west": {"uv": [7.5, 1.5, 11.5, 2.25], "texture": "#0"},
+ "up": {"uv": [4, 4, 0, 0], "texture": "#0"},
+ "down": {"uv": [4, 4, 0, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [14, -0.1, 14],
+ "to": [16.25, 3.25, 16.25],
+ "faces": {
+ "north": {"uv": [7.5, 3.25, 8.0625, 4.0625], "texture": "#0"},
+ "east": {"uv": [7.5, 4.25, 8.0625, 5.0625], "texture": "#0"},
+ "south": {"uv": [7.5, 5.25, 8.0625, 6.0625], "texture": "#0"},
+ "west": {"uv": [4, 7.75, 4.5625, 8.5625], "texture": "#0"},
+ "up": {"uv": [8.8125, 4.8125, 8.25, 4.25], "texture": "#0"},
+ "down": {"uv": [8.8125, 5, 8.25, 5.5625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [-0.25, -0.1, 14],
+ "to": [2, 3.25, 16.25],
+ "faces": {
+ "north": {"uv": [4.75, 7.75, 5.3125, 8.5625], "texture": "#0"},
+ "east": {"uv": [5.5, 7.75, 6.0625, 8.5625], "texture": "#0"},
+ "south": {"uv": [6.25, 7.75, 6.8125, 8.5625], "texture": "#0"},
+ "west": {"uv": [7, 7.75, 7.5625, 8.5625], "texture": "#0"},
+ "up": {"uv": [9.0625, 7.8125, 8.5, 7.25], "texture": "#0"},
+ "down": {"uv": [9.0625, 8, 8.5, 8.5625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [-0.25, -0.1, -0.25],
+ "to": [2, 3.25, 2],
+ "faces": {
+ "north": {"uv": [7.75, 7.75, 8.3125, 8.5625], "texture": "#0"},
+ "east": {"uv": [0, 8, 0.5625, 8.8125], "texture": "#0"},
+ "south": {"uv": [0.75, 8, 1.3125, 8.8125], "texture": "#0"},
+ "west": {"uv": [1.5, 8, 2.0625, 8.8125], "texture": "#0"},
+ "up": {"uv": [4.3125, 9.3125, 3.75, 8.75], "texture": "#0"},
+ "down": {"uv": [5.0625, 8.75, 4.5, 9.3125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [14, -0.1, -0.25],
+ "to": [16.25, 3.25, 2],
+ "faces": {
+ "north": {"uv": [2.25, 8, 2.8125, 8.8125], "texture": "#0"},
+ "east": {"uv": [3, 8, 3.5625, 8.8125], "texture": "#0"},
+ "south": {"uv": [8, 6.25, 8.5625, 7.0625], "texture": "#0"},
+ "west": {"uv": [8.25, 3.25, 8.8125, 4.0625], "texture": "#0"},
+ "up": {"uv": [5.8125, 9.3125, 5.25, 8.75], "texture": "#0"},
+ "down": {"uv": [9.3125, 5.75, 8.75, 6.3125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [1, 3, 1],
+ "to": [15, 4, 15],
+ "faces": {
+ "north": {"uv": [7.5, 2.25, 11, 2.5], "texture": "#0"},
+ "east": {"uv": [7.5, 2.5, 11, 2.75], "texture": "#0"},
+ "south": {"uv": [7.5, 2.75, 11, 3], "texture": "#0"},
+ "west": {"uv": [7.5, 3, 11, 3.25], "texture": "#0"},
+ "up": {"uv": [7.5, 3.5, 4, 0], "texture": "#0"},
+ "down": {"uv": [7.5, 3.5, 4, 7], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [90, 0, 0],
+ "translation": [0.25, 2.75, 3],
+ "scale": [0.4, 0.4, 0.4]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [90, 0, 0],
+ "translation": [0.25, 2.75, 3],
+ "scale": [0.4, 0.4, 0.4]
+ },
+ "firstperson_righthand": {
+ "rotation": [71.5, -21, 0],
+ "translation": [-1, 1.5, 3.75],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "firstperson_lefthand": {
+ "rotation": [71.5, -21, 0],
+ "translation": [-1, 1.5, 3.75],
+ "scale": [0.7, 0.7, 0.7]
+ },
+ "ground": {
+ "translation": [0, 0.5, 0],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "gui": {
+ "rotation": [45, -45, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.68, 0.68, 0.68]
+ },
+ "head": {
+ "rotation": [0, 180, 0],
+ "translation": [0, 11, 0]
+ },
+ "fixed": {
+ "rotation": [-90, 90, 0],
+ "translation": [0, 0, -5]
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/pad.json.textures b/models/pad.json.textures
new file mode 100644
index 000000000..86c40ea1a
--- /dev/null
+++ b/models/pad.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "pad"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/rifleammobox.json b/models/rifleammobox.json
new file mode 100644
index 000000000..96b8fc962
--- /dev/null
+++ b/models/rifleammobox.json
@@ -0,0 +1,1046 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "rifleammobox",
+ "particle": "rifleammobox"
+ },
+ "elements": [
+ {
+ "from": [5.43541, 9.18293, 6.19305],
+ "to": [5.65867, 9.72127, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4, 10.625, 4.25], "texture": "#0"},
+ "east": {"uv": [5, 6.5, 5.875, 6.75], "texture": "#0"},
+ "south": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 9, 3.875, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [2.125, 9.5, 2, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 9.34072, 6.19305],
+ "to": [5.81599, 9.56397, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5, 10.75, 5.125], "texture": "#0"},
+ "east": {"uv": [9.5, 3.5, 10.375, 3.625], "texture": "#0"},
+ "south": {"uv": [5.5, 10.5, 5.75, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 4, 10.375, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9.875, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 9.18285, 6.19305],
+ "to": [5.65877, 9.72119, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5.5, 10.625, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 5, 9.875, 5.25], "texture": "#0"},
+ "south": {"uv": [6, 10.5, 6.125, 10.75], "texture": "#0"},
+ "west": {"uv": [5.5, 9, 6.375, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 10.375, 3.5, 9.5], "texture": "#0"},
+ "down": {"uv": [5.625, 9.5, 5.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 9.3408, 6.19305],
+ "to": [5.81589, 9.56405, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4.5, 10.75, 4.625], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.25, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 3, 10.375, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3.875, 9, 3], "texture": "#0"},
+ "down": {"uv": [4.25, 9, 4, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45223, 9.22326, 8.05633],
+ "to": [5.642, 9.68085, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 10.5, 8.625, 10.75], "texture": "#0"},
+ "east": {"uv": [10, 5, 10.375, 5.25], "texture": "#0"},
+ "south": {"uv": [9, 10.5, 9.125, 10.75], "texture": "#0"},
+ "west": {"uv": [10, 9.5, 10.375, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.875, 10.5, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 10.5, 4, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31805, 9.35745, 8.05633],
+ "to": [5.77564, 9.54722, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7.5, 10.75, 7.625], "texture": "#0"},
+ "east": {"uv": [10.5, 3, 10.875, 3.125], "texture": "#0"},
+ "south": {"uv": [8, 10.5, 8.25, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10.5, 3.875, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.875, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 10, 5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31796, 9.35752, 8.05633],
+ "to": [5.77555, 9.54728, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7, 10.75, 7.125], "texture": "#0"},
+ "east": {"uv": [2, 10.5, 2.375, 10.625], "texture": "#0"},
+ "south": {"uv": [7.5, 10.5, 7.75, 10.625], "texture": "#0"},
+ "west": {"uv": [3, 10.5, 3.375, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10.375, 4, 10], "texture": "#0"},
+ "down": {"uv": [4.75, 10, 4.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45215, 9.22333, 8.05633],
+ "to": [5.64191, 9.68092, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [6.5, 10.5, 6.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 4.5, 9.875, 4.75], "texture": "#0"},
+ "south": {"uv": [7, 10.5, 7.125, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.375, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10.375, 10, 10], "texture": "#0"},
+ "down": {"uv": [1.625, 10.5, 1.5, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.55215, 9.22333, 8.05633],
+ "to": [6.74191, 9.68092, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [6.5, 10.5, 6.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 4.5, 9.875, 4.75], "texture": "#0"},
+ "south": {"uv": [7, 10.5, 7.125, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.375, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10.375, 10, 10], "texture": "#0"},
+ "down": {"uv": [1.625, 10.5, 1.5, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.41796, 9.35752, 8.05633],
+ "to": [6.87555, 9.54728, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7, 10.75, 7.125], "texture": "#0"},
+ "east": {"uv": [2, 10.5, 2.375, 10.625], "texture": "#0"},
+ "south": {"uv": [7.5, 10.5, 7.75, 10.625], "texture": "#0"},
+ "west": {"uv": [3, 10.5, 3.375, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10.375, 4, 10], "texture": "#0"},
+ "down": {"uv": [4.75, 10, 4.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.41805, 9.35745, 8.05633],
+ "to": [6.87564, 9.54722, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7.5, 10.75, 7.625], "texture": "#0"},
+ "east": {"uv": [10.5, 3, 10.875, 3.125], "texture": "#0"},
+ "south": {"uv": [8, 10.5, 8.25, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10.5, 3.875, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.875, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 10, 5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.55223, 9.22326, 8.05633],
+ "to": [6.742, 9.68085, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 10.5, 8.625, 10.75], "texture": "#0"},
+ "east": {"uv": [10, 5, 10.375, 5.25], "texture": "#0"},
+ "south": {"uv": [9, 10.5, 9.125, 10.75], "texture": "#0"},
+ "west": {"uv": [10, 9.5, 10.375, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.875, 10.5, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 10.5, 4, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37754, 9.3408, 6.19305],
+ "to": [6.91589, 9.56405, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4.5, 10.75, 4.625], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.25, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 3, 10.375, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3.875, 9, 3], "texture": "#0"},
+ "down": {"uv": [4.25, 9, 4, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53551, 9.18285, 6.19305],
+ "to": [6.75877, 9.72119, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5.5, 10.625, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 5, 9.875, 5.25], "texture": "#0"},
+ "south": {"uv": [6, 10.5, 6.125, 10.75], "texture": "#0"},
+ "west": {"uv": [5.5, 9, 6.375, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 10.375, 3.5, 9.5], "texture": "#0"},
+ "down": {"uv": [5.625, 9.5, 5.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37764, 9.34072, 6.19305],
+ "to": [6.91599, 9.56397, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5, 10.75, 5.125], "texture": "#0"},
+ "east": {"uv": [9.5, 3.5, 10.375, 3.625], "texture": "#0"},
+ "south": {"uv": [5.5, 10.5, 5.75, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 4, 10.375, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9.875, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53541, 9.18293, 6.19305],
+ "to": [6.75867, 9.72127, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4, 10.625, 4.25], "texture": "#0"},
+ "east": {"uv": [5, 6.5, 5.875, 6.75], "texture": "#0"},
+ "south": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 9, 3.875, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [2.125, 9.5, 2, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43541, 8.63293, 7.01398],
+ "to": [5.65867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "east": {"uv": [5.875, 6.5, 5, 6.75], "texture": "#0"},
+ "south": {"uv": [10.625, 4, 10.5, 4.25], "texture": "#0"},
+ "west": {"uv": [3.875, 9, 3, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [2.125, 10.375, 2, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.79072, 7.01398],
+ "to": [5.81599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.75, 10.5, 5.5, 10.625], "texture": "#0"},
+ "east": {"uv": [10.375, 3.5, 9.5, 3.625], "texture": "#0"},
+ "south": {"uv": [10.75, 5, 10.5, 5.125], "texture": "#0"},
+ "west": {"uv": [10.375, 4, 9.5, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9, 4.5, 9.875], "texture": "#0"},
+ "down": {"uv": [5.25, 9.875, 5, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.63285, 7.01398],
+ "to": [5.65877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [6.125, 10.5, 6, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 5, 9, 5.25], "texture": "#0"},
+ "south": {"uv": [10.625, 5.5, 10.5, 5.75], "texture": "#0"},
+ "west": {"uv": [6.375, 9, 5.5, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 9.5, 3.5, 10.375], "texture": "#0"},
+ "down": {"uv": [5.625, 10.375, 5.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.7908, 7.01398],
+ "to": [5.81589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.25, 10.5, 5, 10.625], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.75, 4.5, 10.5, 4.625], "texture": "#0"},
+ "west": {"uv": [10.375, 3, 9.5, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3, 9, 3.875], "texture": "#0"},
+ "down": {"uv": [4.25, 9.875, 4, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45223, 8.67326, 6.19398],
+ "to": [5.642, 9.13085, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [9.125, 10.5, 9, 10.75], "texture": "#0"},
+ "east": {"uv": [10.375, 5, 10, 5.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10.5, 8.5, 10.75], "texture": "#0"},
+ "west": {"uv": [10.375, 9.5, 10, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.5, 10.5, 3.875], "texture": "#0"},
+ "down": {"uv": [4.125, 10.875, 4, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31805, 8.80745, 6.19398],
+ "to": [5.77564, 8.99722, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8.25, 10.5, 8, 10.625], "texture": "#0"},
+ "east": {"uv": [10.875, 3, 10.5, 3.125], "texture": "#0"},
+ "south": {"uv": [10.75, 7.5, 10.5, 7.625], "texture": "#0"},
+ "west": {"uv": [3.875, 10.5, 3.5, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.5, 10, 4.875], "texture": "#0"},
+ "down": {"uv": [5.25, 10.375, 5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.31796, 8.80752, 6.19398],
+ "to": [5.77555, 8.99728, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.75, 10.5, 7.5, 10.625], "texture": "#0"},
+ "east": {"uv": [2.375, 10.5, 2, 10.625], "texture": "#0"},
+ "south": {"uv": [10.75, 7, 10.5, 7.125], "texture": "#0"},
+ "west": {"uv": [3.375, 10.5, 3, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10, 4, 10.375], "texture": "#0"},
+ "down": {"uv": [4.75, 10.375, 4.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45215, 8.67333, 6.19398],
+ "to": [5.64191, 9.13092, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.125, 10.5, 7, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 4.5, 9.5, 4.75], "texture": "#0"},
+ "south": {"uv": [6.625, 10.5, 6.5, 10.75], "texture": "#0"},
+ "west": {"uv": [3.375, 10, 3, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10, 10, 10.375], "texture": "#0"},
+ "down": {"uv": [1.625, 10.875, 1.5, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.55215, 8.67333, 6.19398],
+ "to": [6.74191, 9.13092, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.125, 10.5, 7, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 4.5, 9.5, 4.75], "texture": "#0"},
+ "south": {"uv": [6.625, 10.5, 6.5, 10.75], "texture": "#0"},
+ "west": {"uv": [3.375, 10, 3, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10, 10, 10.375], "texture": "#0"},
+ "down": {"uv": [1.625, 10.875, 1.5, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.41796, 8.80752, 6.19398],
+ "to": [6.87555, 8.99728, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.75, 10.5, 7.5, 10.625], "texture": "#0"},
+ "east": {"uv": [2.375, 10.5, 2, 10.625], "texture": "#0"},
+ "south": {"uv": [10.75, 7, 10.5, 7.125], "texture": "#0"},
+ "west": {"uv": [3.375, 10.5, 3, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10, 4, 10.375], "texture": "#0"},
+ "down": {"uv": [4.75, 10.375, 4.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.41805, 8.80745, 6.19398],
+ "to": [6.87564, 8.99722, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8.25, 10.5, 8, 10.625], "texture": "#0"},
+ "east": {"uv": [10.875, 3, 10.5, 3.125], "texture": "#0"},
+ "south": {"uv": [10.75, 7.5, 10.5, 7.625], "texture": "#0"},
+ "west": {"uv": [3.875, 10.5, 3.5, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.5, 10, 4.875], "texture": "#0"},
+ "down": {"uv": [5.25, 10.375, 5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.55223, 8.67326, 6.19398],
+ "to": [6.742, 9.13085, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [9.125, 10.5, 9, 10.75], "texture": "#0"},
+ "east": {"uv": [10.375, 5, 10, 5.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10.5, 8.5, 10.75], "texture": "#0"},
+ "west": {"uv": [10.375, 9.5, 10, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.5, 10.5, 3.875], "texture": "#0"},
+ "down": {"uv": [4.125, 10.875, 4, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37754, 8.7908, 7.01398],
+ "to": [6.91589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.25, 10.5, 5, 10.625], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.75, 4.5, 10.5, 4.625], "texture": "#0"},
+ "west": {"uv": [10.375, 3, 9.5, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3, 9, 3.875], "texture": "#0"},
+ "down": {"uv": [4.25, 9.875, 4, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53551, 8.63285, 7.01398],
+ "to": [6.75877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [6.125, 10.5, 6, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 5, 9, 5.25], "texture": "#0"},
+ "south": {"uv": [10.625, 5.5, 10.5, 5.75], "texture": "#0"},
+ "west": {"uv": [6.375, 9, 5.5, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 9.5, 3.5, 10.375], "texture": "#0"},
+ "down": {"uv": [5.625, 10.375, 5.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37764, 8.79072, 7.01398],
+ "to": [6.91599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.75, 10.5, 5.5, 10.625], "texture": "#0"},
+ "east": {"uv": [10.375, 3.5, 9.5, 3.625], "texture": "#0"},
+ "south": {"uv": [10.75, 5, 10.5, 5.125], "texture": "#0"},
+ "west": {"uv": [10.375, 4, 9.5, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9, 4.5, 9.875], "texture": "#0"},
+ "down": {"uv": [5.25, 9.875, 5, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53541, 8.63293, 7.01398],
+ "to": [6.75867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "east": {"uv": [5.875, 6.5, 5, 6.75], "texture": "#0"},
+ "south": {"uv": [10.625, 4, 10.5, 4.25], "texture": "#0"},
+ "west": {"uv": [3.875, 9, 3, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [2.125, 10.375, 2, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98541, 9.18293, 6.19305],
+ "to": [6.20867, 9.72127, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4, 10.625, 4.25], "texture": "#0"},
+ "east": {"uv": [5, 6.5, 5.875, 6.75], "texture": "#0"},
+ "south": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 9, 3.875, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [2.125, 9.5, 2, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82754, 9.3408, 6.19305],
+ "to": [6.36589, 9.56405, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4.5, 10.75, 4.625], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.25, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 3, 10.375, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3.875, 9, 3], "texture": "#0"},
+ "down": {"uv": [4.25, 9, 4, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82764, 9.34072, 6.19305],
+ "to": [6.36599, 9.56397, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5, 10.75, 5.125], "texture": "#0"},
+ "east": {"uv": [9.5, 3.5, 10.375, 3.625], "texture": "#0"},
+ "south": {"uv": [5.5, 10.5, 5.75, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 4, 10.375, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9.875, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98551, 9.18285, 6.19305],
+ "to": [6.20877, 9.72119, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5.5, 10.625, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 5, 9.875, 5.25], "texture": "#0"},
+ "south": {"uv": [6, 10.5, 6.125, 10.75], "texture": "#0"},
+ "west": {"uv": [5.5, 9, 6.375, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 10.375, 3.5, 9.5], "texture": "#0"},
+ "down": {"uv": [5.625, 9.5, 5.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.00215, 9.22333, 8.05633],
+ "to": [6.19191, 9.68092, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [6.5, 10.5, 6.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 4.5, 9.875, 4.75], "texture": "#0"},
+ "south": {"uv": [7, 10.5, 7.125, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.375, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10.375, 10, 10], "texture": "#0"},
+ "down": {"uv": [1.625, 10.5, 1.5, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.86796, 9.35752, 8.05633],
+ "to": [6.32555, 9.54728, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7, 10.75, 7.125], "texture": "#0"},
+ "east": {"uv": [2, 10.5, 2.375, 10.625], "texture": "#0"},
+ "south": {"uv": [7.5, 10.5, 7.75, 10.625], "texture": "#0"},
+ "west": {"uv": [3, 10.5, 3.375, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10.375, 4, 10], "texture": "#0"},
+ "down": {"uv": [4.75, 10, 4.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.86805, 9.35745, 8.05633],
+ "to": [6.32564, 9.54722, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7.5, 10.75, 7.625], "texture": "#0"},
+ "east": {"uv": [10.5, 3, 10.875, 3.125], "texture": "#0"},
+ "south": {"uv": [8, 10.5, 8.25, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10.5, 3.875, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.875, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 10, 5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.00223, 9.22326, 8.05633],
+ "to": [6.192, 9.68085, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 10.5, 8.625, 10.75], "texture": "#0"},
+ "east": {"uv": [10, 5, 10.375, 5.25], "texture": "#0"},
+ "south": {"uv": [9, 10.5, 9.125, 10.75], "texture": "#0"},
+ "west": {"uv": [10, 9.5, 10.375, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.875, 10.5, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 10.5, 4, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.10223, 9.22326, 8.05633],
+ "to": [7.292, 9.68085, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [8.5, 10.5, 8.625, 10.75], "texture": "#0"},
+ "east": {"uv": [10, 5, 10.375, 5.25], "texture": "#0"},
+ "south": {"uv": [9, 10.5, 9.125, 10.75], "texture": "#0"},
+ "west": {"uv": [10, 9.5, 10.375, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.875, 10.5, 3.5], "texture": "#0"},
+ "down": {"uv": [4.125, 10.5, 4, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.96805, 9.35745, 8.05633],
+ "to": [7.42564, 9.54722, 8.87633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7.5, 10.75, 7.625], "texture": "#0"},
+ "east": {"uv": [10.5, 3, 10.875, 3.125], "texture": "#0"},
+ "south": {"uv": [8, 10.5, 8.25, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10.5, 3.875, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.875, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 10, 5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.96796, 9.35752, 8.05633],
+ "to": [7.42555, 9.54728, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 7, 10.75, 7.125], "texture": "#0"},
+ "east": {"uv": [2, 10.5, 2.375, 10.625], "texture": "#0"},
+ "south": {"uv": [7.5, 10.5, 7.75, 10.625], "texture": "#0"},
+ "west": {"uv": [3, 10.5, 3.375, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10.375, 4, 10], "texture": "#0"},
+ "down": {"uv": [4.75, 10, 4.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.10215, 9.22333, 8.05633],
+ "to": [7.29191, 9.68092, 8.87633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [6.5, 10.5, 6.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 4.5, 9.875, 4.75], "texture": "#0"},
+ "south": {"uv": [7, 10.5, 7.125, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.375, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10.375, 10, 10], "texture": "#0"},
+ "down": {"uv": [1.625, 10.5, 1.5, 10.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08551, 9.18285, 6.19305],
+ "to": [7.30877, 9.72119, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5.5, 10.625, 5.75], "texture": "#0"},
+ "east": {"uv": [9, 5, 9.875, 5.25], "texture": "#0"},
+ "south": {"uv": [6, 10.5, 6.125, 10.75], "texture": "#0"},
+ "west": {"uv": [5.5, 9, 6.375, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 10.375, 3.5, 9.5], "texture": "#0"},
+ "down": {"uv": [5.625, 9.5, 5.5, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92764, 9.34072, 6.19305],
+ "to": [7.46599, 9.56397, 8.05633],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 5, 10.75, 5.125], "texture": "#0"},
+ "east": {"uv": [9.5, 3.5, 10.375, 3.625], "texture": "#0"},
+ "south": {"uv": [5.5, 10.5, 5.75, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 4, 10.375, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9.875, 4.5, 9], "texture": "#0"},
+ "down": {"uv": [5.25, 9, 5, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92754, 9.3408, 6.19305],
+ "to": [7.46589, 9.56405, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4.5, 10.75, 4.625], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.25, 10.625], "texture": "#0"},
+ "west": {"uv": [9.5, 3, 10.375, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3.875, 9, 3], "texture": "#0"},
+ "down": {"uv": [4.25, 9, 4, 9.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08541, 9.18293, 6.19305],
+ "to": [7.30867, 9.72127, 8.05633],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 9.45226, 7.62386]},
+ "faces": {
+ "north": {"uv": [10.5, 4, 10.625, 4.25], "texture": "#0"},
+ "east": {"uv": [5, 6.5, 5.875, 6.75], "texture": "#0"},
+ "south": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "west": {"uv": [3, 9, 3.875, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [2.125, 9.5, 2, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98541, 8.63293, 7.01398],
+ "to": [6.20867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "east": {"uv": [5.875, 6.5, 5, 6.75], "texture": "#0"},
+ "south": {"uv": [10.625, 4, 10.5, 4.25], "texture": "#0"},
+ "west": {"uv": [3.875, 9, 3, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [2.125, 10.375, 2, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82754, 8.7908, 7.01398],
+ "to": [6.36589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.25, 10.5, 5, 10.625], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.75, 4.5, 10.5, 4.625], "texture": "#0"},
+ "west": {"uv": [10.375, 3, 9.5, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3, 9, 3.875], "texture": "#0"},
+ "down": {"uv": [4.25, 9.875, 4, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82764, 8.79072, 7.01398],
+ "to": [6.36599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.75, 10.5, 5.5, 10.625], "texture": "#0"},
+ "east": {"uv": [10.375, 3.5, 9.5, 3.625], "texture": "#0"},
+ "south": {"uv": [10.75, 5, 10.5, 5.125], "texture": "#0"},
+ "west": {"uv": [10.375, 4, 9.5, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9, 4.5, 9.875], "texture": "#0"},
+ "down": {"uv": [5.25, 9.875, 5, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98551, 8.63285, 7.01398],
+ "to": [6.20877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [6.125, 10.5, 6, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 5, 9, 5.25], "texture": "#0"},
+ "south": {"uv": [10.625, 5.5, 10.5, 5.75], "texture": "#0"},
+ "west": {"uv": [6.375, 9, 5.5, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 9.5, 3.5, 10.375], "texture": "#0"},
+ "down": {"uv": [5.625, 10.375, 5.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.00215, 8.67333, 6.19398],
+ "to": [6.19191, 9.13092, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.125, 10.5, 7, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 4.5, 9.5, 4.75], "texture": "#0"},
+ "south": {"uv": [6.625, 10.5, 6.5, 10.75], "texture": "#0"},
+ "west": {"uv": [3.375, 10, 3, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10, 10, 10.375], "texture": "#0"},
+ "down": {"uv": [1.625, 10.875, 1.5, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.86796, 8.80752, 6.19398],
+ "to": [6.32555, 8.99728, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.75, 10.5, 7.5, 10.625], "texture": "#0"},
+ "east": {"uv": [2.375, 10.5, 2, 10.625], "texture": "#0"},
+ "south": {"uv": [10.75, 7, 10.5, 7.125], "texture": "#0"},
+ "west": {"uv": [3.375, 10.5, 3, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10, 4, 10.375], "texture": "#0"},
+ "down": {"uv": [4.75, 10.375, 4.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.86805, 8.80745, 6.19398],
+ "to": [6.32564, 8.99722, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8.25, 10.5, 8, 10.625], "texture": "#0"},
+ "east": {"uv": [10.875, 3, 10.5, 3.125], "texture": "#0"},
+ "south": {"uv": [10.75, 7.5, 10.5, 7.625], "texture": "#0"},
+ "west": {"uv": [3.875, 10.5, 3.5, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.5, 10, 4.875], "texture": "#0"},
+ "down": {"uv": [5.25, 10.375, 5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.00223, 8.67326, 6.19398],
+ "to": [6.192, 9.13085, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [9.125, 10.5, 9, 10.75], "texture": "#0"},
+ "east": {"uv": [10.375, 5, 10, 5.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10.5, 8.5, 10.75], "texture": "#0"},
+ "west": {"uv": [10.375, 9.5, 10, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.5, 10.5, 3.875], "texture": "#0"},
+ "down": {"uv": [4.125, 10.875, 4, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.10223, 8.67326, 6.19398],
+ "to": [7.292, 9.13085, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [9.125, 10.5, 9, 10.75], "texture": "#0"},
+ "east": {"uv": [10.375, 5, 10, 5.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10.5, 8.5, 10.75], "texture": "#0"},
+ "west": {"uv": [10.375, 9.5, 10, 9.75], "texture": "#0"},
+ "up": {"uv": [10.625, 3.5, 10.5, 3.875], "texture": "#0"},
+ "down": {"uv": [4.125, 10.875, 4, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.96805, 8.80745, 6.19398],
+ "to": [7.42564, 8.99722, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8.25, 10.5, 8, 10.625], "texture": "#0"},
+ "east": {"uv": [10.875, 3, 10.5, 3.125], "texture": "#0"},
+ "south": {"uv": [10.75, 7.5, 10.5, 7.625], "texture": "#0"},
+ "west": {"uv": [3.875, 10.5, 3.5, 10.625], "texture": "#0"},
+ "up": {"uv": [10.25, 4.5, 10, 4.875], "texture": "#0"},
+ "down": {"uv": [5.25, 10.375, 5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.96796, 8.80752, 6.19398],
+ "to": [7.42555, 8.99728, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.75, 10.5, 7.5, 10.625], "texture": "#0"},
+ "east": {"uv": [2.375, 10.5, 2, 10.625], "texture": "#0"},
+ "south": {"uv": [10.75, 7, 10.5, 7.125], "texture": "#0"},
+ "west": {"uv": [3.375, 10.5, 3, 10.625], "texture": "#0"},
+ "up": {"uv": [4.25, 10, 4, 10.375], "texture": "#0"},
+ "down": {"uv": [4.75, 10.375, 4.5, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.10215, 8.67333, 6.19398],
+ "to": [7.29191, 9.13092, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.125, 10.5, 7, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 4.5, 9.5, 4.75], "texture": "#0"},
+ "south": {"uv": [6.625, 10.5, 6.5, 10.75], "texture": "#0"},
+ "west": {"uv": [3.375, 10, 3, 10.25], "texture": "#0"},
+ "up": {"uv": [10.125, 10, 10, 10.375], "texture": "#0"},
+ "down": {"uv": [1.625, 10.875, 1.5, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08551, 8.63285, 7.01398],
+ "to": [7.30877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [6.125, 10.5, 6, 10.75], "texture": "#0"},
+ "east": {"uv": [9.875, 5, 9, 5.25], "texture": "#0"},
+ "south": {"uv": [10.625, 5.5, 10.5, 5.75], "texture": "#0"},
+ "west": {"uv": [6.375, 9, 5.5, 9.25], "texture": "#0"},
+ "up": {"uv": [3.625, 9.5, 3.5, 10.375], "texture": "#0"},
+ "down": {"uv": [5.625, 10.375, 5.5, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92764, 8.79072, 7.01398],
+ "to": [7.46599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.75, 10.5, 5.5, 10.625], "texture": "#0"},
+ "east": {"uv": [10.375, 3.5, 9.5, 3.625], "texture": "#0"},
+ "south": {"uv": [10.75, 5, 10.5, 5.125], "texture": "#0"},
+ "west": {"uv": [10.375, 4, 9.5, 4.125], "texture": "#0"},
+ "up": {"uv": [4.75, 9, 4.5, 9.875], "texture": "#0"},
+ "down": {"uv": [5.25, 9.875, 5, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92754, 8.7908, 7.01398],
+ "to": [7.46589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [5.25, 10.5, 5, 10.625], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.75, 4.5, 10.5, 4.625], "texture": "#0"},
+ "west": {"uv": [10.375, 3, 9.5, 3.125], "texture": "#0"},
+ "up": {"uv": [9.25, 3, 9, 3.875], "texture": "#0"},
+ "down": {"uv": [4.25, 9.875, 4, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08541, 8.63293, 7.01398],
+ "to": [7.30867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "east": {"uv": [5.875, 6.5, 5, 6.75], "texture": "#0"},
+ "south": {"uv": [10.625, 4, 10.5, 4.25], "texture": "#0"},
+ "west": {"uv": [3.875, 9, 3, 9.25], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [2.125, 10.375, 2, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 6],
+ "to": [12.95, 8, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [5.5, 8, 8.375, 8.125], "texture": "#0"},
+ "east": {"uv": [9, 5.5, 10.5, 5.625], "texture": "#0"},
+ "south": {"uv": [8, 6, 10.875, 6.125], "texture": "#0"},
+ "west": {"uv": [6.5, 9, 8, 9.125], "texture": "#0"},
+ "up": {"uv": [2.875, 1.5, 0, 0], "texture": "#0"},
+ "down": {"uv": [2.875, 1.5, 0, 3], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 9.05],
+ "to": [12.95, 9.75, 9.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 4.5, 2.875, 5.375], "texture": "#0"},
+ "east": {"uv": [6, 9.5, 6.125, 10.375], "texture": "#0"},
+ "south": {"uv": [3, 4.5, 5.875, 5.375], "texture": "#0"},
+ "west": {"uv": [6.5, 9.5, 6.625, 10.375], "texture": "#0"},
+ "up": {"uv": [10.875, 6.625, 8, 6.5], "texture": "#0"},
+ "down": {"uv": [2.875, 8.5, 0, 8.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 5.95],
+ "to": [12.95, 9.75, 6],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8.7]},
+ "faces": {
+ "north": {"uv": [0, 5.5, 2.875, 6.375], "texture": "#0"},
+ "east": {"uv": [7, 9.5, 7.125, 10.375], "texture": "#0"},
+ "south": {"uv": [3, 5.5, 5.875, 6.375], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.625, 10.375], "texture": "#0"},
+ "up": {"uv": [8.375, 8.625, 5.5, 8.5], "texture": "#0"},
+ "down": {"uv": [11.375, 8, 8.5, 8.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 9.7, 6],
+ "to": [12.95, 9.75, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 7.65, 8]},
+ "faces": {
+ "north": {"uv": [8.5, 8.5, 11.375, 8.625], "texture": "#0"},
+ "east": {"uv": [9, 7, 10.5, 7.125], "texture": "#0"},
+ "south": {"uv": [0, 9, 2.875, 9.125], "texture": "#0"},
+ "west": {"uv": [9, 7.5, 10.5, 7.625], "texture": "#0"},
+ "up": {"uv": [2.875, 4.5, 0, 3], "texture": "#0"},
+ "down": {"uv": [5.875, 0, 3, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [11.25, 8, 6],
+ "to": [12.95, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4.5, 8, 5.375, 8.875], "texture": "#0"},
+ "east": {"uv": [0, 6.5, 1.5, 7.375], "texture": "#0"},
+ "south": {"uv": [8, 5, 8.875, 5.875], "texture": "#0"},
+ "west": {"uv": [1.5, 6.5, 3, 7.375], "texture": "#0"},
+ "up": {"uv": [3.875, 8, 3, 6.5], "texture": "#0"},
+ "down": {"uv": [4.875, 6.5, 4, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 6.1],
+ "to": [10.9, 8.1, 8.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [9, 0, 11.875, 0.125], "texture": "#0"},
+ "east": {"uv": [9, 9, 10.375, 9.125], "texture": "#0"},
+ "south": {"uv": [9, 0.5, 11.875, 0.625], "texture": "#0"},
+ "west": {"uv": [0, 9.5, 1.375, 9.625], "texture": "#0"},
+ "up": {"uv": [5.875, 2.875, 3, 1.5], "texture": "#0"},
+ "down": {"uv": [5.875, 3, 3, 4.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 8.1, 6.1],
+ "to": [10.9, 9.7, 8.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [5, 7, 6.75, 7.75], "texture": "#0"},
+ "east": {"uv": [3, 8, 4.375, 8.75], "texture": "#0"},
+ "south": {"uv": [7, 7, 8.75, 7.75], "texture": "#0"},
+ "west": {"uv": [8, 4, 9.375, 4.75], "texture": "#0"},
+ "up": {"uv": [7.75, 5.375, 6, 4], "texture": "#0"},
+ "down": {"uv": [7.75, 5.5, 6, 6.875], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.15, 8, 6],
+ "to": [5.25, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [9, 9.5, 9.125, 10.375], "texture": "#0"},
+ "east": {"uv": [0, 7.5, 1.5, 8.375], "texture": "#0"},
+ "south": {"uv": [9.5, 9.5, 9.625, 10.375], "texture": "#0"},
+ "west": {"uv": [1.5, 7.5, 3, 8.375], "texture": "#0"},
+ "up": {"uv": [8.125, 10.5, 8, 9], "texture": "#0"},
+ "down": {"uv": [8.625, 9, 8.5, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 8.95],
+ "to": [10.9, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [6, 0, 8.875, 0.875], "texture": "#0"},
+ "east": {"uv": [0, 10, 0.125, 10.875], "texture": "#0"},
+ "south": {"uv": [6, 1, 8.875, 1.875], "texture": "#0"},
+ "west": {"uv": [0.5, 10, 0.625, 10.875], "texture": "#0"},
+ "up": {"uv": [11.875, 1.125, 9, 1], "texture": "#0"},
+ "down": {"uv": [11.875, 1.5, 9, 1.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 6],
+ "to": [10.9, 9.7, 6.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [6, 2, 8.875, 2.875], "texture": "#0"},
+ "east": {"uv": [1, 10, 1.125, 10.875], "texture": "#0"},
+ "south": {"uv": [6, 3, 8.875, 3.875], "texture": "#0"},
+ "west": {"uv": [2.5, 10, 2.625, 10.875], "texture": "#0"},
+ "up": {"uv": [11.875, 2.125, 9, 2], "texture": "#0"},
+ "down": {"uv": [11.875, 2.5, 9, 2.625], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "firstperson_righthand": {
+ "rotation": [-176.93, -29.4, 108.89],
+ "translation": [0.25, 2.25, 0.25]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 27.75, 66.5],
+ "translation": [0.25, 2.25, 0.5]
+ },
+ "ground": {
+ "translation": [0, -2, 0],
+ "scale": [0.9, 0.9, 0.9]
+ },
+ "gui": {
+ "rotation": [-135, 145, -180],
+ "translation": [-1, -2.5, 0],
+ "scale": [1.8, 1.8, 1.8]
+ },
+ "head": {
+ "translation": [0, 6.25, 0]
+ },
+ "fixed": {
+ "rotation": [-90, 0, 0],
+ "translation": [-2.75, 0.75, 0],
+ "scale": [2.5, 2.5, 2.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]
+ }
+ ]
+ },
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "group",
+ "origin": [7.05, 8, 8],
+ "color": 0,
+ "children": [64, 65, 66, 67, 68]
+ },
+ 69,
+ 70,
+ 71,
+ 72,
+ 73
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/rifleammobox.json.textures b/models/rifleammobox.json.textures
new file mode 100644
index 000000000..9e261d40a
--- /dev/null
+++ b/models/rifleammobox.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "rifleammobox"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/shotgunammobox.json b/models/shotgunammobox.json
new file mode 100644
index 000000000..f78804bd2
--- /dev/null
+++ b/models/shotgunammobox.json
@@ -0,0 +1,1523 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "1": "shotgunammobox"
+ },
+ "elements": [
+ {
+ "from": [5.38915, 8.12543, 6.19769],
+ "to": [5.78782, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 0, 8, 1.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 3.875, 8, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 8.12543, 6.19769],
+ "to": [5.78782, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "west": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 8, 6, 9.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 7.875, 8, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.40527, 8.40733, 6.19769],
+ "to": [6.06972, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "south": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 7, 4, 8.875], "texture": "#1"},
+ "down": {"uv": [4.8125, 8.875, 4.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.40527, 8.40733, 6.19769],
+ "to": [6.06972, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "east": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "south": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "west": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 7, 5, 8.875], "texture": "#1"},
+ "down": {"uv": [5.8125, 8.875, 5.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 8.42345, 6.19769],
+ "to": [5.78782, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "east": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "west": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 0, 8.5, 1.875], "texture": "#1"},
+ "down": {"uv": [8.6875, 3.875, 8.5, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.10724, 8.40733, 6.19769],
+ "to": [5.77169, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "east": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "south": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 7.5, 2, 9.375], "texture": "#1"},
+ "down": {"uv": [2.8125, 9.375, 2.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.10724, 8.40733, 6.19769],
+ "to": [5.77169, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 7.5, 3, 9.375], "texture": "#1"},
+ "down": {"uv": [3.8125, 9.375, 3.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 8.12543, 6.19769],
+ "to": [5.78782, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5.58848, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 7.5, 8.5, 9.375], "texture": "#1"},
+ "down": {"uv": [0.1875, 10.875, 0, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.31409, 8.12543, 6.19769],
+ "to": [7.71276, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 0, 8, 1.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 3.875, 8, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.31409, 8.12543, 6.19769],
+ "to": [7.71276, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "west": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 8, 6, 9.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 7.875, 8, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.33022, 8.40733, 6.19769],
+ "to": [7.99467, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "south": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 7, 4, 8.875], "texture": "#1"},
+ "down": {"uv": [4.8125, 8.875, 4.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.33022, 8.40733, 6.19769],
+ "to": [7.99467, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "east": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "south": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "west": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 7, 5, 8.875], "texture": "#1"},
+ "down": {"uv": [5.8125, 8.875, 5.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.3141, 8.42345, 6.19769],
+ "to": [7.71277, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "east": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "west": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 0, 8.5, 1.875], "texture": "#1"},
+ "down": {"uv": [8.6875, 3.875, 8.5, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.03219, 8.40733, 6.19769],
+ "to": [7.69664, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "east": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "south": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 7.5, 2, 9.375], "texture": "#1"},
+ "down": {"uv": [2.8125, 9.375, 2.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.03219, 8.40733, 6.19769],
+ "to": [7.69664, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 7.5, 3, 9.375], "texture": "#1"},
+ "down": {"uv": [3.8125, 9.375, 3.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.31409, 8.12543, 6.19769],
+ "to": [7.71276, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.51343, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 7.5, 8.5, 9.375], "texture": "#1"},
+ "down": {"uv": [0.1875, 10.875, 0, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 8.12543, 6.19769],
+ "to": [9.63771, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 0, 8, 1.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 3.875, 8, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 8.12543, 6.19769],
+ "to": [9.63771, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "west": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 8, 6, 9.875], "texture": "#1"},
+ "down": {"uv": [8.1875, 7.875, 8, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.25517, 8.40733, 6.19769],
+ "to": [9.91962, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "south": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 7, 4, 8.875], "texture": "#1"},
+ "down": {"uv": [4.8125, 8.875, 4.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.25517, 8.40733, 6.19769],
+ "to": [9.91962, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "east": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "south": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "west": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 7, 5, 8.875], "texture": "#1"},
+ "down": {"uv": [5.8125, 8.875, 5.5, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 8.42345, 6.19769],
+ "to": [9.63771, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "east": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "west": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 0, 8.5, 1.875], "texture": "#1"},
+ "down": {"uv": [8.6875, 3.875, 8.5, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.95714, 8.40733, 6.19769],
+ "to": [9.62159, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "east": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "south": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 7.5, 2, 9.375], "texture": "#1"},
+ "down": {"uv": [2.8125, 9.375, 2.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.95714, 8.40733, 6.19769],
+ "to": [9.62159, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 7.5, 3, 9.375], "texture": "#1"},
+ "down": {"uv": [3.8125, 9.375, 3.5, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 8.12543, 6.19769],
+ "to": [9.63771, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [9.43838, 8.60666, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 7.5, 8.5, 9.375], "texture": "#1"},
+ "down": {"uv": [0.1875, 10.875, 0, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 9.0879, 6.19769],
+ "to": [10.60019, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "south": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 0, 8.1875, 1.875], "texture": "#1"},
+ "down": {"uv": [8, 3.875, 8.1875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 9.0879, 6.19769],
+ "to": [10.60019, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "east": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "west": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 8, 6.1875, 9.875], "texture": "#1"},
+ "down": {"uv": [8, 7.875, 8.1875, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.91962, 9.3698, 6.19769],
+ "to": [10.58407, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "south": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 7, 4.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [4.5, 8.875, 4.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.91962, 9.3698, 6.19769],
+ "to": [10.58407, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "south": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 7, 5.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [5.5, 8.875, 5.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 9.38593, 6.19769],
+ "to": [10.60019, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "east": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "west": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 0, 8.6875, 1.875], "texture": "#1"},
+ "down": {"uv": [8.5, 3.875, 8.6875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.21764, 9.3698, 6.19769],
+ "to": [10.88209, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "south": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 7.5, 2.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [2.5, 9.375, 2.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.21764, 9.3698, 6.19769],
+ "to": [10.88209, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "south": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 7.5, 3.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [3.5, 9.375, 3.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 9.0879, 6.19769],
+ "to": [10.60019, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [10.40085, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "east": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "south": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "west": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 7.5, 8.6875, 9.375], "texture": "#1"},
+ "down": {"uv": [0, 10.875, 0.1875, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 9.0879, 6.19769],
+ "to": [8.67524, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "south": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 0, 8.1875, 1.875], "texture": "#1"},
+ "down": {"uv": [8, 3.875, 8.1875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 9.0879, 6.19769],
+ "to": [8.67524, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "east": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "west": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 8, 6.1875, 9.875], "texture": "#1"},
+ "down": {"uv": [8, 7.875, 8.1875, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.99467, 9.3698, 6.19769],
+ "to": [8.65912, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "south": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 7, 4.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [4.5, 8.875, 4.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.99467, 9.3698, 6.19769],
+ "to": [8.65912, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "south": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 7, 5.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [5.5, 8.875, 5.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 9.38593, 6.19769],
+ "to": [8.67524, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "east": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "west": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 0, 8.6875, 1.875], "texture": "#1"},
+ "down": {"uv": [8.5, 3.875, 8.6875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.29269, 9.3698, 6.19769],
+ "to": [8.95714, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "south": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 7.5, 2.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [2.5, 9.375, 2.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.29269, 9.3698, 6.19769],
+ "to": [8.95714, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "south": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 7.5, 3.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [3.5, 9.375, 3.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 9.0879, 6.19769],
+ "to": [8.67524, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.4759, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "east": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "south": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "west": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 7.5, 8.6875, 9.375], "texture": "#1"},
+ "down": {"uv": [0, 10.875, 0.1875, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 9.0879, 6.19769],
+ "to": [6.75029, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "south": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 0, 8.1875, 1.875], "texture": "#1"},
+ "down": {"uv": [8, 3.875, 8.1875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 9.0879, 6.19769],
+ "to": [6.75029, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "east": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "west": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 8, 6.1875, 9.875], "texture": "#1"},
+ "down": {"uv": [8, 7.875, 8.1875, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.06972, 9.3698, 6.19769],
+ "to": [6.73417, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "south": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 7, 4.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [4.5, 8.875, 4.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.06972, 9.3698, 6.19769],
+ "to": [6.73417, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "south": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 7, 5.3125, 8.875], "texture": "#1"},
+ "down": {"uv": [5.5, 8.875, 5.8125, 7], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 9.38593, 6.19769],
+ "to": [6.75029, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "east": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "west": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 0, 8.6875, 1.875], "texture": "#1"},
+ "down": {"uv": [8.5, 3.875, 8.6875, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.36774, 9.3698, 6.19769],
+ "to": [7.03219, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "south": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 7.5, 2.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [2.5, 9.375, 2.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.36774, 9.3698, 6.19769],
+ "to": [7.03219, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "south": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 7.5, 3.3125, 9.375], "texture": "#1"},
+ "down": {"uv": [3.5, 9.375, 3.8125, 7.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 9.0879, 6.19769],
+ "to": [6.75029, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.55096, 9.56914, 6.08897]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "east": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "south": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "west": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 7.5, 8.6875, 9.375], "texture": "#1"},
+ "down": {"uv": [0, 10.875, 0.1875, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 8.12543, 6.19769],
+ "to": [6.75029, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 1.875, 8, 0], "texture": "#1"},
+ "down": {"uv": [8.1875, 2, 8, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 8.12543, 6.19769],
+ "to": [6.75029, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "east": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "west": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 9.875, 6, 8], "texture": "#1"},
+ "down": {"uv": [8.1875, 6, 8, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.36774, 8.40733, 6.19769],
+ "to": [7.03219, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "south": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 8.875, 4, 7], "texture": "#1"},
+ "down": {"uv": [4.8125, 7, 4.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.36774, 8.40733, 6.19769],
+ "to": [7.03219, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "south": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 8.875, 5, 7], "texture": "#1"},
+ "down": {"uv": [5.8125, 7, 5.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 8.42345, 6.19769],
+ "to": [6.75029, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "east": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "west": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 1.875, 8.5, 0], "texture": "#1"},
+ "down": {"uv": [8.6875, 2, 8.5, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.06972, 8.40733, 6.19769],
+ "to": [6.73417, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "south": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 9.375, 2, 7.5], "texture": "#1"},
+ "down": {"uv": [2.8125, 7.5, 2.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.06972, 8.40733, 6.19769],
+ "to": [6.73417, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 9.375, 3, 7.5], "texture": "#1"},
+ "down": {"uv": [3.8125, 7.5, 3.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [6.35162, 8.12543, 6.19769],
+ "to": [6.75029, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [6.55096, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "east": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "west": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 9.375, 8.5, 7.5], "texture": "#1"},
+ "down": {"uv": [0.1875, 9, 0, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 8.12543, 6.19769],
+ "to": [8.67524, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 1.875, 8, 0], "texture": "#1"},
+ "down": {"uv": [8.1875, 2, 8, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 8.12543, 6.19769],
+ "to": [8.67524, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "east": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "west": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 9.875, 6, 8], "texture": "#1"},
+ "down": {"uv": [8.1875, 6, 8, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.29269, 8.40733, 6.19769],
+ "to": [8.95714, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "south": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 8.875, 4, 7], "texture": "#1"},
+ "down": {"uv": [4.8125, 7, 4.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.29269, 8.40733, 6.19769],
+ "to": [8.95714, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "south": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 8.875, 5, 7], "texture": "#1"},
+ "down": {"uv": [5.8125, 7, 5.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 8.42345, 6.19769],
+ "to": [8.67524, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "east": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "west": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 1.875, 8.5, 0], "texture": "#1"},
+ "down": {"uv": [8.6875, 2, 8.5, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.99467, 8.40733, 6.19769],
+ "to": [8.65912, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "south": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 9.375, 2, 7.5], "texture": "#1"},
+ "down": {"uv": [2.8125, 7.5, 2.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.99467, 8.40733, 6.19769],
+ "to": [8.65912, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 9.375, 3, 7.5], "texture": "#1"},
+ "down": {"uv": [3.8125, 7.5, 3.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.27657, 8.12543, 6.19769],
+ "to": [8.67524, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [8.4759, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "east": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "west": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 9.375, 8.5, 7.5], "texture": "#1"},
+ "down": {"uv": [0.1875, 9, 0, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 8.12543, 6.19769],
+ "to": [10.60019, 8.78988, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 9.5, 9.1875, 9.8125], "texture": "#1"},
+ "east": {"uv": [6, 6, 7.875, 6.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 9.5, 9.6875, 9.8125], "texture": "#1"},
+ "west": {"uv": [6, 6.5, 7.875, 6.8125], "texture": "#1"},
+ "up": {"uv": [8.1875, 1.875, 8, 0], "texture": "#1"},
+ "down": {"uv": [8.1875, 2, 8, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 8.12543, 6.19769],
+ "to": [10.60019, 8.78988, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 4, 10.1875, 4.3125], "texture": "#1"},
+ "east": {"uv": [0, 7, 1.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [10, 4.5, 10.1875, 4.8125], "texture": "#1"},
+ "west": {"uv": [2, 7, 3.875, 7.3125], "texture": "#1"},
+ "up": {"uv": [6.1875, 9.875, 6, 8], "texture": "#1"},
+ "down": {"uv": [8.1875, 6, 8, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.21764, 8.40733, 6.19769],
+ "to": [10.88209, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [6, 10, 6.3125, 10.1875], "texture": "#1"},
+ "east": {"uv": [8, 4, 9.875, 4.1875], "texture": "#1"},
+ "south": {"uv": [7, 10, 7.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [8, 4.5, 9.875, 4.6875], "texture": "#1"},
+ "up": {"uv": [4.3125, 8.875, 4, 7], "texture": "#1"},
+ "down": {"uv": [4.8125, 7, 4.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.21764, 8.40733, 6.19769],
+ "to": [10.88209, 8.806, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.8125, 10.1875], "texture": "#1"},
+ "east": {"uv": [6.5, 8, 8.375, 8.1875], "texture": "#1"},
+ "south": {"uv": [8, 10, 8.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [0, 8.5, 1.875, 8.6875], "texture": "#1"},
+ "up": {"uv": [5.3125, 8.875, 5, 7], "texture": "#1"},
+ "down": {"uv": [5.8125, 7, 5.5, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 8.42345, 6.19769],
+ "to": [10.60019, 9.0879, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [9, 10, 9.1875, 10.3125], "texture": "#1"},
+ "east": {"uv": [6, 7, 7.875, 7.3125], "texture": "#1"},
+ "south": {"uv": [9.5, 10, 9.6875, 10.3125], "texture": "#1"},
+ "west": {"uv": [0, 7.5, 1.875, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.6875, 1.875, 8.5, 0], "texture": "#1"},
+ "down": {"uv": [8.6875, 2, 8.5, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.91962, 8.40733, 6.19769],
+ "to": [10.58407, 8.806, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [10, 9.5, 10.3125, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6, 10.375, 6.1875], "texture": "#1"},
+ "south": {"uv": [10, 10, 10.3125, 10.1875], "texture": "#1"},
+ "west": {"uv": [6.5, 8.5, 8.375, 8.6875], "texture": "#1"},
+ "up": {"uv": [2.3125, 9.375, 2, 7.5], "texture": "#1"},
+ "down": {"uv": [2.8125, 7.5, 2.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.91962, 8.40733, 6.19769],
+ "to": [10.58407, 8.806, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [2, 10.5, 2.3125, 10.6875], "texture": "#1"},
+ "east": {"uv": [8.5, 6.5, 10.375, 6.6875], "texture": "#1"},
+ "south": {"uv": [2.5, 10.5, 2.8125, 10.6875], "texture": "#1"},
+ "west": {"uv": [8.5, 7, 10.375, 7.1875], "texture": "#1"},
+ "up": {"uv": [3.3125, 9.375, 3, 7.5], "texture": "#1"},
+ "down": {"uv": [3.8125, 7.5, 3.5, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.20152, 8.12543, 6.19769],
+ "to": [10.60019, 8.78988, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [10.40085, 8.60666, 9.87197]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.1875, 10.8125], "texture": "#1"},
+ "east": {"uv": [6, 7.5, 7.875, 7.8125], "texture": "#1"},
+ "south": {"uv": [3.5, 10.5, 3.6875, 10.8125], "texture": "#1"},
+ "west": {"uv": [0, 8, 1.875, 8.3125], "texture": "#1"},
+ "up": {"uv": [8.6875, 9.375, 8.5, 7.5], "texture": "#1"},
+ "down": {"uv": [0.1875, 9, 0, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 9.0879, 6.19769],
+ "to": [9.63771, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 1.875, 8.1875, 0], "texture": "#1"},
+ "down": {"uv": [8, 2, 8.1875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 9.0879, 6.19769],
+ "to": [9.63771, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "east": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 9.875, 6.1875, 8], "texture": "#1"},
+ "down": {"uv": [8, 6, 8.1875, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.95714, 9.3698, 6.19769],
+ "to": [9.62159, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "south": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 8.875, 4.3125, 7], "texture": "#1"},
+ "down": {"uv": [4.5, 7, 4.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [8.95714, 9.3698, 6.19769],
+ "to": [9.62159, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "east": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "south": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "west": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 8.875, 5.3125, 7], "texture": "#1"},
+ "down": {"uv": [5.5, 7, 5.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 9.38593, 6.19769],
+ "to": [9.63771, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "east": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "west": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 1.875, 8.6875, 0], "texture": "#1"},
+ "down": {"uv": [8.5, 2, 8.6875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.25517, 9.3698, 6.19769],
+ "to": [9.91962, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "south": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "west": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 9.375, 2.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [2.5, 7.5, 2.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.25517, 9.3698, 6.19769],
+ "to": [9.91962, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "south": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 9.375, 3.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [3.5, 7.5, 3.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9.23904, 9.0879, 6.19769],
+ "to": [9.63771, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [9.43838, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "south": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 9.375, 8.6875, 7.5], "texture": "#1"},
+ "down": {"uv": [0, 9, 0.1875, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.3141, 9.0879, 6.19769],
+ "to": [7.71277, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 1.875, 8.1875, 0], "texture": "#1"},
+ "down": {"uv": [8, 2, 8.1875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.3141, 9.0879, 6.19769],
+ "to": [7.71277, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "east": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 9.875, 6.1875, 8], "texture": "#1"},
+ "down": {"uv": [8, 6, 8.1875, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.03219, 9.3698, 6.19769],
+ "to": [7.69664, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "south": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 8.875, 4.3125, 7], "texture": "#1"},
+ "down": {"uv": [4.5, 7, 4.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.03219, 9.3698, 6.19769],
+ "to": [7.69664, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "east": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "south": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "west": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 8.875, 5.3125, 7], "texture": "#1"},
+ "down": {"uv": [5.5, 7, 5.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.31409, 9.38593, 6.19769],
+ "to": [7.71276, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "east": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "west": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 1.875, 8.6875, 0], "texture": "#1"},
+ "down": {"uv": [8.5, 2, 8.6875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.33022, 9.3698, 6.19769],
+ "to": [7.99467, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "south": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "west": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 9.375, 2.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [2.5, 7.5, 2.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.33022, 9.3698, 6.19769],
+ "to": [7.99467, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "south": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 9.375, 3.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [3.5, 7.5, 3.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [7.31409, 9.0879, 6.19769],
+ "to": [7.71276, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.51343, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "south": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 9.375, 8.6875, 7.5], "texture": "#1"},
+ "down": {"uv": [0, 9, 0.1875, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 9.0879, 6.19769],
+ "to": [5.78782, 9.75235, 9.27497],
+ "rotation": {"angle": 0, "axis": "y", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 9.5, 9, 9.8125], "texture": "#1"},
+ "east": {"uv": [7.875, 6.5, 6, 6.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 9.5, 9.5, 9.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 6, 6, 6.3125], "texture": "#1"},
+ "up": {"uv": [8, 1.875, 8.1875, 0], "texture": "#1"},
+ "down": {"uv": [8, 2, 8.1875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 9.0879, 6.19769],
+ "to": [5.78782, 9.75235, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.1875, 4, 10, 4.3125], "texture": "#1"},
+ "east": {"uv": [3.875, 7, 2, 7.3125], "texture": "#1"},
+ "south": {"uv": [10.1875, 4.5, 10, 4.8125], "texture": "#1"},
+ "west": {"uv": [1.875, 7, 0, 7.3125], "texture": "#1"},
+ "up": {"uv": [6, 9.875, 6.1875, 8], "texture": "#1"},
+ "down": {"uv": [8, 6, 8.1875, 7.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.10724, 9.3698, 6.19769],
+ "to": [5.77169, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [6.3125, 10, 6, 10.1875], "texture": "#1"},
+ "east": {"uv": [9.875, 4.5, 8, 4.6875], "texture": "#1"},
+ "south": {"uv": [7.3125, 10, 7, 10.1875], "texture": "#1"},
+ "west": {"uv": [9.875, 4, 8, 4.1875], "texture": "#1"},
+ "up": {"uv": [4, 8.875, 4.3125, 7], "texture": "#1"},
+ "down": {"uv": [4.5, 7, 4.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.10724, 9.3698, 6.19769],
+ "to": [5.77169, 9.76847, 9.27497],
+ "rotation": {"angle": -45, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [7.8125, 10, 7.5, 10.1875], "texture": "#1"},
+ "east": {"uv": [1.875, 8.5, 0, 8.6875], "texture": "#1"},
+ "south": {"uv": [8.3125, 10, 8, 10.1875], "texture": "#1"},
+ "west": {"uv": [8.375, 8, 6.5, 8.1875], "texture": "#1"},
+ "up": {"uv": [5, 8.875, 5.3125, 7], "texture": "#1"},
+ "down": {"uv": [5.5, 7, 5.8125, 8.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 9.38593, 6.19769],
+ "to": [5.78782, 10.05038, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [9.1875, 10, 9, 10.3125], "texture": "#1"},
+ "east": {"uv": [1.875, 7.5, 0, 7.8125], "texture": "#1"},
+ "south": {"uv": [9.6875, 10, 9.5, 10.3125], "texture": "#1"},
+ "west": {"uv": [7.875, 7, 6, 7.3125], "texture": "#1"},
+ "up": {"uv": [8.5, 1.875, 8.6875, 0], "texture": "#1"},
+ "down": {"uv": [8.5, 2, 8.6875, 3.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.40527, 9.3698, 6.19769],
+ "to": [6.06972, 9.76847, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [10.3125, 9.5, 10, 9.6875], "texture": "#1"},
+ "east": {"uv": [8.375, 8.5, 6.5, 8.6875], "texture": "#1"},
+ "south": {"uv": [10.3125, 10, 10, 10.1875], "texture": "#1"},
+ "west": {"uv": [10.375, 6, 8.5, 6.1875], "texture": "#1"},
+ "up": {"uv": [2, 9.375, 2.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [2.5, 7.5, 2.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.40527, 9.3698, 6.19769],
+ "to": [6.06972, 9.76847, 9.27497],
+ "rotation": {"angle": 0, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [2.3125, 10.5, 2, 10.6875], "texture": "#1"},
+ "east": {"uv": [10.375, 7, 8.5, 7.1875], "texture": "#1"},
+ "south": {"uv": [2.8125, 10.5, 2.5, 10.6875], "texture": "#1"},
+ "west": {"uv": [10.375, 6.5, 8.5, 6.6875], "texture": "#1"},
+ "up": {"uv": [3, 9.375, 3.3125, 7.5], "texture": "#1"},
+ "down": {"uv": [3.5, 7.5, 3.8125, 9.375], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.38915, 9.0879, 6.19769],
+ "to": [5.78782, 9.75235, 9.27497],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.58848, 9.56914, 9.87197]},
+ "faces": {
+ "north": {"uv": [3.1875, 10.5, 3, 10.8125], "texture": "#1"},
+ "east": {"uv": [1.875, 8, 0, 8.3125], "texture": "#1"},
+ "south": {"uv": [3.6875, 10.5, 3.5, 10.8125], "texture": "#1"},
+ "west": {"uv": [7.875, 7.5, 6, 7.8125], "texture": "#1"},
+ "up": {"uv": [8.5, 9.375, 8.6875, 7.5], "texture": "#1"},
+ "down": {"uv": [0, 9, 0.1875, 10.875], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.1, 8, 6.1],
+ "to": [10.9, 8.1, 9.4],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [11.875, 2.5, 9, 2.5625], "texture": "#1"},
+ "east": {"uv": [10.875, 8.5, 9, 8.5625], "texture": "#1"},
+ "south": {"uv": [11.875, 2, 9, 2.0625], "texture": "#1"},
+ "west": {"uv": [10.875, 9, 9, 9.0625], "texture": "#1"},
+ "up": {"uv": [5.875, 0, 3, 1.875], "texture": "#1"},
+ "down": {"uv": [5.875, 3.875, 3, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.9, 8, 6],
+ "to": [11, 10, 9.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [7.5625, 9, 7.5, 10], "texture": "#1"},
+ "east": {"uv": [2, 6, 0, 7], "texture": "#1"},
+ "south": {"uv": [7.0625, 9, 7, 10], "texture": "#1"},
+ "west": {"uv": [8, 0, 6, 1], "texture": "#1"},
+ "up": {"uv": [0.5625, 9, 0.5, 11], "texture": "#1"},
+ "down": {"uv": [1.0625, 11, 1, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 8, 6],
+ "to": [5.1, 10, 9.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [2.0625, 9.5, 2, 10.5], "texture": "#1"},
+ "east": {"uv": [8, 1, 6, 2], "texture": "#1"},
+ "south": {"uv": [8.0625, 9, 8, 10], "texture": "#1"},
+ "west": {"uv": [4, 6, 2, 7], "texture": "#1"},
+ "up": {"uv": [1.5625, 9, 1.5, 11], "texture": "#1"},
+ "down": {"uv": [4.0625, 11, 4, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 10, 6],
+ "to": [5.1, 11.5, 9.5],
+ "rotation": {"angle": -22.5, "axis": "z", "origin": [5, 10, 8]},
+ "faces": {
+ "north": {"uv": [6.0625, 10.5, 6, 11.25], "texture": "#1"},
+ "east": {"uv": [8, 2, 6, 2.75], "texture": "#1"},
+ "south": {"uv": [10.5625, 4, 10.5, 4.75], "texture": "#1"},
+ "west": {"uv": [8, 3, 6, 3.75], "texture": "#1"},
+ "up": {"uv": [4.5625, 9, 4.5, 11], "texture": "#1"},
+ "down": {"uv": [5.0625, 11, 5, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.9, 10, 6],
+ "to": [11, 11.5, 9.5],
+ "rotation": {"angle": 22.5, "axis": "z", "origin": [11, 10, 8]},
+ "faces": {
+ "north": {"uv": [7.0625, 10.5, 7, 11.25], "texture": "#1"},
+ "east": {"uv": [6, 6, 4, 6.75], "texture": "#1"},
+ "south": {"uv": [10.5625, 6, 10.5, 6.75], "texture": "#1"},
+ "west": {"uv": [8, 4, 6, 4.75], "texture": "#1"},
+ "up": {"uv": [5.5625, 9, 5.5, 11], "texture": "#1"},
+ "down": {"uv": [6.5625, 11, 6.5, 9], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.1, 8, 9.4],
+ "to": [10.9, 10, 9.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [5.875, 4, 3, 5], "texture": "#1"},
+ "east": {"uv": [2.5625, 9.5, 2.5, 10.5], "texture": "#1"},
+ "south": {"uv": [2.875, 4, 0, 5], "texture": "#1"},
+ "west": {"uv": [3.0625, 9.5, 3, 10.5], "texture": "#1"},
+ "up": {"uv": [11.875, 3, 9, 3.0625], "texture": "#1"},
+ "down": {"uv": [11.875, 3.5625, 9, 3.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5.1, 8, 6],
+ "to": [10.9, 10, 6.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
+ "faces": {
+ "north": {"uv": [5.875, 5, 3, 6], "texture": "#1"},
+ "east": {"uv": [3.5625, 9.5, 3.5, 10.5], "texture": "#1"},
+ "south": {"uv": [2.875, 5, 0, 6], "texture": "#1"},
+ "west": {"uv": [8.5625, 9.5, 8.5, 10.5], "texture": "#1"},
+ "up": {"uv": [11.875, 5, 9, 5.0625], "texture": "#1"},
+ "down": {"uv": [11.875, 5.5625, 9, 5.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 9.9, 2],
+ "to": [11, 10, 6],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 6]},
+ "faces": {
+ "north": {"uv": [12, 0.5, 9, 0.5625], "texture": "#1"},
+ "east": {"uv": [11, 7.5, 9, 7.5625], "texture": "#1"},
+ "south": {"uv": [12, 0, 9, 0.0625], "texture": "#1"},
+ "west": {"uv": [11, 8, 9, 8.0625], "texture": "#1"},
+ "up": {"uv": [3, 0, 0, 2], "texture": "#1"},
+ "down": {"uv": [3, 4, 0, 2], "texture": "#1"}
+ }
+ },
+ {
+ "from": [5, 8.44759, 2.31346],
+ "to": [11, 9.44759, 2.41346],
+ "rotation": {"angle": -45, "axis": "x", "origin": [8, 8.44759, 2.41346]},
+ "faces": {
+ "north": {"uv": [9, 5.5, 6, 6], "texture": "#1"},
+ "east": {"uv": [10.5625, 7, 10.5, 7.5], "texture": "#1"},
+ "south": {"uv": [9, 5, 6, 5.5], "texture": "#1"},
+ "west": {"uv": [7.5625, 10.5, 7.5, 11], "texture": "#1"},
+ "up": {"uv": [12, 1, 9, 1.0625], "texture": "#1"},
+ "down": {"uv": [12, 1.5625, 9, 1.5], "texture": "#1"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "firstperson_righthand": {
+ "rotation": [26.62, -0.78, 11.37],
+ "translation": [0.25, 1.25, 0]
+ },
+ "firstperson_lefthand": {
+ "rotation": [26.62, -0.78, 11.37],
+ "translation": [0.25, 1.25, 0]
+ },
+ "gui": {
+ "rotation": [45, 35, 0],
+ "translation": [2.25, -3, 0],
+ "scale": [1.6, 1.6, 1.6]
+ },
+ "head": {
+ "translation": [0, 6.25, 0]
+ },
+ "fixed": {
+ "rotation": [90, 0, -180],
+ "translation": [0, -5.5, 0],
+ "scale": [2, 2, 2]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95
+ ]
+ }
+ ]
+ },
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [96, 97, 98, 99, 100, 101, 102, 103, 104]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/shotgunammobox.json.textures b/models/shotgunammobox.json.textures
new file mode 100644
index 000000000..99416f4a1
--- /dev/null
+++ b/models/shotgunammobox.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "1": "shotgunammobox"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/sniperammobox.json b/models/sniperammobox.json
new file mode 100644
index 000000000..d41278885
--- /dev/null
+++ b/models/sniperammobox.json
@@ -0,0 +1,1474 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "sniperammobox",
+ "particle": "sniperammobox"
+ },
+ "elements": [
+ {
+ "from": [5.43541, 8.63293, 7.01398],
+ "to": [5.65867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 5.5, 10.125, 5.75], "texture": "#0"},
+ "east": {"uv": [4, 8.5, 4.875, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 6, 10.125, 6.25], "texture": "#0"},
+ "west": {"uv": [8.5, 4, 9.375, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9.875, 9, 9], "texture": "#0"},
+ "down": {"uv": [0.125, 9.5, 0, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27764, 8.79072, 7.01398],
+ "to": [5.81599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.25, 6.625], "texture": "#0"},
+ "east": {"uv": [0.5, 9.5, 1.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 7, 10.25, 7.125], "texture": "#0"},
+ "west": {"uv": [9.5, 1, 10.375, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 5.375, 8.5, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 8.5, 5, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.43551, 8.63285, 7.01398],
+ "to": [5.65877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.625, 10.25], "texture": "#0"},
+ "east": {"uv": [5.5, 8.5, 6.375, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 7.5, 10.125, 7.75], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 9.375, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 1.5, 9.5, 2.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.27754, 8.7908, 7.01398],
+ "to": [5.81589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.25, 10.125], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 8, 10.25, 8.125], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.375, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 9.375, 6.5, 8.5], "texture": "#0"},
+ "down": {"uv": [7.25, 8.5, 7, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.44086, 8.64578, 6.51398],
+ "to": [5.6534, 9.15828, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 4, 9.75, 4.25], "texture": "#0"},
+ "south": {"uv": [10, 8.5, 10.125, 8.75], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.75, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10.25, 9, 10], "texture": "#0"},
+ "down": {"uv": [10.125, 9, 10, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.29057, 8.79607, 6.51398],
+ "to": [5.80307, 9.00861, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.75, 10.125], "texture": "#0"},
+ "east": {"uv": [10, 9.5, 10.25, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 10, 10.25, 10.125], "texture": "#0"},
+ "west": {"uv": [0, 10.5, 0.25, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.75, 8, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8, 9.5, 8.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.29048, 8.79615, 6.51398],
+ "to": [5.80298, 9.00869, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [0.5, 10.5, 0.75, 10.625], "texture": "#0"},
+ "east": {"uv": [1, 10.5, 1.25, 10.625], "texture": "#0"},
+ "south": {"uv": [10.5, 1, 10.75, 1.125], "texture": "#0"},
+ "west": {"uv": [1.5, 10.5, 1.75, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.75, 8.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8.5, 9.5, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.44077, 8.64586, 6.51398],
+ "to": [5.6533, 9.15836, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [10.5, 1.5, 10.625, 1.75], "texture": "#0"},
+ "east": {"uv": [9.5, 9, 9.75, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 2, 10.625, 2.25], "texture": "#0"},
+ "west": {"uv": [9.5, 9.5, 9.75, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.75, 2.5, 10.5], "texture": "#0"},
+ "down": {"uv": [10.625, 2.5, 10.5, 2.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.45882, 8.68945, 5.61398],
+ "to": [5.63523, 9.11482, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.125, 10.75], "texture": "#0"},
+ "east": {"uv": [4.5, 9, 5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 3, 10.625, 3.25], "texture": "#0"},
+ "west": {"uv": [9, 5, 9.5, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10.5, 0.5, 10], "texture": "#0"},
+ "down": {"uv": [1.125, 10, 1, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.33409, 8.81419, 5.61398],
+ "to": [5.75946, 8.99059, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.54699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.75, 10.625], "texture": "#0"},
+ "east": {"uv": [10, 1.5, 10.5, 1.625], "texture": "#0"},
+ "south": {"uv": [10.5, 3.5, 10.75, 3.625], "texture": "#0"},
+ "west": {"uv": [10, 2, 10.5, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9.5, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [6.25, 9, 6, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.33416, 8.81412, 5.61398],
+ "to": [5.75954, 8.99053, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4, 10.5, 4.25, 10.625], "texture": "#0"},
+ "east": {"uv": [2.5, 10, 3, 10.125], "texture": "#0"},
+ "south": {"uv": [10.5, 4, 10.75, 4.125], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.5, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9.5, 7.5, 9], "texture": "#0"},
+ "down": {"uv": [8.25, 9, 8, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.4589, 8.68938, 5.61398],
+ "to": [5.63531, 9.11476, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.54699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9, 8, 9.5, 8.25], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.125, 10.75], "texture": "#0"},
+ "west": {"uv": [8.5, 9, 9, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4.5, 10, 4], "texture": "#0"},
+ "down": {"uv": [10.125, 5, 10, 5.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.71733, 9.11383, 7.48602],
+ "to": [5.92987, 9.62633, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.625, 2, 10.5, 2.25], "texture": "#0"},
+ "east": {"uv": [9.75, 9, 9.5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.625, 1.5, 10.5, 1.75], "texture": "#0"},
+ "west": {"uv": [9.75, 9.5, 9.5, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.5, 2.5, 10.75], "texture": "#0"},
+ "down": {"uv": [10.625, 2.75, 10.5, 2.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.56704, 9.26412, 7.48602],
+ "to": [6.07954, 9.47665, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.75, 1, 10.5, 1.125], "texture": "#0"},
+ "east": {"uv": [1.25, 10.5, 1, 10.625], "texture": "#0"},
+ "south": {"uv": [0.75, 10.5, 0.5, 10.625], "texture": "#0"},
+ "west": {"uv": [1.75, 10.5, 1.5, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.5, 8.5, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.75, 9.5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.56714, 9.26404, 7.48602],
+ "to": [6.07964, 9.47658, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.25, 10, 10, 10.125], "texture": "#0"},
+ "east": {"uv": [10.25, 9.5, 10, 9.625], "texture": "#0"},
+ "south": {"uv": [9.75, 10, 9.5, 10.125], "texture": "#0"},
+ "west": {"uv": [0.25, 10.5, 0, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.5, 8, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.25, 9.5, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.71742, 9.11375, 7.48602],
+ "to": [5.92996, 9.62625, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.125, 8.5, 10, 8.75], "texture": "#0"},
+ "east": {"uv": [9.75, 4, 9.5, 4.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10, 8.5, 10.25], "texture": "#0"},
+ "west": {"uv": [7.75, 9.5, 7.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10, 9, 10.25], "texture": "#0"},
+ "down": {"uv": [10.125, 9.25, 10, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.55411, 9.25877, 5.62274],
+ "to": [6.09245, 9.48202, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 8, 10, 8.125], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [8.25, 10, 8, 10.125], "texture": "#0"},
+ "west": {"uv": [10.375, 2.5, 9.5, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 8.5, 6.5, 9.375], "texture": "#0"},
+ "down": {"uv": [7.25, 9.375, 7, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.71207, 9.10082, 5.62274],
+ "to": [5.93533, 9.63916, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 7.5, 10, 7.75], "texture": "#0"},
+ "east": {"uv": [6.375, 8.5, 5.5, 8.75], "texture": "#0"},
+ "south": {"uv": [7.625, 10, 7.5, 10.25], "texture": "#0"},
+ "west": {"uv": [9.375, 5.5, 8.5, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [9.625, 2.375, 9.5, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.55421, 9.25869, 5.62274],
+ "to": [6.09255, 9.48194, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 7, 10, 7.125], "texture": "#0"},
+ "east": {"uv": [1.375, 9.5, 0.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.25, 6.5, 10, 6.625], "texture": "#0"},
+ "west": {"uv": [10.375, 1, 9.5, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 4.5, 8.5, 5.375], "texture": "#0"},
+ "down": {"uv": [5.25, 9.375, 5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.71197, 9.1009, 5.62274],
+ "to": [5.93523, 9.63924, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 6, 10, 6.25], "texture": "#0"},
+ "east": {"uv": [4.875, 8.5, 4, 8.75], "texture": "#0"},
+ "south": {"uv": [10.125, 5.5, 10, 5.75], "texture": "#0"},
+ "west": {"uv": [9.375, 4, 8.5, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9, 9, 9.875], "texture": "#0"},
+ "down": {"uv": [0.125, 10.375, 0, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.73547, 9.15735, 7.98602],
+ "to": [5.91187, 9.58273, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [5.125, 10.5, 5, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 8, 9, 8.25], "texture": "#0"},
+ "south": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "west": {"uv": [9, 9, 8.5, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [10.125, 5.5, 10, 5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.61073, 9.28209, 7.98602],
+ "to": [6.0361, 9.4585, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [5.82355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 4, 10.5, 4.125], "texture": "#0"},
+ "east": {"uv": [3, 10, 2.5, 10.125], "texture": "#0"},
+ "south": {"uv": [4.25, 10.5, 4, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10, 3, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [8.25, 9.5, 8, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.61065, 9.28216, 7.98602],
+ "to": [6.03602, 9.45856, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 3.5, 10.5, 3.625], "texture": "#0"},
+ "east": {"uv": [10.5, 1.5, 10, 1.625], "texture": "#0"},
+ "south": {"uv": [3.75, 10.5, 3.5, 10.625], "texture": "#0"},
+ "west": {"uv": [10.5, 2, 10, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9, 5.5, 9.5], "texture": "#0"},
+ "down": {"uv": [6.25, 9.5, 6, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.73539, 9.15742, 7.98602],
+ "to": [5.91179, 9.58279, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [5.82355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.625, 3, 10.5, 3.25], "texture": "#0"},
+ "east": {"uv": [5, 9, 4.5, 9.25], "texture": "#0"},
+ "south": {"uv": [3.125, 10.5, 3, 10.75], "texture": "#0"},
+ "west": {"uv": [9.5, 5, 9, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10, 0.5, 10.5], "texture": "#0"},
+ "down": {"uv": [1.125, 10.5, 1, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98541, 8.63293, 7.01398],
+ "to": [6.20867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 5.5, 10.125, 5.75], "texture": "#0"},
+ "east": {"uv": [4, 8.5, 4.875, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 6, 10.125, 6.25], "texture": "#0"},
+ "west": {"uv": [8.5, 4, 9.375, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9.875, 9, 9], "texture": "#0"},
+ "down": {"uv": [0.125, 9.5, 0, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82764, 8.79072, 7.01398],
+ "to": [6.36599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.25, 6.625], "texture": "#0"},
+ "east": {"uv": [0.5, 9.5, 1.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 7, 10.25, 7.125], "texture": "#0"},
+ "west": {"uv": [9.5, 1, 10.375, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 5.375, 8.5, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 8.5, 5, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.98551, 8.63285, 7.01398],
+ "to": [6.20877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.625, 10.25], "texture": "#0"},
+ "east": {"uv": [5.5, 8.5, 6.375, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 7.5, 10.125, 7.75], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 9.375, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 1.5, 9.5, 2.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.82754, 8.7908, 7.01398],
+ "to": [6.36589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.25, 10.125], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 8, 10.25, 8.125], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.375, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 9.375, 6.5, 8.5], "texture": "#0"},
+ "down": {"uv": [7.25, 8.5, 7, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.99086, 8.64578, 6.51398],
+ "to": [6.2034, 9.15828, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 4, 9.75, 4.25], "texture": "#0"},
+ "south": {"uv": [10, 8.5, 10.125, 8.75], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.75, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10.25, 9, 10], "texture": "#0"},
+ "down": {"uv": [10.125, 9, 10, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.84057, 8.79607, 6.51398],
+ "to": [6.35307, 9.00861, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.75, 10.125], "texture": "#0"},
+ "east": {"uv": [10, 9.5, 10.25, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 10, 10.25, 10.125], "texture": "#0"},
+ "west": {"uv": [0, 10.5, 0.25, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.75, 8, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8, 9.5, 8.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.84048, 8.79615, 6.51398],
+ "to": [6.35298, 9.00869, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [0.5, 10.5, 0.75, 10.625], "texture": "#0"},
+ "east": {"uv": [1, 10.5, 1.25, 10.625], "texture": "#0"},
+ "south": {"uv": [10.5, 1, 10.75, 1.125], "texture": "#0"},
+ "west": {"uv": [1.5, 10.5, 1.75, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.75, 8.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8.5, 9.5, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.99077, 8.64586, 6.51398],
+ "to": [6.2033, 9.15836, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [10.5, 1.5, 10.625, 1.75], "texture": "#0"},
+ "east": {"uv": [9.5, 9, 9.75, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 2, 10.625, 2.25], "texture": "#0"},
+ "west": {"uv": [9.5, 9.5, 9.75, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.75, 2.5, 10.5], "texture": "#0"},
+ "down": {"uv": [10.625, 2.5, 10.5, 2.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.00882, 8.68945, 5.61398],
+ "to": [6.18523, 9.11482, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.125, 10.75], "texture": "#0"},
+ "east": {"uv": [4.5, 9, 5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 3, 10.625, 3.25], "texture": "#0"},
+ "west": {"uv": [9, 5, 9.5, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10.5, 0.5, 10], "texture": "#0"},
+ "down": {"uv": [1.125, 10, 1, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.88409, 8.81419, 5.61398],
+ "to": [6.30946, 8.99059, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.09699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.75, 10.625], "texture": "#0"},
+ "east": {"uv": [10, 1.5, 10.5, 1.625], "texture": "#0"},
+ "south": {"uv": [10.5, 3.5, 10.75, 3.625], "texture": "#0"},
+ "west": {"uv": [10, 2, 10.5, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9.5, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [6.25, 9, 6, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.88416, 8.81412, 5.61398],
+ "to": [6.30954, 8.99053, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4, 10.5, 4.25, 10.625], "texture": "#0"},
+ "east": {"uv": [2.5, 10, 3, 10.125], "texture": "#0"},
+ "south": {"uv": [10.5, 4, 10.75, 4.125], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.5, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9.5, 7.5, 9], "texture": "#0"},
+ "down": {"uv": [8.25, 9, 8, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.0089, 8.68938, 5.61398],
+ "to": [6.18531, 9.11476, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.09699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9, 8, 9.5, 8.25], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.125, 10.75], "texture": "#0"},
+ "west": {"uv": [8.5, 9, 9, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4.5, 10, 4], "texture": "#0"},
+ "down": {"uv": [10.125, 5, 10, 5.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.26197, 9.1009, 5.62274],
+ "to": [6.48523, 9.63924, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 6, 10, 6.25], "texture": "#0"},
+ "east": {"uv": [4.875, 8.5, 4, 8.75], "texture": "#0"},
+ "south": {"uv": [10.125, 5.5, 10, 5.75], "texture": "#0"},
+ "west": {"uv": [9.375, 4, 8.5, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9, 9, 9.875], "texture": "#0"},
+ "down": {"uv": [0.125, 10.375, 0, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.10421, 9.25869, 5.62274],
+ "to": [6.64255, 9.48194, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 7, 10, 7.125], "texture": "#0"},
+ "east": {"uv": [1.375, 9.5, 0.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.25, 6.5, 10, 6.625], "texture": "#0"},
+ "west": {"uv": [10.375, 1, 9.5, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 4.5, 8.5, 5.375], "texture": "#0"},
+ "down": {"uv": [5.25, 9.375, 5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.26207, 9.10082, 5.62274],
+ "to": [6.48533, 9.63916, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 7.5, 10, 7.75], "texture": "#0"},
+ "east": {"uv": [6.375, 8.5, 5.5, 8.75], "texture": "#0"},
+ "south": {"uv": [7.625, 10, 7.5, 10.25], "texture": "#0"},
+ "west": {"uv": [9.375, 5.5, 8.5, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [9.625, 2.375, 9.5, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.10411, 9.25877, 5.62274],
+ "to": [6.64245, 9.48202, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 8, 10, 8.125], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [8.25, 10, 8, 10.125], "texture": "#0"},
+ "west": {"uv": [10.375, 2.5, 9.5, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 8.5, 6.5, 9.375], "texture": "#0"},
+ "down": {"uv": [7.25, 9.375, 7, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.26742, 9.11375, 7.48602],
+ "to": [6.47996, 9.62625, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.125, 8.5, 10, 8.75], "texture": "#0"},
+ "east": {"uv": [9.75, 4, 9.5, 4.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10, 8.5, 10.25], "texture": "#0"},
+ "west": {"uv": [7.75, 9.5, 7.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10, 9, 10.25], "texture": "#0"},
+ "down": {"uv": [10.125, 9.25, 10, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.11714, 9.26404, 7.48602],
+ "to": [6.62964, 9.47658, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.25, 10, 10, 10.125], "texture": "#0"},
+ "east": {"uv": [10.25, 9.5, 10, 9.625], "texture": "#0"},
+ "south": {"uv": [9.75, 10, 9.5, 10.125], "texture": "#0"},
+ "west": {"uv": [0.25, 10.5, 0, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.5, 8, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.25, 9.5, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.11704, 9.26412, 7.48602],
+ "to": [6.62954, 9.47665, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.75, 1, 10.5, 1.125], "texture": "#0"},
+ "east": {"uv": [1.25, 10.5, 1, 10.625], "texture": "#0"},
+ "south": {"uv": [0.75, 10.5, 0.5, 10.625], "texture": "#0"},
+ "west": {"uv": [1.75, 10.5, 1.5, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.5, 8.5, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.75, 9.5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.26733, 9.11383, 7.48602],
+ "to": [6.47987, 9.62633, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.625, 2, 10.5, 2.25], "texture": "#0"},
+ "east": {"uv": [9.75, 9, 9.5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.625, 1.5, 10.5, 1.75], "texture": "#0"},
+ "west": {"uv": [9.75, 9.5, 9.5, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.5, 2.5, 10.75], "texture": "#0"},
+ "down": {"uv": [10.625, 2.75, 10.5, 2.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.28539, 9.15742, 7.98602],
+ "to": [6.46179, 9.58279, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.625, 3, 10.5, 3.25], "texture": "#0"},
+ "east": {"uv": [5, 9, 4.5, 9.25], "texture": "#0"},
+ "south": {"uv": [3.125, 10.5, 3, 10.75], "texture": "#0"},
+ "west": {"uv": [9.5, 5, 9, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10, 0.5, 10.5], "texture": "#0"},
+ "down": {"uv": [1.125, 10.5, 1, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.16065, 9.28216, 7.98602],
+ "to": [6.58602, 9.45856, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.37355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 3.5, 10.5, 3.625], "texture": "#0"},
+ "east": {"uv": [10.5, 1.5, 10, 1.625], "texture": "#0"},
+ "south": {"uv": [3.75, 10.5, 3.5, 10.625], "texture": "#0"},
+ "west": {"uv": [10.5, 2, 10, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9, 5.5, 9.5], "texture": "#0"},
+ "down": {"uv": [6.25, 9.5, 6, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.16073, 9.28209, 7.98602],
+ "to": [6.5861, 9.4585, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 4, 10.5, 4.125], "texture": "#0"},
+ "east": {"uv": [3, 10, 2.5, 10.125], "texture": "#0"},
+ "south": {"uv": [4.25, 10.5, 4, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10, 3, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [8.25, 9.5, 8, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.28547, 9.15735, 7.98602],
+ "to": [6.46187, 9.58273, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.37355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [5.125, 10.5, 5, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 8, 9, 8.25], "texture": "#0"},
+ "south": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "west": {"uv": [9, 9, 8.5, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [10.125, 5.5, 10, 5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53541, 8.63293, 7.01398],
+ "to": [6.75867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 5.5, 10.125, 5.75], "texture": "#0"},
+ "east": {"uv": [4, 8.5, 4.875, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 6, 10.125, 6.25], "texture": "#0"},
+ "west": {"uv": [8.5, 4, 9.375, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9.875, 9, 9], "texture": "#0"},
+ "down": {"uv": [0.125, 9.5, 0, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37764, 8.79072, 7.01398],
+ "to": [6.91599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.25, 6.625], "texture": "#0"},
+ "east": {"uv": [0.5, 9.5, 1.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 7, 10.25, 7.125], "texture": "#0"},
+ "west": {"uv": [9.5, 1, 10.375, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 5.375, 8.5, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 8.5, 5, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.53551, 8.63285, 7.01398],
+ "to": [6.75877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.625, 10.25], "texture": "#0"},
+ "east": {"uv": [5.5, 8.5, 6.375, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 7.5, 10.125, 7.75], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 9.375, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 1.5, 9.5, 2.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.37754, 8.7908, 7.01398],
+ "to": [6.91589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.25, 10.125], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 8, 10.25, 8.125], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.375, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 9.375, 6.5, 8.5], "texture": "#0"},
+ "down": {"uv": [7.25, 8.5, 7, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.54086, 8.64578, 6.51398],
+ "to": [6.7534, 9.15828, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 4, 9.75, 4.25], "texture": "#0"},
+ "south": {"uv": [10, 8.5, 10.125, 8.75], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.75, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10.25, 9, 10], "texture": "#0"},
+ "down": {"uv": [10.125, 9, 10, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.39057, 8.79607, 6.51398],
+ "to": [6.90307, 9.00861, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.75, 10.125], "texture": "#0"},
+ "east": {"uv": [10, 9.5, 10.25, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 10, 10.25, 10.125], "texture": "#0"},
+ "west": {"uv": [0, 10.5, 0.25, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.75, 8, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8, 9.5, 8.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.39048, 8.79615, 6.51398],
+ "to": [6.90298, 9.00869, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [0.5, 10.5, 0.75, 10.625], "texture": "#0"},
+ "east": {"uv": [1, 10.5, 1.25, 10.625], "texture": "#0"},
+ "south": {"uv": [10.5, 1, 10.75, 1.125], "texture": "#0"},
+ "west": {"uv": [1.5, 10.5, 1.75, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.75, 8.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8.5, 9.5, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.54077, 8.64586, 6.51398],
+ "to": [6.7533, 9.15836, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [10.5, 1.5, 10.625, 1.75], "texture": "#0"},
+ "east": {"uv": [9.5, 9, 9.75, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 2, 10.625, 2.25], "texture": "#0"},
+ "west": {"uv": [9.5, 9.5, 9.75, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.75, 2.5, 10.5], "texture": "#0"},
+ "down": {"uv": [10.625, 2.5, 10.5, 2.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.55882, 8.68945, 5.61398],
+ "to": [6.73523, 9.11482, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.125, 10.75], "texture": "#0"},
+ "east": {"uv": [4.5, 9, 5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 3, 10.625, 3.25], "texture": "#0"},
+ "west": {"uv": [9, 5, 9.5, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10.5, 0.5, 10], "texture": "#0"},
+ "down": {"uv": [1.125, 10, 1, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.43409, 8.81419, 5.61398],
+ "to": [6.85946, 8.99059, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.64699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.75, 10.625], "texture": "#0"},
+ "east": {"uv": [10, 1.5, 10.5, 1.625], "texture": "#0"},
+ "south": {"uv": [10.5, 3.5, 10.75, 3.625], "texture": "#0"},
+ "west": {"uv": [10, 2, 10.5, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9.5, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [6.25, 9, 6, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.43416, 8.81412, 5.61398],
+ "to": [6.85954, 8.99053, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4, 10.5, 4.25, 10.625], "texture": "#0"},
+ "east": {"uv": [2.5, 10, 3, 10.125], "texture": "#0"},
+ "south": {"uv": [10.5, 4, 10.75, 4.125], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.5, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9.5, 7.5, 9], "texture": "#0"},
+ "down": {"uv": [8.25, 9, 8, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.5589, 8.68938, 5.61398],
+ "to": [6.73531, 9.11476, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.64699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9, 8, 9.5, 8.25], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.125, 10.75], "texture": "#0"},
+ "west": {"uv": [8.5, 9, 9, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4.5, 10, 4], "texture": "#0"},
+ "down": {"uv": [10.125, 5, 10, 5.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.81197, 9.1009, 5.62274],
+ "to": [7.03523, 9.63924, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 6, 10, 6.25], "texture": "#0"},
+ "east": {"uv": [4.875, 8.5, 4, 8.75], "texture": "#0"},
+ "south": {"uv": [10.125, 5.5, 10, 5.75], "texture": "#0"},
+ "west": {"uv": [9.375, 4, 8.5, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9, 9, 9.875], "texture": "#0"},
+ "down": {"uv": [0.125, 10.375, 0, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65421, 9.25869, 5.62274],
+ "to": [7.19255, 9.48194, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 7, 10, 7.125], "texture": "#0"},
+ "east": {"uv": [1.375, 9.5, 0.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.25, 6.5, 10, 6.625], "texture": "#0"},
+ "west": {"uv": [10.375, 1, 9.5, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 4.5, 8.5, 5.375], "texture": "#0"},
+ "down": {"uv": [5.25, 9.375, 5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.81207, 9.10082, 5.62274],
+ "to": [7.03533, 9.63916, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 7.5, 10, 7.75], "texture": "#0"},
+ "east": {"uv": [6.375, 8.5, 5.5, 8.75], "texture": "#0"},
+ "south": {"uv": [7.625, 10, 7.5, 10.25], "texture": "#0"},
+ "west": {"uv": [9.375, 5.5, 8.5, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [9.625, 2.375, 9.5, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.65411, 9.25877, 5.62274],
+ "to": [7.19245, 9.48202, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 8, 10, 8.125], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [8.25, 10, 8, 10.125], "texture": "#0"},
+ "west": {"uv": [10.375, 2.5, 9.5, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 8.5, 6.5, 9.375], "texture": "#0"},
+ "down": {"uv": [7.25, 9.375, 7, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.81742, 9.11375, 7.48602],
+ "to": [7.02996, 9.62625, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.125, 8.5, 10, 8.75], "texture": "#0"},
+ "east": {"uv": [9.75, 4, 9.5, 4.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10, 8.5, 10.25], "texture": "#0"},
+ "west": {"uv": [7.75, 9.5, 7.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10, 9, 10.25], "texture": "#0"},
+ "down": {"uv": [10.125, 9.25, 10, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.66714, 9.26404, 7.48602],
+ "to": [7.17964, 9.47658, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.25, 10, 10, 10.125], "texture": "#0"},
+ "east": {"uv": [10.25, 9.5, 10, 9.625], "texture": "#0"},
+ "south": {"uv": [9.75, 10, 9.5, 10.125], "texture": "#0"},
+ "west": {"uv": [0.25, 10.5, 0, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.5, 8, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.25, 9.5, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.66704, 9.26412, 7.48602],
+ "to": [7.17954, 9.47665, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.75, 1, 10.5, 1.125], "texture": "#0"},
+ "east": {"uv": [1.25, 10.5, 1, 10.625], "texture": "#0"},
+ "south": {"uv": [0.75, 10.5, 0.5, 10.625], "texture": "#0"},
+ "west": {"uv": [1.75, 10.5, 1.5, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.5, 8.5, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.75, 9.5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.81733, 9.11383, 7.48602],
+ "to": [7.02987, 9.62633, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.625, 2, 10.5, 2.25], "texture": "#0"},
+ "east": {"uv": [9.75, 9, 9.5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.625, 1.5, 10.5, 1.75], "texture": "#0"},
+ "west": {"uv": [9.75, 9.5, 9.5, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.5, 2.5, 10.75], "texture": "#0"},
+ "down": {"uv": [10.625, 2.75, 10.5, 2.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.83539, 9.15742, 7.98602],
+ "to": [7.01179, 9.58279, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.625, 3, 10.5, 3.25], "texture": "#0"},
+ "east": {"uv": [5, 9, 4.5, 9.25], "texture": "#0"},
+ "south": {"uv": [3.125, 10.5, 3, 10.75], "texture": "#0"},
+ "west": {"uv": [9.5, 5, 9, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10, 0.5, 10.5], "texture": "#0"},
+ "down": {"uv": [1.125, 10.5, 1, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.71065, 9.28216, 7.98602],
+ "to": [7.13602, 9.45856, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [6.92355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 3.5, 10.5, 3.625], "texture": "#0"},
+ "east": {"uv": [10.5, 1.5, 10, 1.625], "texture": "#0"},
+ "south": {"uv": [3.75, 10.5, 3.5, 10.625], "texture": "#0"},
+ "west": {"uv": [10.5, 2, 10, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9, 5.5, 9.5], "texture": "#0"},
+ "down": {"uv": [6.25, 9.5, 6, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.71073, 9.28209, 7.98602],
+ "to": [7.1361, 9.4585, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 4, 10.5, 4.125], "texture": "#0"},
+ "east": {"uv": [3, 10, 2.5, 10.125], "texture": "#0"},
+ "south": {"uv": [4.25, 10.5, 4, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10, 3, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [8.25, 9.5, 8, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.83547, 9.15735, 7.98602],
+ "to": [7.01187, 9.58273, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [6.92355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [5.125, 10.5, 5, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 8, 9, 8.25], "texture": "#0"},
+ "south": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "west": {"uv": [9, 9, 8.5, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [10.125, 5.5, 10, 5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08541, 8.63293, 7.01398],
+ "to": [7.30867, 9.17127, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 5.5, 10.125, 5.75], "texture": "#0"},
+ "east": {"uv": [4, 8.5, 4.875, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 6, 10.125, 6.25], "texture": "#0"},
+ "west": {"uv": [8.5, 4, 9.375, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9.875, 9, 9], "texture": "#0"},
+ "down": {"uv": [0.125, 9.5, 0, 10.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92764, 8.79072, 7.01398],
+ "to": [7.46599, 9.01397, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [10, 6.5, 10.25, 6.625], "texture": "#0"},
+ "east": {"uv": [0.5, 9.5, 1.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 7, 10.25, 7.125], "texture": "#0"},
+ "west": {"uv": [9.5, 1, 10.375, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 5.375, 8.5, 4.5], "texture": "#0"},
+ "down": {"uv": [5.25, 8.5, 5, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.08551, 8.63285, 7.01398],
+ "to": [7.30877, 9.17119, 8.87726],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [7.5, 10, 7.625, 10.25], "texture": "#0"},
+ "east": {"uv": [5.5, 8.5, 6.375, 8.75], "texture": "#0"},
+ "south": {"uv": [10, 7.5, 10.125, 7.75], "texture": "#0"},
+ "west": {"uv": [8.5, 5.5, 9.375, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 10.375, 1.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.625, 1.5, 9.5, 2.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.92754, 8.7908, 7.01398],
+ "to": [7.46589, 9.01405, 8.87726],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.44645]},
+ "faces": {
+ "north": {"uv": [8, 10, 8.25, 10.125], "texture": "#0"},
+ "east": {"uv": [2.5, 9.5, 3.375, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 8, 10.25, 8.125], "texture": "#0"},
+ "west": {"uv": [9.5, 2.5, 10.375, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 9.375, 6.5, 8.5], "texture": "#0"},
+ "down": {"uv": [7.25, 8.5, 7, 9.375], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.09086, 8.64578, 6.51398],
+ "to": [7.3034, 9.15828, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [8.5, 10, 8.625, 10.25], "texture": "#0"},
+ "east": {"uv": [9.5, 4, 9.75, 4.25], "texture": "#0"},
+ "south": {"uv": [10, 8.5, 10.125, 8.75], "texture": "#0"},
+ "west": {"uv": [7.5, 9.5, 7.75, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10.25, 9, 10], "texture": "#0"},
+ "down": {"uv": [10.125, 9, 10, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.94057, 8.79607, 6.51398],
+ "to": [7.45307, 9.00861, 7.01398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [9.5, 10, 9.75, 10.125], "texture": "#0"},
+ "east": {"uv": [10, 9.5, 10.25, 9.625], "texture": "#0"},
+ "south": {"uv": [10, 10, 10.25, 10.125], "texture": "#0"},
+ "west": {"uv": [0, 10.5, 0.25, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.75, 8, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8, 9.5, 8.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.94048, 8.79615, 6.51398],
+ "to": [7.45298, 9.00869, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [0.5, 10.5, 0.75, 10.625], "texture": "#0"},
+ "east": {"uv": [1, 10.5, 1.25, 10.625], "texture": "#0"},
+ "south": {"uv": [10.5, 1, 10.75, 1.125], "texture": "#0"},
+ "west": {"uv": [1.5, 10.5, 1.75, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.75, 8.5, 9.5], "texture": "#0"},
+ "down": {"uv": [9.75, 8.5, 9.5, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.09077, 8.64586, 6.51398],
+ "to": [7.3033, 9.15836, 7.01398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.49835]},
+ "faces": {
+ "north": {"uv": [10.5, 1.5, 10.625, 1.75], "texture": "#0"},
+ "east": {"uv": [9.5, 9, 9.75, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 2, 10.625, 2.25], "texture": "#0"},
+ "west": {"uv": [9.5, 9.5, 9.75, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.75, 2.5, 10.5], "texture": "#0"},
+ "down": {"uv": [10.625, 2.5, 10.5, 2.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.10882, 8.68945, 5.61398],
+ "to": [7.28523, 9.11482, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3, 10.5, 3.125, 10.75], "texture": "#0"},
+ "east": {"uv": [4.5, 9, 5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.5, 3, 10.625, 3.25], "texture": "#0"},
+ "west": {"uv": [9, 5, 9.5, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10.5, 0.5, 10], "texture": "#0"},
+ "down": {"uv": [1.125, 10, 1, 10.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.98409, 8.81419, 5.61398],
+ "to": [7.40946, 8.99059, 6.51398],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.19699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [3.5, 10.5, 3.75, 10.625], "texture": "#0"},
+ "east": {"uv": [10, 1.5, 10.5, 1.625], "texture": "#0"},
+ "south": {"uv": [10.5, 3.5, 10.75, 3.625], "texture": "#0"},
+ "west": {"uv": [10, 2, 10.5, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9.5, 5.5, 9], "texture": "#0"},
+ "down": {"uv": [6.25, 9, 6, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [6.98416, 8.81412, 5.61398],
+ "to": [7.40954, 8.99053, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4, 10.5, 4.25, 10.625], "texture": "#0"},
+ "east": {"uv": [2.5, 10, 3, 10.125], "texture": "#0"},
+ "south": {"uv": [10.5, 4, 10.75, 4.125], "texture": "#0"},
+ "west": {"uv": [3, 10, 3.5, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9.5, 7.5, 9], "texture": "#0"},
+ "down": {"uv": [8.25, 9, 8, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.1089, 8.68938, 5.61398],
+ "to": [7.28531, 9.11476, 6.51398],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.19699, 8.90226, 7.33101]},
+ "faces": {
+ "north": {"uv": [4.5, 10.5, 4.625, 10.75], "texture": "#0"},
+ "east": {"uv": [9, 8, 9.5, 8.25], "texture": "#0"},
+ "south": {"uv": [5, 10.5, 5.125, 10.75], "texture": "#0"},
+ "west": {"uv": [8.5, 9, 9, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4.5, 10, 4], "texture": "#0"},
+ "down": {"uv": [10.125, 5, 10, 5.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.36197, 9.1009, 5.62274],
+ "to": [7.58523, 9.63924, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 6, 10, 6.25], "texture": "#0"},
+ "east": {"uv": [4.875, 8.5, 4, 8.75], "texture": "#0"},
+ "south": {"uv": [10.125, 5.5, 10, 5.75], "texture": "#0"},
+ "west": {"uv": [9.375, 4, 8.5, 4.25], "texture": "#0"},
+ "up": {"uv": [9.125, 9, 9, 9.875], "texture": "#0"},
+ "down": {"uv": [0.125, 10.375, 0, 9.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.20421, 9.25869, 5.62274],
+ "to": [7.74255, 9.48194, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 7, 10, 7.125], "texture": "#0"},
+ "east": {"uv": [1.375, 9.5, 0.5, 9.625], "texture": "#0"},
+ "south": {"uv": [10.25, 6.5, 10, 6.625], "texture": "#0"},
+ "west": {"uv": [10.375, 1, 9.5, 1.125], "texture": "#0"},
+ "up": {"uv": [8.75, 4.5, 8.5, 5.375], "texture": "#0"},
+ "down": {"uv": [5.25, 9.375, 5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.36207, 9.10082, 5.62274],
+ "to": [7.58533, 9.63916, 7.48602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.125, 7.5, 10, 7.75], "texture": "#0"},
+ "east": {"uv": [6.375, 8.5, 5.5, 8.75], "texture": "#0"},
+ "south": {"uv": [7.625, 10, 7.5, 10.25], "texture": "#0"},
+ "west": {"uv": [9.375, 5.5, 8.5, 5.75], "texture": "#0"},
+ "up": {"uv": [1.625, 9.5, 1.5, 10.375], "texture": "#0"},
+ "down": {"uv": [9.625, 2.375, 9.5, 1.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.20411, 9.25877, 5.62274],
+ "to": [7.74245, 9.48202, 7.48602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.05355]},
+ "faces": {
+ "north": {"uv": [10.25, 8, 10, 8.125], "texture": "#0"},
+ "east": {"uv": [3.375, 9.5, 2.5, 9.625], "texture": "#0"},
+ "south": {"uv": [8.25, 10, 8, 10.125], "texture": "#0"},
+ "west": {"uv": [10.375, 2.5, 9.5, 2.625], "texture": "#0"},
+ "up": {"uv": [6.75, 8.5, 6.5, 9.375], "texture": "#0"},
+ "down": {"uv": [7.25, 9.375, 7, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.36742, 9.11375, 7.48602],
+ "to": [7.57996, 9.62625, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.125, 8.5, 10, 8.75], "texture": "#0"},
+ "east": {"uv": [9.75, 4, 9.5, 4.25], "texture": "#0"},
+ "south": {"uv": [8.625, 10, 8.5, 10.25], "texture": "#0"},
+ "west": {"uv": [7.75, 9.5, 7.5, 9.75], "texture": "#0"},
+ "up": {"uv": [9.125, 10, 9, 10.25], "texture": "#0"},
+ "down": {"uv": [10.125, 9.25, 10, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.21714, 9.26404, 7.48602],
+ "to": [7.72964, 9.47658, 7.98602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.25, 10, 10, 10.125], "texture": "#0"},
+ "east": {"uv": [10.25, 9.5, 10, 9.625], "texture": "#0"},
+ "south": {"uv": [9.75, 10, 9.5, 10.125], "texture": "#0"},
+ "west": {"uv": [0.25, 10.5, 0, 10.625], "texture": "#0"},
+ "up": {"uv": [8.25, 9.5, 8, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.25, 9.5, 8], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.21704, 9.26412, 7.48602],
+ "to": [7.72954, 9.47665, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.75, 1, 10.5, 1.125], "texture": "#0"},
+ "east": {"uv": [1.25, 10.5, 1, 10.625], "texture": "#0"},
+ "south": {"uv": [0.75, 10.5, 0.5, 10.625], "texture": "#0"},
+ "west": {"uv": [1.75, 10.5, 1.5, 10.625], "texture": "#0"},
+ "up": {"uv": [8.75, 9.5, 8.5, 9.75], "texture": "#0"},
+ "down": {"uv": [9.75, 8.75, 9.5, 8.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.36733, 9.11383, 7.48602],
+ "to": [7.57987, 9.62633, 7.98602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.00165]},
+ "faces": {
+ "north": {"uv": [10.625, 2, 10.5, 2.25], "texture": "#0"},
+ "east": {"uv": [9.75, 9, 9.5, 9.25], "texture": "#0"},
+ "south": {"uv": [10.625, 1.5, 10.5, 1.75], "texture": "#0"},
+ "west": {"uv": [9.75, 9.5, 9.5, 9.75], "texture": "#0"},
+ "up": {"uv": [2.625, 10.5, 2.5, 10.75], "texture": "#0"},
+ "down": {"uv": [10.625, 2.75, 10.5, 2.5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.38539, 9.15742, 7.98602],
+ "to": [7.56179, 9.58279, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.625, 3, 10.5, 3.25], "texture": "#0"},
+ "east": {"uv": [5, 9, 4.5, 9.25], "texture": "#0"},
+ "south": {"uv": [3.125, 10.5, 3, 10.75], "texture": "#0"},
+ "west": {"uv": [9.5, 5, 9, 5.25], "texture": "#0"},
+ "up": {"uv": [0.625, 10, 0.5, 10.5], "texture": "#0"},
+ "down": {"uv": [1.125, 10.5, 1, 10], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.26065, 9.28216, 7.98602],
+ "to": [7.68602, 9.45856, 8.88602],
+ "rotation": {"angle": 0, "axis": "x", "origin": [7.47355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 3.5, 10.5, 3.625], "texture": "#0"},
+ "east": {"uv": [10.5, 1.5, 10, 1.625], "texture": "#0"},
+ "south": {"uv": [3.75, 10.5, 3.5, 10.625], "texture": "#0"},
+ "west": {"uv": [10.5, 2, 10, 2.125], "texture": "#0"},
+ "up": {"uv": [5.75, 9, 5.5, 9.5], "texture": "#0"},
+ "down": {"uv": [6.25, 9.5, 6, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.26073, 9.28209, 7.98602],
+ "to": [7.6861, 9.4585, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [10.75, 4, 10.5, 4.125], "texture": "#0"},
+ "east": {"uv": [3, 10, 2.5, 10.125], "texture": "#0"},
+ "south": {"uv": [4.25, 10.5, 4, 10.625], "texture": "#0"},
+ "west": {"uv": [3.5, 10, 3, 10.125], "texture": "#0"},
+ "up": {"uv": [7.75, 9, 7.5, 9.5], "texture": "#0"},
+ "down": {"uv": [8.25, 9.5, 8, 9], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.38547, 9.15735, 7.98602],
+ "to": [7.56187, 9.58273, 8.88602],
+ "rotation": {"angle": 45, "axis": "z", "origin": [7.47355, 9.37023, 7.16899]},
+ "faces": {
+ "north": {"uv": [5.125, 10.5, 5, 10.75], "texture": "#0"},
+ "east": {"uv": [9.5, 8, 9, 8.25], "texture": "#0"},
+ "south": {"uv": [4.625, 10.5, 4.5, 10.75], "texture": "#0"},
+ "west": {"uv": [9, 9, 8.5, 9.25], "texture": "#0"},
+ "up": {"uv": [10.125, 4, 10, 4.5], "texture": "#0"},
+ "down": {"uv": [10.125, 5.5, 10, 5], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 5.5],
+ "to": [10.95, 8, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [5, 8, 6.875, 8.125], "texture": "#0"},
+ "east": {"uv": [7.5, 8.5, 9.25, 8.625], "texture": "#0"},
+ "south": {"uv": [7, 8, 8.875, 8.125], "texture": "#0"},
+ "west": {"uv": [0, 9, 1.75, 9.125], "texture": "#0"},
+ "up": {"uv": [4.375, 1.75, 2.5, 0], "texture": "#0"},
+ "down": {"uv": [4.375, 2, 2.5, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 9.05],
+ "to": [10.95, 9.75, 9.1],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4.5, 3, 6.375, 3.875], "texture": "#0"},
+ "east": {"uv": [3.5, 9.5, 3.625, 10.375], "texture": "#0"},
+ "south": {"uv": [0, 6, 1.875, 6.875], "texture": "#0"},
+ "west": {"uv": [4, 9.5, 4.125, 10.375], "texture": "#0"},
+ "up": {"uv": [9.875, 7.125, 8, 7], "texture": "#0"},
+ "down": {"uv": [9.875, 7.5, 8, 7.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 7.95, 5.45],
+ "to": [10.95, 9.75, 5.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8.7]},
+ "faces": {
+ "north": {"uv": [2, 6, 3.875, 6.875], "texture": "#0"},
+ "east": {"uv": [4.5, 9.5, 4.625, 10.375], "texture": "#0"},
+ "south": {"uv": [6.5, 3, 8.375, 3.875], "texture": "#0"},
+ "west": {"uv": [5, 9.5, 5.125, 10.375], "texture": "#0"},
+ "up": {"uv": [1.875, 8.625, 0, 8.5], "texture": "#0"},
+ "down": {"uv": [3.875, 8.5, 2, 8.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.15, 9.7, 5.5],
+ "to": [10.95, 9.75, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 7.65, 8]},
+ "faces": {
+ "north": {"uv": [8.5, 3, 10.375, 3.125], "texture": "#0"},
+ "east": {"uv": [9, 0, 10.75, 0.125], "texture": "#0"},
+ "south": {"uv": [8.5, 3.5, 10.375, 3.625], "texture": "#0"},
+ "west": {"uv": [9, 0.5, 10.75, 0.625], "texture": "#0"},
+ "up": {"uv": [1.875, 5.75, 0, 4], "texture": "#0"},
+ "down": {"uv": [3.875, 4, 2, 5.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [10.95, 8, 5.5],
+ "to": [10.95, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
+ "east": {"uv": [6.5, 4, 8.25, 4.875], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 0.875], "texture": "#0"},
+ "west": {"uv": [0, 7, 1.75, 7.875], "texture": "#0"},
+ "up": {"uv": [0, 1.75, 0, 0], "texture": "#0"},
+ "down": {"uv": [0, 0, 0, 1.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 5.6],
+ "to": [9.9, 8.1, 8.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [5.5, 7, 7.875, 7.125], "texture": "#0"},
+ "east": {"uv": [2.5, 9, 4.125, 9.125], "texture": "#0"},
+ "south": {"uv": [7, 6, 9.375, 6.125], "texture": "#0"},
+ "west": {"uv": [9, 4.5, 10.625, 4.625], "texture": "#0"},
+ "up": {"uv": [2.375, 1.625, 0, 0], "texture": "#0"},
+ "down": {"uv": [2.375, 2, 0, 3.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 8.1, 5.6],
+ "to": [9.9, 9.7, 8.95],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4, 7, 5.25, 7.75], "texture": "#0"},
+ "east": {"uv": [2, 7, 3.625, 7.75], "texture": "#0"},
+ "south": {"uv": [7, 5, 8.25, 5.75], "texture": "#0"},
+ "west": {"uv": [7, 2, 8.625, 2.75], "texture": "#0"},
+ "up": {"uv": [5.25, 6.625, 4, 5], "texture": "#0"},
+ "down": {"uv": [6.75, 5, 5.5, 6.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.15, 8, 5.5],
+ "to": [5.25, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [9.5, 5, 9.625, 5.875], "texture": "#0"},
+ "east": {"uv": [7, 0, 8.75, 0.875], "texture": "#0"},
+ "south": {"uv": [5.5, 9.5, 5.625, 10.375], "texture": "#0"},
+ "west": {"uv": [7, 1, 8.75, 1.875], "texture": "#0"},
+ "up": {"uv": [9.125, 2.75, 9, 1], "texture": "#0"},
+ "down": {"uv": [2.125, 9, 2, 10.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 8.95],
+ "to": [9.9, 9.7, 9.05],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4, 4, 6.375, 4.875], "texture": "#0"},
+ "east": {"uv": [6, 9.5, 6.125, 10.375], "texture": "#0"},
+ "south": {"uv": [4.5, 0, 6.875, 0.875], "texture": "#0"},
+ "west": {"uv": [9.5, 6, 9.625, 6.875], "texture": "#0"},
+ "up": {"uv": [9.375, 6.625, 7, 6.5], "texture": "#0"},
+ "down": {"uv": [7.875, 7.5, 5.5, 7.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [5.25, 8, 5.5],
+ "to": [9.9, 9.7, 5.6],
+ "rotation": {"angle": 0, "axis": "y", "origin": [7.05, 8, 8]},
+ "faces": {
+ "north": {"uv": [4.5, 1, 6.875, 1.875], "texture": "#0"},
+ "east": {"uv": [6.5, 9.5, 6.625, 10.375], "texture": "#0"},
+ "south": {"uv": [4.5, 2, 6.875, 2.875], "texture": "#0"},
+ "west": {"uv": [7, 9.5, 7.125, 10.375], "texture": "#0"},
+ "up": {"uv": [2.375, 8.125, 0, 8], "texture": "#0"},
+ "down": {"uv": [4.875, 8, 2.5, 8.125], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "firstperson_righthand": {
+ "rotation": [-176.93, -29.4, 108.89],
+ "translation": [0.25, 2.25, 0.25]
+ },
+ "firstperson_lefthand": {
+ "rotation": [0, 27.75, 66.5],
+ "translation": [0.25, 2.25, 0.5]
+ },
+ "ground": {
+ "translation": [0, -2, 0],
+ "scale": [0.9, 0.9, 0.9]
+ },
+ "gui": {
+ "rotation": [-135, 145, -180],
+ "translation": [0.75, -2.5, 0],
+ "scale": [2.05, 2.05, 2.05]
+ },
+ "head": {
+ "translation": [0, 6.25, 0]
+ },
+ "fixed": {
+ "rotation": [-90, 0, 0],
+ "translation": [-0.75, 0.75, 0],
+ "scale": [2.5, 2.5, 2.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 0, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71]
+ },
+ {
+ "name": "ammo",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]
+ }
+ ]
+ },
+ {
+ "name": "group",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [
+ {
+ "name": "group",
+ "origin": [7.05, 8, 8],
+ "color": 0,
+ "children": [96, 97, 98, 99, 100]
+ },
+ 101,
+ 102,
+ 103,
+ 104,
+ 105
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/sniperammobox.json.textures b/models/sniperammobox.json.textures
new file mode 100644
index 000000000..300357bd0
--- /dev/null
+++ b/models/sniperammobox.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "sniperammobox"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/taser_electrode.json b/models/taser_electrode.json
new file mode 100644
index 000000000..b2be13ff6
--- /dev/null
+++ b/models/taser_electrode.json
@@ -0,0 +1,176 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [32, 32],
+ "textures": {
+ "0": "target:target/taser/tasergun"
+ },
+ "elements": [
+ {
+ "from": [7.55, 7.55, 5.9],
+ "to": [8.45, 9.05, 6],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.3, 8.75]},
+ "faces": {
+ "north": {"uv": [4, 5.5, 4.5, 6.25], "texture": "#0"},
+ "east": {"uv": [9.5, 5.5, 9.625, 6.25], "texture": "#0"},
+ "south": {"uv": [0, 6, 0.5, 6.75], "texture": "#0"},
+ "west": {"uv": [6, 9.5, 6.125, 10.25], "texture": "#0"},
+ "up": {"uv": [5.5, 10.125, 5, 10], "texture": "#0"},
+ "down": {"uv": [10.5, 5, 10, 5.125], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.35, 7.45, 5.95],
+ "to": [8.65, 9.15, 7.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.3, 8.75]},
+ "faces": {
+ "north": {"uv": [0, 5, 0.625, 5.875], "texture": "#0"},
+ "east": {"uv": [1, 4, 1.75, 4.875], "texture": "#0"},
+ "south": {"uv": [1, 5, 1.625, 5.875], "texture": "#0"},
+ "west": {"uv": [2, 4, 2.75, 4.875], "texture": "#0"},
+ "up": {"uv": [3.625, 6.25, 3, 5.5], "texture": "#0"},
+ "down": {"uv": [6.125, 3, 5.5, 3.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 7.15, 7.25],
+ "to": [8.5, 9.55, 7.5],
+ "rotation": {"angle": 0, "axis": "y", "origin": [8.05, 8.3, 8.75]},
+ "faces": {
+ "north": {"uv": [4, 2, 4.5, 3.25], "texture": "#0"},
+ "east": {"uv": [6, 8, 6.125, 9.25], "texture": "#0"},
+ "south": {"uv": [3, 4, 3.5, 5.25], "texture": "#0"},
+ "west": {"uv": [8, 6, 8.125, 7.25], "texture": "#0"},
+ "up": {"uv": [6, 10.125, 5.5, 10], "texture": "#0"},
+ "down": {"uv": [10.5, 5.5, 10, 5.625], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 9.09825, 6.88986],
+ "to": [8.5, 9.49825, 7.33986],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 9.29825, 7.16486]},
+ "faces": {
+ "north": {"uv": [8.5, 6.5, 9, 6.75], "texture": "#0"},
+ "east": {"uv": [10, 6, 10.25, 6.25], "texture": "#0"},
+ "south": {"uv": [8.5, 7, 9, 7.25], "texture": "#0"},
+ "west": {"uv": [6.5, 10, 6.75, 10.25], "texture": "#0"},
+ "up": {"uv": [9, 7.75, 8.5, 7.5], "texture": "#0"},
+ "down": {"uv": [8.5, 8.5, 8, 8.75], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 7.20175, 6.88986],
+ "to": [8.5, 7.60175, 7.33986],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 7.40175, 7.16486]},
+ "faces": {
+ "north": {"uv": [8.5, 8, 9, 8.25], "texture": "#0"},
+ "east": {"uv": [10, 6.5, 10.25, 6.75], "texture": "#0"},
+ "south": {"uv": [8.5, 8.5, 9, 8.75], "texture": "#0"},
+ "west": {"uv": [7, 10, 7.25, 10.25], "texture": "#0"},
+ "up": {"uv": [0.5, 9.25, 0, 9], "texture": "#0"},
+ "down": {"uv": [1, 9, 0.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 7.0257, 6.16269],
+ "to": [8.5, 7.4257, 6.61269],
+ "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 7.4757, 7.18769]},
+ "faces": {
+ "north": {"uv": [1, 9, 1.5, 9.25], "texture": "#0"},
+ "east": {"uv": [10, 7, 10.25, 7.25], "texture": "#0"},
+ "south": {"uv": [1.5, 9, 2, 9.25], "texture": "#0"},
+ "west": {"uv": [7.5, 10, 7.75, 10.25], "texture": "#0"},
+ "up": {"uv": [2.5, 9.25, 2, 9], "texture": "#0"},
+ "down": {"uv": [3, 9, 2.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 8.92605, 6.12411],
+ "to": [8.5, 9.32605, 6.57411],
+ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 9.12605, 6.39911]},
+ "faces": {
+ "north": {"uv": [3, 9, 3.5, 9.25], "texture": "#0"},
+ "east": {"uv": [10, 7.5, 10.25, 7.75], "texture": "#0"},
+ "south": {"uv": [3.5, 9, 4, 9.25], "texture": "#0"},
+ "west": {"uv": [8, 10, 8.25, 10.25], "texture": "#0"},
+ "up": {"uv": [9.5, 4.25, 9, 4], "texture": "#0"},
+ "down": {"uv": [5, 9, 4.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 9.07779, 6.48425],
+ "to": [8.5, 9.37779, 6.93425],
+ "rotation": {"angle": 0, "axis": "x", "origin": [8, 9.17779, 6.05925]},
+ "faces": {
+ "north": {"uv": [10, 8, 10.5, 8.125], "texture": "#0"},
+ "east": {"uv": [10.5, 8.5, 10.75, 8.625], "texture": "#0"},
+ "south": {"uv": [8.5, 10, 9, 10.125], "texture": "#0"},
+ "west": {"uv": [9, 10.5, 9.25, 10.625], "texture": "#0"},
+ "up": {"uv": [9.5, 4.75, 9, 4.5], "texture": "#0"},
+ "down": {"uv": [5.5, 9, 5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.5, 7.28, 6.48425],
+ "to": [8.5, 7.51, 6.93425],
+ "rotation": {"angle": 0, "axis": "x", "origin": [8, 9.17221, 5.85925]},
+ "faces": {
+ "north": {"uv": [10, 8.5, 10.5, 8.625], "texture": "#0"},
+ "east": {"uv": [10.5, 9, 10.75, 9.125], "texture": "#0"},
+ "south": {"uv": [9, 10, 9.5, 10.125], "texture": "#0"},
+ "west": {"uv": [9.5, 10.5, 9.75, 10.625], "texture": "#0"},
+ "up": {"uv": [9.5, 5.25, 9, 5], "texture": "#0"},
+ "down": {"uv": [6, 9, 5.5, 9.25], "texture": "#0"}
+ }
+ },
+ {
+ "from": [7.25, 7.98995, 7.93076],
+ "to": [8.75, 8.78995, 8.73076],
+ "rotation": {"angle": 45, "axis": "x", "origin": [8, 9.28995, 7.83076]},
+ "faces": {
+ "north": {"uv": [6.5, 4, 7.25, 4.375], "texture": "#0"},
+ "east": {"uv": [4.5, 8.5, 4.875, 8.875], "texture": "#0"},
+ "south": {"uv": [4.5, 6.5, 5.25, 6.875], "texture": "#0"},
+ "west": {"uv": [5, 8.5, 5.375, 8.875], "texture": "#0"},
+ "up": {"uv": [7.25, 4.875, 6.5, 4.5], "texture": "#0"},
+ "down": {"uv": [7.25, 5, 6.5, 5.375], "texture": "#0"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, -0.25, 2]
+ },
+ "thirdperson_lefthand": {
+ "translation": [0, -0.25, 2]
+ },
+ "firstperson_righthand": {
+ "rotation": [85.36, -8.76, 9.32],
+ "translation": [0, 1.5, 2]
+ },
+ "firstperson_lefthand": {
+ "rotation": [85.36, -8.76, 9.32],
+ "translation": [0, 1.5, 2]
+ },
+ "gui": {
+ "rotation": [-134.25, 45, -180],
+ "translation": [1.75, 1, 0],
+ "scale": [3, 3, 3]
+ },
+ "head": {
+ "translation": [0, 10.25, -1.25]
+ },
+ "fixed": {
+ "translation": [0, 0.5, 1.25],
+ "scale": [1.5, 1.5, 1.5]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [8, 9.28995, 4.83076],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/taser_electrode.json.textures b/models/taser_electrode.json.textures
new file mode 100644
index 000000000..53fc22f0b
--- /dev/null
+++ b/models/taser_electrode.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "0": "tasergun"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/models/tiesiwang.json b/models/tiesiwang.json
new file mode 100644
index 000000000..9b609c18f
--- /dev/null
+++ b/models/tiesiwang.json
@@ -0,0 +1,249 @@
+{
+ "credit": "Made with Blockbench",
+ "texture_size": [64, 64],
+ "textures": {
+ "1": "tiesiwang"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 1],
+ "to": [2, 23, 2],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 1]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.5, 5.75], "texture": "#1"},
+ "east": {"uv": [5, 2, 5.25, 7.75], "texture": "#1"},
+ "south": {"uv": [0.5, 0, 1, 5.75], "texture": "#1"},
+ "west": {"uv": [5.25, 2, 5.5, 7.75], "texture": "#1"},
+ "up": {"uv": [1, 6, 0.5, 5.75], "texture": "#1"},
+ "down": {"uv": [1.5, 5.75, 1, 6], "texture": "#1"}
+ }
+ },
+ {
+ "from": [14, 0, 0],
+ "to": [16, 22, 1],
+ "rotation": {"angle": 45, "axis": "z", "origin": [15, 1, 1]},
+ "faces": {
+ "north": {"uv": [2, 0, 2.5, 5.5], "texture": "#1"},
+ "east": {"uv": [2.25, 5.5, 2.5, 11], "texture": "#1"},
+ "south": {"uv": [2.5, 0, 3, 5.5], "texture": "#1"},
+ "west": {"uv": [2.5, 5.5, 2.75, 11], "texture": "#1"},
+ "up": {"uv": [2, 6, 1.5, 5.75], "texture": "#1"},
+ "down": {"uv": [6.25, 2, 5.75, 2.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [14.5, 10.5, -0.1],
+ "to": [15.5, 11.5, 0],
+ "rotation": {"angle": 45, "axis": "z", "origin": [15, 1, 1]},
+ "faces": {
+ "north": {"uv": [3.75, 5.5, 4, 5.75], "texture": "#1"},
+ "east": {"uv": [5.75, 3.25, 6, 3.5], "texture": "#1"},
+ "south": {"uv": [5.75, 3.5, 6, 3.75], "texture": "#1"},
+ "west": {"uv": [3.75, 5.75, 4, 6], "texture": "#1"},
+ "up": {"uv": [6, 4, 5.75, 3.75], "texture": "#1"},
+ "down": {"uv": [6, 4, 5.75, 4.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [14.5, 10.5, 16],
+ "to": [15.5, 11.5, 16.1],
+ "rotation": {"angle": 45, "axis": "z", "origin": [15, 1, 15]},
+ "faces": {
+ "north": {"uv": [5.75, 4.25, 6, 4.5], "texture": "#1"},
+ "east": {"uv": [5.75, 4.5, 6, 4.75], "texture": "#1"},
+ "south": {"uv": [5.75, 4.75, 6, 5], "texture": "#1"},
+ "west": {"uv": [5.75, 5, 6, 5.25], "texture": "#1"},
+ "up": {"uv": [6, 5.5, 5.75, 5.25], "texture": "#1"},
+ "down": {"uv": [6, 5.5, 5.75, 5.75], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0, 0, 14],
+ "to": [2, 23, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [1, 0, 1.5, 5.75], "texture": "#1"},
+ "east": {"uv": [2, 5.5, 2.25, 11.25], "texture": "#1"},
+ "south": {"uv": [1.5, 0, 2, 5.75], "texture": "#1"},
+ "west": {"uv": [5.5, 2, 5.75, 7.75], "texture": "#1"},
+ "up": {"uv": [6.25, 2.5, 5.75, 2.25], "texture": "#1"},
+ "down": {"uv": [6.25, 2.5, 5.75, 2.75], "texture": "#1"}
+ }
+ },
+ {
+ "from": [-2, 11.9, 0.5],
+ "to": [0, 13.9, 15.5],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [3.25, 5.5, 3.75, 6], "texture": "#1"},
+ "east": {"uv": [4, 0, 7.75, 0.5], "texture": "#1"},
+ "south": {"uv": [0, 5.75, 0.5, 6.25], "texture": "#1"},
+ "west": {"uv": [4, 0.5, 7.75, 1], "texture": "#1"},
+ "up": {"uv": [4.5, 4.75, 4, 1], "texture": "#1"},
+ "down": {"uv": [5, 1, 4.5, 4.75], "texture": "#1"}
+ }
+ },
+ {
+ "from": [14, 0, 15],
+ "to": [16, 22, 16],
+ "rotation": {"angle": 45, "axis": "z", "origin": [15, 1, 15]},
+ "faces": {
+ "north": {"uv": [3, 0, 3.5, 5.5], "texture": "#1"},
+ "east": {"uv": [2.75, 5.5, 3, 11], "texture": "#1"},
+ "south": {"uv": [3.5, 0, 4, 5.5], "texture": "#1"},
+ "west": {"uv": [3, 5.5, 3.25, 11], "texture": "#1"},
+ "up": {"uv": [6.25, 3, 5.75, 2.75], "texture": "#1"},
+ "down": {"uv": [6.25, 3, 5.75, 3.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0.92929, 14.07142, 1],
+ "to": [0.92929, 16.07142, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0.92929, 15.07142, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "east": {"uv": [5, 1, 8.5, 1.5], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "west": {"uv": [5, 1.5, 8.5, 2], "texture": "#1"},
+ "up": {"uv": [0, 3.5, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [-10, 10.9, 1],
+ "to": [-8, 10.9, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "up": {"uv": [4.5, 8.25, 4, 4.75], "texture": "#1"},
+ "down": {"uv": [5, 4.75, 4.5, 8.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.92929, 25.07142, 1],
+ "to": [10.92929, 27.07142, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0.92929, 15.07142, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "east": {"uv": [5, 1, 8.5, 1.5], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "west": {"uv": [5, 1.5, 8.5, 2], "texture": "#1"},
+ "up": {"uv": [0, 3.5, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0, 21.9, 1],
+ "to": [2, 21.9, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "up": {"uv": [4.5, 8.25, 4, 4.75], "texture": "#1"},
+ "down": {"uv": [5, 4.75, 4.5, 8.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [10.92929, 5.07142, 1],
+ "to": [10.92929, 7.07142, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0.92929, 15.07142, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "east": {"uv": [5, 1, 8.5, 1.5], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "west": {"uv": [5, 1.5, 8.5, 2], "texture": "#1"},
+ "up": {"uv": [0, 3.5, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
+ }
+ },
+ {
+ "from": [0, 1.9, 1],
+ "to": [2, 1.9, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "up": {"uv": [4.5, 8.25, 4, 4.75], "texture": "#1"},
+ "down": {"uv": [5, 4.75, 4.5, 8.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [9, 10.9, 1],
+ "to": [11, 10.9, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [1, 1, 15]},
+ "faces": {
+ "north": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "east": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "south": {"uv": [0, 0, 0.5, 0], "texture": "#1"},
+ "west": {"uv": [0, 0, 3.5, 0], "texture": "#1"},
+ "up": {"uv": [4.5, 8.25, 4, 4.75], "texture": "#1"},
+ "down": {"uv": [5, 4.75, 4.5, 8.25], "texture": "#1"}
+ }
+ },
+ {
+ "from": [19.92929, 14.07142, 1],
+ "to": [19.92929, 16.07142, 15],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0.92929, 15.07142, 8]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "east": {"uv": [5, 1, 8.5, 1.5], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 0.5], "texture": "#1"},
+ "west": {"uv": [5, 1.5, 8.5, 2], "texture": "#1"},
+ "up": {"uv": [0, 3.5, 0, 0], "texture": "#1"},
+ "down": {"uv": [0, 0, 0, 3.5], "texture": "#1"}
+ }
+ }
+ ],
+ "gui_light": "front",
+ "display": {
+ "thirdperson_righthand": {
+ "translation": [0, 1, -3.5],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "thirdperson_lefthand": {
+ "translation": [0, 1, -3.5],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "firstperson_righthand": {
+ "rotation": [21.15, 23.99, -8.94],
+ "translation": [0, 3.5, -0.5],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "firstperson_lefthand": {
+ "rotation": [21.15, 23.99, -8.94],
+ "translation": [0, 3.5, -0.5],
+ "scale": [0.5, 0.5, 0.5]
+ },
+ "ground": {
+ "translation": [0, 3.25, 0],
+ "scale": [0.4, 0.4, 0.4]
+ },
+ "gui": {
+ "rotation": [19.29, 47.82, -2.83],
+ "translation": [0, 0, -6.25],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "head": {
+ "translation": [0, 14.25, 0]
+ },
+ "fixed": {
+ "rotation": [0, 90, 0],
+ "translation": [0, 0, -6.25]
+ }
+ },
+ "groups": [
+ {
+ "name": "group",
+ "origin": [15, 1, 15],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/models/tiesiwang.json.textures b/models/tiesiwang.json.textures
new file mode 100644
index 000000000..caaf09a12
--- /dev/null
+++ b/models/tiesiwang.json.textures
@@ -0,0 +1,10 @@
+{
+ "mappings": {
+ "default": {
+ "map": {
+ "1": "tiesiwang"
+ },
+ "name": "default"
+ }
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 000000000..291d399db
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,13 @@
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ maven {
+ name = 'MinecraftForge'
+ url = 'https://maven.minecraftforge.net/'
+ }
+ }
+}
+
+plugins {
+ id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0'
+}
\ No newline at end of file
diff --git a/src/main/java/net/mcreator/target/TargetMod.java b/src/main/java/net/mcreator/target/TargetMod.java
new file mode 100644
index 000000000..8dfd9cc9f
--- /dev/null
+++ b/src/main/java/net/mcreator/target/TargetMod.java
@@ -0,0 +1,108 @@
+/*
+ * MCreator note:
+ *
+ * If you lock base mod element files, you can edit this file and it won't get overwritten.
+ * If you change your modid or package, you need to apply these changes to this file MANUALLY.
+ *
+ * Settings in @Mod annotation WON'T be changed in case of the base mod element
+ * files lock too, so you need to set them manually here in such case.
+ *
+ * If you do not lock base mod element files in Workspace settings, this file
+ * will be REGENERATED on each build.
+ *
+ */
+package net.mcreator.target;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+
+import net.minecraftforge.network.simple.SimpleChannel;
+import net.minecraftforge.network.NetworkRegistry;
+import net.minecraftforge.network.NetworkEvent;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.IEventBus;
+import net.minecraftforge.event.TickEvent;
+import net.minecraftforge.common.MinecraftForge;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.FriendlyByteBuf;
+
+import net.mcreator.target.init.TargetModTabs;
+import net.mcreator.target.init.TargetModGunTabs;
+import net.mcreator.target.init.TargetModSounds;
+import net.mcreator.target.init.TargetModParticleTypes;
+import net.mcreator.target.init.TargetModMobEffects;
+import net.mcreator.target.init.TargetModMenus;
+import net.mcreator.target.init.TargetModItems;
+import net.mcreator.target.init.TargetModEntities;
+import net.mcreator.target.init.TargetCustomModEntities;
+import net.mcreator.target.init.TargetModBlocks;
+
+import java.util.function.Supplier;
+import java.util.function.Function;
+import java.util.function.BiConsumer;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.List;
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.AbstractMap;
+
+@Mod("target")
+public class TargetMod {
+ public static final Logger LOGGER = LogManager.getLogger(TargetMod.class);
+ public static final String MODID = "target";
+
+ public TargetMod() {
+ MinecraftForge.EVENT_BUS.register(this);
+ IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
+ TargetModSounds.REGISTRY.register(bus);
+ TargetModBlocks.REGISTRY.register(bus);
+
+ TargetModItems.REGISTRY.register(bus);
+
+ TargetModEntities.REGISTRY.register(bus);
+ TargetCustomModEntities.ENTITY_TYPES.register(bus);
+
+
+ TargetModTabs.REGISTRY.register(bus);
+
+ TargetModGunTabs.REGISTRY.register(bus);
+
+ TargetModMobEffects.REGISTRY.register(bus);
+
+ TargetModParticleTypes.REGISTRY.register(bus);
+
+ TargetModMenus.REGISTRY.register(bus);
+ }
+
+ private static final String PROTOCOL_VERSION = "1";
+ public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation(MODID, MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
+ private static int messageID = 0;
+
+ public static void addNetworkMessage(Class messageType, BiConsumer encoder, Function decoder, BiConsumer> messageConsumer) {
+ PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer);
+ messageID++;
+ }
+
+ private static final Collection> workQueue = new ConcurrentLinkedQueue<>();
+
+ public static void queueServerWork(int tick, Runnable action) {
+ workQueue.add(new AbstractMap.SimpleEntry(action, tick));
+ }
+
+ @SubscribeEvent
+ public void tick(TickEvent.ServerTickEvent event) {
+ if (event.phase == TickEvent.Phase.END) {
+ List> actions = new ArrayList<>();
+ workQueue.forEach(work -> {
+ work.setValue(work.getValue() - 1);
+ if (work.getValue() == 0)
+ actions.add(work);
+ });
+ actions.forEach(e -> e.getKey().run());
+ workQueue.removeAll(actions);
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/BarbedWireBlock.java b/src/main/java/net/mcreator/target/block/BarbedWireBlock.java
new file mode 100644
index 000000000..93cd1ecc1
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/BarbedWireBlock.java
@@ -0,0 +1,86 @@
+package net.mcreator.target.block;
+
+import net.mcreator.target.procedures.BarbedWireShiTiZaiFangKuaiZhongPengZhuangShiProcedure;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.network.chat.Component;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.storage.loot.LootParams;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+
+import java.util.Collections;
+import java.util.List;
+
+public class BarbedWireBlock extends Block {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+
+ public BarbedWireBlock() {
+ super(BlockBehaviour.Properties.of().ignitedByLava().instrument(NoteBlockInstrument.BASS).sound(SoundType.WOOD).strength(10f, 20f).noCollission().speedFactor(0.01f).noOcclusion().isRedstoneConductor((bs, br, bp) -> false));
+ this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
+ return true;
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 0;
+ }
+
+ @Override
+ public VoxelShape getVisualShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return Shapes.empty();
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ builder.add(FACING);
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
+ }
+
+ public BlockState rotate(BlockState state, Rotation rot) {
+ return state.setValue(FACING, rot.rotate(state.getValue(FACING)));
+ }
+
+ public BlockState mirror(BlockState state, Mirror mirrorIn) {
+ return state.rotate(mirrorIn.getRotation(state.getValue(FACING)));
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootParams.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+
+ @Override
+ public void entityInside(BlockState blockstate, Level world, BlockPos pos, Entity entity) {
+ super.entityInside(blockstate, world, pos, entity);
+ BarbedWireShiTiZaiFangKuaiZhongPengZhuangShiProcedure.execute(world, entity);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/DeepslateGalenaOreBlock.java b/src/main/java/net/mcreator/target/block/DeepslateGalenaOreBlock.java
new file mode 100644
index 000000000..80e222a61
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/DeepslateGalenaOreBlock.java
@@ -0,0 +1,40 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.PickaxeItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import java.util.List;
+
+public class DeepslateGalenaOreBlock extends Block {
+ public DeepslateGalenaOreBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(3f, 8f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
+ if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
+ return tieredItem.getTier().getLevel() >= 2;
+ return false;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/DeepslateScheeliteOreBlock.java b/src/main/java/net/mcreator/target/block/DeepslateScheeliteOreBlock.java
new file mode 100644
index 000000000..59fdecb68
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/DeepslateScheeliteOreBlock.java
@@ -0,0 +1,40 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.PickaxeItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import java.util.List;
+
+public class DeepslateScheeliteOreBlock extends Block {
+ public DeepslateScheeliteOreBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(3f, 8f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
+ if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
+ return tieredItem.getTier().getLevel() >= 2;
+ return false;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/GalenaOreBlock.java b/src/main/java/net/mcreator/target/block/GalenaOreBlock.java
new file mode 100644
index 000000000..83db24bc0
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/GalenaOreBlock.java
@@ -0,0 +1,40 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.PickaxeItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import java.util.List;
+
+public class GalenaOreBlock extends Block {
+ public GalenaOreBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(3f, 5f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
+ if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
+ return tieredItem.getTier().getLevel() >= 2;
+ return false;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/GunRecycleBlock.java b/src/main/java/net/mcreator/target/block/GunRecycleBlock.java
new file mode 100644
index 000000000..2732b5d66
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/GunRecycleBlock.java
@@ -0,0 +1,75 @@
+
+package net.mcreator.target.block;
+
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.level.storage.loot.LootParams;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.inventory.AbstractContainerMenu;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.world.MenuProvider;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.target.world.inventory.GunRecycleGuiMenu;
+
+import java.util.List;
+import java.util.Collections;
+
+import io.netty.buffer.Unpooled;
+
+public class GunRecycleBlock extends Block {
+ public GunRecycleBlock() {
+ super(BlockBehaviour.Properties.of().sound(SoundType.METAL).strength(1f, 10f));
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootParams.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+
+ @Override
+ public InteractionResult use(BlockState blockstate, Level world, BlockPos pos, Player entity, InteractionHand hand, BlockHitResult hit) {
+ super.use(blockstate, world, pos, entity, hand, hit);
+ if (entity instanceof ServerPlayer player) {
+ NetworkHooks.openScreen(player, new MenuProvider() {
+ @Override
+ public Component getDisplayName() {
+ return Component.literal("Gun Recycle");
+ }
+
+ @Override
+ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
+ return new GunRecycleGuiMenu(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(pos));
+ }
+ }, pos);
+ }
+ return InteractionResult.SUCCESS;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/JumppadBlockBlock.java b/src/main/java/net/mcreator/target/block/JumppadBlockBlock.java
new file mode 100644
index 000000000..bbb84d9bb
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/JumppadBlockBlock.java
@@ -0,0 +1,102 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.level.storage.loot.LootParams;
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Rotation;
+import net.minecraft.world.level.block.Mirror;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.Direction;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.target.procedures.JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShiProcedure;
+
+import java.util.List;
+import java.util.Collections;
+
+public class JumppadBlockBlock extends Block {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+
+ public JumppadBlockBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(-1, 3600000).noCollission().noOcclusion().isRedstoneConductor((bs, br, bp) -> false));
+ this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public boolean propagatesSkylightDown(BlockState state, BlockGetter reader, BlockPos pos) {
+ return true;
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 0;
+ }
+
+ @Override
+ public VoxelShape getVisualShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return Shapes.empty();
+ }
+
+ @Override
+ public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
+ return switch (state.getValue(FACING)) {
+ default -> Shapes.or(box(0, 0, 0, 16, 3, 16), box(-0.25, -0.1, -0.25, 2, 3.25, 2), box(14, -0.1, -0.25, 16.25, 3.25, 2), box(14, -0.1, 14, 16.25, 3.25, 16.25), box(-0.25, -0.1, 14, 2, 3.25, 16.25), box(1, 3, 1, 15, 4, 15));
+ case NORTH -> Shapes.or(box(0, 0, 0, 16, 3, 16), box(14, -0.1, 14, 16.25, 3.25, 16.25), box(-0.25, -0.1, 14, 2, 3.25, 16.25), box(-0.25, -0.1, -0.25, 2, 3.25, 2), box(14, -0.1, -0.25, 16.25, 3.25, 2), box(1, 3, 1, 15, 4, 15));
+ case EAST -> Shapes.or(box(0, 0, 0, 16, 3, 16), box(-0.25, -0.1, 14, 2, 3.25, 16.25), box(-0.25, -0.1, -0.25, 2, 3.25, 2), box(14, -0.1, -0.25, 16.25, 3.25, 2), box(14, -0.1, 14, 16.25, 3.25, 16.25), box(1, 3, 1, 15, 4, 15));
+ case WEST -> Shapes.or(box(0, 0, 0, 16, 3, 16), box(14, -0.1, -0.25, 16.25, 3.25, 2), box(14, -0.1, 14, 16.25, 3.25, 16.25), box(-0.25, -0.1, 14, 2, 3.25, 16.25), box(-0.25, -0.1, -0.25, 2, 3.25, 2), box(1, 3, 1, 15, 4, 15));
+ };
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ builder.add(FACING);
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
+ }
+
+ public BlockState rotate(BlockState state, Rotation rot) {
+ return state.setValue(FACING, rot.rotate(state.getValue(FACING)));
+ }
+
+ public BlockState mirror(BlockState state, Mirror mirrorIn) {
+ return state.rotate(mirrorIn.getRotation(state.getValue(FACING)));
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootParams.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+
+ @Override
+ public void entityInside(BlockState blockstate, Level world, BlockPos pos, Entity entity) {
+ super.entityInside(blockstate, world, pos, entity);
+ JumppadBlockShiTiZaiFangKuaiZhongPengZhuangShiProcedure.execute(world, pos.getX(), pos.getY(), pos.getZ(), entity);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/SandbagBlock.java b/src/main/java/net/mcreator/target/block/SandbagBlock.java
new file mode 100644
index 000000000..c01471c4b
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/SandbagBlock.java
@@ -0,0 +1,41 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.level.storage.loot.LootParams;
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import java.util.List;
+import java.util.Collections;
+
+public class SandbagBlock extends Block {
+ public SandbagBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.SNARE).sound(SoundType.SAND).strength(10f, 20f));
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public List getDrops(BlockState state, LootParams.Builder builder) {
+ List dropsOriginal = super.getDrops(state, builder);
+ if (!dropsOriginal.isEmpty())
+ return dropsOriginal;
+ return Collections.singletonList(new ItemStack(this, 1));
+ }
+}
diff --git a/src/main/java/net/mcreator/target/block/ScheeliteOreBlock.java b/src/main/java/net/mcreator/target/block/ScheeliteOreBlock.java
new file mode 100644
index 000000000..2b62c6a36
--- /dev/null
+++ b/src/main/java/net/mcreator/target/block/ScheeliteOreBlock.java
@@ -0,0 +1,40 @@
+
+package net.mcreator.target.block;
+
+import net.minecraft.world.level.block.state.properties.NoteBlockInstrument;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.item.TooltipFlag;
+import net.minecraft.world.item.PickaxeItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.network.chat.Component;
+import net.minecraft.core.BlockPos;
+
+import java.util.List;
+
+public class ScheeliteOreBlock extends Block {
+ public ScheeliteOreBlock() {
+ super(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).sound(SoundType.STONE).strength(3f, 5f).requiresCorrectToolForDrops());
+ }
+
+ @Override
+ public void appendHoverText(ItemStack itemstack, BlockGetter world, List list, TooltipFlag flag) {
+ super.appendHoverText(itemstack, world, list, flag);
+ }
+
+ @Override
+ public int getLightBlock(BlockState state, BlockGetter worldIn, BlockPos pos) {
+ return 15;
+ }
+
+ @Override
+ public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) {
+ if (player.getInventory().getSelected().getItem() instanceof PickaxeItem tieredItem)
+ return tieredItem.getTier().getLevel() >= 2;
+ return false;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/ClickHandler.java b/src/main/java/net/mcreator/target/client/ClickHandler.java
new file mode 100644
index 000000000..57467f70a
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/ClickHandler.java
@@ -0,0 +1,141 @@
+package net.mcreator.target.client;
+
+import com.mojang.blaze3d.platform.InputConstants;
+import net.minecraft.client.Minecraft;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.api.distmarker.Dist;
+import net.minecraftforge.client.event.InputEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
+import org.lwjgl.glfw.GLFW;
+import net.minecraft.tags.ItemTags;
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.network.FireMessage;
+import net.mcreator.target.TargetMod;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
+public class ClickHandler {
+ private static boolean isInGame() {
+ Minecraft mc = Minecraft.getInstance();
+ if (mc.player == null)
+ return false;
+ if (mc.getOverlay() != null)
+ return false;
+ if (mc.screen != null)
+ return false;
+ if (!mc.mouseHandler.isMouseGrabbed())
+ return false;
+ return mc.isWindowActive();
+ }
+
+ @SubscribeEvent
+ public static void onKeyReleased(InputEvent.MouseButton.Pre event) {
+ if(!isInGame()) {
+ return;
+ }
+
+ if (event.getAction() != InputConstants.RELEASE) {
+ return;
+ }
+
+ Minecraft mc = Minecraft.getInstance();
+ Player player = mc.player;
+ if (player == null) {
+ return;
+ }
+
+ ItemStack heldItem = player.getMainHandItem();
+
+ int button = event.getButton();
+ if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
+ TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(1, 0));
+ }
+
+ }
+
+ @SubscribeEvent
+ public static void onKeyPressed(InputEvent.MouseButton.Pre event) {
+ if(!isInGame()) {
+ return;
+ }
+
+ if (event.getAction() != InputConstants.PRESS) {
+ return;
+ }
+
+ Minecraft mc = Minecraft.getInstance();
+ Player player = mc.player;
+ if (player == null) {
+ return;
+ }
+
+ ItemStack heldItem = player.getMainHandItem();
+
+ int button = event.getButton();
+ if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
+ if ((player.getMainHandItem()).is(ItemTags.create(new ResourceLocation("target:gun")))) {
+ event.setCanceled(true);
+ TargetMod.PACKET_HANDLER.sendToServer(new FireMessage(0, 0));
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public static void onKeyPressed(InputEvent.Key event) {
+ if(!isInGame()) {
+ return;
+ }
+
+ if (event.getAction() != InputConstants.PRESS) {
+ return;
+ }
+
+ Minecraft mc = Minecraft.getInstance();
+ Player player = mc.player;
+
+ int button = event.getKey();
+ if (button == GLFW.GLFW_KEY_D) {
+ player.getPersistentData().putDouble("mover", 1);
+ }
+ if (button == GLFW.GLFW_KEY_A) {
+ player.getPersistentData().putDouble("movel", 1);
+ }
+ if (button == GLFW.GLFW_KEY_W) {
+ player.getPersistentData().putDouble("qian", 1);
+ }
+ if (button == GLFW.GLFW_KEY_W) {
+ player.getPersistentData().putDouble("tui", 1);
+ }
+ }
+
+ @SubscribeEvent
+ public static void onKeyReleased(InputEvent.Key event) {
+ if(!isInGame()) {
+ return;
+ }
+
+ Minecraft mc = Minecraft.getInstance();
+ Player player = mc.player;
+
+ if (event.getAction() != InputConstants.RELEASE) {
+ return;
+ }
+
+ int button = event.getKey();
+ if (button == GLFW.GLFW_KEY_D) {
+ player.getPersistentData().putDouble("mover", 0);
+ }
+ if (button == GLFW.GLFW_KEY_A) {
+ player.getPersistentData().putDouble("movel", 0);
+ }
+ if (button == GLFW.GLFW_KEY_W) {
+ player.getPersistentData().putDouble("qian", 0);
+ }
+ if (button == GLFW.GLFW_KEY_W) {
+ player.getPersistentData().putDouble("tui", 0);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/mcreator/target/client/CrossHairHandler.java b/src/main/java/net/mcreator/target/client/CrossHairHandler.java
new file mode 100644
index 000000000..4cf7a4e6c
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/CrossHairHandler.java
@@ -0,0 +1,40 @@
+package net.mcreator.target.client;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.api.distmarker.Dist;
+import net.minecraftforge.client.event.RenderGuiOverlayEvent;
+import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
+
+import net.minecraft.tags.ItemTags;
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.network.TargetModVariables;
+
+@Mod.EventBusSubscriber(modid = "target", value = Dist.CLIENT)
+public class CrossHairHandler {
+ @SubscribeEvent
+ public static void onRenderOverlay(RenderGuiOverlayEvent.Pre event) {
+ if (event.getOverlay() != VanillaGuiOverlay.CROSSHAIR.type()) {
+ return;
+ }
+
+ Minecraft mc = Minecraft.getInstance();
+ if (mc.player == null) {
+ return;
+ }
+
+ if (!mc.options.getCameraType().isFirstPerson()) {
+ return;
+ }
+
+ ItemStack heldItem = mc.player.getMainHandItem();
+ {
+ if ((mc.player.getMainHandItem()).is(ItemTags.create(new ResourceLocation("target:gun")))) {
+ event.setCanceled(true);
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/RenderHandler.java b/src/main/java/net/mcreator/target/client/RenderHandler.java
new file mode 100644
index 000000000..b38d12665
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/RenderHandler.java
@@ -0,0 +1,45 @@
+package net.mcreator.target.client;
+
+import net.minecraft.world.item.Item;
+import net.minecraft.world.scores.Objective;
+import net.minecraft.client.CameraType;
+import net.minecraft.client.Minecraft;
+import net.minecraft.world.item.ItemStack;
+import net.minecraftforge.api.distmarker.Dist;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.tags.ItemTags;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraftforge.client.event.ViewportEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.common.Mod;
+import com.ibm.icu.impl.coll.BOCSU;
+
+@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
+public class RenderHandler {
+
+ @SubscribeEvent
+ public static void onFovUpdate(ViewportEvent.ComputeFov event) {
+ if (!event.usedConfiguredFov()) {
+ return;
+ }
+
+ Player player = Minecraft.getInstance().player;
+
+ Minecraft mc = Minecraft.getInstance();
+
+ if (player != null) {
+ ItemStack stack = player.getMainHandItem();
+
+ double p = 0;
+ double zoom = 0;
+
+ p = player.getPersistentData().getDouble("zoompos");
+ zoom = stack.getOrCreateTag().getDouble("zoom");
+
+ if (stack.is(ItemTags.create(new ResourceLocation("target:gun")))) {
+ event.setFOV(event.getFOV() / (1.0 + p * (zoom - 1)));
+ player.getPersistentData().putDouble("fov", event.getFOV());
+ }
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/gui/GunRecycleGuiScreen.java b/src/main/java/net/mcreator/target/client/gui/GunRecycleGuiScreen.java
new file mode 100644
index 000000000..2699b1b6a
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/gui/GunRecycleGuiScreen.java
@@ -0,0 +1,94 @@
+package net.mcreator.target.client.gui;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.chat.Component;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.GuiGraphics;
+
+import net.mcreator.target.world.inventory.GunRecycleGuiMenu;
+import net.mcreator.target.network.GunRecycleGuiButtonMessage;
+import net.mcreator.target.TargetMod;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class GunRecycleGuiScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = GunRecycleGuiMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+ Button button_dismantle;
+
+ public GunRecycleGuiScreen(GunRecycleGuiMenu container, Inventory inventory, Component text) {
+ super(container, inventory, text);
+ this.world = container.world;
+ this.x = container.x;
+ this.y = container.y;
+ this.z = container.z;
+ this.entity = container.entity;
+ this.imageWidth = 176;
+ this.imageHeight = 166;
+ }
+
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/screens/gun_recycle_gui.png");
+
+ @Override
+ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
+ this.renderBackground(guiGraphics);
+ super.render(guiGraphics, mouseX, mouseY, partialTicks);
+ this.renderTooltip(guiGraphics, mouseX, mouseY);
+ if (mouseX > leftPos + 58 && mouseX < leftPos + 116 && mouseY > topPos + 54 && mouseY < topPos + 78)
+ guiGraphics.renderTooltip(font, Component.translatable("gui.target.gun_recycle_gui.tooltip_if_guns_level_10you_will_get"), mouseX, mouseY);
+ }
+
+ @Override
+ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) {
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
+ guiGraphics.blit(texture, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
+ RenderSystem.disableBlend();
+ }
+
+ @Override
+ public boolean keyPressed(int key, int b, int c) {
+ if (key == 256) {
+ this.minecraft.player.closeContainer();
+ return true;
+ }
+ return super.keyPressed(key, b, c);
+ }
+
+ @Override
+ public void containerTick() {
+ super.containerTick();
+ }
+
+ @Override
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ guiGraphics.drawString(this.font, Component.translatable("gui.target.gun_recycle_gui.label_gun_recycle"), 6, 6, -12829636, false);
+ }
+
+ @Override
+ public void onClose() {
+ super.onClose();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ button_dismantle = Button.builder(Component.translatable("gui.target.gun_recycle_gui.button_dismantle"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new GunRecycleGuiButtonMessage(0, x, y, z));
+ GunRecycleGuiButtonMessage.handleButtonAction(entity, 0, x, y, z);
+ }
+ }).bounds(this.leftPos + 62, this.topPos + 56, 52, 20).build();
+ guistate.put("button:button_dismantle", button_dismantle);
+ this.addRenderableWidget(button_dismantle);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/gui/MortarGUIScreen.java b/src/main/java/net/mcreator/target/client/gui/MortarGUIScreen.java
new file mode 100644
index 000000000..6bdc38fdc
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/gui/MortarGUIScreen.java
@@ -0,0 +1,143 @@
+package net.mcreator.target.client.gui;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.player.Inventory;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.chat.Component;
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.GuiGraphics;
+
+import net.mcreator.target.world.inventory.MortarGUIMenu;
+import net.mcreator.target.procedures.MortarAngleProcedure;
+import net.mcreator.target.procedures.MortarPitchProcedure;
+import net.mcreator.target.network.MortarGUIButtonMessage;
+
+import net.mcreator.target.TargetMod;
+
+import java.util.HashMap;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+
+public class MortarGUIScreen extends AbstractContainerScreen {
+ private final static HashMap guistate = MortarGUIMenu.guistate;
+ private final Level world;
+ private final int x, y, z;
+ private final Player entity;
+ Button button_zeng_da_yang_jiao;
+ Button button_empty;
+ Button button_10;
+ Button button_101;
+ Button button_05;
+ Button button_051;
+
+ public MortarGUIScreen(MortarGUIMenu container, Inventory inventory, Component text) {
+ super(container, inventory, text);
+ this.world = container.world;
+ this.x = container.x;
+ this.y = container.y;
+ this.z = container.z;
+ this.entity = container.entity;
+ this.imageWidth = 0;
+ this.imageHeight = 166;
+ }
+
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/screens/mortar_gui.png");
+
+ @Override
+ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
+ this.renderBackground(guiGraphics);
+ super.render(guiGraphics, mouseX, mouseY, partialTicks);
+ this.renderTooltip(guiGraphics, mouseX, mouseY);
+ }
+
+ @Override
+ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int gx, int gy) {
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ RenderSystem.enableBlend();
+ RenderSystem.defaultBlendFunc();
+ guiGraphics.blit(texture, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
+ RenderSystem.disableBlend();
+ }
+
+ @Override
+ public boolean keyPressed(int key, int b, int c) {
+ if (key == 256) {
+ this.minecraft.player.closeContainer();
+ return true;
+ }
+ return super.keyPressed(key, b, c);
+ }
+
+ @Override
+ public void containerTick() {
+ super.containerTick();
+ }
+
+ @Override
+ protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
+ guiGraphics.drawString(this.font,
+
+ MortarAngleProcedure.execute(entity), -18, 98, -1, false);
+ guiGraphics.drawString(this.font, Component.literal("Range:" + (int) RangeHelper.getRange(MortarPitchProcedure.execute(entity))), -18, 108, -16711885, false);
+ }
+
+ @Override
+ public void onClose() {
+ super.onClose();
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ button_zeng_da_yang_jiao = Button.builder(Component.translatable("gui.target.mortar_gui.button_zeng_da_yang_jiao"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(0, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 0, x, y, z);
+ }
+ }).bounds(this.leftPos + 42, this.topPos + 124, 29, 20).build();
+ guistate.put("button:button_zeng_da_yang_jiao", button_zeng_da_yang_jiao);
+ this.addRenderableWidget(button_zeng_da_yang_jiao);
+ button_empty = Button.builder(Component.translatable("gui.target.mortar_gui.button_empty"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(1, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 1, x, y, z);
+ }
+ }).bounds(this.leftPos + -73, this.topPos + 124, 30, 20).build();
+ guistate.put("button:button_empty", button_empty);
+ this.addRenderableWidget(button_empty);
+ button_10 = Button.builder(Component.translatable("gui.target.mortar_gui.button_10"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(2, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 2, x, y, z);
+ }
+ }).bounds(this.leftPos + 43, this.topPos + 151, 28, 20).build();
+ guistate.put("button:button_10", button_10);
+ this.addRenderableWidget(button_10);
+ button_101 = Button.builder(Component.translatable("gui.target.mortar_gui.button_101"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(3, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 3, x, y, z);
+ }
+ }).bounds(this.leftPos + -73, this.topPos + 151, 30, 20).build();
+ guistate.put("button:button_101", button_101);
+ this.addRenderableWidget(button_101);
+ button_05 = Button.builder(Component.translatable("gui.target.mortar_gui.button_05"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(4, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 4, x, y, z);
+ }
+ }).bounds(this.leftPos + -73, this.topPos + 97, 30, 20).build();
+ guistate.put("button:button_05", button_05);
+ this.addRenderableWidget(button_05);
+ button_051 = Button.builder(Component.translatable("gui.target.mortar_gui.button_051"), e -> {
+ if (true) {
+ TargetMod.PACKET_HANDLER.sendToServer(new MortarGUIButtonMessage(5, x, y, z));
+ MortarGUIButtonMessage.handleButtonAction(entity, 5, x, y, z);
+ }
+ }).bounds(this.leftPos + 42, this.topPos + 97, 29, 20).build();
+ guistate.put("button:button_051", button_051);
+ this.addRenderableWidget(button_051);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/gui/RangeHelper.java b/src/main/java/net/mcreator/target/client/gui/RangeHelper.java
new file mode 100644
index 000000000..c0df0db6b
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/gui/RangeHelper.java
@@ -0,0 +1,41 @@
+package net.mcreator.target.client.gui;
+
+public class RangeHelper {
+// 发射角度(以度为单位),需要根据实际情况修改
+ public static double getRange(double thetaDegrees) {
+ double initialVelocity = 8.0; // 初始速度 8 m/s
+ double thetaRadians = Math.toRadians(thetaDegrees); // 将角度转换为弧度
+ double gravity = 0.05; // 重力加速度
+ double velocityDecay = 0.99; // 速度衰减系数
+
+ // 计算射程
+ return calculateRange(initialVelocity, thetaRadians, gravity, velocityDecay);
+ }
+
+ public static double calculateRange(double initialVelocity, double theta, double gravity, double velocityDecay) {
+ double vx = initialVelocity * Math.cos(theta); // 水平速度
+ double vy = initialVelocity * Math.sin(theta); // 垂直速度
+
+ double x = 0.0; // 水平位置
+ double y = 1.0; // 垂直位置
+
+ // 当炮弹还未触地时,继续计算飞行轨迹
+ while (y >= 0) {
+ // 更新位置
+ x += vx;
+ y += vy;
+
+ // 更新速度
+ vx *= velocityDecay;
+ vy = vy * velocityDecay - gravity;
+
+ // 如果炮弹触地,则跳出循环
+ if (y < 0) {
+ break;
+ }
+ }
+
+ // 返回最终水平距离
+ return x;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/ModelGrenade.java b/src/main/java/net/mcreator/target/client/model/ModelGrenade.java
new file mode 100644
index 000000000..cd58db8cc
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/ModelGrenade.java
@@ -0,0 +1,47 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.2
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class ModelGrenade extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "model_grenade"), "main");
+ public final ModelPart bone;
+
+ public ModelGrenade(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(2, 2).addBox(-0.5F, -0.5F, -23.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelbasketball.java b/src/main/java/net/mcreator/target/client/model/Modelbasketball.java
new file mode 100644
index 000000000..1476a1981
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelbasketball.java
@@ -0,0 +1,278 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelbasketball extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelbasketball"), "main");
+ public final ModelPart bone;
+
+ public Modelbasketball(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 8.0F, 0.0F));
+ PartDefinition bone2 = bone.addOrReplaceChild("bone2",
+ CubeListBuilder.create().texOffs(48, 50).addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 50).addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 50)
+ .addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 50).addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 49)
+ .addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 49).addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 48)
+ .addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 49).addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 49)
+ .addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 48).addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 46)
+ .addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 44).addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 42)
+ .addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 49).addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 49)
+ .addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 49).addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 49)
+ .addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 50).addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 50)
+ .addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 50).addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 50)
+ .addBox(5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(51, 1).addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 51)
+ .addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 50).addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 44)
+ .addBox(1.5F, -1.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 26).addBox(-2.5F, -1.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 44)
+ .addBox(1.5F, -1.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 44).addBox(-2.5F, -1.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 1)
+ .addBox(-6.5F, -1.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 45).addBox(-6.5F, -1.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 3)
+ .addBox(5.5F, -1.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 5).addBox(5.5F, -1.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 7)
+ .addBox(-3.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 45).addBox(-3.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 9)
+ .addBox(2.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 11).addBox(2.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 13)
+ .addBox(4.5F, -1.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 45).addBox(-5.5F, -1.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 15)
+ .addBox(4.5F, -1.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 17).addBox(-5.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 19)
+ .addBox(4.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 45).addBox(4.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 21)
+ .addBox(-5.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 23).addBox(-4.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 25)
+ .addBox(-4.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 45).addBox(3.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 27)
+ .addBox(3.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 29).addBox(-5.5F, -1.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 24)
+ .addBox(1.5F, 0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 26).addBox(-2.5F, 0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 28)
+ .addBox(1.5F, 0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 42).addBox(-2.5F, 0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 30)
+ .addBox(-6.5F, 0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 32).addBox(-6.5F, 0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 34)
+ .addBox(5.5F, 0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 42).addBox(5.5F, 0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 36)
+ .addBox(-3.5F, 0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 38).addBox(-3.5F, 0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 40)
+ .addBox(2.5F, 0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 42).addBox(2.5F, 0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 43)
+ .addBox(4.5F, 0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 43).addBox(-5.5F, 0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 43)
+ .addBox(4.5F, 0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 43).addBox(-5.5F, 0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 43)
+ .addBox(4.5F, 0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 43).addBox(4.5F, 0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 43)
+ .addBox(-5.5F, 0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 44).addBox(-4.5F, 0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 44)
+ .addBox(-4.5F, 0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 44).addBox(3.5F, 0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 44)
+ .addBox(3.5F, 0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 44).addBox(-5.5F, 0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0F, 0.0F, 0.0F));
+ PartDefinition cube_r1 = bone2.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(36, 8).addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 11).addBox(0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 33)
+ .addBox(-1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 6).addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 36)
+ .addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 4).addBox(0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 0)
+ .addBox(-1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 36).addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 35)
+ .addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 29).addBox(5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 29)
+ .addBox(-6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 6).addBox(5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 30)
+ .addBox(-6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 8)
+ .addBox(-6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 35).addBox(5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 35)
+ .addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 35).addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 35)
+ .addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 35).addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 34)
+ .addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 34).addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 30)
+ .addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 34).addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 34)
+ .addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 34).addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 34)
+ .addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 33).addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 31)
+ .addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 29).addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 27)
+ .addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 33).addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 25)
+ .addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 23).addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 1.5708F));
+ PartDefinition cube_r2 = bone2.addOrReplaceChild("cube_r2",
+ CubeListBuilder.create().texOffs(21, 29).addBox(5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 29).addBox(-6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 30)
+ .addBox(5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 2).addBox(-6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 14)
+ .addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 30).addBox(-6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 20)
+ .addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 48).addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 47)
+ .addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 47).addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 47)
+ .addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 47).addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 47)
+ .addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 47).addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 47)
+ .addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 47).addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 46)
+ .addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 46).addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 46)
+ .addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 46).addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 46)
+ .addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 46).addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 46)
+ .addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 46).addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 43)
+ .addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 41).addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 45)
+ .addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 35).addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(45, 33)
+ .addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 17).addBox(-0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 45)
+ .addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 1.5708F));
+ PartDefinition cube_r3 = bone2.addOrReplaceChild("cube_r3",
+ CubeListBuilder.create().texOffs(15, 29).addBox(5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 4)
+ .addBox(5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 0).addBox(-6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 12)
+ .addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 10).addBox(-6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 18)
+ .addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 38).addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 33)
+ .addBox(0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 19).addBox(-1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 38)
+ .addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 38).addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 38)
+ .addBox(0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 38).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 38)
+ .addBox(-1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 38).addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 37)
+ .addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 37).addBox(5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 37)
+ .addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 37).addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 37)
+ .addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 37).addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 36)
+ .addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 34).addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 32)
+ .addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 30).addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 36)
+ .addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 28).addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 26)
+ .addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 24).addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 36)
+ .addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 22).addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 20)
+ .addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 18).addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 36)
+ .addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(1.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 1.5708F));
+ PartDefinition cube_r4 = bone2.addOrReplaceChild("cube_r4",
+ CubeListBuilder.create().texOffs(33, 9).addBox(-0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 21).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 15)
+ .addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 31).addBox(-5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 30)
+ .addBox(6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 32).addBox(-5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 32)
+ .addBox(6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 3).addBox(-5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 1)
+ .addBox(6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 40).addBox(-4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 38)
+ .addBox(4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 36).addBox(4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 48)
+ .addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 34).addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 32)
+ .addBox(-4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 30).addBox(5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 48)
+ .addBox(5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 28).addBox(-4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 26)
+ .addBox(5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 24).addBox(-4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 48)
+ .addBox(5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 22).addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 20)
+ .addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 18).addBox(-2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 48)
+ .addBox(-2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 16).addBox(6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 14)
+ .addBox(6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 12).addBox(-5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 48)
+ .addBox(-5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 10).addBox(-1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 4)
+ .addBox(2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 2).addBox(-1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(48, 0)
+ .addBox(2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r5 = bone2.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(21, 33).addBox(-0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -1.0F, 0.0F, -1.5708F, 1.5708F));
+ PartDefinition cube_r6 = bone2.addOrReplaceChild("cube_r6",
+ CubeListBuilder.create().texOffs(18, 40).addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 40).addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 40)
+ .addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 39).addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 35)
+ .addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 31).addBox(-6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 31)
+ .addBox(5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 32).addBox(-6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 32)
+ .addBox(5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 7).addBox(-6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 33)
+ .addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 7).addBox(1.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 5)
+ .addBox(1.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 3).addBox(2.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 27)
+ .addBox(2.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 1).addBox(2.5F, -3.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 26)
+ .addBox(1.5F, -3.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 26).addBox(3.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 26)
+ .addBox(3.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 26).addBox(4.5F, -1.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 26)
+ .addBox(3.5F, -2.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 25).addBox(3.5F, -2.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 25)
+ .addBox(3.5F, -1.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 25).addBox(3.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 25)
+ .addBox(2.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 24).addBox(1.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 22)
+ .addBox(3.5F, -3.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 20).addBox(2.5F, -3.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 18)
+ .addBox(1.5F, -4.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 9).addBox(-3.5F, -3.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 11)
+ .addBox(-3.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 13).addBox(-4.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 27)
+ .addBox(-4.5F, -2.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 15).addBox(-4.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 17)
+ .addBox(-3.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 19).addBox(-3.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 27)
+ .addBox(-4.5F, -1.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 27).addBox(-4.5F, -1.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 21)
+ .addBox(-2.5F, -3.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 23).addBox(-2.5F, -3.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 25)
+ .addBox(-2.5F, -2.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 27).addBox(-2.5F, -1.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 28)
+ .addBox(-2.5F, -4.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 28).addBox(-3.5F, -3.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 28)
+ .addBox(-4.5F, -3.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 28).addBox(-4.5F, -2.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 28)
+ .addBox(-5.5F, -1.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 30).addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 33)
+ .addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 39).addBox(5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 31)
+ .addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 29).addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 27)
+ .addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 39).addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 25)
+ .addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 23).addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 21)
+ .addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 39).addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 19)
+ .addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 17).addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 15)
+ .addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 39).addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 13)
+ .addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 11).addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 9)
+ .addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 39).addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 7)
+ .addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -1.0F, 1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r7 = bone2.addOrReplaceChild("cube_r7",
+ CubeListBuilder.create().texOffs(15, 31).addBox(-6.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 28).addBox(5.5F, -0.5F, -1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 32)
+ .addBox(-6.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 31).addBox(5.5F, -0.5F, -0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 5)
+ .addBox(-6.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 32).addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 22)
+ .addBox(1.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 13).addBox(-0.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 20)
+ .addBox(-2.5F, -0.5F, 5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 18).addBox(1.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 16)
+ .addBox(-0.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 12).addBox(-2.5F, -0.5F, -6.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 24)
+ .addBox(-6.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 22).addBox(-6.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 42)
+ .addBox(5.5F, -0.5F, 1.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 10).addBox(5.5F, -0.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 8)
+ .addBox(-3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 6).addBox(-3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 42)
+ .addBox(2.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 4).addBox(2.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 2)
+ .addBox(4.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(42, 0).addBox(-5.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 42)
+ .addBox(4.5F, -0.5F, 2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 41).addBox(-5.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(33, 41)
+ .addBox(4.5F, -0.5F, 3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(27, 41).addBox(4.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 41)
+ .addBox(-5.5F, -0.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 41).addBox(-4.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 41)
+ .addBox(-4.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 41).addBox(3.5F, -0.5F, 4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 40)
+ .addBox(3.5F, -0.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 40).addBox(-5.5F, -0.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 1.0F, 1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r8 = bone2.addOrReplaceChild("cube_r8",
+ CubeListBuilder.create().texOffs(9, 7).addBox(1.0F, -2.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 5).addBox(1.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 3)
+ .addBox(0.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 9).addBox(0.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 1)
+ .addBox(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 8).addBox(1.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 8)
+ .addBox(-1.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 7).addBox(-1.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 6)
+ .addBox(-2.0F, -2.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 4).addBox(-1.0F, -1.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 2)
+ .addBox(-1.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-1.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 6)
+ .addBox(-1.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 5).addBox(0.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 4)
+ .addBox(1.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 3).addBox(-1.0F, 0.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 1)
+ .addBox(0.0F, 0.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 2).addBox(1.0F, 1.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 14)
+ .addBox(5.0F, -2.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 14).addBox(5.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 13)
+ .addBox(6.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 13).addBox(6.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 12)
+ .addBox(6.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 10).addBox(5.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 8)
+ .addBox(7.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 6).addBox(7.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 12)
+ .addBox(8.0F, -2.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 4).addBox(7.0F, -1.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 2)
+ .addBox(7.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 0).addBox(7.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 12)
+ .addBox(7.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 11).addBox(6.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 11)
+ .addBox(5.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 10).addBox(7.0F, 0.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 10)
+ .addBox(6.0F, 0.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 9).addBox(5.0F, 1.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-3.5F, 3.5F, -3.5F, -1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r9 = bone2.addOrReplaceChild("cube_r9",
+ CubeListBuilder.create().texOffs(0, 18).addBox(-2.0F, -2.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 17).addBox(-2.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 17)
+ .addBox(-1.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 17).addBox(-1.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 16)
+ .addBox(-1.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 16).addBox(-2.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 16)
+ .addBox(0.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 15).addBox(0.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 13)
+ .addBox(1.0F, -2.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 11).addBox(0.0F, -1.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 9)
+ .addBox(0.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 15).addBox(0.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 7)
+ .addBox(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 5).addBox(-1.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 3)
+ .addBox(-2.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 15).addBox(0.0F, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 1)
+ .addBox(-1.0F, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 14).addBox(-2.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 20)
+ .addBox(-6.0F, -2.0F, -2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 20).addBox(-6.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 20)
+ .addBox(-7.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 19).addBox(-7.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 19)
+ .addBox(-7.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 19).addBox(-6.0F, 0.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 18)
+ .addBox(-8.0F, -1.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 16).addBox(-8.0F, -2.0F, -1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 14)
+ .addBox(-9.0F, -2.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 12).addBox(-8.0F, -1.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 18)
+ .addBox(-8.0F, -1.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 10).addBox(-8.0F, -2.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 8)
+ .addBox(-8.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 6).addBox(-7.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 18)
+ .addBox(-6.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 4).addBox(-8.0F, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 2)
+ .addBox(-7.0F, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 0).addBox(-6.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(3.5F, 3.5F, 3.5F, 1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r10 = bone2.addOrReplaceChild("cube_r10",
+ CubeListBuilder.create().texOffs(12, 22).addBox(-2.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 22).addBox(-2.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 22)
+ .addBox(-3.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 21).addBox(-3.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 19)
+ .addBox(-3.5F, -3.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 17).addBox(-2.5F, -3.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 15)
+ .addBox(-4.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 21).addBox(-4.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 13)
+ .addBox(-5.5F, -1.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 11).addBox(-4.5F, -2.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 9)
+ .addBox(-4.5F, -2.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 21).addBox(-4.5F, -1.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 7)
+ .addBox(-4.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 5).addBox(-3.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 3)
+ .addBox(-2.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 21).addBox(-4.5F, -3.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 1)
+ .addBox(-3.5F, -3.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 20).addBox(-2.5F, -4.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 24)
+ .addBox(1.5F, -1.5F, -5.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 16).addBox(1.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 14)
+ .addBox(2.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 12).addBox(2.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(12, 24)
+ .addBox(2.5F, -3.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 10).addBox(1.5F, -3.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 8)
+ .addBox(3.5F, -2.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 6).addBox(3.5F, -1.5F, -4.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 24)
+ .addBox(4.5F, -1.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 4).addBox(3.5F, -2.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 2)
+ .addBox(3.5F, -2.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(24, 0).addBox(3.5F, -1.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 24)
+ .addBox(3.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 23).addBox(2.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(15, 23)
+ .addBox(1.5F, -3.5F, -3.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(9, 23).addBox(3.5F, -3.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 23)
+ .addBox(2.5F, -3.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 22).addBox(1.5F, -4.5F, -2.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 1.0F, -1.5708F, 0.0F, 0.0F));
+ PartDefinition cube_r11 = bone2.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(45, 31).addBox(5.5F, -0.5F, 0.5F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -1.0F, 0.0F, 0.0F, -1.5708F, 1.5708F));
+ return LayerDefinition.create(meshdefinition, 64, 64);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelbocekarrow.java b/src/main/java/net/mcreator/target/client/model/Modelbocekarrow.java
new file mode 100644
index 000000000..b3ac87331
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelbocekarrow.java
@@ -0,0 +1,90 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelbocekarrow extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelbocekarrow"), "main");
+ public final ModelPart jian;
+
+ public Modelbocekarrow(ModelPart root) {
+ this.jian = root.getChild("jian");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition jian = partdefinition.addOrReplaceChild("jian", CubeListBuilder.create().texOffs(0, 0).addBox(-0.068F, -0.068F, -12.7575F, 0.1361F, 0.1361F, 25.515F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.0011F, 5.3718F, -0.0975F, -1.5708F, 0.0F, 0.0F));
+ PartDefinition bone5 = jian.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, -12.0507F));
+ PartDefinition cube_r1 = bone5.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+ PartDefinition cube_r2 = bone5.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+ PartDefinition bone6 = jian.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition cube_r3 = bone6.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+ PartDefinition cube_r4 = bone6.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+ PartDefinition bone7 = jian.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, -3.1416F));
+ PartDefinition cube_r5 = bone7.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+ PartDefinition cube_r6 = bone7.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+ PartDefinition bone8 = jian.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, -12.0507F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition cube_r7 = bone8.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.2381F, -0.5783F, 0.068F, 0.2041F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.504F, 0.3134F, 2.0813F, 0.0F, 0.0F));
+ PartDefinition cube_r8 = bone8.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.7144F, 0.068F, 0.2041F, 1.1567F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.3674F, 0.0F, 0.5105F, 0.0F, 0.0F));
+ PartDefinition bone10 = jian.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 7.6545F));
+ PartDefinition cube_r9 = bone10.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 0.034F, 0.068F, 0.1361F, 0.8845F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, 2.7282F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r10 = bone10.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.068F, -0.4252F, 0.068F, 0.1361F, 0.6804F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 3.0964F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r11 = bone10.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 0.2381F, -0.2211F, 0.068F, 0.1361F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, 3.0032F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition bone3 = jian.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 7.6545F, 0.0F, 0.0F, 2.138F));
+ PartDefinition cube_r12 = bone3.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.1531F, 2.623F, 0.068F, 0.1361F, 0.8845F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, -0.3677F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r13 = bone3.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.6294F, 2.1637F, 0.068F, 0.1361F, 0.6804F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 0.0006F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r14 = bone3.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.9356F, 2.3679F, 0.068F, 0.1361F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, -0.0927F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition bone4 = jian.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, -0.5443F, 3.1979F, 0.068F, 0.4763F, 1.3948F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 7.6545F, 0.0F, 0.0F, -2.0944F));
+ PartDefinition cube_r15 = bone4.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.1531F, 2.623F, 0.068F, 0.1361F, 0.8845F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.4145F, -0.3677F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r16 = bone4.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.6294F, 2.1637F, 0.068F, 0.1361F, 0.6804F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2337F, 0.0006F, 0.5803F, 0.0F, 0.0F));
+ PartDefinition cube_r17 = bone4.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 0).addBox(-0.034F, 1.9356F, 2.3679F, 0.068F, 0.1361F, 0.4763F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.376F, -0.0927F, 0.5803F, 0.0F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 64, 64);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ jian.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelbulle.java b/src/main/java/net/mcreator/target/client/model/Modelbulle.java
new file mode 100644
index 000000000..68a49dac3
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelbulle.java
@@ -0,0 +1,46 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.2
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelbulle extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelbulle"), "main");
+ public final ModelPart bone;
+
+ public Modelbulle(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(2, 2).addBox(0.5F, -26.5F, -0.5F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelbullet.java b/src/main/java/net/mcreator/target/client/model/Modelbullet.java
new file mode 100644
index 000000000..7626edc1e
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelbullet.java
@@ -0,0 +1,48 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelbullet extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelbullet"), "main");
+ public final ModelPart bone;
+
+ public Modelbullet(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 8.0F, 0.0F));
+ PartDefinition bone2 = bone.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(-2.1213F, 8.5F, 0.0F));
+ PartDefinition cube_r1 = bone2.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(1, 1).addBox(-1.5F, -21.5F, -1.5F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.7854F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelclaymore.java b/src/main/java/net/mcreator/target/client/model/Modelclaymore.java
new file mode 100644
index 000000000..844877a01
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelclaymore.java
@@ -0,0 +1,60 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.3
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelclaymore extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelclaymore"), "main");
+ public final ModelPart claymore;
+
+ public Modelclaymore(ModelPart root) {
+ this.claymore = root.getChild("claymore");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition claymore = partdefinition.addOrReplaceChild("claymore", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F));
+ PartDefinition bone = claymore.addOrReplaceChild("bone",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-3.5F, -7.75F, -0.5F, 7.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 14).addBox(-2.0F, -8.0F, 0.0F, 4.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(14, 7)
+ .addBox(2.0F, -8.75F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(6, 7).addBox(-3.0F, -8.75F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F));
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(8, 7).addBox(-1.5F, -6.0F, -0.5F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(4.3118F, -1.75F, -0.4598F, 0.0F, 0.3927F, 0.0F));
+ PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 7).addBox(0.5F, -6.0F, -1.5F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-5.6184F, -1.75F, 0.0814F, 0.0F, -0.3927F, 0.0F));
+ PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3",
+ CubeListBuilder.create().texOffs(12, 13).addBox(0.0F, -0.75F, -0.5F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 15).addBox(6.0F, -0.75F, -0.5F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-3.0F, -2.6F, 0.3F, -0.7854F, 0.0F, 0.0F));
+ PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4",
+ CubeListBuilder.create().texOffs(10, 13).addBox(0.0F, -0.5F, -0.25F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(14, 13).addBox(6.0F, -0.5F, -0.25F, 0.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-3.0F, -2.6F, 0.3F, 0.7854F, 0.0F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 32, 32);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ claymore.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelmissile.java b/src/main/java/net/mcreator/target/client/model/Modelmissile.java
new file mode 100644
index 000000000..2ba47bd8d
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelmissile.java
@@ -0,0 +1,52 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.2
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelmissile extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelmissile"), "main");
+ public final ModelPart bone;
+
+ public Modelmissile(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -34.0F, -1.0F, 2.0F, 18.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(8, 8).addBox(-0.5F, -21.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(14, 4)
+ .addBox(-0.5F, -32.0F, -2.0F, 1.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(8, 0).addBox(-0.5F, -36.0F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0F, 24.0F, 0.0F));
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(14, 12).addBox(-0.5F, -3.0F, -2.0F, 1.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(8, 0).addBox(-0.5F, 8.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -29.0F, 0.0F, 0.0F, -1.5708F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 32, 32);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelmortar_shell_Converted.java b/src/main/java/net/mcreator/target/client/model/Modelmortar_shell_Converted.java
new file mode 100644
index 000000000..5fd4d9f29
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelmortar_shell_Converted.java
@@ -0,0 +1,85 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelmortar_shell_Converted extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelmortar_shell_converted"), "main");
+ public final ModelPart Rockets;
+
+ public Modelmortar_shell_Converted(ModelPart root) {
+ this.Rockets = root.getChild("Rockets");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition Rockets = partdefinition.addOrReplaceChild("Rockets", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -24.7579F, 0.4535F, -1.5708F, 0.0F, 0.0F));
+ PartDefinition octagon_r1 = Rockets.addOrReplaceChild("octagon_r1", CubeListBuilder.create().texOffs(6, 3).addBox(-1.3735F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(1.8097F, 0.0033F, 5.8407F, 0.0F, 0.3927F, 0.0F));
+ PartDefinition octagon_r2 = Rockets.addOrReplaceChild("octagon_r2", CubeListBuilder.create().texOffs(7, 0).addBox(0.627F, -0.2401F, -1.5325F, 0.7465F, 0.4803F, 1.7605F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-1.8097F, 0.0033F, 5.8407F, 0.0F, -0.3927F, 0.0F));
+ PartDefinition octagon_r3 = Rockets.addOrReplaceChild("octagon_r3", CubeListBuilder.create().texOffs(0, 8).addBox(-0.2401F, 0.627F, -1.4075F, 0.4803F, 0.684F, 1.6355F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, -0.3927F, 0.0F, 0.0F));
+ PartDefinition octagon_r4 = Rockets.addOrReplaceChild("octagon_r4", CubeListBuilder.create().texOffs(4, 8).addBox(-0.2401F, -1.311F, -1.4075F, 0.4803F, 0.684F, 1.6355F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, 6.5823F, 0.3927F, 0.0F, 0.0F));
+ PartDefinition octagon_r5 = Rockets.addOrReplaceChild("octagon_r5",
+ CubeListBuilder.create().texOffs(2, 0).addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 3).addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F))
+ .texOffs(0, 15).addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 0).addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(13, 13)
+ .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F)).texOffs(19, 0).addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F)).texOffs(29, 23)
+ .addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F)).texOffs(28, 0).addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F)).texOffs(29, 30)
+ .addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F)).texOffs(0, 8)
+ .addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F)).texOffs(7, 5).addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, -0.3927F));
+ PartDefinition octagon_r6 = Rockets.addOrReplaceChild("octagon_r6",
+ CubeListBuilder.create().texOffs(4, 0).addBox(-0.57F, -0.2361F, -4.1689F, 1.14F, 0.4722F, 2.85F, new CubeDeformation(0.0F)).texOffs(0, 4).addBox(-0.2361F, -0.57F, -4.1689F, 0.4722F, 1.14F, 2.85F, new CubeDeformation(0.0F))
+ .texOffs(11, 17).addBox(-0.741F, -0.3069F, -3.4849F, 1.482F, 0.6139F, 1.824F, new CubeDeformation(0.0F)).texOffs(19, 3).addBox(-0.3069F, -0.741F, -3.4849F, 0.6139F, 1.482F, 1.824F, new CubeDeformation(0.0F)).texOffs(0, 15)
+ .addBox(-0.912F, -0.3778F, -2.3449F, 1.824F, 0.7555F, 7.0265F, new CubeDeformation(0.0F)).texOffs(11, 21).addBox(-0.3778F, -0.912F, -2.3449F, 0.7555F, 1.824F, 7.0265F, new CubeDeformation(0.0F)).texOffs(24, 9)
+ .addBox(-1.083F, -0.4486F, -1.3189F, 2.166F, 0.8972F, 5.066F, new CubeDeformation(0.0F)).texOffs(9, 30).addBox(-0.4486F, -1.083F, -1.3189F, 0.8972F, 2.166F, 5.066F, new CubeDeformation(0.0F)).texOffs(0, 31)
+ .addBox(-1.254F, -0.5194F, -0.2929F, 2.508F, 1.0388F, 3.128F, new CubeDeformation(0.0F)).texOffs(33, 6).addBox(-0.5194F, -1.254F, -0.2929F, 1.0388F, 2.508F, 3.128F, new CubeDeformation(0.0F)).texOffs(11, 15)
+ .addBox(-1.425F, -0.5902F, 0.7331F, 2.85F, 1.1805F, 1.19F, new CubeDeformation(0.0F)).texOffs(0, 18).addBox(-0.5902F, -1.425F, 0.7331F, 1.1805F, 2.85F, 1.19F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.0003F, -0.8848F, 0.0F, 0.0F, 0.3927F));
+ PartDefinition group2 = Rockets.addOrReplaceChild("group2", CubeListBuilder.create(), PartPose.offset(0.0F, -6.0003F, 12.3571F));
+ PartDefinition group3 = Rockets.addOrReplaceChild("group3", CubeListBuilder.create(), PartPose.offset(0.0F, -9.7972F, 8.7641F));
+ PartDefinition octagon_r7 = group3.addOrReplaceChild("octagon_r7", CubeListBuilder.create().texOffs(20, 21).addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F)).texOffs(28, 15).addBox(-0.3079F, -0.7435F,
+ 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, -0.3927F));
+ PartDefinition octagon_r8 = group3.addOrReplaceChild("octagon_r8",
+ CubeListBuilder.create().texOffs(0, 24).addBox(-0.7434F, -0.308F, 1.7936F, 1.4868F, 0.6158F, 5.7403F, new CubeDeformation(0.0F)).texOffs(21, 28).addBox(-0.308F, -0.7435F, 1.7936F, 0.6159F, 1.4868F, 5.7403F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 9.797F, -9.6489F, 0.0F, 0.0F, 0.3927F));
+ PartDefinition group4 = Rockets.addOrReplaceChild("group4", CubeListBuilder.create(), PartPose.offset(0.0F, -9.7972F, 8.7641F));
+ PartDefinition group = Rockets.addOrReplaceChild("group", CubeListBuilder.create(), PartPose.offset(0.0F, 0.2029F, -5.0537F));
+ PartDefinition octagon_r9 = group.addOrReplaceChild("octagon_r9",
+ CubeListBuilder.create().texOffs(0, 1).addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, -0.3927F));
+ PartDefinition octagon_r10 = group.addOrReplaceChild("octagon_r10",
+ CubeListBuilder.create().texOffs(8, 8).addBox(-0.1549F, -0.3739F, -4.905F, 0.3098F, 0.7478F, 1.1522F, new CubeDeformation(0.0F)).texOffs(0, 1).addBox(-0.3739F, -0.1549F, -4.905F, 0.7478F, 0.3098F, 1.1522F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, -0.2031F, 4.1689F, 0.0F, 0.0F, 0.3927F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ Rockets.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modelrpg7_rocket_Converted.java b/src/main/java/net/mcreator/target/client/model/Modelrpg7_rocket_Converted.java
new file mode 100644
index 000000000..a4f7e29b9
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modelrpg7_rocket_Converted.java
@@ -0,0 +1,329 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.4
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modelrpg7_rocket_Converted extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modelrpg_7_rocket_converted"), "main");
+ public final ModelPart Rockets;
+
+ public Modelrpg7_rocket_Converted(ModelPart root) {
+ this.Rockets = root.getChild("Rockets");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition Rockets = partdefinition.addOrReplaceChild("Rockets", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -24.7579F, 0.4535F, -1.5708F, 0.0F, 0.0F));
+ PartDefinition Rockets2 = Rockets.addOrReplaceChild("Rockets2", CubeListBuilder.create(), PartPose.offset(0.0F, 0.4579F, -0.0535F));
+ PartDefinition bone23 = Rockets2.addOrReplaceChild("bone23", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -10.1988F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -1.0385F));
+ PartDefinition octagon_r1 = bone23.addOrReplaceChild("octagon_r1", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r2 = bone23.addOrReplaceChild("octagon_r2", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r3 = bone23.addOrReplaceChild("octagon_r3", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r4 = bone23.addOrReplaceChild("octagon_r4", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r5 = bone23.addOrReplaceChild("octagon_r5", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r6 = bone23.addOrReplaceChild("octagon_r6", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r7 = bone23.addOrReplaceChild("octagon_r7", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4007F, -0.9673F, -16.1742F, 0.8014F, 1.0084F, 10.3003F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 5.9754F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone24 = Rockets2.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -0.2217F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -10.1912F));
+ PartDefinition octagon_r8 = bone24.addOrReplaceChild("octagon_r8", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r9 = bone24.addOrReplaceChild("octagon_r9", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r10 = bone24.addOrReplaceChild("octagon_r10", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r11 = bone24.addOrReplaceChild("octagon_r11", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r12 = bone24.addOrReplaceChild("octagon_r12", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r13 = bone24.addOrReplaceChild("octagon_r13", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r14 = bone24.addOrReplaceChild("octagon_r14", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5521F, -1.333F, -21.1812F, 1.1043F, 1.3896F, 1.2137F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 20.9595F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone34 = Rockets2.addOrReplaceChild("bone34", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, 0.3534F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -10.312F));
+ PartDefinition octagon_r15 = bone34.addOrReplaceChild("octagon_r15", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r16 = bone34.addOrReplaceChild("octagon_r16", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r17 = bone34.addOrReplaceChild("octagon_r17", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r18 = bone34.addOrReplaceChild("octagon_r18", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r19 = bone34.addOrReplaceChild("octagon_r19", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r20 = bone34.addOrReplaceChild("octagon_r20", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r21 = bone34.addOrReplaceChild("octagon_r21", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6331F, -1.5284F, -23.6787F, 1.2662F, 1.5933F, 0.784F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 24.0321F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone26 = Rockets2.addOrReplaceChild("bone26", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -1.5592F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -9.2513F));
+ PartDefinition octagon_r22 = bone26.addOrReplaceChild("octagon_r22", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r23 = bone26.addOrReplaceChild("octagon_r23", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r24 = bone26.addOrReplaceChild("octagon_r24", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r25 = bone26.addOrReplaceChild("octagon_r25", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r26 = bone26.addOrReplaceChild("octagon_r26", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r27 = bone26.addOrReplaceChild("octagon_r27", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r28 = bone26.addOrReplaceChild("octagon_r28", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4638F, -1.1197F, -19.1652F, 0.9276F, 1.1673F, 0.9359F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.606F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone19 = Rockets2.addOrReplaceChild("bone19", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, 0.9259F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -6.0195F));
+ PartDefinition octagon_r29 = bone19.addOrReplaceChild("octagon_r29", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r30 = bone19.addOrReplaceChild("octagon_r30", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r31 = bone19.addOrReplaceChild("octagon_r31", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r32 = bone19.addOrReplaceChild("octagon_r32", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r33 = bone19.addOrReplaceChild("octagon_r33", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r34 = bone19.addOrReplaceChild("octagon_r34", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r35 = bone19.addOrReplaceChild("octagon_r35", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6472F, -1.5624F, -13.8248F, 1.2943F, 1.6287F, 3.5402F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 14.7507F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone33 = bone19.addOrReplaceChild("bone33", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -2.4449F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, -1.0285F));
+ PartDefinition octagon_r36 = bone33.addOrReplaceChild("octagon_r36", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r37 = bone33.addOrReplaceChild("octagon_r37", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r38 = bone33.addOrReplaceChild("octagon_r38", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r39 = bone33.addOrReplaceChild("octagon_r39", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r40 = bone33.addOrReplaceChild("octagon_r40", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r41 = bone33.addOrReplaceChild("octagon_r41", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition octagon_r42 = bone33.addOrReplaceChild("octagon_r42", CubeListBuilder.create().texOffs(0, 0).addBox(-0.6913F, -1.6689F, -19.8031F, 1.3826F, 1.7398F, 4.5899F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 17.3581F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition bone20 = Rockets2.addOrReplaceChild("bone20", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.2F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, 2.8992F));
+ PartDefinition octagon_r43 = bone20.addOrReplaceChild("octagon_r43", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r44 = bone20.addOrReplaceChild("octagon_r44", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r45 = bone20.addOrReplaceChild("octagon_r45", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r46 = bone20.addOrReplaceChild("octagon_r46", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r47 = bone20.addOrReplaceChild("octagon_r47", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r48 = bone20.addOrReplaceChild("octagon_r48", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r49 = bone20.addOrReplaceChild("octagon_r49", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3182F, -0.7683F, -1.313F, 0.6365F, 0.801F, 1.2F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.113F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone22 = Rockets2.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offset(0.0268F, 0.0407F, 3.383F));
+ PartDefinition octagon_r50 = bone22.addOrReplaceChild("octagon_r50", CubeListBuilder.create().texOffs(0, 0).addBox(0.3224F, -0.7931F, -0.5685F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -0.7854F));
+ PartDefinition octagon_r51 = bone22.addOrReplaceChild("octagon_r51", CubeListBuilder.create().texOffs(0, 0).addBox(0.3224F, -0.7982F, -0.4228F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -0.7854F));
+ PartDefinition octagon_r52 = bone22.addOrReplaceChild("octagon_r52", CubeListBuilder.create().texOffs(0, 0).addBox(0.0278F, -0.5846F, -0.5258F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -1.5708F));
+ PartDefinition octagon_r53 = bone22.addOrReplaceChild("octagon_r53", CubeListBuilder.create().texOffs(0, 0).addBox(0.0278F, -0.6255F, -0.4008F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -1.5708F));
+ PartDefinition octagon_r54 = bone22.addOrReplaceChild("octagon_r54", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3482F, -0.6542F, -0.4296F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, -2.3562F));
+ PartDefinition octagon_r55 = bone22.addOrReplaceChild("octagon_r55", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3482F, -0.6213F, -0.5081F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -2.3562F));
+ PartDefinition octagon_r56 = bone22.addOrReplaceChild("octagon_r56", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5852F, -0.8866F, -0.3801F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, 0.4494F, 0.0F, -3.1416F));
+ PartDefinition octagon_r57 = bone22.addOrReplaceChild("octagon_r57", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5852F, -0.8626F, -0.6379F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(-0.4742F, 0.1389F, -0.9306F, -0.7854F, 0.0F, 3.1416F));
+ PartDefinition octagon_r58 = bone22.addOrReplaceChild("octagon_r58", CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.4137F, -0.1891F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, -0.7854F, 0.0F, 2.3562F));
+ PartDefinition octagon_r59 = bone22.addOrReplaceChild("octagon_r59", CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.3149F, -0.6559F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, 0.4494F, 0.0F, 2.3562F));
+ PartDefinition octagon_r60 = bone22.addOrReplaceChild("octagon_r60", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.3282F, -0.6495F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, 0.4494F, 0.0F, 1.5708F));
+ PartDefinition octagon_r61 = bone22.addOrReplaceChild("octagon_r61", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.4242F, -0.1995F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.7589F, 0.3353F, -0.9306F, -0.7854F, 0.0F, 1.5708F));
+ PartDefinition octagon_r62 = bone22.addOrReplaceChild("octagon_r62", CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.4137F, -0.1891F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, -0.7854F, 0.0F, 0.7854F));
+ PartDefinition octagon_r63 = bone22.addOrReplaceChild("octagon_r63", CubeListBuilder.create().texOffs(0, 0).addBox(0.1884F, -0.3149F, -0.6559F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, 0.4494F, 0.0F, 0.7854F));
+ PartDefinition octagon_r64 = bone22.addOrReplaceChild("octagon_r64", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.3282F, -0.6495F, 0.2221F, 0.4016F, 0.9842F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, 0.4494F, 0.0F, 0.0F));
+ PartDefinition octagon_r65 = bone22.addOrReplaceChild("octagon_r65", CubeListBuilder.create().texOffs(0, 0).addBox(-0.4464F, -0.4242F, -0.1995F, 0.2221F, 0.3016F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.3353F, -0.7589F, -0.9306F, -0.7854F, 0.0F, 0.0F));
+ PartDefinition bone21 = Rockets2.addOrReplaceChild("bone21", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, 2.6961F));
+ PartDefinition octagon_r66 = bone21.addOrReplaceChild("octagon_r66", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r67 = bone21.addOrReplaceChild("octagon_r67", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r68 = bone21.addOrReplaceChild("octagon_r68", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r69 = bone21.addOrReplaceChild("octagon_r69", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r70 = bone21.addOrReplaceChild("octagon_r70", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r71 = bone21.addOrReplaceChild("octagon_r71", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r72 = bone21.addOrReplaceChild("octagon_r72", CubeListBuilder.create().texOffs(0, 0).addBox(-0.1111F, -0.91F, -0.205F, 0.2221F, 0.1484F, 0.4099F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone18 = Rockets2.addOrReplaceChild("bone18", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2378F, -0.6508F, -9.1073F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)), PartPose.offset(-0.0021F, 0.0474F, 7.8333F));
+ PartDefinition octagon_r73 = bone18.addOrReplaceChild("octagon_r73", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r74 = bone18.addOrReplaceChild("octagon_r74", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r75 = bone18.addOrReplaceChild("octagon_r75", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r76 = bone18.addOrReplaceChild("octagon_r76", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r77 = bone18.addOrReplaceChild("octagon_r77", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r78 = bone18.addOrReplaceChild("octagon_r78", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r79 = bone18.addOrReplaceChild("octagon_r79", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2668F, -0.6441F, -2.0088F, 0.5336F, 0.6715F, 14.8775F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.029F, -0.0067F, -7.0986F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone25 = Rockets2.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 0.2985F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -12.411F));
+ PartDefinition octagon_r80 = bone25.addOrReplaceChild("octagon_r80", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r81 = bone25.addOrReplaceChild("octagon_r81", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r82 = bone25.addOrReplaceChild("octagon_r82", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r83 = bone25.addOrReplaceChild("octagon_r83", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r84 = bone25.addOrReplaceChild("octagon_r84", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r85 = bone25.addOrReplaceChild("octagon_r85", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r86 = bone25.addOrReplaceChild("octagon_r86", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3281F, -0.792F, 13.5543F, 0.6561F, 0.8257F, 1.2092F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -13.2557F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone30 = Rockets2.addOrReplaceChild("bone30", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, -3.9858F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -18.5853F));
+ PartDefinition octagon_r87 = bone30.addOrReplaceChild("octagon_r87", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r88 = bone30.addOrReplaceChild("octagon_r88", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r89 = bone30.addOrReplaceChild("octagon_r89", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r90 = bone30.addOrReplaceChild("octagon_r90", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r91 = bone30.addOrReplaceChild("octagon_r91", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r92 = bone30.addOrReplaceChild("octagon_r92", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r93 = bone30.addOrReplaceChild("octagon_r93", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2953F, -0.7128F, 7.8443F, 0.5905F, 0.7431F, 5.4076F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.8302F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone31 = Rockets2.addOrReplaceChild("bone31", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 1.3934F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -25.0853F));
+ PartDefinition octagon_r94 = bone31.addOrReplaceChild("octagon_r94", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r95 = bone31.addOrReplaceChild("octagon_r95", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r96 = bone31.addOrReplaceChild("octagon_r96", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r97 = bone31.addOrReplaceChild("octagon_r97", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r98 = bone31.addOrReplaceChild("octagon_r98", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r99 = bone31.addOrReplaceChild("octagon_r99", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r100 = bone31.addOrReplaceChild("octagon_r100", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 12.0737F, 0.5551F, 0.6985F, 0.3832F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.6803F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone32 = Rockets2.addOrReplaceChild("bone32", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, -0.4736F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -24.5343F));
+ PartDefinition octagon_r101 = bone32.addOrReplaceChild("octagon_r101", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r102 = bone32.addOrReplaceChild("octagon_r102", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r103 = bone32.addOrReplaceChild("octagon_r103", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r104 = bone32.addOrReplaceChild("octagon_r104", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r105 = bone32.addOrReplaceChild("octagon_r105", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r106 = bone32.addOrReplaceChild("octagon_r106", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r107 = bone32.addOrReplaceChild("octagon_r107", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2775F, -0.6701F, 11.5097F, 0.5551F, 0.6985F, 0.9472F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -11.9832F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone29 = Rockets2.addOrReplaceChild("bone29", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, -0.5789F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -12.2801F));
+ PartDefinition octagon_r108 = bone29.addOrReplaceChild("octagon_r108", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r109 = bone29.addOrReplaceChild("octagon_r109", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r110 = bone29.addOrReplaceChild("octagon_r110", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r111 = bone29.addOrReplaceChild("octagon_r111", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r112 = bone29.addOrReplaceChild("octagon_r112", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r113 = bone29.addOrReplaceChild("octagon_r113", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r114 = bone29.addOrReplaceChild("octagon_r114", CubeListBuilder.create().texOffs(0, 0).addBox(-0.2552F, -0.6161F, 9.59F, 0.5104F, 0.6423F, 1.104F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -10.169F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone28 = Rockets2.addOrReplaceChild("bone28", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, -3.0583F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)), PartPose.offset(0.0268F, 0.0407F, -19.1553F));
+ PartDefinition octagon_r115 = bone28.addOrReplaceChild("octagon_r115", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r116 = bone28.addOrReplaceChild("octagon_r116", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r117 = bone28.addOrReplaceChild("octagon_r117", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r118 = bone28.addOrReplaceChild("octagon_r118", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r119 = bone28.addOrReplaceChild("octagon_r119", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r120 = bone28.addOrReplaceChild("octagon_r120", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r121 = bone28.addOrReplaceChild("octagon_r121", CubeListBuilder.create().texOffs(0, 0).addBox(-0.3543F, -0.8554F, 11.3379F, 0.7086F, 0.8917F, 4.6066F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -14.3962F, 0.0F, 0.0F, -1.5708F));
+ PartDefinition bone27 = Rockets2.addOrReplaceChild("bone27",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2342F, -0.5653F, -4.8664F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2014F, -0.4862F, -11.3624F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)),
+ PartPose.offset(0.0268F, 0.0407F, -13.0786F));
+ PartDefinition octagon_r122 = bone27.addOrReplaceChild("octagon_r122",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 0.7854F));
+ PartDefinition octagon_r123 = bone27.addOrReplaceChild("octagon_r123",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 2.3562F));
+ PartDefinition octagon_r124 = bone27.addOrReplaceChild("octagon_r124",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 1.5708F));
+ PartDefinition octagon_r125 = bone27.addOrReplaceChild("octagon_r125",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, 3.1416F));
+ PartDefinition octagon_r126 = bone27.addOrReplaceChild("octagon_r126",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -2.3562F));
+ PartDefinition octagon_r127 = bone27.addOrReplaceChild("octagon_r127",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -0.7854F));
+ PartDefinition octagon_r128 = bone27.addOrReplaceChild("octagon_r128",
+ CubeListBuilder.create().texOffs(0, 0).addBox(-0.2014F, -0.4862F, -1.9F, 0.4028F, 0.5069F, 1.9F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.2342F, -0.5653F, 4.596F, 0.4684F, 0.5894F, 6.404F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, -9.4624F, 0.0F, 0.0F, -1.5708F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ Rockets.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/model/Modeltaser_rod.java b/src/main/java/net/mcreator/target/client/model/Modeltaser_rod.java
new file mode 100644
index 000000000..9e4249424
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/model/Modeltaser_rod.java
@@ -0,0 +1,50 @@
+package net.mcreator.target.client.model;
+
+import net.minecraft.world.entity.Entity;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.model.geom.builders.PartDefinition;
+import net.minecraft.client.model.geom.builders.MeshDefinition;
+import net.minecraft.client.model.geom.builders.LayerDefinition;
+import net.minecraft.client.model.geom.builders.CubeListBuilder;
+import net.minecraft.client.model.geom.builders.CubeDeformation;
+import net.minecraft.client.model.geom.PartPose;
+import net.minecraft.client.model.geom.ModelPart;
+import net.minecraft.client.model.geom.ModelLayerLocation;
+import net.minecraft.client.model.EntityModel;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+// Made with Blockbench 4.9.3
+// Exported for Minecraft version 1.17 or later with Mojang mappings
+// Paste this class into your mod and generate all required imports
+public class Modeltaser_rod extends EntityModel {
+ // This layer location should be baked with EntityRendererProvider.Context in
+ // the entity renderer and passed into this model's constructor
+ public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("target", "modeltaser_rod"), "main");
+ public final ModelPart bone;
+
+ public Modeltaser_rod(ModelPart root) {
+ this.bone = root.getChild("bone");
+ }
+
+ public static LayerDefinition createBodyLayer() {
+ MeshDefinition meshdefinition = new MeshDefinition();
+ PartDefinition partdefinition = meshdefinition.getRoot();
+ PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F));
+ PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1",
+ CubeListBuilder.create().texOffs(0, 4).addBox(-0.5F, -27.0F, -2.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -23.0F, -7.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0)
+ .addBox(-1.0F, -23.0F, -3.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 4).addBox(-0.5F, -27.0F, -6.5F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)),
+ PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F));
+ return LayerDefinition.create(meshdefinition, 16, 16);
+ }
+
+ @Override
+ public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
+ }
+
+ @Override
+ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
+ bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/particle/BulltholeParticle.java b/src/main/java/net/mcreator/target/client/particle/BulltholeParticle.java
new file mode 100644
index 000000000..0ab9df681
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/particle/BulltholeParticle.java
@@ -0,0 +1,57 @@
+
+package net.mcreator.target.client.particle;
+
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.core.particles.SimpleParticleType;
+import net.minecraft.client.particle.TextureSheetParticle;
+import net.minecraft.client.particle.SpriteSet;
+import net.minecraft.client.particle.ParticleRenderType;
+import net.minecraft.client.particle.ParticleProvider;
+import net.minecraft.client.particle.Particle;
+import net.minecraft.client.multiplayer.ClientLevel;
+
+@OnlyIn(Dist.CLIENT)
+public class BulltholeParticle extends TextureSheetParticle {
+ public static BulltholeParticleProvider provider(SpriteSet spriteSet) {
+ return new BulltholeParticleProvider(spriteSet);
+ }
+
+ public static class BulltholeParticleProvider implements ParticleProvider {
+ private final SpriteSet spriteSet;
+
+ public BulltholeParticleProvider(SpriteSet spriteSet) {
+ this.spriteSet = spriteSet;
+ }
+
+ public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) {
+ return new BulltholeParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet);
+ }
+ }
+
+ private final SpriteSet spriteSet;
+
+ protected BulltholeParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) {
+ super(world, x, y, z);
+ this.spriteSet = spriteSet;
+ this.setSize(0f, 0f);
+ this.lifetime = 100;
+ this.gravity = 0f;
+ this.hasPhysics = false;
+ this.xd = vx * 0;
+ this.yd = vy * 0;
+ this.zd = vz * 0;
+ this.pickSprite(spriteSet);
+ }
+
+ @Override
+ public ParticleRenderType getRenderType() {
+ return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/particle/FirestarParticle.java b/src/main/java/net/mcreator/target/client/particle/FirestarParticle.java
new file mode 100644
index 000000000..848e2ba67
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/particle/FirestarParticle.java
@@ -0,0 +1,67 @@
+
+package net.mcreator.target.client.particle;
+
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.core.particles.SimpleParticleType;
+import net.minecraft.client.particle.TextureSheetParticle;
+import net.minecraft.client.particle.SpriteSet;
+import net.minecraft.client.particle.ParticleRenderType;
+import net.minecraft.client.particle.ParticleProvider;
+import net.minecraft.client.particle.Particle;
+import net.minecraft.client.multiplayer.ClientLevel;
+
+@OnlyIn(Dist.CLIENT)
+public class FirestarParticle extends TextureSheetParticle {
+ public static FirestarParticleProvider provider(SpriteSet spriteSet) {
+ return new FirestarParticleProvider(spriteSet);
+ }
+
+ public static class FirestarParticleProvider implements ParticleProvider {
+ private final SpriteSet spriteSet;
+
+ public FirestarParticleProvider(SpriteSet spriteSet) {
+ this.spriteSet = spriteSet;
+ }
+
+ public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) {
+ FirestarParticle particle = new FirestarParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet);
+ return particle;
+ }
+ }
+
+ private final SpriteSet spriteSet;
+
+ protected FirestarParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) {
+ super(world, x, y, z);
+ this.spriteSet = spriteSet;
+ this.setSize(0.2f, 0.2f);
+ this.quadSize *= 0.5f;
+ this.lifetime = (int) Math.max(1, 40 + (this.random.nextInt(40) - 20));
+ this.gravity = 1f;
+ this.hasPhysics = true;
+ this.xd = vx * 1;
+ this.yd = vy * 1;
+ this.zd = vz * 1;
+ this.setSpriteFromAge(spriteSet);
+ }
+
+ @Override
+ public int getLightColor(float partialTick) {
+ return 15728880;
+ }
+
+ @Override
+ public ParticleRenderType getRenderType() {
+ return ParticleRenderType.PARTICLE_SHEET_LIT;
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ if (!this.removed) {
+ this.setSprite(this.spriteSet.get((this.age / 2) % 8 + 1, 8));
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/BocekarrowRenderer.java b/src/main/java/net/mcreator/target/client/renderer/BocekarrowRenderer.java
new file mode 100644
index 000000000..077184df6
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/BocekarrowRenderer.java
@@ -0,0 +1,42 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.BocekarrowEntity;
+import net.mcreator.target.client.model.Modelbocekarrow;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class BocekarrowRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/bocekarrow.png");
+ private final Modelbocekarrow model;
+
+ public BocekarrowRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modelbocekarrow(context.bakeLayer(Modelbocekarrow.LAYER_LOCATION));
+ }
+
+ @Override
+ public void render(BocekarrowEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(BocekarrowEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/BulletRenderer.java b/src/main/java/net/mcreator/target/client/renderer/BulletRenderer.java
new file mode 100644
index 000000000..2fa8f12e3
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/BulletRenderer.java
@@ -0,0 +1,54 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.minecraft.client.renderer.entity.layers.RenderLayer;
+import net.minecraft.client.renderer.entity.MobRenderer;
+import net.minecraft.client.renderer.entity.LivingEntityRenderer;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+
+import net.mcreator.target.entity.BulletEntity;
+import net.mcreator.target.client.model.Modelbullet;
+
+import net.minecraft.core.BlockPos;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class BulletRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/bullet_tex.png");
+ private final Modelbullet model;
+
+ public BulletRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modelbullet(context.bakeLayer(Modelbullet.LAYER_LOCATION));
+ }
+
+ protected int getBlockLightLevel(BulletEntity pEntity, BlockPos pPos) {
+ return 15;
+ }
+
+ @Override
+ public void render(BulletEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.eyes(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(BulletEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/ClaymoreRenderer.java b/src/main/java/net/mcreator/target/client/renderer/ClaymoreRenderer.java
new file mode 100644
index 000000000..739f7d7cd
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/ClaymoreRenderer.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.renderer;
+
+import software.bernie.geckolib.renderer.GeoEntityRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.model.ClaymoreModel;
+import net.mcreator.target.entity.ClaymoreEntity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class ClaymoreRenderer extends GeoEntityRenderer {
+ public ClaymoreRenderer(EntityRendererProvider.Context renderManager) {
+ super(renderManager, new ClaymoreModel());
+ this.shadowRadius = 0f;
+ }
+
+ @Override
+ public RenderType getRenderType(ClaymoreEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
+ return RenderType.entityTranslucent(getTextureLocation(animatable));
+ }
+
+ @Override
+ public void preRender(PoseStack poseStack, ClaymoreEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
+ float blue, float alpha) {
+ float scale = 0.5f;
+ this.scaleHeight = scale;
+ this.scaleWidth = scale;
+ super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ @Override
+ protected float getDeathMaxRotation(ClaymoreEntity entityLivingBaseIn) {
+ return 0.0F;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/GunGrenadeRenderer.java b/src/main/java/net/mcreator/target/client/renderer/GunGrenadeRenderer.java
new file mode 100644
index 000000000..949f740c2
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/GunGrenadeRenderer.java
@@ -0,0 +1,42 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.GunGrenadeEntity;
+import net.mcreator.target.client.model.ModelGrenade;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class GunGrenadeRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/grenade.png");
+ private final ModelGrenade model;
+
+ public GunGrenadeRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new ModelGrenade(context.bakeLayer(ModelGrenade.LAYER_LOCATION));
+ }
+
+ @Override
+ public void render(GunGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(GunGrenadeEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/MortarRenderer.java b/src/main/java/net/mcreator/target/client/renderer/MortarRenderer.java
new file mode 100644
index 000000000..fb66687f7
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/MortarRenderer.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.renderer;
+
+import software.bernie.geckolib.renderer.GeoEntityRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.model.MortarModel;
+import net.mcreator.target.entity.MortarEntity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class MortarRenderer extends GeoEntityRenderer {
+ public MortarRenderer(EntityRendererProvider.Context renderManager) {
+ super(renderManager, new MortarModel());
+ this.shadowRadius = 0f;
+ }
+
+ @Override
+ public RenderType getRenderType(MortarEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
+ return RenderType.entityTranslucent(getTextureLocation(animatable));
+ }
+
+ @Override
+ public void preRender(PoseStack poseStack, MortarEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
+ float blue, float alpha) {
+ float scale = 1f;
+ this.scaleHeight = scale;
+ this.scaleWidth = scale;
+ super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ @Override
+ protected float getDeathMaxRotation(MortarEntity entityLivingBaseIn) {
+ return 0.0F;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/MortarShellRenderer.java b/src/main/java/net/mcreator/target/client/renderer/MortarShellRenderer.java
new file mode 100644
index 000000000..c9e9fa4f6
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/MortarShellRenderer.java
@@ -0,0 +1,42 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.MortarShellEntity;
+import net.mcreator.target.client.model.Modelmortar_shell_Converted;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class MortarShellRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/mortar_shell.png");
+ private final Modelmortar_shell_Converted model;
+
+ public MortarShellRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modelmortar_shell_Converted(context.bakeLayer(Modelmortar_shell_Converted.LAYER_LOCATION));
+ }
+
+ @Override
+ public void render(MortarShellEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(MortarShellEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/ProjectileRenderer.java b/src/main/java/net/mcreator/target/client/renderer/ProjectileRenderer.java
new file mode 100644
index 000000000..b01d27cb0
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/ProjectileRenderer.java
@@ -0,0 +1,54 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.minecraft.client.renderer.entity.layers.RenderLayer;
+import net.minecraft.client.renderer.entity.MobRenderer;
+import net.minecraft.client.renderer.entity.LivingEntityRenderer;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+
+import net.mcreator.target.entity.ProjectileEntity;
+import net.mcreator.target.client.model.Modelbullet;
+
+import net.minecraft.core.BlockPos;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class ProjectileRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/bullet_tex.png");
+ private final Modelbullet model;
+
+ public ProjectileRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modelbullet(context.bakeLayer(Modelbullet.LAYER_LOCATION));
+ }
+
+ protected int getBlockLightLevel(ProjectileEntity pEntity, BlockPos pPos) {
+ return 15;
+ }
+
+ @Override
+ public void render(ProjectileEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.eyes(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(ProjectileEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/RpgRocketRenderer.java b/src/main/java/net/mcreator/target/client/renderer/RpgRocketRenderer.java
new file mode 100644
index 000000000..fe7687a61
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/RpgRocketRenderer.java
@@ -0,0 +1,42 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.RpgRocketEntity;
+import net.mcreator.target.client.model.Modelrpg7_rocket_Converted;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class RpgRocketRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/rocket.png");
+ private final Modelrpg7_rocket_Converted model;
+
+ public RpgRocketRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modelrpg7_rocket_Converted(context.bakeLayer(Modelrpg7_rocket_Converted.LAYER_LOCATION));
+ }
+
+ @Override
+ public void render(RpgRocketEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(RpgRocketEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/SenpaiRenderer.java b/src/main/java/net/mcreator/target/client/renderer/SenpaiRenderer.java
new file mode 100644
index 000000000..4966a57a6
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/SenpaiRenderer.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.renderer;
+
+import software.bernie.geckolib.renderer.GeoEntityRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.model.SenpaiModel;
+import net.mcreator.target.entity.SenpaiEntity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class SenpaiRenderer extends GeoEntityRenderer {
+ public SenpaiRenderer(EntityRendererProvider.Context renderManager) {
+ super(renderManager, new SenpaiModel());
+ this.shadowRadius = 0.5f;
+ }
+
+ @Override
+ public RenderType getRenderType(SenpaiEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
+ return RenderType.entityTranslucent(getTextureLocation(animatable));
+ }
+
+ @Override
+ public void preRender(PoseStack poseStack, SenpaiEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
+ float blue, float alpha) {
+ float scale = 1f;
+ this.scaleHeight = scale;
+ this.scaleWidth = scale;
+ super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ @Override
+ protected float getDeathMaxRotation(SenpaiEntity entityLivingBaseIn) {
+ return 0.0F;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/Target1Renderer.java b/src/main/java/net/mcreator/target/client/renderer/Target1Renderer.java
new file mode 100644
index 000000000..8ce571f33
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/Target1Renderer.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.renderer;
+
+import software.bernie.geckolib.renderer.GeoEntityRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.model.Target1Model;
+import net.mcreator.target.entity.Target1Entity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class Target1Renderer extends GeoEntityRenderer {
+ public Target1Renderer(EntityRendererProvider.Context renderManager) {
+ super(renderManager, new Target1Model());
+ this.shadowRadius = 0f;
+ }
+
+ @Override
+ public RenderType getRenderType(Target1Entity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
+ return RenderType.entityTranslucent(getTextureLocation(animatable));
+ }
+
+ @Override
+ public void preRender(PoseStack poseStack, Target1Entity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
+ float blue, float alpha) {
+ float scale = 1f;
+ this.scaleHeight = scale;
+ this.scaleWidth = scale;
+ super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ @Override
+ protected float getDeathMaxRotation(Target1Entity entityLivingBaseIn) {
+ return 0.0F;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/TargetRenderer.java b/src/main/java/net/mcreator/target/client/renderer/TargetRenderer.java
new file mode 100644
index 000000000..925a43b07
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/TargetRenderer.java
@@ -0,0 +1,44 @@
+
+package net.mcreator.target.client.renderer;
+
+import software.bernie.geckolib.renderer.GeoEntityRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.model.TargetModel;
+import net.mcreator.target.entity.layer.TargetLayer;
+import net.mcreator.target.entity.TargetEntity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class TargetRenderer extends GeoEntityRenderer {
+ public TargetRenderer(EntityRendererProvider.Context renderManager) {
+ super(renderManager, new TargetModel());
+ this.shadowRadius = 0f;
+ this.addRenderLayer(new TargetLayer(this));
+ }
+
+ @Override
+ public RenderType getRenderType(TargetEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
+ return RenderType.entityTranslucent(getTextureLocation(animatable));
+ }
+
+ @Override
+ public void preRender(PoseStack poseStack, TargetEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
+ float blue, float alpha) {
+ float scale = 1f;
+ this.scaleHeight = scale;
+ this.scaleWidth = scale;
+ super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
+ }
+
+ @Override
+ protected float getDeathMaxRotation(TargetEntity entityLivingBaseIn) {
+ return 0.0F;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/renderer/TaserBulletProjectileRenderer.java b/src/main/java/net/mcreator/target/client/renderer/TaserBulletProjectileRenderer.java
new file mode 100644
index 000000000..adc37f5ac
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/renderer/TaserBulletProjectileRenderer.java
@@ -0,0 +1,42 @@
+package net.mcreator.target.client.renderer;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.entity.EntityRendererProvider;
+import net.minecraft.client.renderer.entity.EntityRenderer;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.TaserBulletProjectileEntity;
+import net.mcreator.target.client.model.Modeltaser_rod;
+
+import com.mojang.math.Axis;
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class TaserBulletProjectileRenderer extends EntityRenderer {
+ private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/taser_rod.png");
+ private final Modeltaser_rod model;
+
+ public TaserBulletProjectileRenderer(EntityRendererProvider.Context context) {
+ super(context);
+ model = new Modeltaser_rod(context.bakeLayer(Modeltaser_rod.LAYER_LOCATION));
+ }
+
+ @Override
+ public void render(TaserBulletProjectileEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
+ VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
+ poseStack.pushPose();
+ poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
+ poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
+ model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
+ poseStack.popPose();
+ super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
+ }
+
+ @Override
+ public ResourceLocation getTextureLocation(TaserBulletProjectileEntity entity) {
+ return texture;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/screens/AmmobarOverlay.java b/src/main/java/net/mcreator/target/client/screens/AmmobarOverlay.java
new file mode 100644
index 000000000..c6e61d06d
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/screens/AmmobarOverlay.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.screens;
+
+import org.checkerframework.checker.units.qual.h;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.EventPriority;
+import net.minecraftforge.client.event.RenderGuiEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.client.Minecraft;
+
+import net.mcreator.target.procedures.AmmocountProcedure;
+import net.mcreator.target.procedures.AmmobarXianShiYouXiNeiDieJiaCengProcedure;
+
+@Mod.EventBusSubscriber({Dist.CLIENT})
+public class AmmobarOverlay {
+ @SubscribeEvent(priority = EventPriority.NORMAL)
+ public static void eventHandler(RenderGuiEvent.Pre event) {
+ int w = event.getWindow().getGuiScaledWidth();
+ int h = event.getWindow().getGuiScaledHeight();
+ Level world = null;
+ double x = 0;
+ double y = 0;
+ double z = 0;
+ Player entity = Minecraft.getInstance().player;
+ if (entity != null) {
+ world = entity.level();
+ x = entity.getX();
+ y = entity.getY();
+ z = entity.getZ();
+ }
+ if (AmmobarXianShiYouXiNeiDieJiaCengProcedure.execute(entity)) {
+ event.getGuiGraphics().drawString(Minecraft.getInstance().font,
+
+ AmmocountProcedure.execute(entity), w / 2 + 92, h - 11, -16711936, false);
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/screens/CrosshairOverlay.java b/src/main/java/net/mcreator/target/client/screens/CrosshairOverlay.java
new file mode 100644
index 000000000..cfea4a259
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/screens/CrosshairOverlay.java
@@ -0,0 +1,140 @@
+
+package net.mcreator.target.client.screens;
+
+import org.checkerframework.checker.units.qual.h;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.EventPriority;
+import net.minecraftforge.client.event.RenderGuiEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.GameRenderer;
+import net.minecraft.client.Minecraft;
+import net.mcreator.target.init.TargetModAttributes;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import net.mcreator.target.procedures.CrosshairXianShiYouXiNeiDieJiaCengProcedure;
+
+import net.minecraft.client.gui.GuiGraphics;
+import com.mojang.blaze3d.systems.RenderSystem;
+import org.joml.Matrix4f;
+import com.mojang.blaze3d.vertex.BufferUploader;
+
+import com.mojang.blaze3d.vertex.DefaultVertexFormat;
+import com.mojang.blaze3d.vertex.VertexFormat;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.platform.GlStateManager;
+
+import com.mojang.blaze3d.vertex.BufferBuilder;
+import com.mojang.blaze3d.vertex.Tesselator;
+
+@Mod.EventBusSubscriber({Dist.CLIENT})
+public class CrosshairOverlay {
+ @SubscribeEvent(priority = EventPriority.NORMAL)
+ public static void eventHandler(RenderGuiEvent.Pre event) {
+ int w = event.getWindow().getGuiScaledWidth();
+ int h = event.getWindow().getGuiScaledHeight();
+ Level world = null;
+ double x = 0;
+ double y = 0;
+ double z = 0;
+ Player entity = Minecraft.getInstance().player;
+
+ double spread = 0;
+ spread = entity.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue();
+
+ double hitind = 0;
+ hitind = (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).hitind;
+
+ double headind = 0;
+ headind = (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).headind;
+
+ double killind = 0;
+ killind = (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).killind;
+
+ if (entity != null) {
+ world = entity.level();
+ x = entity.getX();
+ y = entity.getY();
+ z = entity.getZ();
+ }
+ RenderSystem.disableDepthTest();
+ RenderSystem.depthMask(false);
+ RenderSystem.enableBlend();
+ RenderSystem.setShader(GameRenderer::getPositionTexShader);
+ RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ if (CrosshairXianShiYouXiNeiDieJiaCengProcedure.execute(entity)) {
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/point.png"), w / 2 + -7.5f, h / 2 + -8, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/rexheng.png"), w / 2 + -9.5f - 2.8f * (float)spread, h / 2 + -8, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/rexheng.png"), w / 2 + -6.5f + 2.8f * (float)spread, h / 2 + -8, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/rexshu.png"), w / 2 + -7.5f, h / 2 + -7 + 2.8f * (float)spread, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/rexshu.png"), w / 2 + -7.5f, h / 2 + -10 - 2.8f * (float)spread, 0, 0, 16, 16, 16, 16);
+ }
+
+ float ww = 0;
+ float hh = 0;
+ float m = 0;
+ ww = w / 2 + -7.5f + (float)(2 * (Math.random() - 0.5f));
+ hh = h / 2 + -8 + (float)(2 * (Math.random() - 0.5f));
+ m = (float)((40 - killind)/5.5f);
+
+ if (hitind > 0) {
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/hit_marker.png"), ww, hh, 0, 0, 16, 16, 16, 16);
+ }
+
+ if (headind > 0) {
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/headshotmark.png"), ww, hh, 0, 0, 16, 16, 16, 16);
+ }
+
+ if (killind > 0) {
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/kill_mark1.png"), w / 2 + -7.5f -2 + m, h / 2 + -8 -2 + m, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/kill_mark2.png"), w / 2 + -7.5f +2 - m, h / 2 + -8 -2 + m, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/kill_mark3.png"), w / 2 + -7.5f -2 + m, h / 2 + -8 +2 - m, 0, 0, 16, 16, 16, 16);
+
+ preciseBlit(event.getGuiGraphics(), new ResourceLocation("target:textures/screens/kill_mark4.png"), w / 2 + -7.5f +2 - m, h / 2 + -8 +2 - m, 0, 0, 16, 16, 16, 16);
+ }
+
+ RenderSystem.depthMask(true);
+ RenderSystem.defaultBlendFunc();
+ RenderSystem.enableDepthTest();
+ RenderSystem.disableBlend();
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ }
+
+ private static void preciseBlit(GuiGraphics gui,ResourceLocation pAtlasLocation, float pX, float pY, float pUOffset, float pVOffset, float pWidth, float pHeight, float pTextureWidth, float pTextureHeight) {
+ float pX1 = pX;
+ float pX2 = pX + pWidth;
+ float pY1 = pY;
+ float pY2 = pY + pHeight;
+ float pBlitOffset = 0;
+
+ float pMinU = pUOffset / pTextureWidth;
+ float pMaxU = (pUOffset + pWidth) / pTextureWidth;
+ float pMinV = pVOffset / pTextureHeight;
+ float pMaxV = (pVOffset + pHeight) / pTextureHeight;
+
+ RenderSystem.setShaderTexture(0, pAtlasLocation);
+ RenderSystem.setShader(GameRenderer::getPositionTexShader);
+ Matrix4f matrix4f = gui.pose().last().pose();
+ BufferBuilder bufferbuilder = Tesselator.getInstance().getBuilder();
+ bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX);
+ bufferbuilder.vertex(matrix4f, pX1, pY1, pBlitOffset).uv(pMinU, pMinV).endVertex();
+ bufferbuilder.vertex(matrix4f, pX1, pY2, pBlitOffset).uv(pMinU, pMaxV).endVertex();
+ bufferbuilder.vertex(matrix4f, pX2, pY2, pBlitOffset).uv(pMaxU, pMaxV).endVertex();
+ bufferbuilder.vertex(matrix4f, pX2, pY1, pBlitOffset).uv(pMaxU, pMinV).endVertex();
+ BufferUploader.drawWithShader(bufferbuilder.end());
+}
+}
diff --git a/src/main/java/net/mcreator/target/client/screens/M79uiOverlay.java b/src/main/java/net/mcreator/target/client/screens/M79uiOverlay.java
new file mode 100644
index 000000000..e7928a25e
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/screens/M79uiOverlay.java
@@ -0,0 +1,56 @@
+
+package net.mcreator.target.client.screens;
+
+import org.checkerframework.checker.units.qual.h;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.EventPriority;
+import net.minecraftforge.client.event.RenderGuiEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.GameRenderer;
+import net.minecraft.client.Minecraft;
+
+import net.mcreator.target.procedures.M79uiXianShiYouXiNeiDieJiaCengProcedure;
+
+import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.platform.GlStateManager;
+
+@Mod.EventBusSubscriber({Dist.CLIENT})
+public class M79uiOverlay {
+ @SubscribeEvent(priority = EventPriority.NORMAL)
+ public static void eventHandler(RenderGuiEvent.Pre event) {
+ int w = event.getWindow().getGuiScaledWidth();
+ int h = event.getWindow().getGuiScaledHeight();
+ Level world = null;
+ double x = 0;
+ double y = 0;
+ double z = 0;
+ Player entity = Minecraft.getInstance().player;
+ if (entity != null) {
+ world = entity.level();
+ x = entity.getX();
+ y = entity.getY();
+ z = entity.getZ();
+ }
+ RenderSystem.disableDepthTest();
+ RenderSystem.depthMask(false);
+ RenderSystem.enableBlend();
+ RenderSystem.setShader(GameRenderer::getPositionTexShader);
+ RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ if (M79uiXianShiYouXiNeiDieJiaCengProcedure.execute(entity)) {
+ event.getGuiGraphics().blit(new ResourceLocation("target:textures/screens/rex.png"), w / 2 + -16, h / 2 + -16, 0, 0, 32, 32, 32, 32);
+
+ }
+ RenderSystem.depthMask(true);
+ RenderSystem.defaultBlendFunc();
+ RenderSystem.enableDepthTest();
+ RenderSystem.disableBlend();
+ RenderSystem.setShaderColor(1, 1, 1, 1);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java b/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java
new file mode 100644
index 000000000..c74419610
--- /dev/null
+++ b/src/main/java/net/mcreator/target/client/screens/SpyglassRangeOverlay.java
@@ -0,0 +1,42 @@
+
+package net.mcreator.target.client.screens;
+
+import org.checkerframework.checker.units.qual.h;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.eventbus.api.EventPriority;
+import net.minecraftforge.client.event.RenderGuiEvent;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.client.Minecraft;
+
+import net.mcreator.target.procedures.SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure;
+import net.mcreator.target.procedures.EntityRangeProcedure;
+
+@Mod.EventBusSubscriber({Dist.CLIENT})
+public class SpyglassRangeOverlay {
+ @SubscribeEvent(priority = EventPriority.NORMAL)
+ public static void eventHandler(RenderGuiEvent.Pre event) {
+ int w = event.getWindow().getGuiScaledWidth();
+ int h = event.getWindow().getGuiScaledHeight();
+ Level world = null;
+ double x = 0;
+ double y = 0;
+ double z = 0;
+ Player entity = Minecraft.getInstance().player;
+ if (entity != null) {
+ world = entity.level();
+ x = entity.getX();
+ y = entity.getY();
+ z = entity.getZ();
+ }
+ if (SpyglassRangeXianShiYouXiNeiDieJiaCengProcedure.execute(entity)) {
+ event.getGuiGraphics().drawString(Minecraft.getInstance().font,
+
+ EntityRangeProcedure.execute(entity), w / 2 + 19, h / 2 + -23, -1, false);
+ }
+ }
+}
diff --git a/src/main/java/net/mcreator/target/command/BigexpCommand.java b/src/main/java/net/mcreator/target/command/BigexpCommand.java
new file mode 100644
index 000000000..cee4036a6
--- /dev/null
+++ b/src/main/java/net/mcreator/target/command/BigexpCommand.java
@@ -0,0 +1,39 @@
+
+package net.mcreator.target.command;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.RegisterCommandsEvent;
+import net.minecraftforge.common.util.FakePlayerFactory;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.core.Direction;
+import net.minecraft.commands.Commands;
+
+import net.mcreator.target.procedures.HugeexpProcedure;
+
+@Mod.EventBusSubscriber
+public class BigexpCommand {
+ @SubscribeEvent
+ public static void registerCommand(RegisterCommandsEvent event) {
+ event.getDispatcher().register(Commands.literal("target:bigexp")
+
+ .executes(arguments -> {
+ Level world = arguments.getSource().getUnsidedLevel();
+ double x = arguments.getSource().getPosition().x();
+ double y = arguments.getSource().getPosition().y();
+ double z = arguments.getSource().getPosition().z();
+ Entity entity = arguments.getSource().getEntity();
+ if (entity == null && world instanceof ServerLevel _servLevel)
+ entity = FakePlayerFactory.getMinecraft(_servLevel);
+ Direction direction = Direction.DOWN;
+ if (entity != null)
+ direction = entity.getDirection();
+
+ HugeexpProcedure.execute(world, x, y, z);
+ return 0;
+ }));
+ }
+}
diff --git a/src/main/java/net/mcreator/target/command/MediumexpCommand.java b/src/main/java/net/mcreator/target/command/MediumexpCommand.java
new file mode 100644
index 000000000..f37c5883b
--- /dev/null
+++ b/src/main/java/net/mcreator/target/command/MediumexpCommand.java
@@ -0,0 +1,39 @@
+
+package net.mcreator.target.command;
+
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.event.RegisterCommandsEvent;
+import net.minecraftforge.common.util.FakePlayerFactory;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.core.Direction;
+import net.minecraft.commands.Commands;
+
+import net.mcreator.target.procedures.MedexpProcedure;
+
+@Mod.EventBusSubscriber
+public class MediumexpCommand {
+ @SubscribeEvent
+ public static void registerCommand(RegisterCommandsEvent event) {
+ event.getDispatcher().register(Commands.literal("target:mediumexp")
+
+ .executes(arguments -> {
+ Level world = arguments.getSource().getUnsidedLevel();
+ double x = arguments.getSource().getPosition().x();
+ double y = arguments.getSource().getPosition().y();
+ double z = arguments.getSource().getPosition().z();
+ Entity entity = arguments.getSource().getEntity();
+ if (entity == null && world instanceof ServerLevel _servLevel)
+ entity = FakePlayerFactory.getMinecraft(_servLevel);
+ Direction direction = Direction.DOWN;
+ if (entity != null)
+ direction = entity.getDirection();
+
+ MedexpProcedure.execute(world, x, y, z);
+ return 0;
+ }));
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/BocekarrowEntity.java b/src/main/java/net/mcreator/target/entity/BocekarrowEntity.java
new file mode 100644
index 000000000..8a8e3c723
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/BocekarrowEntity.java
@@ -0,0 +1,207 @@
+
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.advancements.AdvancementProgress;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.language.I18n;
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.contents.TranslatableContents;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.entity.player.Player;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Optional;
+
+import net.mcreator.target.init.TargetModEntities;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class BocekarrowEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Items.ARROW);
+
+ public BocekarrowEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.BOCEKARROW.get(), world);
+ }
+
+ public BocekarrowEntity(EntityType extends BocekarrowEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public BocekarrowEntity(EntityType extends BocekarrowEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public BocekarrowEntity(EntityType extends BocekarrowEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ public void onHitBlock(BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult result) {
+ final Vec3 position = this.position();
+ Entity entity = result.getEntity();
+ if(this.getOwner() instanceof LivingEntity living){
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.hitind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
+ }
+ }
+ if (entity instanceof LivingEntity livingEntity) {
+ entity.invulnerableTime = 0;
+ }
+ AABB boundingBox = entity.getBoundingBox();
+ Vec3 startVec = this.position();
+ Vec3 endVec = startVec.add(this.getDeltaMovement());
+ Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
+ /* Check for headshot */
+ boolean headshot = false;
+ if(entity instanceof LivingEntity)
+ {
+ IHeadshotBox headshotBox = (IHeadshotBox) BoundingBoxManager.getHeadshotBoxes(entity.getType());
+ if(headshotBox != null)
+ {
+ AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
+ if(box != null)
+ {
+ box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
+ Optional headshotHitPos = box.clip(startVec, endVec);
+ if(!headshotHitPos.isPresent())
+ {
+ box = box.inflate( 0.2, 0.2, 0.2);
+ headshotHitPos = box.clip(startVec, endVec);
+ }
+ if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
+ {
+ hitPos = headshotHitPos.get();
+ headshot = true;
+ }
+ if(headshot){
+ if(this.getOwner() instanceof LivingEntity living){
+ setBaseDamage(getBaseDamage() * 2);
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.headind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
+ }
+ }
+ }
+ }
+ }
+ }
+ super.onHitEntity(result);
+ this.discard();
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ if(this.tickCount>200){
+ this.discard();
+ }
+ }
+
+ public static BocekarrowEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 5, 0);
+ }
+
+ public static BocekarrowEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ BocekarrowEntity entityarrow = new BocekarrowEntity(TargetModEntities.BOCEKARROW.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")), SoundSource.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static BocekarrowEntity shoot(LivingEntity entity, LivingEntity target) {
+ BocekarrowEntity entityarrow = new BocekarrowEntity(TargetModEntities.BOCEKARROW.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(5);
+ entityarrow.setKnockback(5);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ entity.level().playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")), SoundSource.PLAYERS, 1, 1f / (RandomSource.create().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/BulletEntity.java b/src/main/java/net/mcreator/target/entity/BulletEntity.java
new file mode 100644
index 000000000..067878e23
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/BulletEntity.java
@@ -0,0 +1,180 @@
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.advancements.AdvancementProgress;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.language.I18n;
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.contents.TranslatableContents;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.entity.player.Player;
+
+import net.mcreator.target.procedures.BullettestDanSheWuJiZhongFangKuaiShiProcedure;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Optional;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class BulletEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
+
+ public BulletEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.BULLET.get(), world);
+ }
+
+ public BulletEntity(EntityType extends BulletEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public BulletEntity(EntityType extends BulletEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public BulletEntity(EntityType extends BulletEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ if (this.inGround)
+ BullettestDanSheWuJiZhongFangKuaiShiProcedure.execute(this);
+ if(this.getOwner() instanceof LivingEntity living){
+ if(this.tickCount >= (int)living.getMainHandItem().getOrCreateTag().getDouble("bulletlife")){
+ this.discard();
+ }
+ }
+ }
+
+ @Override
+ public void onHitBlock(BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult result) {
+ final Vec3 position = this.position();
+ Entity entity = result.getEntity();
+ if(this.getOwner() instanceof LivingEntity living){
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.hitind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
+ }
+ }
+ if (entity instanceof LivingEntity livingEntity) {
+ entity.invulnerableTime = 0;
+ }
+ AABB boundingBox = entity.getBoundingBox();
+ Vec3 startVec = this.position();
+ Vec3 endVec = startVec.add(this.getDeltaMovement());
+ Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
+ /* Check for headshot */
+ boolean headshot = false;
+ if(entity instanceof LivingEntity)
+ {
+ IHeadshotBox headshotBox = (IHeadshotBox) BoundingBoxManager.getHeadshotBoxes(entity.getType());
+ if(headshotBox != null)
+ {
+ AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
+ if(box != null)
+ {
+ box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
+ Optional headshotHitPos = box.clip(startVec, endVec);
+ if(!headshotHitPos.isPresent())
+ {
+ box = box.inflate( 0.2, 0.2, 0.2);
+ headshotHitPos = box.clip(startVec, endVec);
+ }
+ if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
+ {
+ hitPos = headshotHitPos.get();
+ headshot = true;
+ }
+ if(headshot){
+ if(this.getOwner() instanceof LivingEntity living){
+ setBaseDamage(getBaseDamage() * (float)living.getMainHandItem().getOrCreateTag().getDouble("headshot"));
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.headind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
+ }
+ }
+ }
+ }
+ }
+ }
+ super.onHitEntity(result);
+ this.discard();
+
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/ClaymoreEntity.java b/src/main/java/net/mcreator/target/entity/ClaymoreEntity.java
new file mode 100644
index 000000000..24cc73cec
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/ClaymoreEntity.java
@@ -0,0 +1,309 @@
+
+package net.mcreator.target.entity;
+
+import software.bernie.geckolib.util.GeckoLibUtil;
+import software.bernie.geckolib.core.object.PlayState;
+import software.bernie.geckolib.core.animation.RawAnimation;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animation.AnimationController;
+import software.bernie.geckolib.core.animation.AnimatableManager;
+import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
+import software.bernie.geckolib.animatable.GeoEntity;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.SpawnEggItem;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.entity.projectile.ThrownPotion;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.TamableAnimal;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.AreaEffectCloud;
+import net.minecraft.world.entity.AgeableMob;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+
+import net.mcreator.target.procedures.ClaymoreYouJiShiTiShiProcedure;
+import net.mcreator.target.procedures.ClaymoreDangShiTiSiWangShiProcedure;
+import net.mcreator.target.procedures.ClaymoreDangShiTiGengXinKeShiProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import java.util.List;
+
+public class ClaymoreEntity extends TamableAnimal implements GeoEntity {
+ public static final EntityDataAccessor SHOOT = SynchedEntityData.defineId(ClaymoreEntity.class, EntityDataSerializers.BOOLEAN);
+ public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(ClaymoreEntity.class, EntityDataSerializers.STRING);
+ public static final EntityDataAccessor TEXTURE = SynchedEntityData.defineId(ClaymoreEntity.class, EntityDataSerializers.STRING);
+ private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
+ private boolean swinging;
+ private boolean lastloop;
+ private long lastSwing;
+ public String animationprocedure = "empty";
+
+ public ClaymoreEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(TargetModEntities.CLAYMORE.get(), world);
+ }
+
+ public ClaymoreEntity(EntityType type, Level world) {
+ super(type, world);
+ xpReward = 0;
+ setNoAi(false);
+ setPersistenceRequired();
+ }
+
+ @Override
+ protected void defineSynchedData() {
+ super.defineSynchedData();
+ this.entityData.define(SHOOT, false);
+ this.entityData.define(ANIMATION, "undefined");
+ this.entityData.define(TEXTURE, "claymore");
+ }
+
+ public void setTexture(String texture) {
+ this.entityData.set(TEXTURE, texture);
+ }
+
+ public String getTexture() {
+ return this.entityData.get(TEXTURE);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected void registerGoals() {
+ super.registerGoals();
+
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEFINED;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public boolean hurt(DamageSource source, float amount) {
+ if (source.is(DamageTypes.IN_FIRE))
+ return false;
+ if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud)
+ return false;
+ if (source.is(DamageTypes.FALL))
+ return false;
+ if (source.is(DamageTypes.CACTUS))
+ return false;
+ if (source.is(DamageTypes.DROWN))
+ return false;
+ if (source.is(DamageTypes.LIGHTNING_BOLT))
+ return false;
+ if (source.is(DamageTypes.EXPLOSION))
+ return false;
+ if (source.is(DamageTypes.DRAGON_BREATH))
+ return false;
+ if (source.is(DamageTypes.WITHER))
+ return false;
+ if (source.is(DamageTypes.WITHER_SKULL))
+ return false;
+ return super.hurt(source, amount);
+ }
+
+ @Override
+ public void die(DamageSource source) {
+ super.die(source);
+ ClaymoreDangShiTiSiWangShiProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ(), this);
+ }
+
+ @Override
+ public void addAdditionalSaveData(CompoundTag compound) {
+ super.addAdditionalSaveData(compound);
+ compound.putString("Texture", this.getTexture());
+ }
+
+ @Override
+ public void readAdditionalSaveData(CompoundTag compound) {
+ super.readAdditionalSaveData(compound);
+ if (compound.contains("Texture"))
+ this.setTexture(compound.getString("Texture"));
+ }
+
+ @Override
+ public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) {
+ ItemStack itemstack = sourceentity.getItemInHand(hand);
+ InteractionResult retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ Item item = itemstack.getItem();
+ if (itemstack.getItem() instanceof SpawnEggItem) {
+ retval = super.mobInteract(sourceentity, hand);
+ } else if (this.level().isClientSide()) {
+ retval = (this.isTame() && this.isOwnedBy(sourceentity) || this.isFood(itemstack)) ? InteractionResult.sidedSuccess(this.level().isClientSide()) : InteractionResult.PASS;
+ } else {
+ if (this.isTame()) {
+ if (this.isOwnedBy(sourceentity)) {
+ if (item.isEdible() && this.isFood(itemstack) && this.getHealth() < this.getMaxHealth()) {
+ this.usePlayerItem(sourceentity, hand, itemstack);
+ this.heal((float) item.getFoodProperties().getNutrition());
+ retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ } else if (this.isFood(itemstack) && this.getHealth() < this.getMaxHealth()) {
+ this.usePlayerItem(sourceentity, hand, itemstack);
+ this.heal(4);
+ retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ } else {
+ retval = super.mobInteract(sourceentity, hand);
+ }
+ }
+ } else if (this.isFood(itemstack)) {
+ this.usePlayerItem(sourceentity, hand, itemstack);
+ if (this.random.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, sourceentity)) {
+ this.tame(sourceentity);
+ this.level().broadcastEntityEvent(this, (byte) 7);
+ } else {
+ this.level().broadcastEntityEvent(this, (byte) 6);
+ }
+ this.setPersistenceRequired();
+ retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ } else {
+ retval = super.mobInteract(sourceentity, hand);
+ if (retval == InteractionResult.SUCCESS || retval == InteractionResult.CONSUME)
+ this.setPersistenceRequired();
+ }
+ }
+ double x = this.getX();
+ double y = this.getY();
+ double z = this.getZ();
+ Entity entity = this;
+ Level world = this.level();
+
+ ClaymoreYouJiShiTiShiProcedure.execute(entity, sourceentity);
+ return retval;
+ }
+
+ @Override
+ public void baseTick() {
+ super.baseTick();
+ ClaymoreDangShiTiGengXinKeShiProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ(), this);
+ this.refreshDimensions();
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose p_33597_) {
+ return super.getDimensions(p_33597_).scale((float) 0.5);
+ }
+
+ @Override
+ public AgeableMob getBreedOffspring(ServerLevel serverWorld, AgeableMob ageable) {
+ ClaymoreEntity retval = TargetModEntities.CLAYMORE.get().create(serverWorld);
+ retval.finalizeSpawn(serverWorld, serverWorld.getCurrentDifficultyAt(retval.blockPosition()), MobSpawnType.BREEDING, null, null);
+ return retval;
+ }
+
+ @Override
+ public boolean isFood(ItemStack stack) {
+ return List.of().contains(stack.getItem());
+ }
+
+ @Override
+ public boolean isPushable() {
+ return false;
+ }
+
+ @Override
+ protected void doPush(Entity entityIn) {
+ }
+
+ @Override
+ protected void pushEntities() {
+ }
+
+ @Override
+ public void aiStep() {
+ super.aiStep();
+ this.updateSwingTime();
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0);
+ builder = builder.add(Attributes.MAX_HEALTH, 20);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 0);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 16);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 1);
+ return builder;
+ }
+
+ private PlayState movementPredicate(AnimationState event) {
+ if (this.animationprocedure.equals("empty")) {
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.claymore.idle"));
+ }
+ return PlayState.STOP;
+ }
+
+ private PlayState procedurePredicate(AnimationState event) {
+ if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
+ if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ this.animationprocedure = "empty";
+ event.getController().forceAnimationReset();
+ }
+ } else if (animationprocedure.equals("empty")) {
+ return PlayState.STOP;
+ }
+ return PlayState.CONTINUE;
+ }
+
+ @Override
+ protected void tickDeath() {
+ ++this.deathTime;
+ if (this.deathTime == 1) {
+ this.remove(ClaymoreEntity.RemovalReason.KILLED);
+ this.dropExperience();
+ }
+ }
+
+ public String getSyncedAnimation() {
+ return this.entityData.get(ANIMATION);
+ }
+
+ public void setAnimation(String animation) {
+ this.entityData.set(ANIMATION, animation);
+ }
+
+ @Override
+ public void registerControllers(AnimatableManager.ControllerRegistrar data) {
+ data.add(new AnimationController<>(this, "movement", 4, this::movementPredicate));
+ data.add(new AnimationController<>(this, "procedure", 4, this::procedurePredicate));
+ }
+
+ @Override
+ public AnimatableInstanceCache getAnimatableInstanceCache() {
+ return this.cache;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java b/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java
new file mode 100644
index 000000000..287bdc0ff
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java
@@ -0,0 +1,206 @@
+
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.advancements.AdvancementProgress;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.language.I18n;
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.contents.TranslatableContents;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.entity.player.Player;
+
+import net.mcreator.target.procedures.GunGrenadeDanSheWuJiZhongShiTiShiProcedure;
+import net.mcreator.target.procedures.GunGrenadeDanSheWuJiZhongFangKuaiShiProcedure;
+import net.mcreator.target.procedures.GunGrenadeDanSheWuFeiXingShiMeiKeFaShengProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Optional;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class GunGrenadeEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
+
+ public GunGrenadeEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.GUN_GRENADE.get(), world);
+ }
+
+ public GunGrenadeEntity(EntityType extends GunGrenadeEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public GunGrenadeEntity(EntityType extends GunGrenadeEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public GunGrenadeEntity(EntityType extends GunGrenadeEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult result) {
+ final Vec3 position = this.position();
+ Entity entity = result.getEntity();
+ if(this.getOwner() instanceof LivingEntity living){
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.hitind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
+ }
+ }
+ GunGrenadeDanSheWuJiZhongShiTiShiProcedure.execute(this.level(), this);
+ if (entity instanceof LivingEntity livingEntity) {
+ entity.invulnerableTime = 0;
+ }
+ AABB boundingBox = entity.getBoundingBox();
+ Vec3 startVec = this.position();
+ Vec3 endVec = startVec.add(this.getDeltaMovement());
+ Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
+ /* Check for headshot */
+ boolean headshot = false;
+ if(entity instanceof LivingEntity)
+ {
+ IHeadshotBox headshotBox = (IHeadshotBox) BoundingBoxManager.getHeadshotBoxes(entity.getType());
+ if(headshotBox != null)
+ {
+ AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
+ if(box != null)
+ {
+ box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
+ Optional headshotHitPos = box.clip(startVec, endVec);
+ if(!headshotHitPos.isPresent())
+ {
+ box = box.inflate( 0.2, 0.2, 0.2);
+ headshotHitPos = box.clip(startVec, endVec);
+ }
+ if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
+ {
+ hitPos = headshotHitPos.get();
+ headshot = true;
+ }
+ if(headshot){
+ if(this.getOwner() instanceof LivingEntity living){
+ setBaseDamage(getBaseDamage() * 2);
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.headind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
+ }
+ }
+ }
+ }
+ }
+ }
+ super.onHitEntity(result);
+ this.discard();
+ }
+
+ @Override
+ public void onHitBlock(BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult);
+ GunGrenadeDanSheWuJiZhongFangKuaiShiProcedure.execute(this.level(), this);
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ GunGrenadeDanSheWuFeiXingShiMeiKeFaShengProcedure.execute(this);
+ if(this.tickCount>200){
+ this.discard();
+ }
+ }
+
+ public static GunGrenadeEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 5, 5);
+ }
+
+ public static GunGrenadeEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ GunGrenadeEntity entityarrow = new GunGrenadeEntity(TargetModEntities.GUN_GRENADE.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+
+ public static GunGrenadeEntity shoot(LivingEntity entity, LivingEntity target) {
+ GunGrenadeEntity entityarrow = new GunGrenadeEntity(TargetModEntities.GUN_GRENADE.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(5);
+ entityarrow.setKnockback(5);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/MortarEntity.java b/src/main/java/net/mcreator/target/entity/MortarEntity.java
new file mode 100644
index 000000000..18b36ddb9
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/MortarEntity.java
@@ -0,0 +1,277 @@
+
+package net.mcreator.target.entity;
+
+import software.bernie.geckolib.util.GeckoLibUtil;
+import software.bernie.geckolib.core.object.PlayState;
+import software.bernie.geckolib.core.animation.RawAnimation;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animation.AnimationController;
+import software.bernie.geckolib.core.animation.AnimatableManager;
+import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
+import software.bernie.geckolib.animatable.GeoEntity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.ServerLevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.projectile.ThrownPotion;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.SpawnGroupData;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.PathfinderMob;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.AreaEffectCloud;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.DifficultyInstance;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+
+import net.mcreator.target.procedures.MortarYouJiShiTiShiProcedure;
+import net.mcreator.target.procedures.MortarShiTiChuShiShengChengShiProcedure;
+import net.mcreator.target.procedures.MortarDangXiaoShiShiJianDaoShiProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import javax.annotation.Nullable;
+
+public class MortarEntity extends PathfinderMob implements GeoEntity {
+ public static final EntityDataAccessor SHOOT = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.BOOLEAN);
+ public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.STRING);
+ public static final EntityDataAccessor TEXTURE = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.STRING);
+ private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
+ private boolean swinging;
+ private boolean lastloop;
+ private long lastSwing;
+ public String animationprocedure = "empty";
+
+ public MortarEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(TargetModEntities.MORTAR.get(), world);
+ }
+
+ public MortarEntity(EntityType type, Level world) {
+ super(type, world);
+ xpReward = 0;
+ setNoAi(true);
+ setPersistenceRequired();
+ }
+
+ @Override
+ protected void defineSynchedData() {
+ super.defineSynchedData();
+ this.entityData.define(SHOOT, false);
+ this.entityData.define(ANIMATION, "undefined");
+ this.entityData.define(TEXTURE, "mortar");
+ }
+
+ public void setTexture(String texture) {
+ this.entityData.set(TEXTURE, texture);
+ }
+
+ public String getTexture() {
+ return this.entityData.get(TEXTURE);
+ }
+
+ @Override
+ protected float getStandingEyeHeight(Pose poseIn, EntityDimensions sizeIn) {
+ return 0.2F;
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEFINED;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public SoundEvent getHurtSound(DamageSource ds) {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:hit"));
+ }
+
+ @Override
+ public SoundEvent getDeathSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:hit"));
+ }
+
+ @Override
+ public boolean hurt(DamageSource source, float amount) {
+ if (source.is(DamageTypes.IN_FIRE))
+ return false;
+ if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud)
+ return false;
+ if (source.is(DamageTypes.FALL))
+ return false;
+ if (source.is(DamageTypes.CACTUS))
+ return false;
+ if (source.is(DamageTypes.DROWN))
+ return false;
+ if (source.is(DamageTypes.LIGHTNING_BOLT))
+ return false;
+ if (source.is(DamageTypes.FALLING_ANVIL))
+ return false;
+ if (source.is(DamageTypes.DRAGON_BREATH))
+ return false;
+ if (source.is(DamageTypes.WITHER))
+ return false;
+ if (source.is(DamageTypes.WITHER_SKULL))
+ return false;
+ return super.hurt(source, amount);
+ }
+
+ @Override
+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) {
+ SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag);
+ MortarShiTiChuShiShengChengShiProcedure.execute(this);
+ return retval;
+ }
+
+ @Override
+ public void addAdditionalSaveData(CompoundTag compound) {
+ super.addAdditionalSaveData(compound);
+ compound.putString("Texture", this.getTexture());
+ }
+
+ @Override
+ public void readAdditionalSaveData(CompoundTag compound) {
+ super.readAdditionalSaveData(compound);
+ if (compound.contains("Texture"))
+ this.setTexture(compound.getString("Texture"));
+ }
+
+ @Override
+ public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) {
+ ItemStack itemstack = sourceentity.getItemInHand(hand);
+ InteractionResult retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ super.mobInteract(sourceentity, hand);
+ double x = this.getX();
+ double y = this.getY();
+ double z = this.getZ();
+ Entity entity = this;
+ Level world = this.level();
+
+ MortarYouJiShiTiShiProcedure.execute(world, x, y, z, entity, sourceentity);
+ return retval;
+ }
+
+ @Override
+ public void baseTick() {
+ super.baseTick();
+ this.refreshDimensions();
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose p_33597_) {
+ return super.getDimensions(p_33597_).scale((float) 1);
+ }
+
+ @Override
+ public boolean isPushable() {
+ return false;
+ }
+
+ @Override
+ protected void doPush(Entity entityIn) {
+ }
+
+ @Override
+ protected void pushEntities() {
+ }
+
+ @Override
+ public void aiStep() {
+ super.aiStep();
+ this.updateSwingTime();
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0);
+ builder = builder.add(Attributes.MAX_HEALTH, 10);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 0);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 16);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 1);
+ return builder;
+ }
+
+ private PlayState movementPredicate(AnimationState event) {
+ if (this.animationprocedure.equals("empty")) {
+ if (this.isShiftKeyDown()) {
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mortar.fire"));
+ }
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mortar.idle"));
+ }
+ return PlayState.STOP;
+ }
+
+ private PlayState procedurePredicate(AnimationState event) {
+ if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
+ if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ this.animationprocedure = "empty";
+ event.getController().forceAnimationReset();
+ }
+ } else if (animationprocedure.equals("empty")) {
+ return PlayState.STOP;
+ }
+ return PlayState.CONTINUE;
+ }
+
+ @Override
+ protected void tickDeath() {
+ ++this.deathTime;
+ if (this.deathTime == 5) {
+ this.remove(MortarEntity.RemovalReason.KILLED);
+ this.dropExperience();
+ MortarDangXiaoShiShiJianDaoShiProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ());
+ }
+ }
+
+ public String getSyncedAnimation() {
+ return this.entityData.get(ANIMATION);
+ }
+
+ public void setAnimation(String animation) {
+ this.entityData.set(ANIMATION, animation);
+ }
+
+ @Override
+ public void registerControllers(AnimatableManager.ControllerRegistrar data) {
+ data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate));
+ data.add(new AnimationController<>(this, "procedure", 0, this::procedurePredicate));
+ }
+
+ @Override
+ public AnimatableInstanceCache getAnimatableInstanceCache() {
+ return this.cache;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/MortarShellEntity.java b/src/main/java/net/mcreator/target/entity/MortarShellEntity.java
new file mode 100644
index 000000000..afb6e1866
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/MortarShellEntity.java
@@ -0,0 +1,121 @@
+
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+
+import net.mcreator.target.procedures.MortarShellDanSheWuJiZhongShiTiShiProcedure;
+import net.mcreator.target.procedures.MortarShellDanSheWuFeiXingShiMeiKeFaShengProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class MortarShellEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
+
+ public MortarShellEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.MORTAR_SHELL.get(), world);
+ }
+
+ public MortarShellEntity(EntityType extends MortarShellEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public MortarShellEntity(EntityType extends MortarShellEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public MortarShellEntity(EntityType extends MortarShellEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ public void onHitEntity(EntityHitResult entityHitResult) {
+ super.onHitEntity(entityHitResult);
+ MortarShellDanSheWuJiZhongShiTiShiProcedure.execute(this.level(), this);
+ }
+
+ @Override
+ public void onHitBlock(BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult);
+ MortarShellDanSheWuJiZhongShiTiShiProcedure.execute(this.level(), this);
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ MortarShellDanSheWuFeiXingShiMeiKeFaShengProcedure.execute(this);
+ if (this.inGround)
+ this.discard();
+ }
+
+ public static MortarShellEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 5, 5);
+ }
+
+ public static MortarShellEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ MortarShellEntity entityarrow = new MortarShellEntity(TargetModEntities.MORTAR_SHELL.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")), SoundSource.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2));
+ return entityarrow;
+ }
+
+ public static MortarShellEntity shoot(LivingEntity entity, LivingEntity target) {
+ MortarShellEntity entityarrow = new MortarShellEntity(TargetModEntities.MORTAR_SHELL.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(5);
+ entityarrow.setKnockback(5);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ entity.level().playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.shoot")), SoundSource.PLAYERS, 1, 1f / (RandomSource.create().nextFloat() * 0.5f + 1));
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/ProjectileEntity.java b/src/main/java/net/mcreator/target/entity/ProjectileEntity.java
new file mode 100644
index 000000000..7518a3425
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/ProjectileEntity.java
@@ -0,0 +1,120 @@
+package net.mcreator.target.entity;
+
+
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.util.Mth;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.world.level.Level;
+
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
+import net.minecraft.world.item.Item;
+import net.mcreator.target.init.TargetCustomModEntities;
+import net.mcreator.target.init.TargetModItems;
+
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.mcreator.target.procedures.BullettestDanSheWuJiZhongFangKuaiShiProcedure;
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Iterator;
+import java.util.Optional;
+
+public class ProjectileEntity extends ThrowableItemProjectile {
+
+ private float damage;
+
+ public ProjectileEntity(EntityType extends ProjectileEntity> p_i50159_1_, Level p_i50159_2_) {
+ super(p_i50159_1_, p_i50159_2_);
+ }
+
+ public ProjectileEntity(Level world, LivingEntity entity) {
+ super(TargetCustomModEntities.PROJECTILE.get(), entity, world);
+ this.damage = 0f;
+ }
+
+ public ProjectileEntity(Level world, LivingEntity entity, float damage) {
+ super(TargetCustomModEntities.PROJECTILE.get(), entity, world);
+ this.damage = damage;
+ }
+
+ public ProjectileEntity(Level p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) {
+ super(TargetCustomModEntities.PROJECTILE.get(), p_i1775_2_, p_i1775_4_, p_i1775_6_, p_i1775_1_);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult pResult) {
+ super.onHitEntity(pResult);
+ Entity entity = pResult.getEntity();
+ if (entity instanceof LivingEntity livingEntity) {
+ livingEntity.hurt(this.damageSources().thrown(this, this.getOwner() instanceof LivingEntity living ? living : null), this.damage);
+ }
+
+ if (!this.level().isClientSide) {
+ this.discard();
+ }
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ if(this.tickCount >= 20){
+ this.discard();
+ }
+ }
+
+ @Override
+ protected void onHitBlock(BlockHitResult pResult) {
+ super.onHitBlock(pResult);
+ if (!this.level().isClientSide) {
+ this.discard();
+ }
+ }
+
+ @Override
+ protected Item getDefaultItem() {
+ return TargetModItems.RIFLE_AMMO.get().asItem();
+ }
+
+ public void setDamage(float damage) {
+ this.damage = damage;
+ }
+
+ public float getDamage() {
+ return this.damage;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java
new file mode 100644
index 000000000..43cdf2a05
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java
@@ -0,0 +1,206 @@
+
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.advancements.AdvancementProgress;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.language.I18n;
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.contents.TranslatableContents;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.entity.player.Player;
+
+import net.mcreator.target.procedures.RpgRocketDanSheWuJiZhongFangKuaiShiProcedure;
+import net.mcreator.target.procedures.RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure;
+import net.mcreator.target.procedures.RocketHitProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Optional;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class RpgRocketEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
+
+ public RpgRocketEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.RPG_ROCKET.get(), world);
+ }
+
+ public RpgRocketEntity(EntityType extends RpgRocketEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public RpgRocketEntity(EntityType extends RpgRocketEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public RpgRocketEntity(EntityType extends RpgRocketEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult result) {
+ final Vec3 position = this.position();
+ Entity entity = result.getEntity();
+ if(this.getOwner() instanceof LivingEntity living){
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.hitind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
+ }
+ }
+ RocketHitProcedure.execute(this.level(), this);
+ if (entity instanceof LivingEntity livingEntity) {
+ entity.invulnerableTime = 0;
+ }
+ AABB boundingBox = entity.getBoundingBox();
+ Vec3 startVec = this.position();
+ Vec3 endVec = startVec.add(this.getDeltaMovement());
+ Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
+ /* Check for headshot */
+ boolean headshot = false;
+ if(entity instanceof LivingEntity)
+ {
+ IHeadshotBox headshotBox = (IHeadshotBox) BoundingBoxManager.getHeadshotBoxes(entity.getType());
+ if(headshotBox != null)
+ {
+ AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
+ if(box != null)
+ {
+ box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
+ Optional headshotHitPos = box.clip(startVec, endVec);
+ if(!headshotHitPos.isPresent())
+ {
+ box = box.inflate( 0.2, 0.2, 0.2);
+ headshotHitPos = box.clip(startVec, endVec);
+ }
+ if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
+ {
+ hitPos = headshotHitPos.get();
+ headshot = true;
+ }
+ if(headshot){
+ if(this.getOwner() instanceof LivingEntity living){
+ setBaseDamage(getBaseDamage() * 5);
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.headind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
+ }
+ }
+ }
+ }
+ }
+ }
+ super.onHitEntity(result);
+ this.discard();
+ }
+
+ @Override
+ public void onHitBlock(BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult);
+ RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.execute(this.level(), this);
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.execute(this);
+ if(this.tickCount>100){
+ this.discard();
+ }
+ }
+
+ public static RpgRocketEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 5, 5);
+ }
+
+ public static RpgRocketEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ RpgRocketEntity entityarrow = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+
+ public static RpgRocketEntity shoot(LivingEntity entity, LivingEntity target) {
+ RpgRocketEntity entityarrow = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(5);
+ entityarrow.setKnockback(5);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/SenpaiEntity.java b/src/main/java/net/mcreator/target/entity/SenpaiEntity.java
new file mode 100644
index 000000000..c549946ff
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/SenpaiEntity.java
@@ -0,0 +1,249 @@
+
+package net.mcreator.target.entity;
+
+import software.bernie.geckolib.util.GeckoLibUtil;
+import software.bernie.geckolib.core.object.PlayState;
+import software.bernie.geckolib.core.animation.RawAnimation;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animation.AnimationController;
+import software.bernie.geckolib.core.animation.AnimatableManager;
+import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
+import software.bernie.geckolib.animatable.GeoEntity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.common.DungeonHooks;
+
+import net.minecraft.world.level.levelgen.Heightmap;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.monster.Spider;
+import net.minecraft.world.entity.monster.Monster;
+import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal;
+import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal;
+import net.minecraft.world.entity.ai.goal.RandomStrollGoal;
+import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal;
+import net.minecraft.world.entity.ai.goal.MeleeAttackGoal;
+import net.minecraft.world.entity.ai.goal.FloatGoal;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.SpawnPlacements;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.Difficulty;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.target.procedures.SenpaiDangShiTiGengXinKeShiProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+public class SenpaiEntity extends Spider implements GeoEntity {
+ public static final EntityDataAccessor SHOOT = SynchedEntityData.defineId(SenpaiEntity.class, EntityDataSerializers.BOOLEAN);
+ public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(SenpaiEntity.class, EntityDataSerializers.STRING);
+ public static final EntityDataAccessor TEXTURE = SynchedEntityData.defineId(SenpaiEntity.class, EntityDataSerializers.STRING);
+ private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
+ private boolean swinging;
+ private boolean lastloop;
+ private long lastSwing;
+ public String animationprocedure = "empty";
+
+ public SenpaiEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(TargetModEntities.SENPAI.get(), world);
+ }
+
+ public SenpaiEntity(EntityType type, Level world) {
+ super(type, world);
+ xpReward = 20;
+ setNoAi(false);
+ }
+
+ @Override
+ protected void defineSynchedData() {
+ super.defineSynchedData();
+ this.entityData.define(SHOOT, false);
+ this.entityData.define(ANIMATION, "undefined");
+ this.entityData.define(TEXTURE, "senpai");
+ }
+
+ public void setTexture(String texture) {
+ this.entityData.set(TEXTURE, texture);
+ }
+
+ public String getTexture() {
+ return this.entityData.get(TEXTURE);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected void registerGoals() {
+ super.registerGoals();
+ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.6, false) {
+ @Override
+ protected double getAttackReachSqr(LivingEntity entity) {
+ return this.mob.getBbWidth() * this.mob.getBbWidth() + entity.getBbWidth();
+ }
+ });
+ this.targetSelector.addGoal(2, new HurtByTargetGoal(this).setAlertOthers());
+ this.goalSelector.addGoal(3, new RandomLookAroundGoal(this));
+ this.goalSelector.addGoal(4, new FloatGoal(this));
+ this.goalSelector.addGoal(5, new RandomStrollGoal(this, 0.8));
+ this.targetSelector.addGoal(6, new NearestAttackableTargetGoal(this, Player.class, false, false));
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.ILLAGER;
+ }
+
+ protected void dropCustomDeathLoot(DamageSource source, int looting, boolean recentlyHitIn) {
+ super.dropCustomDeathLoot(source, looting, recentlyHitIn);
+ this.spawnAtLocation(new ItemStack(Items.GOLDEN_APPLE));
+ }
+
+ @Override
+ public SoundEvent getAmbientSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:idle"));
+ }
+
+ @Override
+ public void playStepSound(BlockPos pos, BlockState blockIn) {
+ this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:step")), 0.15f, 1);
+ }
+
+ @Override
+ public SoundEvent getHurtSound(DamageSource ds) {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:ouch"));
+ }
+
+ @Override
+ public SoundEvent getDeathSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:growl"));
+ }
+
+ @Override
+ public void addAdditionalSaveData(CompoundTag compound) {
+ super.addAdditionalSaveData(compound);
+ compound.putString("Texture", this.getTexture());
+ }
+
+ @Override
+ public void readAdditionalSaveData(CompoundTag compound) {
+ super.readAdditionalSaveData(compound);
+ if (compound.contains("Texture"))
+ this.setTexture(compound.getString("Texture"));
+ }
+
+ @Override
+ public void baseTick() {
+ super.baseTick();
+ SenpaiDangShiTiGengXinKeShiProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ(), this);
+ this.refreshDimensions();
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose p_33597_) {
+ return super.getDimensions(p_33597_).scale((float) 1);
+ }
+
+ @Override
+ public void aiStep() {
+ super.aiStep();
+ this.updateSwingTime();
+ }
+
+ public static void init() {
+ SpawnPlacements.register(TargetModEntities.SENPAI.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES,
+ (entityType, world, reason, pos, random) -> (world.getDifficulty() != Difficulty.PEACEFUL && Monster.isDarkEnoughToSpawn(world, pos, random) && Mob.checkMobSpawnRules(entityType, world, reason, pos, random)));
+ DungeonHooks.addDungeonMob(TargetModEntities.SENPAI.get(), 180);
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0.25);
+ builder = builder.add(Attributes.MAX_HEALTH, 51);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 5);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 1024);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 0.5);
+ return builder;
+ }
+
+ private PlayState movementPredicate(AnimationState event) {
+ if (this.animationprocedure.equals("empty")) {
+ if ((event.isMoving() || !(event.getLimbSwingAmount() > -0.15F && event.getLimbSwingAmount() < 0.15F))
+
+ && !this.isAggressive()) {
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.senpai.walk"));
+ }
+ if (this.isDeadOrDying()) {
+ return event.setAndContinue(RawAnimation.begin().thenPlay("animation.senpai.die"));
+ }
+ if (this.isAggressive() && event.isMoving()) {
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.senpai.run"));
+ }
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.senpai.idle"));
+ }
+ return PlayState.STOP;
+ }
+
+ private PlayState procedurePredicate(AnimationState event) {
+ if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
+ if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ this.animationprocedure = "empty";
+ event.getController().forceAnimationReset();
+ }
+ } else if (animationprocedure.equals("empty")) {
+ return PlayState.STOP;
+ }
+ return PlayState.CONTINUE;
+ }
+
+ @Override
+ protected void tickDeath() {
+ ++this.deathTime;
+ if (this.deathTime == 540) {
+ this.remove(SenpaiEntity.RemovalReason.KILLED);
+ this.dropExperience();
+ }
+ }
+
+ public String getSyncedAnimation() {
+ return this.entityData.get(ANIMATION);
+ }
+
+ public void setAnimation(String animation) {
+ this.entityData.set(ANIMATION, animation);
+ }
+
+ @Override
+ public void registerControllers(AnimatableManager.ControllerRegistrar data) {
+ data.add(new AnimationController<>(this, "movement", 4, this::movementPredicate));
+ data.add(new AnimationController<>(this, "procedure", 4, this::procedurePredicate));
+ }
+
+ @Override
+ public AnimatableInstanceCache getAnimatableInstanceCache() {
+ return this.cache;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/Target1Entity.java b/src/main/java/net/mcreator/target/entity/Target1Entity.java
new file mode 100644
index 000000000..d2e8c0628
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/Target1Entity.java
@@ -0,0 +1,292 @@
+
+package net.mcreator.target.entity;
+
+import software.bernie.geckolib.util.GeckoLibUtil;
+import software.bernie.geckolib.core.object.PlayState;
+import software.bernie.geckolib.core.animation.RawAnimation;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animation.AnimationController;
+import software.bernie.geckolib.core.animation.AnimatableManager;
+import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
+import software.bernie.geckolib.animatable.GeoEntity;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.ServerLevelAccessor;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.entity.projectile.ThrownPotion;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.entity.ai.navigation.PathNavigation;
+import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation;
+import net.minecraft.world.entity.ai.control.FlyingMoveControl;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.SpawnGroupData;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.PathfinderMob;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.MobSpawnType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.AreaEffectCloud;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.DifficultyInstance;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.target.procedures.Target1ShiTiChuShiShengChengShiProcedure;
+import net.mcreator.target.procedures.Target1DangYouJiShiTiShiProcedure;
+import net.mcreator.target.procedures.Target1DangShiTiShouShangShiProcedure;
+import net.mcreator.target.procedures.Target1DangShiTiGengXinKeShiProcedure;
+import net.mcreator.target.procedures.BazipengzhuangProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import javax.annotation.Nullable;
+
+public class Target1Entity extends PathfinderMob implements GeoEntity {
+ public static final EntityDataAccessor SHOOT = SynchedEntityData.defineId(Target1Entity.class, EntityDataSerializers.BOOLEAN);
+ public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(Target1Entity.class, EntityDataSerializers.STRING);
+ public static final EntityDataAccessor TEXTURE = SynchedEntityData.defineId(Target1Entity.class, EntityDataSerializers.STRING);
+ private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
+ private boolean swinging;
+ private boolean lastloop;
+ private long lastSwing;
+ public String animationprocedure = "empty";
+
+ public Target1Entity(PlayMessages.SpawnEntity packet, Level world) {
+ this(TargetModEntities.TARGET_1.get(), world);
+ }
+
+ public Target1Entity(EntityType type, Level world) {
+ super(type, world);
+ xpReward = 0;
+ setNoAi(true);
+ setPersistenceRequired();
+ this.moveControl = new FlyingMoveControl(this, 10, true);
+ }
+
+ @Override
+ protected void defineSynchedData() {
+ super.defineSynchedData();
+ this.entityData.define(SHOOT, false);
+ this.entityData.define(ANIMATION, "undefined");
+ this.entityData.define(TEXTURE, "target");
+ }
+
+ public void setTexture(String texture) {
+ this.entityData.set(TEXTURE, texture);
+ }
+
+ public String getTexture() {
+ return this.entityData.get(TEXTURE);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected PathNavigation createNavigation(Level world) {
+ return new FlyingPathNavigation(this, world);
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEFINED;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public boolean causeFallDamage(float l, float d, DamageSource source) {
+ return false;
+ }
+
+ @Override
+ public boolean hurt(DamageSource source, float amount) {
+ Target1DangShiTiShouShangShiProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ());
+ if (source.is(DamageTypes.IN_FIRE))
+ return false;
+ if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud)
+ return false;
+ if (source.is(DamageTypes.FALL))
+ return false;
+ if (source.is(DamageTypes.CACTUS))
+ return false;
+ if (source.is(DamageTypes.DROWN))
+ return false;
+ if (source.is(DamageTypes.LIGHTNING_BOLT))
+ return false;
+ if (source.is(DamageTypes.FALLING_ANVIL))
+ return false;
+ if (source.is(DamageTypes.DRAGON_BREATH))
+ return false;
+ if (source.is(DamageTypes.WITHER))
+ return false;
+ if (source.is(DamageTypes.WITHER_SKULL))
+ return false;
+ return super.hurt(source, amount);
+ }
+
+ @Override
+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) {
+ SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag);
+ Target1ShiTiChuShiShengChengShiProcedure.execute(this);
+ return retval;
+ }
+
+ @Override
+ public void addAdditionalSaveData(CompoundTag compound) {
+ super.addAdditionalSaveData(compound);
+ compound.putString("Texture", this.getTexture());
+ }
+
+ @Override
+ public void readAdditionalSaveData(CompoundTag compound) {
+ super.readAdditionalSaveData(compound);
+ if (compound.contains("Texture"))
+ this.setTexture(compound.getString("Texture"));
+ }
+
+ @Override
+ public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) {
+ ItemStack itemstack = sourceentity.getItemInHand(hand);
+ InteractionResult retval = InteractionResult.sidedSuccess(this.level().isClientSide());
+ super.mobInteract(sourceentity, hand);
+ double x = this.getX();
+ double y = this.getY();
+ double z = this.getZ();
+ Entity entity = this;
+ Level world = this.level();
+
+ Target1DangYouJiShiTiShiProcedure.execute(y, entity, sourceentity);
+ return retval;
+ }
+
+ @Override
+ public void baseTick() {
+ super.baseTick();
+ Target1DangShiTiGengXinKeShiProcedure.execute(this);
+ this.refreshDimensions();
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose p_33597_) {
+ Entity entity = this;
+
+ Level world = this.level();
+ double x = this.getX();
+ double y = entity.getY();
+ double z = entity.getZ();
+ return super.getDimensions(p_33597_).scale((float) BazipengzhuangProcedure.execute(entity));
+ }
+
+ @Override
+ public boolean isPushable() {
+ return false;
+ }
+
+ @Override
+ protected void doPush(Entity entityIn) {
+ }
+
+ @Override
+ protected void pushEntities() {
+ }
+
+ @Override
+ protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) {
+ }
+
+ @Override
+ public void setNoGravity(boolean ignored) {
+ super.setNoGravity(true);
+ }
+
+ @Override
+ public void aiStep() {
+ super.aiStep();
+ this.updateSwingTime();
+ this.setNoGravity(true);
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0);
+ builder = builder.add(Attributes.MAX_HEALTH, 20);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 0);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 16);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 10);
+ builder = builder.add(Attributes.FLYING_SPEED, 0);
+ return builder;
+ }
+
+ private PlayState movementPredicate(AnimationState event) {
+ if (this.animationprocedure.equals("empty")) {
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.target.idle"));
+ }
+ return PlayState.STOP;
+ }
+
+ private PlayState procedurePredicate(AnimationState event) {
+ if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
+ if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ this.animationprocedure = "empty";
+ event.getController().forceAnimationReset();
+ }
+ } else if (animationprocedure.equals("empty")) {
+ return PlayState.STOP;
+ }
+ return PlayState.CONTINUE;
+ }
+
+ @Override
+ protected void tickDeath() {
+ ++this.deathTime;
+ if (this.deathTime == 100) {
+ this.remove(Target1Entity.RemovalReason.KILLED);
+ this.dropExperience();
+ }
+ }
+
+ public String getSyncedAnimation() {
+ return this.entityData.get(ANIMATION);
+ }
+
+ public void setAnimation(String animation) {
+ this.entityData.set(ANIMATION, animation);
+ }
+
+ @Override
+ public void registerControllers(AnimatableManager.ControllerRegistrar data) {
+ data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate));
+ data.add(new AnimationController<>(this, "procedure", 0, this::procedurePredicate));
+ }
+
+ @Override
+ public AnimatableInstanceCache getAnimatableInstanceCache() {
+ return this.cache;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/TargetEntity.java b/src/main/java/net/mcreator/target/entity/TargetEntity.java
new file mode 100644
index 000000000..cd86cb1ef
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/TargetEntity.java
@@ -0,0 +1,265 @@
+
+package net.mcreator.target.entity;
+
+import software.bernie.geckolib.util.GeckoLibUtil;
+import software.bernie.geckolib.core.object.PlayState;
+import software.bernie.geckolib.core.animation.RawAnimation;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animation.AnimationController;
+import software.bernie.geckolib.core.animation.AnimatableManager;
+import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
+import software.bernie.geckolib.animatable.GeoEntity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.entity.projectile.ThrownPotion;
+import net.minecraft.world.entity.ai.navigation.PathNavigation;
+import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation;
+import net.minecraft.world.entity.ai.control.FlyingMoveControl;
+import net.minecraft.world.entity.ai.attributes.Attributes;
+import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.entity.PathfinderMob;
+import net.minecraft.world.entity.MobType;
+import net.minecraft.world.entity.Mob;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.AreaEffectCloud;
+import net.minecraft.world.damagesource.DamageTypes;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.core.BlockPos;
+
+import net.mcreator.target.init.TargetModEntities;
+
+public class TargetEntity extends PathfinderMob implements GeoEntity {
+ public static final EntityDataAccessor SHOOT = SynchedEntityData.defineId(TargetEntity.class, EntityDataSerializers.BOOLEAN);
+ public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(TargetEntity.class, EntityDataSerializers.STRING);
+ public static final EntityDataAccessor TEXTURE = SynchedEntityData.defineId(TargetEntity.class, EntityDataSerializers.STRING);
+ private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
+ private boolean swinging;
+ private boolean lastloop;
+ private long lastSwing;
+ public String animationprocedure = "empty";
+
+ public TargetEntity(PlayMessages.SpawnEntity packet, Level world) {
+ this(TargetModEntities.TARGET.get(), world);
+ }
+
+ public TargetEntity(EntityType type, Level world) {
+ super(type, world);
+ xpReward = 0;
+ setNoAi(true);
+ setPersistenceRequired();
+ this.moveControl = new FlyingMoveControl(this, 10, true);
+ }
+
+ @Override
+ protected void defineSynchedData() {
+ super.defineSynchedData();
+ this.entityData.define(SHOOT, false);
+ this.entityData.define(ANIMATION, "undefined");
+ this.entityData.define(TEXTURE, "target");
+ }
+
+ public void setTexture(String texture) {
+ this.entityData.set(TEXTURE, texture);
+ }
+
+ public String getTexture() {
+ return this.entityData.get(TEXTURE);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ protected PathNavigation createNavigation(Level world) {
+ return new FlyingPathNavigation(this, world);
+ }
+
+ @Override
+ public MobType getMobType() {
+ return MobType.UNDEFINED;
+ }
+
+ @Override
+ public boolean removeWhenFarAway(double distanceToClosestPlayer) {
+ return false;
+ }
+
+ @Override
+ public SoundEvent getHurtSound(DamageSource ds) {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:hit"));
+ }
+
+ @Override
+ public SoundEvent getDeathSound() {
+ return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:hit"));
+ }
+
+ @Override
+ public boolean causeFallDamage(float l, float d, DamageSource source) {
+ return false;
+ }
+
+ @Override
+ public boolean hurt(DamageSource source, float amount) {
+ if (source.is(DamageTypes.IN_FIRE))
+ return false;
+ if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud)
+ return false;
+ if (source.is(DamageTypes.FALL))
+ return false;
+ if (source.is(DamageTypes.CACTUS))
+ return false;
+ if (source.is(DamageTypes.DROWN))
+ return false;
+ if (source.is(DamageTypes.LIGHTNING_BOLT))
+ return false;
+ if (source.is(DamageTypes.EXPLOSION))
+ return false;
+ if (source.is(DamageTypes.FALLING_ANVIL))
+ return false;
+ if (source.is(DamageTypes.DRAGON_BREATH))
+ return false;
+ if (source.is(DamageTypes.WITHER))
+ return false;
+ if (source.is(DamageTypes.WITHER_SKULL))
+ return false;
+ return super.hurt(source, amount);
+ }
+
+ @Override
+ public void addAdditionalSaveData(CompoundTag compound) {
+ super.addAdditionalSaveData(compound);
+ compound.putString("Texture", this.getTexture());
+ }
+
+ @Override
+ public void readAdditionalSaveData(CompoundTag compound) {
+ super.readAdditionalSaveData(compound);
+ if (compound.contains("Texture"))
+ this.setTexture(compound.getString("Texture"));
+ }
+
+ @Override
+ public void baseTick() {
+ super.baseTick();
+ this.refreshDimensions();
+ }
+
+ @Override
+ public EntityDimensions getDimensions(Pose p_33597_) {
+ return super.getDimensions(p_33597_).scale((float) 1);
+ }
+
+ @Override
+ public boolean isPushable() {
+ return false;
+ }
+
+ @Override
+ protected void doPush(Entity entityIn) {
+ }
+
+ @Override
+ protected void pushEntities() {
+ }
+
+ @Override
+ protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) {
+ }
+
+ @Override
+ public void setNoGravity(boolean ignored) {
+ super.setNoGravity(true);
+ }
+
+ @Override
+ public void aiStep() {
+ super.aiStep();
+ this.updateSwingTime();
+ this.setNoGravity(true);
+ }
+
+ public static void init() {
+ }
+
+ public static AttributeSupplier.Builder createAttributes() {
+ AttributeSupplier.Builder builder = Mob.createMobAttributes();
+ builder = builder.add(Attributes.MOVEMENT_SPEED, 0);
+ builder = builder.add(Attributes.MAX_HEALTH, 5);
+ builder = builder.add(Attributes.ARMOR, 0);
+ builder = builder.add(Attributes.ATTACK_DAMAGE, 0);
+ builder = builder.add(Attributes.FOLLOW_RANGE, 16);
+ builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 10);
+ builder = builder.add(Attributes.FLYING_SPEED, 0);
+ return builder;
+ }
+
+ private PlayState movementPredicate(AnimationState event) {
+ if (this.animationprocedure.equals("empty")) {
+ if (this.isDeadOrDying()) {
+ return event.setAndContinue(RawAnimation.begin().thenPlay("animation.target2.down"));
+ }
+ return event.setAndContinue(RawAnimation.begin().thenLoop("animation.target2.idle"));
+ }
+ return PlayState.STOP;
+ }
+
+ private PlayState procedurePredicate(AnimationState event) {
+ if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
+ if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
+ this.animationprocedure = "empty";
+ event.getController().forceAnimationReset();
+ }
+ } else if (animationprocedure.equals("empty")) {
+ return PlayState.STOP;
+ }
+ return PlayState.CONTINUE;
+ }
+
+ @Override
+ protected void tickDeath() {
+ ++this.deathTime;
+ if (this.deathTime == 20) {
+ this.remove(TargetEntity.RemovalReason.KILLED);
+ this.dropExperience();
+ }
+ }
+
+ public String getSyncedAnimation() {
+ return this.entityData.get(ANIMATION);
+ }
+
+ public void setAnimation(String animation) {
+ this.entityData.set(ANIMATION, animation);
+ }
+
+ @Override
+ public void registerControllers(AnimatableManager.ControllerRegistrar data) {
+ data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate));
+ data.add(new AnimationController<>(this, "procedure", 0, this::procedurePredicate));
+ }
+
+ @Override
+ public AnimatableInstanceCache getAnimatableInstanceCache() {
+ return this.cache;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java
new file mode 100644
index 000000000..9de7e443e
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java
@@ -0,0 +1,204 @@
+
+package net.mcreator.target.entity;
+
+import net.minecraftforge.registries.ForgeRegistries;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.advancements.AdvancementProgress;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.language.I18n;
+import net.minecraft.commands.CommandSource;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.contents.TranslatableContents;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.level.block.*;
+import net.minecraft.world.phys.*;
+import net.mcreator.target.headshot.BoundingBoxManager;
+import net.mcreator.target.headshot.IHeadshotBox;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.minecraftforge.network.PlayMessages;
+import net.minecraftforge.network.NetworkHooks;
+import net.minecraftforge.api.distmarker.OnlyIn;
+import net.minecraftforge.api.distmarker.Dist;
+
+import net.minecraft.world.phys.EntityHitResult;
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.world.phys.BlockHitResult;
+
+import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.entity.projectile.ItemSupplier;
+import net.minecraft.world.entity.projectile.AbstractArrow;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.util.RandomSource;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.network.protocol.game.ClientGamePacketListener;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.world.entity.player.Player;
+
+import net.mcreator.target.procedures.TaserBulletTouZhiWuFeiXingKeProcedure;
+import net.mcreator.target.procedures.TaserBulletDangTouZhiWuJiZhongShiTiShiProcedure;
+import net.mcreator.target.init.TargetModEntities;
+
+import net.mcreator.target.network.TargetModVariables;
+
+import java.util.Optional;
+
+@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
+public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSupplier {
+ public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
+
+ public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level world) {
+ super(TargetModEntities.TASER_BULLET_PROJECTILE.get(), world);
+ }
+
+ public TaserBulletProjectileEntity(EntityType extends TaserBulletProjectileEntity> type, Level world) {
+ super(type, world);
+ }
+
+ public TaserBulletProjectileEntity(EntityType extends TaserBulletProjectileEntity> type, double x, double y, double z, Level world) {
+ super(type, x, y, z, world);
+ }
+
+ public TaserBulletProjectileEntity(EntityType extends TaserBulletProjectileEntity> type, LivingEntity entity, Level world) {
+ super(type, entity, world);
+ }
+
+ @Override
+ public Packet getAddEntityPacket() {
+ return NetworkHooks.getEntitySpawningPacket(this);
+ }
+
+ @Override
+ @OnlyIn(Dist.CLIENT)
+ public ItemStack getItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected ItemStack getPickupItem() {
+ return PROJECTILE_ITEM;
+ }
+
+ @Override
+ protected void doPostHurtEffects(LivingEntity entity) {
+ super.doPostHurtEffects(entity);
+ entity.setArrowCount(entity.getArrowCount() - 1);
+ }
+
+ @Override
+ protected void onHitEntity(EntityHitResult result) {
+ final Vec3 position = this.position();
+ Entity entity = result.getEntity();
+ if(this.getOwner() instanceof LivingEntity living){
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.hitind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
+ }
+ }
+ if (entity instanceof LivingEntity livingEntity) {
+ entity.invulnerableTime = 0;
+ }
+ AABB boundingBox = entity.getBoundingBox();
+ Vec3 startVec = this.position();
+ Vec3 endVec = startVec.add(this.getDeltaMovement());
+ Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
+ /* Check for headshot */
+ boolean headshot = false;
+ if(entity instanceof LivingEntity)
+ {
+ IHeadshotBox headshotBox = (IHeadshotBox) BoundingBoxManager.getHeadshotBoxes(entity.getType());
+ if(headshotBox != null)
+ {
+ AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
+ if(box != null)
+ {
+ box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
+ Optional headshotHitPos = box.clip(startVec, endVec);
+ if(!headshotHitPos.isPresent())
+ {
+ box = box.inflate( 0.2, 0.2, 0.2);
+ headshotHitPos = box.clip(startVec, endVec);
+ }
+ if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
+ {
+ hitPos = headshotHitPos.get();
+ headshot = true;
+ }
+ if(headshot){
+ if(this.getOwner() instanceof LivingEntity living){
+ setBaseDamage(getBaseDamage() * 1.5f);
+ double _setval = 25;
+ living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
+ capability.headind = _setval;
+ capability.syncPlayerVariables(living);
+ });
+ Entity _ent = living;
+ if (!_ent.level().isClientSide() && _ent.getServer() != null) {
+ _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
+ _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
+ }
+ }
+ }
+ }
+ }
+ }
+ super.onHitEntity(result);
+ TaserBulletDangTouZhiWuJiZhongShiTiShiProcedure.execute(result.getEntity(), this, this.getOwner());
+ this.discard();
+ }
+
+ @Override
+ public void tick() {
+ super.tick();
+ TaserBulletTouZhiWuFeiXingKeProcedure.execute(this);
+ if(this.tickCount>200){
+ this.discard();
+ }
+ }
+
+ public static TaserBulletProjectileEntity shoot(Level world, LivingEntity entity, RandomSource source) {
+ return shoot(world, entity, source, 1f, 5, 5);
+ }
+
+ public static TaserBulletProjectileEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) {
+ TaserBulletProjectileEntity entityarrow = new TaserBulletProjectileEntity(TargetModEntities.TASER_BULLET_PROJECTILE.get(), entity, world);
+ entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0);
+ entityarrow.setSilent(true);
+ entityarrow.setCritArrow(false);
+ entityarrow.setBaseDamage(damage);
+ entityarrow.setKnockback(knockback);
+ world.addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+
+ public static TaserBulletProjectileEntity shoot(LivingEntity entity, LivingEntity target) {
+ TaserBulletProjectileEntity entityarrow = new TaserBulletProjectileEntity(TargetModEntities.TASER_BULLET_PROJECTILE.get(), entity, entity.level());
+ double dx = target.getX() - entity.getX();
+ double dy = target.getY() + target.getEyeHeight() - 1.1;
+ double dz = target.getZ() - entity.getZ();
+ entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1f * 2, 12.0F);
+ entityarrow.setSilent(true);
+ entityarrow.setBaseDamage(5);
+ entityarrow.setKnockback(5);
+ entityarrow.setCritArrow(false);
+ entity.level().addFreshEntity(entityarrow);
+ return entityarrow;
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/layer/TargetLayer.java b/src/main/java/net/mcreator/target/entity/layer/TargetLayer.java
new file mode 100644
index 000000000..a6c7273ae
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/layer/TargetLayer.java
@@ -0,0 +1,29 @@
+package net.mcreator.target.entity.layer;
+
+import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
+import software.bernie.geckolib.renderer.GeoRenderer;
+import software.bernie.geckolib.cache.object.BakedGeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.client.renderer.texture.OverlayTexture;
+import net.minecraft.client.renderer.RenderType;
+import net.minecraft.client.renderer.MultiBufferSource;
+
+import net.mcreator.target.entity.TargetEntity;
+
+import com.mojang.blaze3d.vertex.VertexConsumer;
+import com.mojang.blaze3d.vertex.PoseStack;
+
+public class TargetLayer extends GeoRenderLayer {
+ private static final ResourceLocation LAYER = new ResourceLocation("target", "textures/entities/target_e.png");
+
+ public TargetLayer(GeoRenderer entityRenderer) {
+ super(entityRenderer);
+ }
+
+ @Override
+ public void render(PoseStack poseStack, TargetEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
+ RenderType glowRenderType = RenderType.eyes(LAYER);
+ getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/model/ClaymoreModel.java b/src/main/java/net/mcreator/target/entity/model/ClaymoreModel.java
new file mode 100644
index 000000000..04e8dc95a
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/model/ClaymoreModel.java
@@ -0,0 +1,25 @@
+package net.mcreator.target.entity.model;
+
+import software.bernie.geckolib.model.GeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.entity.ClaymoreEntity;
+
+public class ClaymoreModel extends GeoModel {
+ @Override
+ public ResourceLocation getAnimationResource(ClaymoreEntity entity) {
+ return new ResourceLocation("target", "animations/claymore.animation.json");
+ }
+
+ @Override
+ public ResourceLocation getModelResource(ClaymoreEntity entity) {
+ return new ResourceLocation("target", "geo/claymore.geo.json");
+ }
+
+ @Override
+ public ResourceLocation getTextureResource(ClaymoreEntity entity) {
+ return new ResourceLocation("target", "textures/entities/" + entity.getTexture() + ".png");
+ }
+
+}
diff --git a/src/main/java/net/mcreator/target/entity/model/MortarModel.java b/src/main/java/net/mcreator/target/entity/model/MortarModel.java
new file mode 100644
index 000000000..508a78ca3
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/model/MortarModel.java
@@ -0,0 +1,41 @@
+package net.mcreator.target.entity.model;
+
+import software.bernie.geckolib.model.data.EntityModelData;
+import software.bernie.geckolib.model.GeoModel;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
+import software.bernie.geckolib.constant.DataTickets;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.entity.MortarEntity;
+
+public class MortarModel extends GeoModel {
+ @Override
+ public ResourceLocation getAnimationResource(MortarEntity entity) {
+ return new ResourceLocation("target", "animations/mortar.animation.json");
+ }
+
+ @Override
+ public ResourceLocation getModelResource(MortarEntity entity) {
+ return new ResourceLocation("target", "geo/mortar.geo.json");
+ }
+
+ @Override
+ public ResourceLocation getTextureResource(MortarEntity entity) {
+ return new ResourceLocation("target", "textures/entities/" + entity.getTexture() + ".png");
+ }
+
+ @Override
+ public void setCustomAnimations(MortarEntity animatable, long instanceId, AnimationState animationState) {
+ CoreGeoBone head = getAnimationProcessor().getBone("paoguan");
+ CoreGeoBone jiaojia = getAnimationProcessor().getBone("jiaojia");
+ if (head != null) {
+ EntityModelData entityData = (EntityModelData) animationState.getData(DataTickets.ENTITY_MODEL_DATA);
+ head.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD);
+ jiaojia.setRotX(-2 * ((entityData.headPitch() - (10 - entityData.headPitch() * 0.1f)) * Mth.DEG_TO_RAD));
+ }
+
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/model/SenpaiModel.java b/src/main/java/net/mcreator/target/entity/model/SenpaiModel.java
new file mode 100644
index 000000000..112939753
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/model/SenpaiModel.java
@@ -0,0 +1,40 @@
+package net.mcreator.target.entity.model;
+
+import software.bernie.geckolib.model.data.EntityModelData;
+import software.bernie.geckolib.model.GeoModel;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
+import software.bernie.geckolib.constant.DataTickets;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.entity.SenpaiEntity;
+
+public class SenpaiModel extends GeoModel {
+ @Override
+ public ResourceLocation getAnimationResource(SenpaiEntity entity) {
+ return new ResourceLocation("target", "animations/senpai.animation.json");
+ }
+
+ @Override
+ public ResourceLocation getModelResource(SenpaiEntity entity) {
+ return new ResourceLocation("target", "geo/senpai.geo.json");
+ }
+
+ @Override
+ public ResourceLocation getTextureResource(SenpaiEntity entity) {
+ return new ResourceLocation("target", "textures/entities/" + entity.getTexture() + ".png");
+ }
+
+ @Override
+ public void setCustomAnimations(SenpaiEntity animatable, long instanceId, AnimationState animationState) {
+ CoreGeoBone head = getAnimationProcessor().getBone("head");
+ if (head != null) {
+ EntityModelData entityData = (EntityModelData) animationState.getData(DataTickets.ENTITY_MODEL_DATA);
+ head.setRotX(entityData.headPitch() * Mth.DEG_TO_RAD);
+ head.setRotY(entityData.netHeadYaw() * Mth.DEG_TO_RAD);
+ }
+
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/model/Target1Model.java b/src/main/java/net/mcreator/target/entity/model/Target1Model.java
new file mode 100644
index 000000000..ada72aba2
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/model/Target1Model.java
@@ -0,0 +1,36 @@
+package net.mcreator.target.entity.model;
+
+import software.bernie.geckolib.model.data.EntityModelData;
+import software.bernie.geckolib.model.GeoModel;
+import software.bernie.geckolib.core.animation.AnimationState;
+import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
+import software.bernie.geckolib.constant.DataTickets;
+
+import net.minecraft.util.Mth;
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.entity.Target1Entity;
+
+public class Target1Model extends GeoModel {
+ @Override
+ public ResourceLocation getAnimationResource(Target1Entity entity) {
+ return new ResourceLocation("target", "animations/target.animation.json");
+ }
+
+ @Override
+ public ResourceLocation getModelResource(Target1Entity entity) {
+ return new ResourceLocation("target", "geo/target.geo.json");
+ }
+
+ @Override
+ public ResourceLocation getTextureResource(Target1Entity entity) {
+ return new ResourceLocation("target", "textures/entities/" + entity.getTexture() + ".png");
+ }
+
+ @Override
+ public void setCustomAnimations(Target1Entity animatable, long instanceId, AnimationState animationState) {
+ CoreGeoBone head = getAnimationProcessor().getBone("ba");
+ EntityModelData entityData = (EntityModelData) animationState.getData(DataTickets.ENTITY_MODEL_DATA);
+ head.setRotX(entityData.headPitch() * Mth.DEG_TO_RAD);
+ }
+}
diff --git a/src/main/java/net/mcreator/target/entity/model/TargetModel.java b/src/main/java/net/mcreator/target/entity/model/TargetModel.java
new file mode 100644
index 000000000..90c33afa8
--- /dev/null
+++ b/src/main/java/net/mcreator/target/entity/model/TargetModel.java
@@ -0,0 +1,25 @@
+package net.mcreator.target.entity.model;
+
+import software.bernie.geckolib.model.GeoModel;
+
+import net.minecraft.resources.ResourceLocation;
+
+import net.mcreator.target.entity.TargetEntity;
+
+public class TargetModel extends GeoModel {
+ @Override
+ public ResourceLocation getAnimationResource(TargetEntity entity) {
+ return new ResourceLocation("target", "animations/target2.animation.json");
+ }
+
+ @Override
+ public ResourceLocation getModelResource(TargetEntity entity) {
+ return new ResourceLocation("target", "geo/target2.geo.json");
+ }
+
+ @Override
+ public ResourceLocation getTextureResource(TargetEntity entity) {
+ return new ResourceLocation("target", "textures/entities/" + entity.getTexture() + ".png");
+ }
+
+}
diff --git a/src/main/java/net/mcreator/target/headshot/BasicHeadshotBox.java b/src/main/java/net/mcreator/target/headshot/BasicHeadshotBox.java
new file mode 100644
index 000000000..e886179ad
--- /dev/null
+++ b/src/main/java/net/mcreator/target/headshot/BasicHeadshotBox.java
@@ -0,0 +1,40 @@
+package net.mcreator.target.headshot;
+
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.phys.AABB;
+
+import javax.annotation.Nullable;
+
+/**
+ * Author: MrCrayfish
+ */
+public class BasicHeadshotBox implements IHeadshotBox
+{
+ protected double headWidth;
+ protected double headHeight;
+ protected double headYOffset;
+
+ public BasicHeadshotBox(double headSize, double headYOffset)
+ {
+ this.headWidth = headSize;
+ this.headHeight = headSize;
+ this.headYOffset = headYOffset;
+ }
+
+ public BasicHeadshotBox(double headWidth, double headHeight, double headYOffset)
+ {
+ this.headWidth = headWidth;
+ this.headHeight = headHeight;
+ this.headYOffset = headYOffset;
+ }
+
+ @Nullable
+ @Override
+ public AABB getHeadshotBox(T entity)
+ {
+ double halfWidth = this.headWidth / 2.0;
+ AABB headBox = new AABB(-halfWidth * 0.0625, 0, -halfWidth * 0.0625, halfWidth * 0.0625, this.headHeight * 0.0625, halfWidth * 0.0625);
+ headBox = headBox.move(0, this.headYOffset * 0.0625, 0);
+ return headBox;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/mcreator/target/headshot/BoundingBoxManager.java b/src/main/java/net/mcreator/target/headshot/BoundingBoxManager.java
new file mode 100644
index 000000000..7e942b7c3
--- /dev/null
+++ b/src/main/java/net/mcreator/target/headshot/BoundingBoxManager.java
@@ -0,0 +1,149 @@
+package net.mcreator.target.headshot;
+//import com.mrcrayfish.guns.Config;
+import net.minecraft.util.Mth;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.LivingEntity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
+import net.minecraftforge.event.TickEvent;
+import net.minecraftforge.event.entity.player.PlayerEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import net.minecraftforge.fml.LogicalSide;
+import net.mcreator.target.entity.Target1Entity;
+import net.mcreator.target.entity.SenpaiEntity;
+import net.mcreator.target.init.TargetModEntities;
+
+import javax.annotation.Nullable;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+//TODO retrieve this data from a datapack
+
+/**
+ * Author: MrCrayfish
+ */
+public class BoundingBoxManager
+{
+ private static Map, IHeadshotBox>> headshotBoxes = new HashMap<>();
+ private static WeakHashMap> playerBoxes = new WeakHashMap<>();
+
+ static
+ {
+ /* Player */
+ registerHeadshotBox(EntityType.PLAYER, (entity) -> {
+ AABB headBox = new AABB(-4 * 0.0625, 0, -4 * 0.0625, 4 * 0.0625, 8 * 0.0625, 4 * 0.0625);
+ double scale = 30.0 / 32.0;
+ if(entity.getBbHeight() <= 1)
+ {
+ headBox = headBox.move(0, 3 * 0.0625, 0);
+ Vec3 pos = Vec3.directionFromRotation(entity.getXRot(), entity.yBodyRot).normalize().scale(0.8);
+ headBox = headBox.move(pos);
+ }
+ else
+ {
+ headBox = headBox.move(0, entity.isShiftKeyDown() ? 20 * 0.0625 : 24 * 0.0625, 0);
+ }
+ return new AABB(headBox.minX * scale, headBox.minY * scale, headBox.minZ * scale, headBox.maxX * scale, headBox.maxY * scale, headBox.maxZ * scale);
+ });
+ registerHeadshotBox(TargetModEntities.SENPAI.get(), new BasicHeadshotBox<>(8.0, 22.0));
+ registerHeadshotBox(TargetModEntities.TARGET_1.get(), new BasicHeadshotBox<>(14.0, 20.0));
+ registerHeadshotBox(EntityType.ZOMBIE, new ChildHeadshotBox<>(8.0, 26.0, 0.75, 0.5));
+ registerHeadshotBox(EntityType.ZOMBIFIED_PIGLIN, new ChildHeadshotBox<>(8.0, 26.0, 0.75, 0.5));
+ registerHeadshotBox(EntityType.HUSK, new ChildHeadshotBox<>(8.0, 26.0, 0.75, 0.5));
+ registerHeadshotBox(EntityType.SKELETON, new BasicHeadshotBox<>(8.0, 26.0));
+ registerHeadshotBox(EntityType.STRAY, new BasicHeadshotBox<>(8.0, 26.0));
+ registerHeadshotBox(EntityType.CREEPER, new BasicHeadshotBox<>(8.0, 21.0));
+ registerHeadshotBox(EntityType.SPIDER, new RotatedHeadshotBox<>(8.0, 5.0, 7.0, false, true));
+ registerHeadshotBox(EntityType.DROWNED, new BasicHeadshotBox<>(8.0, 26.0));
+ registerHeadshotBox(EntityType.VILLAGER, new NoChildHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.ZOMBIE_VILLAGER, new NoChildHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.VINDICATOR, new NoChildHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.EVOKER, new BasicHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.PILLAGER, new BasicHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.ILLUSIONER, new BasicHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.WANDERING_TRADER, new BasicHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.WITCH, new BasicHeadshotBox<>(8.0, 9.0, 25.0));
+ registerHeadshotBox(EntityType.SHEEP, new RotatedHeadshotBox<>(7.5, 8.0, 15.0, 9.5, false, true));
+ registerHeadshotBox(EntityType.CHICKEN, new NoChildRotatedHeadshotBox<>(4.0, 6.0, 9.0, 5.0, false, true));
+ registerHeadshotBox(EntityType.COW, new NoChildRotatedHeadshotBox<>(7.5, 8.0, 16.0, 10.5, false, true));
+ registerHeadshotBox(EntityType.MOOSHROOM, new NoChildRotatedHeadshotBox<>(7.5, 8.0, 16.0, 10.5, false, true));
+ registerHeadshotBox(EntityType.PIG, new NoChildRotatedHeadshotBox<>(8.0, 8.0, 10, false, true));
+ registerHeadshotBox(EntityType.HORSE, new RotatedHeadshotBox<>(10.0, 26.0, 16.0, false, true));
+ registerHeadshotBox(EntityType.SKELETON_HORSE, new RotatedHeadshotBox<>(10.0, 26.0, 16.0, false, true));
+ registerHeadshotBox(EntityType.DONKEY, new RotatedHeadshotBox<>(7.5, 8.0, 20.0, 13.0, false, true));
+ registerHeadshotBox(EntityType.MULE, new RotatedHeadshotBox<>(7.5, 8.0, 21.0, 14.0, false, true));
+ registerHeadshotBox(EntityType.LLAMA, new RotatedHeadshotBox<>(8.0, 26.0, 10.0, false, true));
+ registerHeadshotBox(EntityType.TRADER_LLAMA, new RotatedHeadshotBox<>(8.0, 26.0, 10.0, false, true));
+ registerHeadshotBox(EntityType.POLAR_BEAR, new RotatedHeadshotBox<>(9.0, 12.0, 20.0, false, true));
+ registerHeadshotBox(EntityType.SNOW_GOLEM, new BasicHeadshotBox<>(10.0, 22.5));
+ registerHeadshotBox(EntityType.TURTLE, new RotatedHeadshotBox<>(6.0, 5.0, 1.0, 10.0, false, true));
+ registerHeadshotBox(EntityType.IRON_GOLEM, new BasicHeadshotBox<>(8.0, 35.0));
+ registerHeadshotBox(EntityType.WARDEN, new BasicHeadshotBox<>(14.0, 37.0));
+ registerHeadshotBox(EntityType.PHANTOM, new RotatedHeadshotBox<>(6.0, 3.0, 1.5, 6.5, true, true));
+ registerHeadshotBox(EntityType.HOGLIN, new RotatedHeadshotBox<>(14.0, 16.0, 7.0, 21.0, false, true));
+ registerHeadshotBox(EntityType.ZOGLIN, new RotatedHeadshotBox<>(14.0, 16.0, 7.0, 21.0, false, true));
+ registerHeadshotBox(EntityType.PIGLIN, new ChildHeadshotBox<>(8.0, 26.0, 0.75, 0.5));
+ }
+
+ /**
+ * Registers a headshot box for the specified entity type.
+ *
+ * @param type the entity type
+ * @param headshotBox a {@link IHeadshotBox} get
+ * @param a type that extends {@link LivingEntity}
+ */
+ public static void registerHeadshotBox(EntityType type, IHeadshotBox headshotBox)
+ {
+ headshotBoxes.putIfAbsent(type, headshotBox);
+ }
+
+ @Nullable
+ @SuppressWarnings("unchecked")
+ public static