diff --git a/gradle.properties b/gradle.properties index 17c6aac..3e5faaa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.20.1 yarn_mappings=1.20.1+build.10 loader_version=0.18.3 # Mod Properties -mod_version=1.0.12 +mod_version=26.2.5 maven_group=dev.tggamesyt archives_base_name=szar # Dependencies diff --git a/src/blockbench_models/PlaneEntity.bbmodel b/src/blockbench_models/PlaneEntity.bbmodel new file mode 100644 index 0000000..6eb75c7 --- /dev/null +++ b/src/blockbench_models/PlaneEntity.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"modded_entity","box_uv":true},"name":"PlaneEntity","model_identifier":"szar:plane","modded_entity_entity_class":"","modded_entity_version":"1.17_yarn","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":128,"height":128},"elements":[{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[3,0,-1],"to":[5,2,1],"autouv":0,"color":0,"origin":[4,0,0],"uv_offset":[24,58],"faces":{"north":{"uv":[26,60,28,62],"texture":0},"east":{"uv":[24,60,26,62],"texture":0},"south":{"uv":[30,60,32,62],"texture":0},"west":{"uv":[28,60,30,62],"texture":0},"up":{"uv":[28,60,26,58],"texture":0},"down":{"uv":[30,58,28,60],"texture":0}},"type":"cube","uuid":"d23a7431-3897-faf7-9338-6bcecf73d6e7"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-5,0,-1],"to":[-3,2,1],"autouv":0,"color":0,"origin":[-4,0,0],"uv_offset":[24,58],"faces":{"north":{"uv":[26,60,28,62],"texture":0},"east":{"uv":[24,60,26,62],"texture":0},"south":{"uv":[30,60,32,62],"texture":0},"west":{"uv":[28,60,30,62],"texture":0},"up":{"uv":[28,60,26,58],"texture":0},"down":{"uv":[30,58,28,60],"texture":0}},"type":"cube","uuid":"f2453add-6d6e-210f-f02e-cedcd8aa942b"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-4,2,-1],"to":[-3,5,1],"autouv":0,"color":0,"rotation":[0,0,-22.5],"origin":[-4,2,0],"uv_offset":[32,58],"faces":{"north":{"uv":[34,60,35,63],"texture":0},"east":{"uv":[32,60,34,63],"texture":0},"south":{"uv":[37,60,38,63],"texture":0},"west":{"uv":[35,60,37,63],"texture":0},"up":{"uv":[35,60,34,58],"texture":0},"down":{"uv":[36,58,35,60],"texture":0}},"type":"cube","uuid":"6688f9a1-4a18-d678-7539-ef2f77145dd5"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-3,4,-1],"to":[3,5,1],"autouv":0,"color":0,"origin":[0,5,0],"uv_offset":[24,55],"faces":{"north":{"uv":[26,57,32,58],"texture":0},"east":{"uv":[24,57,26,58],"texture":0},"south":{"uv":[34,57,40,58],"texture":0},"west":{"uv":[32,57,34,58],"texture":0},"up":{"uv":[32,57,26,55],"texture":0},"down":{"uv":[38,55,32,57],"texture":0}},"type":"cube","uuid":"ae7e4da9-2ad1-c3e7-3c59-1f858bc0323f"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[3,2,-1],"to":[4,5,1],"autouv":0,"color":0,"rotation":[0,0,22.5],"origin":[4,2,0],"uv_offset":[32,58],"faces":{"north":{"uv":[34,60,35,63],"texture":0},"east":{"uv":[32,60,34,63],"texture":0},"south":{"uv":[37,60,38,63],"texture":0},"west":{"uv":[35,60,37,63],"texture":0},"up":{"uv":[35,60,34,58],"texture":0},"down":{"uv":[36,58,35,60],"texture":0}},"type":"cube","uuid":"24aa9d34-5cb3-bf16-a1df-2b7bff6dbe58"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-2,5,-11],"to":[2,6,7],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[0,24],"faces":{"north":{"uv":[18,42,22,43],"texture":0},"east":{"uv":[0,42,18,43],"texture":0},"south":{"uv":[40,42,44,43],"texture":0},"west":{"uv":[22,42,40,43],"texture":0},"up":{"uv":[22,42,18,24],"texture":0},"down":{"uv":[26,24,22,42],"texture":0}},"type":"cube","uuid":"ecc24804-d99a-426a-d15a-ad3f3b0efa15"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-3,6,-8],"to":[-2,8,7],"autouv":0,"color":0,"origin":[0,7,-3],"uv_offset":[44,24],"faces":{"north":{"uv":[59,39,60,41],"texture":0},"east":{"uv":[44,39,59,41],"texture":0},"south":{"uv":[75,39,76,41],"texture":0},"west":{"uv":[60,39,75,41],"texture":0},"up":{"uv":[60,39,59,24],"texture":0},"down":{"uv":[61,24,60,39],"texture":0}},"type":"cube","uuid":"34afe3c5-4613-80a7-ed91-57ef975bc3ff"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[2,6,-8],"to":[3,8,7],"autouv":0,"color":0,"origin":[0,7,-3],"uv_offset":[44,24],"faces":{"north":{"uv":[59,39,60,41],"texture":0},"east":{"uv":[44,39,59,41],"texture":0},"south":{"uv":[75,39,76,41],"texture":0},"west":{"uv":[60,39,75,41],"texture":0},"up":{"uv":[60,39,59,24],"texture":0},"down":{"uv":[61,24,60,39],"texture":0}},"type":"cube","uuid":"2dfe02cc-df4a-c0c8-d109-8eb8885df8e0"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-2,6,-12],"to":[2,8,10],"autouv":0,"color":0,"origin":[0,6,-3],"faces":{"north":{"uv":[22,22,26,24],"texture":0},"east":{"uv":[0,22,22,24],"texture":0},"south":{"uv":[48,22,52,24],"texture":0},"west":{"uv":[26,22,48,24],"texture":0},"up":{"uv":[26,22,22,0],"texture":0},"down":{"uv":[30,0,26,22],"texture":0}},"type":"cube","uuid":"8495eb51-c933-f14d-74fa-b1e754898d9f"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-17,5,-5],"to":[-2,6,2],"autouv":0,"color":0,"rotation":[0,22.5,0],"origin":[-2,6,-5],"uv_offset":[0,43],"faces":{"north":{"uv":[7,50,22,51],"texture":0},"east":{"uv":[0,50,7,51],"texture":0},"south":{"uv":[29,50,44,51],"texture":0},"west":{"uv":[22,50,29,51],"texture":0},"up":{"uv":[22,50,7,43],"texture":0},"down":{"uv":[37,43,22,50],"texture":0}},"type":"cube","uuid":"f287bde8-185d-c7d9-bf4a-cea70011de53"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[2,5,-5],"to":[17,6,2],"autouv":0,"color":0,"rotation":[0,-22.5,0],"origin":[2,6,-5],"uv_offset":[0,43],"faces":{"north":{"uv":[7,50,22,51],"texture":0},"east":{"uv":[0,50,7,51],"texture":0},"south":{"uv":[29,50,44,51],"texture":0},"west":{"uv":[22,50,29,51],"texture":0},"up":{"uv":[22,50,7,43],"texture":0},"down":{"uv":[37,43,22,50],"texture":0}},"type":"cube","uuid":"67d3df63-b464-ae34-9d2d-f4087c763fea"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,8,-8],"to":[1,10,4],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[44,41],"faces":{"north":{"uv":[56,53,58,55],"texture":0},"east":{"uv":[44,53,56,55],"texture":0},"south":{"uv":[70,53,72,55],"texture":0},"west":{"uv":[58,53,70,55],"texture":0},"up":{"uv":[58,53,56,41],"texture":0},"down":{"uv":[60,41,58,53],"texture":0}},"type":"cube","uuid":"b3300158-b216-8fe0-86db-0bafc2174ba4"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,6,10],"to":[1,9,14],"autouv":0,"color":0,"rotation":[-22.5,0,0],"origin":[0,7,11],"uv_offset":[40,55],"faces":{"north":{"uv":[44,59,46,62],"texture":0},"east":{"uv":[40,59,44,62],"texture":0},"south":{"uv":[50,59,52,62],"texture":0},"west":{"uv":[46,59,50,62],"texture":0},"up":{"uv":[46,59,44,55],"texture":0},"down":{"uv":[48,55,46,59],"texture":0}},"type":"cube","uuid":"c969f601-24ef-15d0-2dfd-d66da6a50700"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,8,13],"to":[1,15,17],"autouv":0,"color":0,"origin":[6,6,0],"uv_offset":[52,12],"faces":{"north":{"uv":[56,16,58,23],"texture":0},"east":{"uv":[52,16,56,23],"texture":0},"south":{"uv":[62,16,64,23],"texture":0},"west":{"uv":[58,16,62,23],"texture":0},"up":{"uv":[58,16,56,12],"texture":0},"down":{"uv":[60,12,58,16],"texture":0}},"type":"cube","uuid":"72313e74-8277-86e0-cfda-b2d535f9a471"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-7,8,14],"to":[7,9,17],"autouv":0,"color":0,"rotation":[-22.5,0,0],"origin":[0,8,14],"uv_offset":[0,51],"faces":{"north":{"uv":[3,54,17,55],"texture":0},"east":{"uv":[0,54,3,55],"texture":0},"south":{"uv":[20,54,34,55],"texture":0},"west":{"uv":[17,54,20,55],"texture":0},"up":{"uv":[17,54,3,51],"texture":0},"down":{"uv":[31,51,17,54],"texture":0}},"type":"cube","uuid":"ec142d13-4801-603a-24f8-2fc726735223"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,7,-13],"to":[1,8,-12],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[24,62],"faces":{"north":{"uv":[25,63,27,64],"texture":0},"east":{"uv":[24,63,25,64],"texture":0},"south":{"uv":[28,63,30,64],"texture":0},"west":{"uv":[27,63,28,64],"texture":0},"up":{"uv":[27,63,25,62],"texture":0},"down":{"uv":[29,62,27,63],"texture":0}},"type":"cube","uuid":"43b0310d-82d3-d202-5340-46e6737f9a67"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-2,8,-7],"to":[-1,10,4],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[0,55],"faces":{"north":{"uv":[11,66,12,68],"texture":0},"east":{"uv":[0,66,11,68],"texture":0},"south":{"uv":[23,66,24,68],"texture":0},"west":{"uv":[12,66,23,68],"texture":0},"up":{"uv":[12,66,11,55],"texture":0},"down":{"uv":[13,55,12,66],"texture":0}},"type":"cube","uuid":"1ea70074-a06c-bca8-738e-f7b199be5c03"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[1,8,-7],"to":[2,10,4],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[0,55],"faces":{"north":{"uv":[11,66,12,68],"texture":0},"east":{"uv":[0,66,11,68],"texture":0},"south":{"uv":[23,66,24,68],"texture":0},"west":{"uv":[12,66,23,68],"texture":0},"up":{"uv":[12,66,11,55],"texture":0},"down":{"uv":[13,55,12,66],"texture":0}},"type":"cube","uuid":"205b0829-3f97-f943-3eb4-6590187fef70"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-3,5,-13],"to":[3,11,-13],"autouv":0,"color":0,"origin":[0,7,-3],"uv_offset":[52,55],"faces":{"north":{"uv":[52,55,58,61],"texture":0},"east":{"uv":[52,55,52,61],"texture":0},"south":{"uv":[58,55,64,61],"texture":0},"west":{"uv":[58,55,58,61],"texture":0},"up":{"uv":[58,55,52,55],"texture":0},"down":{"uv":[64,55,58,55],"texture":0}},"type":"cube","uuid":"355cf541-9c9b-2b7b-033b-182a4010c797"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,8,4],"to":[1,9,7],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[34,51],"faces":{"north":{"uv":[37,54,39,55],"texture":0},"east":{"uv":[34,54,37,55],"texture":0},"south":{"uv":[42,54,44,55],"texture":0},"west":{"uv":[39,54,42,55],"texture":0},"up":{"uv":[39,54,37,51],"texture":0},"down":{"uv":[41,51,39,54],"texture":0}},"type":"cube","uuid":"8e39cdcc-de55-2e3d-218b-bfcd05c048d0"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-2,8,4],"to":[-1,9,6],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[60,61],"faces":{"north":{"uv":[62,63,63,64],"texture":0},"east":{"uv":[60,63,62,64],"texture":0},"south":{"uv":[65,63,66,64],"texture":0},"west":{"uv":[63,63,65,64],"texture":0},"up":{"uv":[63,63,62,61],"texture":0},"down":{"uv":[64,61,63,63],"texture":0}},"type":"cube","uuid":"8196d0c9-2c4f-b8cc-3cf1-a7a594a51a27"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[1,8,4],"to":[2,9,6],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[60,61],"faces":{"north":{"uv":[62,63,63,64],"texture":0},"east":{"uv":[60,63,62,64],"texture":0},"south":{"uv":[65,63,66,64],"texture":0},"west":{"uv":[63,63,65,64],"texture":0},"up":{"uv":[63,63,62,61],"texture":0},"down":{"uv":[64,61,63,63],"texture":0}},"type":"cube","uuid":"68812d24-01ba-0ee3-8c8e-366c40abd1b7"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,10,-7],"to":[1,11,4],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[52,0],"faces":{"north":{"uv":[63,11,65,12],"texture":0},"east":{"uv":[52,11,63,12],"texture":0},"south":{"uv":[76,11,78,12],"texture":0},"west":{"uv":[65,11,76,12],"texture":0},"up":{"uv":[65,11,63,0],"texture":0},"down":{"uv":[67,0,65,11],"texture":0}},"type":"cube","uuid":"68abd2e2-e6b2-f892-0397-e83ef61237b3"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,9,4],"to":[1,10,6],"autouv":0,"color":0,"origin":[0,6,-3],"uv_offset":[52,61],"faces":{"north":{"uv":[54,63,56,64],"texture":0},"east":{"uv":[52,63,54,64],"texture":0},"south":{"uv":[58,63,60,64],"texture":0},"west":{"uv":[56,63,58,64],"texture":0},"up":{"uv":[56,63,54,61],"texture":0},"down":{"uv":[58,61,56,63],"texture":0}},"type":"cube","uuid":"95537c40-2f3d-a049-247c-5f9ae52fa8bc"},{"name":"cube","box_uv":true,"render_order":"default","locked":false,"allow_mirror_modeling":true,"from":[-1,8,-9],"to":[1,9,-8],"autouv":0,"color":0,"origin":[0,6,-16],"uv_offset":[38,62],"faces":{"north":{"uv":[39,63,41,64],"texture":0},"east":{"uv":[38,63,39,64],"texture":0},"south":{"uv":[42,63,44,64],"texture":0},"west":{"uv":[41,63,42,64],"texture":0},"up":{"uv":[41,63,39,62],"texture":0},"down":{"uv":[43,62,41,63],"texture":0}},"type":"cube","uuid":"147a22e0-b0d2-b9e1-e44e-91e905b9776a"}],"groups":[{"uuid":"7a25b5de-5f99-6667-6fa4-bab5980a27f7","export":true,"locked":false,"origin":[0,5,0],"rotation":[0,0,0],"color":0,"name":"base","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"0e2de564-89a3-a686-5666-62217d05a6d4","export":true,"locked":false,"origin":[0,8,-13],"rotation":[0,0,0],"color":0,"name":"rotor","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab","export":true,"locked":false,"origin":[0,8,14],"rotation":[0,0,0],"color":0,"name":"back_wing","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"5e9be239-3e0a-f7aa-0841-654cddebbb31","export":true,"locked":false,"origin":[2,6,-5],"rotation":[0,0,0],"color":0,"name":"right_wing","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"7e01e35f-94ca-4ad8-cb66-13212ec45917","export":true,"locked":false,"origin":[-2,6,-5],"rotation":[0,0,0],"color":0,"name":"left_wing","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"73e1b628-24d0-4822-b59c-c515dfc6f5b2","export":true,"locked":false,"origin":[3,5,0],"rotation":[0,0,0],"color":0,"name":"right_wheel","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"6d752fbf-043b-3cb9-bf0d-668454af95f9","export":true,"locked":false,"origin":[-3,5,0],"rotation":[0,0,0],"color":0,"name":"left_wheel","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false}],"outliner":[{"uuid":"73e1b628-24d0-4822-b59c-c515dfc6f5b2","isOpen":false,"children":["24aa9d34-5cb3-bf16-a1df-2b7bff6dbe58","d23a7431-3897-faf7-9338-6bcecf73d6e7"]},{"uuid":"7a25b5de-5f99-6667-6fa4-bab5980a27f7","isOpen":false,"children":["ae7e4da9-2ad1-c3e7-3c59-1f858bc0323f","ecc24804-d99a-426a-d15a-ad3f3b0efa15","34afe3c5-4613-80a7-ed91-57ef975bc3ff","2dfe02cc-df4a-c0c8-d109-8eb8885df8e0","8495eb51-c933-f14d-74fa-b1e754898d9f","b3300158-b216-8fe0-86db-0bafc2174ba4","c969f601-24ef-15d0-2dfd-d66da6a50700","72313e74-8277-86e0-cfda-b2d535f9a471","43b0310d-82d3-d202-5340-46e6737f9a67","1ea70074-a06c-bca8-738e-f7b199be5c03","205b0829-3f97-f943-3eb4-6590187fef70","8e39cdcc-de55-2e3d-218b-bfcd05c048d0","8196d0c9-2c4f-b8cc-3cf1-a7a594a51a27","68812d24-01ba-0ee3-8c8e-366c40abd1b7","68abd2e2-e6b2-f892-0397-e83ef61237b3","95537c40-2f3d-a049-247c-5f9ae52fa8bc","147a22e0-b0d2-b9e1-e44e-91e905b9776a"]},{"uuid":"6d752fbf-043b-3cb9-bf0d-668454af95f9","isOpen":false,"children":["f2453add-6d6e-210f-f02e-cedcd8aa942b","6688f9a1-4a18-d678-7539-ef2f77145dd5"]},{"uuid":"7e01e35f-94ca-4ad8-cb66-13212ec45917","isOpen":false,"children":["f287bde8-185d-c7d9-bf4a-cea70011de53"]},{"uuid":"5e9be239-3e0a-f7aa-0841-654cddebbb31","isOpen":false,"children":["67d3df63-b464-ae34-9d2d-f4087c763fea"]},{"uuid":"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab","isOpen":false,"children":["ec142d13-4801-603a-24f8-2fc726735223"]},{"uuid":"0e2de564-89a3-a686-5666-62217d05a6d4","isOpen":false,"children":["355cf541-9c9b-2b7b-033b-182a4010c797"]}],"textures":[{"name":"plane.png","relative_path":"../main/resources/assets/szar/textures/entity/plane.png","folder":"block","namespace":"","id":"0","group":"","width":256,"height":256,"uv_width":128,"uv_height":128,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"79234770-25ca-2611-5b8b-dc32fb703aa7","source":"data:image/png;base64,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"}],"animations":[{"uuid":"c68e3937-82f9-a9e8-49d1-3cc1ed09fba4","name":"start_engine","loop":"once","override":false,"length":2.29167,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"90"}],"uuid":"73139bbb-d055-928a-e222-c530da704170","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"360"}],"uuid":"b6685ed5-485e-0156-e15e-2bed836c75bf","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"180"}],"uuid":"fb4b3ab6-94fa-6225-6a47-d239a2eea632","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-180"}],"uuid":"5b9261e1-b57e-81e5-8b58-a69df3349991","time":1.79167,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-900"}],"uuid":"69b12154-b953-2396-8f70-7a635925012b","time":2,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-2520"}],"uuid":"1e5fc786-59b5-6802-f134-815bcb89b4ec","time":2.29167,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false}}},{"uuid":"946b1dd6-6c76-4b25-f263-f105f45dd0e9","name":"stop_engine","loop":"once","override":false,"length":2,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"b24f46d5-30be-3317-584c-3d50175b9694","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-2070"}],"uuid":"8a1d7620-38b6-03d7-486b-84659b8cb9bf","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-1440"}],"uuid":"f6221d77-0a43-20d6-a833-dada9c6ca5e5","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-1980"}],"uuid":"bf93e164-d6fc-6507-ebed-af62daa67e75","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-2250"}],"uuid":"6903a41d-40c9-3ff1-4433-b670658c6663","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-2520"}],"uuid":"95bc338b-95e3-0ea7-3f46-04868024a27d","time":2,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false}}},{"uuid":"baddfae5-7d5e-1e6a-b1a7-21fcae137eea","name":"land_started","loop":"loop","override":false,"length":0.25,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f538ff33-3129-40a0-be1c-8a30f78a908c","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"2520"}],"uuid":"e39fb160-0be8-b54c-4a6c-ed6e603dc2a2","time":0.25,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false}}},{"uuid":"3c7c560a-dba9-7a6a-7e98-9539fe855f74","name":"flying","loop":"loop","override":false,"length":0.25,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f538ff33-3129-40a0-be1c-8a30f78a908c","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"2520"}],"uuid":"e39fb160-0be8-b54c-4a6c-ed6e603dc2a2","time":0.25,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-107.5"}],"uuid":"1c5ed14d-6237-694c-8103-a927a05a6b22","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"a67e4d53-f191-ac4e-e86b-07a350a07cc7","time":0,"color":-1,"interpolation":"linear"}]},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"107.5"}],"uuid":"c14b06b8-9fe3-9de9-c8b8-8fb171747700","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"c28a7652-3b88-e24a-01e4-ffdc3799d78f","time":0,"color":-1,"interpolation":"linear"}]}}},{"uuid":"63e449a0-be46-e81d-6019-161de879939a","name":"landing","loop":"once","override":false,"length":2,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"9bd772cd-af54-8111-2e05-14577661b896","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"52ca9a89-dc22-f098-4fd2-ec4e598968b5","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"e709c6eb-e4a0-d230-d3b3-479dc2c7c2db","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"b5bd5575-fb56-5c99-c17f-c56ddcd06591","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"a6ed1a7b-ad4e-83cb-d4d8-150523b1a819","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"b5092e0a-01f2-1aa8-bb1f-fe85a8b80113","time":2,"color":-1,"interpolation":"linear"}]},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f538ff33-3129-40a0-be1c-8a30f78a908c","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"2520"}],"uuid":"e39fb160-0be8-b54c-4a6c-ed6e603dc2a2","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"1800"}],"uuid":"37dc8880-d658-9eec-da58-53da2277693d","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"720"}],"uuid":"e0626697-dc20-25fe-84cb-70b9ffb17d74","time":0.75,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-360"}],"uuid":"5840aaff-601a-8845-687d-3526b4c56b6a","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-1800"}],"uuid":"79d7edbd-6052-08a5-9988-aba6c3d207b0","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-3240"}],"uuid":"b18bf0e2-d3ca-b483-4fb4-9a5a53bee19b","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-4320"}],"uuid":"65c8e483-7143-649c-5b1f-06d94155b602","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-5760"}],"uuid":"6ac1a294-6469-0986-135d-6b4ffd6c7cb0","time":2,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"741df2be-c1ad-c6f6-fb87-13056edbb760","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"84445e83-67b3-0d23-ccca-672dbdac110a","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"27a2de69-20e8-01eb-e55f-4ac3a17b53cc","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"26537b5d-1ef4-bb3c-a560-f030b4ba3aee","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"3dc39950-5344-d5ee-c95d-1ce7295bab7c","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f7562cf8-67aa-e965-3bab-28824729f43a","time":2,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"536d57ee-da22-e9ea-9c67-ef5a8ff6856e","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"fe7a9624-1d1d-7ddd-2b34-49d6bab170eb","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"ad7ab806-e448-b39b-be80-062f235974e2","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"198c1441-d589-3f0e-bc85-5409edef99ff","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"17aa2ee6-d187-1211-bf0c-56944f0deacf","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"7ffc5ae9-0546-cdb0-d49f-86400becf29b","time":2,"color":-1,"interpolation":"linear"}]},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"4b7401c9-3c8c-54b5-022f-282f19cd05ec","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"d91abe5d-997c-89ec-8cbe-8a09ca5bdd5f","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"e9c8a58a-29a3-be23-e8d7-472cf32dd506","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"c367aca8-42ba-ef27-7978-5ad8c00b0459","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"1236cf70-78ae-e5f9-b6e5-cf04f18a9a74","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"0a054c0a-8cec-32b1-7922-8b257f1aac7e","time":2,"color":-1,"interpolation":"linear"}]},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"f01c48a3-c6d3-26dc-af05-84db1b1250fd","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"ea0c12eb-6d89-9cd3-0592-62a09e87add0","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"804acdd5-e910-c689-3214-d379f372ced4","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"b864f524-8eb5-fad8-1e0a-2ef179113562","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"ffd0bfa8-c36d-5548-45fb-efc49d54ef08","time":1.75,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"5cf56847-7e30-13e1-94b6-66374970a240","time":2,"color":-1,"interpolation":"linear"}]},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-107.5"}],"uuid":"1c5ed14d-6237-694c-8103-a927a05a6b22","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-107.5"}],"uuid":"3fd13a61-a33f-b7df-aa61-a9857d787145","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"72eee8d8-6506-9ede-ce7d-18de6e407404","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"a67e4d53-f191-ac4e-e86b-07a350a07cc7","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"38ea7c24-d2b3-2248-4ded-0450f38ae2bf","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"42086015-916c-c592-7edf-0ef7965deaae","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"42ed63e9-f0e7-d24c-35ed-dc7b4b3864a7","time":1.5,"color":-1,"interpolation":"linear"}]},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"107.5"}],"uuid":"c14b06b8-9fe3-9de9-c8b8-8fb171747700","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"107.5"}],"uuid":"d221875a-287f-bceb-0fa9-d36fc0c5c6f1","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"d5b39b28-dd02-506c-9638-3bb36c1ffe82","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"c28a7652-3b88-e24a-01e4-ffdc3799d78f","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"2d9ade6b-f449-bd5a-0460-a2b2da800a04","time":1,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"f1a069a7-e635-e214-165d-bf922de053f2","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"c7092b6c-e26c-c53a-a48f-4e1062d6bed8","time":1.5,"color":-1,"interpolation":"linear"}]}}},{"uuid":"d4d163c2-b0ef-600c-e322-6711398a5b81","name":"lift_up","loop":"once","override":false,"length":1.5,"snapping":24,"selected":false,"group_name":"","anim_time_update":"","blend_weight":"","start_delay":"","loop_delay":"","animators":{"7a25b5de-5f99-6667-6fa4-bab5980a27f7":{"name":"base","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"07b4acea-7262-5916-15a6-389289ee0834","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"4c72ebc1-087a-c953-66a6-df66291004d9","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"cbdfd564-1e77-65c5-de40-2f3d5f1fbebd","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"75ba86be-5c14-0b41-4046-9e8a7f8e186c","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"fd7bb4cd-0e78-244e-6c1d-c3bc24925c6d","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"891b689d-7918-e194-754a-0cbf321da396","time":1.5,"color":-1,"interpolation":"linear"}]},"0e2de564-89a3-a686-5666-62217d05a6d4":{"name":"rotor","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f538ff33-3129-40a0-be1c-8a30f78a908c","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"2520"}],"uuid":"e39fb160-0be8-b54c-4a6c-ed6e603dc2a2","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"1800"}],"uuid":"c0d73e7c-10da-4b7f-17b5-b9552539525b","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-2160"}],"uuid":"2f84dc19-a182-0d0f-154b-e29ba099824b","time":0.75,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-3600"}],"uuid":"c174186c-4528-8e30-04a3-b13d603ae0c5","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-4680"}],"uuid":"bfd7976a-20a7-e9c8-ccba-5b8b3c230c23","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-6120"}],"uuid":"15955027-8d69-561c-b96a-1f9f6a3e68ab","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"69d4157c-e91d-04de-f45b-cb69626cc621","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"0a503eba-b411-66c4-7314-131728df76ee","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"d9f38888-8dd6-b07a-77a2-7eaecfcfdeb8","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"c17013e6-c3b9-70f5-a2ee-3e1f704df856","time":1.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"68cefdda-e943-23f7-cc5c-e60ee08d852e","time":1.25,"color":-1,"interpolation":"linear"}]},"d371afba-9dbe-01b7-bc5f-9ef4eb7e12ab":{"name":"back_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"caa13b76-6cfc-e0dc-10d0-e5032aa417bd","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"48b7b226-9525-eb14-ad84-8fb3b61d8572","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"d6ede6e6-f76a-0b71-dd40-27de84824ae5","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"1b849623-cbb4-5014-abcb-a0d8c91dcf9f","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"723bd9de-d7a3-2962-2909-be49a560dc5e","time":1.5,"color":-1,"interpolation":"linear"}]},"5e9be239-3e0a-f7aa-0841-654cddebbb31":{"name":"right_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"629bd344-4043-20a3-d571-791de53ba53b","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"1dd87f0b-514c-225e-8892-c677e80f0748","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"35c12f90-5b8f-dde3-3b57-0f0ee838b9e4","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"4d7372fe-9a6c-614b-8852-6a6b1ec7675d","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"f8433ca1-37d2-7b53-0a47-6a3ab1dfc98d","time":1.5,"color":-1,"interpolation":"linear"}]},"7e01e35f-94ca-4ad8-cb66-13212ec45917":{"name":"left_wing","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"position","data_points":[{"x":"0","y":"-1","z":"0"}],"uuid":"c6f518fe-79f5-07fb-d2ee-e27f12453097","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"ef11d02e-07fc-84b6-df58-b8b0e398df0d","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"14bfeaf3-b49d-a5e0-8e92-c3f481f545d9","time":0.5,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"30dbfe56-4bb1-9a13-8a20-04298af504be","time":1.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"b06f80eb-7967-37b8-1e3c-bab3d099f504","time":1.5,"color":-1,"interpolation":"linear"}]},"73e1b628-24d0-4822-b59c-c515dfc6f5b2":{"name":"right_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"-107.5"}],"uuid":"1e46db60-d58f-3b8d-b135-6f7346d9c4ee","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"12424157-8995-9546-acc6-d43cbcae5470","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"9ba1fbac-222f-3086-0253-d649760e6952","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"c91f8825-8bb1-c7e2-b022-1c5877a50b7f","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"87dccb1a-d7e2-7e1b-aaa1-dcd4323272fc","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"30eb8e4f-deb0-4ead-5a1b-a9284bcc5d26","time":0.5,"color":-1,"interpolation":"linear"}]},"6d752fbf-043b-3cb9-bf0d-668454af95f9":{"name":"left_wheel","type":"bone","rotation_global":false,"quaternion_interpolation":false,"keyframes":[{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"107.5"}],"uuid":"315e18e4-8a1f-5afa-03c8-438354ca9db5","time":1,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"d29fee3a-b644-639b-0d42-6799b04ebd19","time":0,"color":-1,"interpolation":"linear"},{"channel":"rotation","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"af0a4885-d34d-f8a1-3a7a-86ef47397953","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"766d0ab6-f971-b6ea-05ff-ffa8b07428bd","time":0,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"0","z":"0"}],"uuid":"67f79894-610b-bb59-cfd5-da765b66f278","time":0.25,"color":-1,"interpolation":"linear"},{"channel":"position","data_points":[{"x":"0","y":"1","z":"0"}],"uuid":"9b8b6e89-6b1b-e402-47f3-b4729e3f58d8","time":0.5,"color":-1,"interpolation":"linear"}]}}}]} \ No newline at end of file diff --git a/src/client/java/dev/tggamesyt/szar/client/BulletRenderer.java b/src/client/java/dev/tggamesyt/szar/client/BulletRenderer.java new file mode 100644 index 0000000..881d74c --- /dev/null +++ b/src/client/java/dev/tggamesyt/szar/client/BulletRenderer.java @@ -0,0 +1,39 @@ +package dev.tggamesyt.szar.client; + +import dev.tggamesyt.szar.BulletEntity; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; + +public class BulletRenderer extends EntityRenderer { + + private static final Identifier TEXTURE = + new Identifier("szar", "textures/entity/bullet.png"); + + public BulletRenderer(EntityRendererFactory.Context ctx) { + super(ctx); + } + + @Override + public void render( + BulletEntity entity, + float yaw, + float tickDelta, + MatrixStack matrices, + VertexConsumerProvider vertices, + int light + ) { + matrices.push(); + matrices.scale(0.25F, 0.25F, 0.25F); + matrices.multiply(this.dispatcher.getRotation()); + matrices.pop(); + super.render(entity, yaw, tickDelta, matrices, vertices, light); + } + + @Override + public Identifier getTexture(BulletEntity entity) { + return TEXTURE; + } +} diff --git a/src/client/java/dev/tggamesyt/szar/client/NaziEntityRenderer.java b/src/client/java/dev/tggamesyt/szar/client/NaziEntityRenderer.java new file mode 100644 index 0000000..dc9bf8f --- /dev/null +++ b/src/client/java/dev/tggamesyt/szar/client/NaziEntityRenderer.java @@ -0,0 +1,26 @@ +package dev.tggamesyt.szar.client; + +import dev.tggamesyt.szar.NaziEntity; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.client.render.entity.model.BipedEntityModel; +import net.minecraft.client.render.entity.model.EntityModelLayers; +import net.minecraft.util.Identifier; + +public class NaziEntityRenderer + extends MobEntityRenderer> { + + public NaziEntityRenderer(EntityRendererFactory.Context context) { + super( + context, + new BipedEntityModel<>(context.getPart(EntityModelLayers.PLAYER)), + 0.5F + ); + } + + @Override + public Identifier getTexture(NaziEntity entity) { + return new Identifier("szar", "textures/entity/nazi.png"); + } +} + diff --git a/src/client/java/dev/tggamesyt/szar/client/SzarClient.java b/src/client/java/dev/tggamesyt/szar/client/SzarClient.java index a14b602..6135c5b 100644 --- a/src/client/java/dev/tggamesyt/szar/client/SzarClient.java +++ b/src/client/java/dev/tggamesyt/szar/client/SzarClient.java @@ -85,6 +85,15 @@ public class SzarClient implements ClientModInitializer { Szar.HitterEntityType, HitterEntityRenderer::new ); + EntityRendererRegistry.register( + Szar.NaziEntityType, + NaziEntityRenderer::new + ); + EntityRendererRegistry.register( + Szar.BULLET, + BulletRenderer::new + ); + EntityRendererRegistry.register( Szar.PoliceEntityType, PoliceEntityRenderer::new diff --git a/src/main/java/dev/tggamesyt/szar/AK47Item.java b/src/main/java/dev/tggamesyt/szar/AK47Item.java new file mode 100644 index 0000000..08a59f4 --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/AK47Item.java @@ -0,0 +1,69 @@ +package dev.tggamesyt.szar; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; +import net.minecraft.world.World; + +public class AK47Item extends Item { + + public AK47Item(Settings settings) { + super(settings); + } + + @Override + public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { + if (!(entity instanceof PlayerEntity player)) return; + if (!selected) return; + if (!player.isUsingItem()) return; + if (world.isClient) return; + + if (!consumeAmmo(player)) return; + + BulletEntity bullet = new BulletEntity(world, player); + bullet.setVelocity( + player, + player.getPitch(), + player.getYaw(), + 0.0F, + 4.5F, // speed + 1.0F // spread + ); + + world.spawnEntity(bullet); + player.getItemCooldownManager().set(this, 2); // fire rate + } + + private boolean consumeAmmo(PlayerEntity player) { + if (player.getAbilities().creativeMode) return true; + + for (int i = 0; i < player.getInventory().size(); i++) { + ItemStack stack = player.getInventory().getStack(i); + if (stack.isOf(Szar.AK_AMMO)) { + stack.decrement(1); + return true; + } + } + return false; + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.NONE; + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 72000; + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + user.setCurrentHand(hand); + return TypedActionResult.consume(user.getStackInHand(hand)); + } +} diff --git a/src/main/java/dev/tggamesyt/szar/BulletEntity.java b/src/main/java/dev/tggamesyt/szar/BulletEntity.java new file mode 100644 index 0000000..f8e7fbf --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/BulletEntity.java @@ -0,0 +1,65 @@ +package dev.tggamesyt.szar; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.projectile.ProjectileEntity; +import net.minecraft.entity.projectile.ProjectileUtil; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class BulletEntity extends ProjectileEntity { + + public BulletEntity(EntityType type, World world) { + super(type, world); + } + + public BulletEntity(World world, LivingEntity owner) { + super(Szar.BULLET, world); + this.setOwner(owner); + this.setPosition( + owner.getX(), + owner.getEyeY() - 0.1, + owner.getZ() + ); + } + + @Override + protected void initDataTracker() {} + + @Override + public void tick() { + super.tick(); + + Vec3d velocity = this.getVelocity(); + this.setVelocity(velocity.multiply(1.02)); // fast + + HitResult hit = ProjectileUtil.getCollision(this, this::canHit); + if (hit.getType() != HitResult.Type.MISS) { + onCollision(hit); + } + + if (this.age > 60) discard(); + } + + @Override + protected void onEntityHit(EntityHitResult hit) { + Entity target = hit.getEntity(); + Entity owner = getOwner(); + + target.damage( + getWorld().getDamageSources().playerAttack((PlayerEntity) owner), + 6.0F + ); + + discard(); + } + + @Override + protected void onCollision(HitResult hit) { + if (!getWorld().isClient) discard(); + } +} diff --git a/src/main/java/dev/tggamesyt/szar/FollowLeaderWanderGoal.java b/src/main/java/dev/tggamesyt/szar/FollowLeaderWanderGoal.java new file mode 100644 index 0000000..90bfc7d --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/FollowLeaderWanderGoal.java @@ -0,0 +1,43 @@ +package dev.tggamesyt.szar; + +import net.minecraft.entity.ai.goal.Goal; +import net.minecraft.entity.mob.PathAwareEntity; +import net.minecraft.util.math.random.Random; + +public class FollowLeaderWanderGoal extends Goal { + private final PathAwareEntity mob; + private final double speed; + private final float radius; + + public FollowLeaderWanderGoal(PathAwareEntity mob, double speed, float radius) { + this.mob = mob; + this.speed = speed; + this.radius = radius; + } + + @Override + public boolean canStart() { + if (!(mob instanceof NaziEntity nazi)) return false; + HitterEntity leader = nazi.getLeader(); + return leader != null && leader.isAlive(); + } + + @Override + public void start() { + NaziEntity nazi = (NaziEntity) mob; + HitterEntity leader = nazi.getLeader(); + if (leader == null) return; + + Random random = mob.getRandom(); + + double offsetX = (random.nextDouble() - 0.5) * radius * 2; + double offsetZ = (random.nextDouble() - 0.5) * radius * 2; + + mob.getNavigation().startMovingTo( + leader.getX() + offsetX, + leader.getY(), + leader.getZ() + offsetZ, + speed + ); + } +} diff --git a/src/main/java/dev/tggamesyt/szar/HitterEntity.java b/src/main/java/dev/tggamesyt/szar/HitterEntity.java index 7d3a505..d1765e0 100644 --- a/src/main/java/dev/tggamesyt/szar/HitterEntity.java +++ b/src/main/java/dev/tggamesyt/szar/HitterEntity.java @@ -1,10 +1,11 @@ package dev.tggamesyt.szar; -import net.minecraft.entity.EntityType; +import net.minecraft.entity.*; import net.minecraft.entity.ai.goal.LookAroundGoal; import net.minecraft.entity.ai.goal.MeleeAttackGoal; import net.minecraft.entity.ai.goal.WanderAroundFarGoal; import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.mob.MobEntity; @@ -12,11 +13,18 @@ import net.minecraft.entity.mob.PathAwareEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.*; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.LocalDifficulty; +import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; +import static dev.tggamesyt.szar.Szar.NaziEntityType; + public class HitterEntity extends PathAwareEntity implements Arrestable{ public static boolean arrestable = true; @@ -66,4 +74,77 @@ public class HitterEntity extends PathAwareEntity implements Arrestable{ public boolean isArrestable() { return arrestable; } + @Override + @Nullable + public EntityData initialize( + ServerWorldAccess world, + LocalDifficulty difficulty, + SpawnReason spawnReason, + @Nullable EntityData entityData, + @Nullable NbtCompound entityNbt + ) { + // Always call super + EntityData data = super.initialize(world, difficulty, spawnReason, entityData, entityNbt); + + Random random = world.getRandom(); + + this.getAttributeInstance(EntityAttributes.GENERIC_FOLLOW_RANGE) + .addPersistentModifier( + new EntityAttributeModifier( + "Random spawn bonus", + random.nextTriangular(0.0D, 0.11485D), + EntityAttributeModifier.Operation.MULTIPLY_BASE + ) + ); + + this.setLeftHanded(random.nextFloat() < 0.05F); + + // 🔥 SPAWN GROUP HERE + if (spawnReason == SpawnReason.NATURAL && world instanceof ServerWorld serverWorld) { + + int groupSize = 4 + serverWorld.random.nextInt(7); // 4–10 Bs + + for (int i = 0; i < groupSize; i++) { + Entity entityB = NaziEntityType.create(serverWorld); + if (entityB != null) { + double offsetX = (serverWorld.random.nextDouble() - 0.5) * 6; + double offsetZ = (serverWorld.random.nextDouble() - 0.5) * 6; + + entityB.refreshPositionAndAngles( + this.getX() + offsetX, + this.getY(), + this.getZ() + offsetZ, + serverWorld.random.nextFloat() * 360F, + 0F + ); + + serverWorld.spawnEntity(entityB); + if (entityB instanceof NaziEntity nazi) { + nazi.setLeader(this); + } + } + } + } + + return data; + } + + @Override + public void setAttacker(@Nullable LivingEntity attacker) { + super.setAttacker(attacker); + + if (attacker == null || this.getWorld().isClient) return; + + List allies = this.getWorld().getEntitiesByClass( + NaziEntity.class, + this.getBoundingBox().expand(16), + nazi -> nazi.getLeader() == this && nazi.isAlive() + ); + + for (NaziEntity nazi : allies) { + nazi.setTarget(attacker); + } + } + + } diff --git a/src/main/java/dev/tggamesyt/szar/NaziEntity.java b/src/main/java/dev/tggamesyt/szar/NaziEntity.java index 3c609ac..eeb4757 100644 --- a/src/main/java/dev/tggamesyt/szar/NaziEntity.java +++ b/src/main/java/dev/tggamesyt/szar/NaziEntity.java @@ -15,22 +15,22 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtList; import net.minecraft.nbt.NbtString; import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; public class NaziEntity extends PathAwareEntity implements Arrestable{ - public static boolean arrestable = true; - + public static boolean arrestable = false; + @Nullable + private HitterEntity leader; public NaziEntity(EntityType type, World world) { super(type, world); } @Override protected void initGoals() { - this.goalSelector.add(0, new MeleeAttackGoal(this, 1.2D, true)); - this.goalSelector.add(2, new WanderAroundFarGoal(this, 1.0D)); - this.goalSelector.add(3, new LookAroundGoal(this)); - - this.targetSelector.add(1, new AggroOnHitRevengeGoal(this)); + this.goalSelector.add(2, new FollowLeaderWanderGoal(this, 1.0D, 6.0F)); + this.goalSelector.add(3, new WanderAroundFarGoal(this, 0.8D)); + this.goalSelector.add(1, new MeleeAttackGoal(this, 1.2D, true)); } @@ -62,4 +62,14 @@ public class NaziEntity extends PathAwareEntity implements Arrestable{ public boolean isArrestable() { return arrestable; } + + public void setLeader(HitterEntity leader) { + this.leader = leader; + } + + @Nullable + public HitterEntity getLeader() { + return this.leader; + } + } diff --git a/src/main/java/dev/tggamesyt/szar/Szar.java b/src/main/java/dev/tggamesyt/szar/Szar.java index 68f7ffe..26f7bf1 100644 --- a/src/main/java/dev/tggamesyt/szar/Szar.java +++ b/src/main/java/dev/tggamesyt/szar/Szar.java @@ -43,6 +43,7 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DataPool; +import net.minecraft.util.math.Box; import net.minecraft.village.TradeOffer; import net.minecraft.village.VillagerProfession; import net.minecraft.world.Heightmap; @@ -175,6 +176,8 @@ public class Szar implements ModInitializer { entries.add(Szar.CIGANYBLOCK); entries.add(Szar.FASZITEM); entries.add(Szar.NWORD_PASS); + entries.add(Szar.HITTER_SPAWNEGG); + entries.add(Szar.NAZI_SPAWNEGG); entries.add(Szar.NIGGER_SPAWNEGG); entries.add(Szar.GYPSY_SPAWNEGG); entries.add(Szar.TERRORIST_SPAWNEGG); @@ -196,6 +199,8 @@ public class Szar implements ModInitializer { entries.add(Szar.NIGGERITE_BOOTS); entries.add(Szar.NIGGERITE_BLOCK); entries.add(Szar.CHEMICAL_WORKBENCH_ITEM); + entries.add(Szar.AK_AMMO); + entries.add(Szar.AK47); }) .build() ); @@ -346,6 +351,10 @@ public class Szar implements ModInitializer { NiggerEntityType, NiggerEntity.createAttributes() ); + FabricDefaultAttributeRegistry.register( + NaziEntityType, + NaziEntity.createAttributes() + ); FabricDefaultAttributeRegistry.register( HitterEntityType, HitterEntity.createAttributes() @@ -402,37 +411,6 @@ public class Szar implements ModInitializer { 5, 1, 1 ); - ServerTickEvents.END_WORLD_TICK.register(world -> { - if (world.isClient) return; - - if (world.random.nextInt(200) != 0) return; - - world.getEntitiesByClass( - HitterEntity.class, // <-- your A entity class - entityA -> entityA.isAlive() && !entityA.hasTag("b_group_spawned") - ).forEach(entityA -> { - if (entityA.isAlive() && !entityA.getCommandTags().contains("b_group_spawned")) return; - entityA.addCommandTag("b_group_spawned"); - - int groupSize = 2 + world.random.nextInt(9); // 2–10 Bs - for (int i = 0; i < groupSize; i++) { - Entity entityB = NaziEntityType.create(world); - if (entityB != null) { - double offsetX = (world.random.nextDouble() - 0.5) * 4; - double offsetZ = (world.random.nextDouble() - 0.5) * 4; - entityB.refreshPositionAndAngles( - entityA.getX() + offsetX, - entityA.getY(), - entityA.getZ() + offsetZ, - world.random.nextFloat() * 360, - 0 - ); - world.spawnEntity(entityB); - } - } - }); - }); - BiomeModifications.addSpawn( BiomeSelectors.includeByKey( @@ -509,6 +487,27 @@ public class Szar implements ModInitializer { new DrogEffect() ); public static final StatusEffect ARRESTED = Registry.register(Registries.STATUS_EFFECT, new Identifier("szar", "arrested"), new ArrestedEffect()); + public static final Item AK_AMMO = Registry.register( + Registries.ITEM, + new Identifier("szar", "bullet"), + new Item(new Item.Settings()) + ); + public static final EntityType BULLET = + Registry.register( + Registries.ENTITY_TYPE, + new Identifier("szar", "bullet"), + FabricEntityTypeBuilder.create(SpawnGroup.MISC, BulletEntity::new) + .dimensions(EntityDimensions.fixed(0.25F, 0.25F)) + .trackRangeBlocks(64) + .trackedUpdateRate(20) + .build() + ); + public static final Item AK47 = Registry.register( + Registries.ITEM, + new Identifier("szar", "ak47"), + new AK47Item(new Item.Settings().maxCount(1)) + ); + public static final Item CHEMICAL_WORKBENCH_ITEM = Registry.register( Registries.ITEM, new Identifier(MOD_ID, "chemical_workbench"), @@ -683,17 +682,17 @@ public class Szar implements ModInitializer { new Identifier(MOD_ID, "hitler_spawn_egg"), new SpawnEggItem( HitterEntityType, - 0x000000, + 0xC4A484, 0xFF0000, new Item.Settings() ) ); public static final Item NAZI_SPAWNEGG = Registry.register( Registries.ITEM, - new Identifier(MOD_ID, "hitler_spawn_egg"), + new Identifier(MOD_ID, "nazi_spawn_egg"), new SpawnEggItem( NaziEntityType, - 0x000000, + 0x654321, 0xFF0000, new Item.Settings() ) diff --git a/src/main/resources/assets/szar/lang/en_us.json b/src/main/resources/assets/szar/lang/en_us.json index ae81f3c..0c4bd1d 100644 --- a/src/main/resources/assets/szar/lang/en_us.json +++ b/src/main/resources/assets/szar/lang/en_us.json @@ -35,5 +35,10 @@ "entity.szar.gypsy": "Cigány", "entity.szar.plane": "Plane", "entity.szar.hitler": "Hitler", - "item.szar.hitler_spawn_egg":"Hitler Spawn Egg" + "item.szar.hitler_spawn_egg":"Hitler Spawn Egg", + "entity.szar.nazi": "Nazi", + "item.szar.nazi_spawn_egg":"Nazi Spawn Egg", + "item.szar.bullet": "Bullet", + "item.szar.ak47": "AK47", + "entity.szar.bullet": "Bullet" } diff --git a/src/main/resources/assets/szar/models/item/AK47.json b/src/main/resources/assets/szar/models/item/AK47.json new file mode 100644 index 0000000..eca5304 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/AK47.json @@ -0,0 +1,89 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "textures": { + "0": "szar:item/ak47", + "particle": "szar:item/ak47" + }, + "elements": [ + { + "from": [7, 0, 7], + "to": [9, 7, 9], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 0, 9]}, + "faces": { + "north": {"uv": [4, 4, 6, 11], "texture": "#0"}, + "east": {"uv": [6, 4, 8, 11], "texture": "#0"}, + "south": {"uv": [8, 4, 10, 11], "texture": "#0"}, + "west": {"uv": [10, 0, 12, 7], "texture": "#0"}, + "up": {"uv": [12, 15, 10, 13], "texture": "#0"}, + "down": {"uv": [14, 13, 12, 15], "texture": "#0"} + } + }, + { + "from": [7, 6, 3], + "to": [9, 8, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 10]}, + "faces": { + "north": {"uv": [0, 14, 2, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 10, 2], "texture": "#0"}, + "south": {"uv": [2, 14, 4, 16], "texture": "#0"}, + "west": {"uv": [0, 2, 10, 4], "texture": "#0"}, + "up": {"uv": [2, 14, 0, 4], "texture": "#0"}, + "down": {"uv": [4, 4, 2, 14], "texture": "#0"} + } + }, + { + "from": [7, 4, 13], + "to": [9, 8, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 10]}, + "faces": { + "north": {"uv": [10, 7, 12, 11], "texture": "#0"}, + "east": {"uv": [4, 11, 6, 15], "texture": "#0"}, + "south": {"uv": [6, 11, 8, 15], "texture": "#0"}, + "west": {"uv": [8, 11, 10, 15], "texture": "#0"}, + "up": {"uv": [16, 4, 14, 2], "texture": "#0"}, + "down": {"uv": [16, 4, 14, 6], "texture": "#0"} + } + }, + { + "from": [7, 5, 15], + "to": [9, 7, 19], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 7, 15]}, + "faces": { + "north": {"uv": [14, 6, 16, 8], "texture": "#0"}, + "east": {"uv": [10, 11, 14, 13], "texture": "#0"}, + "south": {"uv": [14, 8, 16, 10], "texture": "#0"}, + "west": {"uv": [12, 0, 16, 2], "texture": "#0"}, + "up": {"uv": [14, 6, 12, 2], "texture": "#0"}, + "down": {"uv": [14, 6, 12, 10], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 4, -2.5] + }, + "firstperson_righthand": { + "translation": [0, 5.5, -1.75] + }, + "firstperson_lefthand": { + "translation": [0, 5.5, -1.75] + }, + "ground": { + "rotation": [66, 180, 0], + "translation": [0, -4, 4], + "scale": [0.67, 0.67, 0.67] + }, + "gui": { + "rotation": [0, 90, 0], + "translation": [-2.5, 3, 0] + }, + "head": { + "translation": [0, 9.75, -9.25] + }, + "fixed": { + "rotation": [0, -90, 0], + "translation": [2.25, 2.75, -0.25] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/models/item/bullet.json b/src/main/resources/assets/szar/models/item/bullet.json new file mode 100644 index 0000000..64f530a --- /dev/null +++ b/src/main/resources/assets/szar/models/item/bullet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:entity/bullet" + } +} diff --git a/src/main/resources/assets/szar/models/item/nazi_spawn_egg.json b/src/main/resources/assets/szar/models/item/nazi_spawn_egg.json new file mode 100644 index 0000000..ddd1559 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/nazi_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/src/main/resources/assets/szar/textures/entity/bullet.png b/src/main/resources/assets/szar/textures/entity/bullet.png new file mode 100644 index 0000000..12875e1 Binary files /dev/null and b/src/main/resources/assets/szar/textures/entity/bullet.png differ diff --git a/src/main/resources/assets/szar/textures/entity/nazi.png b/src/main/resources/assets/szar/textures/entity/nazi.png new file mode 100644 index 0000000..8cdaf54 Binary files /dev/null and b/src/main/resources/assets/szar/textures/entity/nazi.png differ diff --git a/src/main/resources/assets/szar/textures/item/ak47.png b/src/main/resources/assets/szar/textures/item/ak47.png new file mode 100644 index 0000000..e129f64 Binary files /dev/null and b/src/main/resources/assets/szar/textures/item/ak47.png differ