diff --git a/gradle.properties b/gradle.properties index fa5585a..047c77c 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=26.2.27.1 +mod_version=26.2.28 maven_group=dev.tggamesyt archives_base_name=szar # Dependencies diff --git a/src/blockbench_models/SlotMachine.bbmodel b/src/blockbench_models/SlotMachine.bbmodel new file mode 100644 index 0000000..ccfa314 --- /dev/null +++ b/src/blockbench_models/SlotMachine.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"java_block","box_uv":false},"name":"SlotMachine","parent":"","java_block_version":"1.9.0","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":4,"height":4},"elements":[{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,0,10],"to":[16,24,16],"autouv":0,"color":8,"origin":[0,0,14],"faces":{"north":{"uv":[0,0,0.75,1.5],"texture":0},"east":{"uv":[0,1.5,0.375,3],"texture":0},"south":{"uv":[0.75,0,1.5,1.5],"texture":0},"west":{"uv":[1.5,0,1.875,1.5],"texture":0},"up":{"uv":[2.625,0.375,1.875,0],"texture":0},"down":{"uv":[2.625,0.375,1.875,0.75],"texture":0}},"type":"cube","uuid":"48103a53-022d-9e36-137a-fc1bc7ee668a"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,0,4],"to":[16,12,10],"autouv":0,"color":8,"origin":[0,0,8],"faces":{"north":{"uv":[0.375,1.5,1.125,2.25],"texture":0},"east":{"uv":[1.875,0.75,2.25,1.5],"texture":0},"south":{"uv":[1.125,1.5,1.875,2.25],"texture":0},"west":{"uv":[1.875,1.5,2.25,2.25],"texture":0},"up":{"uv":[1.125,2.625,0.375,2.25],"texture":0},"down":{"uv":[3,0.75,2.25,1.125],"texture":0}},"type":"cube","uuid":"4f36edc8-e1d8-2d14-d1c7-ad443b287bda"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,19,8],"to":[16,24,9],"autouv":0,"color":8,"rotation":[-22.5,0,0],"origin":[10,24,9],"faces":{"north":{"uv":[1.125,2.25,1.875,2.5625],"texture":0},"east":{"uv":[2.0625,2.5,2.125,2.8125],"texture":0},"south":{"uv":[2.25,1.125,3,1.4375],"texture":0},"west":{"uv":[2.125,2.5,2.1875,2.8125],"texture":0},"up":{"uv":[3,1.75,2.25,1.6875],"texture":0},"down":{"uv":[3,1.75,2.25,1.8125],"texture":0}},"type":"cube","uuid":"cd21b245-9db2-4091-788b-d4b2536c7597"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,22,9],"to":[16,24,10],"autouv":0,"color":8,"origin":[10,24,10],"faces":{"north":{"uv":[2.25,1.4375,3,1.5625],"texture":0},"east":{"uv":[1.25,2.5625,1.3125,2.6875],"texture":0},"south":{"uv":[2.25,1.5625,3,1.6875],"texture":0},"west":{"uv":[1.3125,2.5625,1.375,2.6875],"texture":0},"up":{"uv":[3,1.875,2.25,1.8125],"texture":0},"down":{"uv":[2.625,2.25,1.875,2.3125],"texture":0}},"type":"cube","uuid":"9b898315-c63d-e41e-0c50-342e65c59ac7"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[2,9,9],"to":[3,16,10],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.4375,2.3125,2.5,2.75],"texture":0},"east":{"uv":[1.875,2.5,1.9375,2.9375],"texture":0},"south":{"uv":[1.9375,2.5,2,2.9375],"texture":0},"west":{"uv":[2,2.5,2.0625,2.9375],"texture":0},"up":{"uv":[2.6875,0.1875,2.625,0.125],"texture":0},"down":{"uv":[2.6875,0.1875,2.625,0.25],"texture":0}},"type":"cube","uuid":"b0e4f115-58a4-7824-1c3d-59d891aeab10"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[2,7,9],"to":[4,9,10],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.5,2.4375,2.625,2.5625],"texture":0},"east":{"uv":[2.5,2.5625,2.5625,2.6875],"texture":0},"south":{"uv":[1.125,2.5625,1.25,2.6875],"texture":0},"west":{"uv":[2.5625,2.5625,2.625,2.6875],"texture":0},"up":{"uv":[2.75,0.0625,2.625,0],"texture":0},"down":{"uv":[2.75,0.0625,2.625,0.125],"texture":0}},"type":"cube","uuid":"1d701cf8-b350-a42c-4d9d-ce78a11d94d0"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[1,16,8],"to":[4,19,11],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.25,1.875,2.4375,2.0625],"texture":0},"east":{"uv":[2.25,2.0625,2.4375,2.25],"texture":0},"south":{"uv":[1.875,2.3125,2.0625,2.5],"texture":0},"west":{"uv":[2.0625,2.3125,2.25,2.5],"texture":0},"up":{"uv":[2.4375,2.5,2.25,2.3125],"texture":0},"down":{"uv":[2.625,1.875,2.4375,2.0625],"texture":0}},"type":"cube","uuid":"6a9e5538-f204-935b-f59b-dd3c2126f6bc"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[12,12,5],"to":[14,13,7],"autouv":0,"color":1,"origin":[0,1,8],"faces":{"north":{"uv":[2.4375,2.1875,2.5625,2.25],"texture":0},"east":{"uv":[1.375,2.5625,1.5,2.625],"texture":0},"south":{"uv":[1.5,2.5625,1.625,2.625],"texture":0},"west":{"uv":[1.625,2.5625,1.75,2.625],"texture":0},"up":{"uv":[2.5625,2.1875,2.4375,2.0625],"texture":0},"down":{"uv":[2.3125,2.5,2.1875,2.625],"texture":0}},"type":"cube","uuid":"7542442f-5bac-133f-9a69-33076f1972d8"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[8,12,5],"to":[10,13,7],"autouv":0,"color":1,"origin":[-4,1,8],"faces":{"north":{"uv":[1.75,2.5625,1.875,2.625],"texture":0},"east":{"uv":[2.5625,2.0625,2.6875,2.125],"texture":0},"south":{"uv":[2.5625,2.125,2.6875,2.1875],"texture":0},"west":{"uv":[2.5625,2.1875,2.6875,2.25],"texture":0},"up":{"uv":[2.4375,2.625,2.3125,2.5],"texture":0},"down":{"uv":[2.625,2.3125,2.5,2.4375],"texture":0}},"type":"cube","uuid":"9e2e52aa-3fad-6a78-064b-bf150d0c93ac"},{"name":"lower_screen","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[6,2,3.99],"to":[14,10,3.99],"autouv":0,"color":7,"origin":[-6,2,5],"faces":{"north":{"uv":[0,0,4,4],"texture":1},"east":{"uv":[0,0,0,2],"texture":1},"south":{"uv":[0,4,0,4],"texture":1},"west":{"uv":[0,0,0,2],"texture":1},"up":{"uv":[2,0,0,0],"texture":1},"down":{"uv":[2,0,0,0],"texture":1}},"type":"cube","uuid":"c044db36-27b1-36eb-c983-0d2cfd4fb757"},{"name":"upper_screen","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,19,7.99],"to":[16,24,7.99],"autouv":0,"color":3,"rotation":[-22.5,0,0],"origin":[10,24,8.99],"faces":{"north":{"uv":[0,0,3,1.25],"texture":2},"east":{"uv":[0,0,0,1.25],"texture":2},"south":{"uv":[0,1.25,3,2.5],"texture":2},"west":{"uv":[0,0,0,1.25],"texture":2},"up":{"uv":[3,0,0,0],"texture":2},"down":{"uv":[3,0,0,0],"texture":2}},"type":"cube","uuid":"5060efe0-74ac-7d91-a4a3-d424cfaa2599"},{"name":"slot_3_up","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[6,17,9.99],"to":[8,19,9.99],"autouv":0,"color":6,"origin":[-6,6,11],"faces":{"north":{"uv":[0,0,4,4],"texture":10},"east":{"uv":[3,3,3,5],"texture":10},"south":{"uv":[12,3,14,5],"texture":10},"west":{"uv":[5,3,5,5],"texture":10},"up":{"uv":[12,5,14,5],"texture":10},"down":{"uv":[12,3,14,3],"texture":10}},"type":"cube","uuid":"3da658ae-0d27-1d36-e831-ac9b7b415cdc"},{"name":"slot_1_up","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[12,17,9.99],"to":[14,19,9.99],"autouv":0,"color":6,"origin":[0,6,11],"faces":{"north":{"uv":[0,0,4,4],"texture":4},"east":{"uv":[3,3,3,5],"texture":4},"south":{"uv":[12,3,14,5],"texture":4},"west":{"uv":[5,3,5,5],"texture":4},"up":{"uv":[12,5,14,5],"texture":4},"down":{"uv":[12,3,14,3],"texture":4}},"type":"cube","uuid":"dd15bc27-cff0-d451-57e0-645528f76388"},{"name":"slot_2","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[9,15,9.99],"to":[11,17,9.99],"autouv":0,"color":0,"origin":[-3,4,11],"faces":{"north":{"uv":[0,0,4,4],"texture":6},"east":{"uv":[3,3,3,5],"texture":6},"south":{"uv":[12,3,14,5],"texture":6},"west":{"uv":[5,3,5,5],"texture":6},"up":{"uv":[12,5,14,5],"texture":6},"down":{"uv":[12,3,14,3],"texture":6}},"type":"cube","uuid":"8c783213-e832-0e23-5638-92121cff815a"},{"name":"slot_3","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[6,15,9.99],"to":[8,17,9.99],"autouv":0,"color":0,"origin":[-6,4,11],"faces":{"north":{"uv":[0,0,4,4],"texture":9},"east":{"uv":[3,3,3,5],"texture":9},"south":{"uv":[12,3,14,5],"texture":9},"west":{"uv":[5,3,5,5],"texture":9},"up":{"uv":[12,5,14,5],"texture":9},"down":{"uv":[12,3,14,3],"texture":9}},"type":"cube","uuid":"16b42135-0f34-4004-3176-da2096dd6b31"},{"name":"slot_1_down","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[12,13,9.99],"to":[14,15,9.99],"autouv":0,"color":7,"origin":[0,2,11],"faces":{"north":{"uv":[0,0,4,4],"texture":7},"east":{"uv":[3,3,3,5],"texture":7},"south":{"uv":[12,3,14,5],"texture":7},"west":{"uv":[5,3,5,5],"texture":7},"up":{"uv":[12,5,14,5],"texture":7},"down":{"uv":[12,3,14,3],"texture":7}},"type":"cube","uuid":"40d8a0aa-dcfc-1934-65e4-1d5db6051665"},{"name":"slot_2_down","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[9,13,9.99],"to":[11,15,9.99],"autouv":0,"color":7,"origin":[-3,2,11],"faces":{"north":{"uv":[0,0,4,4],"texture":5},"east":{"uv":[3,3,3,5],"texture":5},"south":{"uv":[12,3,14,5],"texture":5},"west":{"uv":[5,3,5,5],"texture":5},"up":{"uv":[12,5,14,5],"texture":5},"down":{"uv":[12,3,14,3],"texture":5}},"type":"cube","uuid":"47bfb034-0f8f-5110-70e6-10ed6bf4055b"},{"name":"slot_3_down","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[6,13,9.99],"to":[8,15,9.99],"autouv":0,"color":7,"origin":[-6,2,11],"faces":{"north":{"uv":[0,0,4,4],"texture":11},"east":{"uv":[3,3,3,5],"texture":11},"south":{"uv":[12,3,14,5],"texture":11},"west":{"uv":[5,3,5,5],"texture":11},"up":{"uv":[12,5,14,5],"texture":11},"down":{"uv":[12,3,14,3],"texture":11}},"type":"cube","uuid":"d00998fe-8855-6545-b282-a521bc017554"},{"name":"slot_2_up","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[9,17,9.99],"to":[11,19,9.99],"autouv":0,"color":6,"origin":[-3,6,11],"faces":{"north":{"uv":[0,0,4,4],"texture":8},"east":{"uv":[3,3,3,5],"texture":8},"south":{"uv":[12,3,14,5],"texture":8},"west":{"uv":[5,3,5,5],"texture":8},"up":{"uv":[12,5,14,5],"texture":8},"down":{"uv":[12,3,14,3],"texture":8}},"type":"cube","uuid":"7dea88eb-8aa0-adeb-7f19-7c389c339085"},{"name":"slot_1","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[12,15,9.99],"to":[14,17,9.99],"autouv":0,"color":0,"origin":[0,4,11],"faces":{"north":{"uv":[0,0,4,4],"texture":3},"east":{"uv":[0,0,0,2],"texture":3},"south":{"uv":[0,0,0,0],"texture":3},"west":{"uv":[0,0,0,2],"texture":3},"up":{"uv":[2,0,0,0],"texture":3},"down":{"uv":[2,0,0,0],"texture":3}},"type":"cube","uuid":"632fe1dc-a1c9-f2ea-1ea9-79752beddd49"}],"groups":[{"uuid":"e39a778d-9f80-3480-4cb0-d34a2cabb289","export":true,"locked":false,"origin":[2,18,9],"rotation":[0,0,0],"color":0,"name":"handle","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"d87c15e1-4672-153b-073a-9508c110198c","export":true,"locked":false,"origin":[0,0,14],"rotation":[0,0,0],"color":0,"name":"main_body","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false},{"uuid":"283a1485-5dc7-254f-e787-e879f1ed3d97","export":true,"locked":false,"origin":[0,6,11],"rotation":[0,0,0],"color":0,"name":"dynamic","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"d87c15e1-4672-153b-073a-9508c110198c","isOpen":true,"children":["48103a53-022d-9e36-137a-fc1bc7ee668a","4f36edc8-e1d8-2d14-d1c7-ad443b287bda","cd21b245-9db2-4091-788b-d4b2536c7597","9b898315-c63d-e41e-0c50-342e65c59ac7","7542442f-5bac-133f-9a69-33076f1972d8","9e2e52aa-3fad-6a78-064b-bf150d0c93ac"]},{"uuid":"e39a778d-9f80-3480-4cb0-d34a2cabb289","isOpen":false,"children":["6a9e5538-f204-935b-f59b-dd3c2126f6bc","b0e4f115-58a4-7824-1c3d-59d891aeab10","1d701cf8-b350-a42c-4d9d-ce78a11d94d0"]},{"uuid":"283a1485-5dc7-254f-e787-e879f1ed3d97","isOpen":true,"children":["c044db36-27b1-36eb-c983-0d2cfd4fb757","5060efe0-74ac-7d91-a4a3-d424cfaa2599","dd15bc27-cff0-d451-57e0-645528f76388","632fe1dc-a1c9-f2ea-1ea9-79752beddd49","40d8a0aa-dcfc-1934-65e4-1d5db6051665","8c783213-e832-0e23-5638-92121cff815a","47bfb034-0f8f-5110-70e6-10ed6bf4055b","7dea88eb-8aa0-adeb-7f19-7c389c339085","16b42135-0f34-4004-3176-da2096dd6b31","3da658ae-0d27-1d36-e831-ac9b7b415cdc","d00998fe-8855-6545-b282-a521bc017554"]}],"textures":[{"name":"slot_machine.png","relative_path":"../main/resources/assets/szar/textures/block/slot_machine.png","folder":"block","namespace":"szar","id":"0","group":"","width":64,"height":64,"uv_width":64,"uv_height":64,"particle":true,"use_as_default":false,"layers_enabled":true,"sync_to_project":"4d3a6b97-e64b-55c8-918e-248c5c0f8fe3","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":"67edb0ff-f82b-18cc-231c-8197bc9e6bd9","layers":[{"name":"layer","offset":[0,0],"scale":[1,1],"opacity":100,"visible":true,"blend_mode":"default","width":64,"height":64,"data_url":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACqElEQVR4Aexa3U3EMAwOtwXvMAaPjMEENwCMcAxwEzAGj4wB7wzAAEe+SqmsKE5j12maKqjfJee/2F9MlUh3cs7deoBP8gZcfL6WAAG+ftnjE3AlCFFj2yDfw6giAIl/+Y8fBtB5lfnzbh7ROTUB95lkcrqMWxOVmoCts62x+6hhIuB6vboSwOFomAg4WlGSegYBEraOaDs64Ii7KqlpdACOqX/nsysBbCXsWtq++WApePGqp3oHcKRBHmNVJUrn6gTQ+wK9I3ByZR1qt+oE0My4OwInp75W8zjOpgTEi+/h+yBgD7vQMofRAS3Z38Pa6g74zWTP6aTyzBJmKjUBTz6FBwbQedX0UJsS+eS04YeKgNSRNCVDHVI5fLbECQnGC0LGIbYN3+Nj7dL34Nd6zHbAUhFBry0i+NNRG0vrlyVAG1Tih/sBvRdIfC1smxPQ8h4AApsTgCQo6L9DyZz6aua7I4B7+XJyTdHUZ3cE0OTonOsGaqOZd0OApjj4LGEQsMRQbT13P8C6t2/nAMzxDsBojeYdgPsBvS9YF7gUL0sAWC/B0iKcPhWb2t49Oge4in9ZArg3byxHfqlicjL4SIA1JfaltkkCai1WmlSwu/kJcgH8tMozE9D6TF6luoKgMwGtz+Rcrq9eAfihyjMTUCV6JijaOyCYodUB9/HpJgRFxdGMgLiYijmbhmYJmHaicKmULWQ55EJfXp4dkLOx0rEESBfAz9iAULTUn7NHTIDTr5WbEbA2kZR/zcLDejMBuTN5MK41WneNJM+ZgNZncknSlrYTAakjq+UiqVho74CUXiuT+p1C+8WjNFCv9lMH9Jq8Rd6DAAsWe44xOqDn3bPIfXSABYs9xxgd0PPuWeQ+OsCCxZ5jjA7oefcsch8dYMFiyxhr1/4HAAD//3KIE5EAAAAGSURBVAMARNj/QbNxTPgAAAAASUVORK5CYII="}],"source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACqElEQVR4Aexa3U3EMAwOtwXvMAaPjMEENwCMcAxwEzAGj4wB7wzAAEe+SqmsKE5j12maKqjfJee/2F9MlUh3cs7deoBP8gZcfL6WAAG+ftnjE3AlCFFj2yDfw6giAIl/+Y8fBtB5lfnzbh7ROTUB95lkcrqMWxOVmoCts62x+6hhIuB6vboSwOFomAg4WlGSegYBEraOaDs64Ii7KqlpdACOqX/nsysBbCXsWtq++WApePGqp3oHcKRBHmNVJUrn6gTQ+wK9I3ByZR1qt+oE0My4OwInp75W8zjOpgTEi+/h+yBgD7vQMofRAS3Z38Pa6g74zWTP6aTyzBJmKjUBTz6FBwbQedX0UJsS+eS04YeKgNSRNCVDHVI5fLbECQnGC0LGIbYN3+Nj7dL34Nd6zHbAUhFBry0i+NNRG0vrlyVAG1Tih/sBvRdIfC1smxPQ8h4AApsTgCQo6L9DyZz6aua7I4B7+XJyTdHUZ3cE0OTonOsGaqOZd0OApjj4LGEQsMRQbT13P8C6t2/nAMzxDsBojeYdgPsBvS9YF7gUL0sAWC/B0iKcPhWb2t49Oge4in9ZArg3byxHfqlicjL4SIA1JfaltkkCai1WmlSwu/kJcgH8tMozE9D6TF6luoKgMwGtz+Rcrq9eAfihyjMTUCV6JijaOyCYodUB9/HpJgRFxdGMgLiYijmbhmYJmHaicKmULWQ55EJfXp4dkLOx0rEESBfAz9iAULTUn7NHTIDTr5WbEbA2kZR/zcLDejMBuTN5MK41WneNJM+ZgNZncknSlrYTAakjq+UiqVho74CUXiuT+p1C+8WjNFCv9lMH9Jq8Rd6DAAsWe44xOqDn3bPIfXSABYs9xxgd0PPuWeQ+OsCCxZ5jjA7oefcsch8dYMFiyxhr1/4HAAD//3KIE5EAAAAGSURBVAMARNj/QbNxTPgAAAAASUVORK5CYII="},{"name":"lower_screen_info.png","relative_path":"../main/resources/assets/szar/textures/block/lower_screen_info.png","folder":"block","namespace":"szar","id":"1","group":"","width":512,"height":512,"uv_width":16,"uv_height":16,"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":"dff31a4a-e9d6-d0e8-935e-c28d9ed1885f","source":"data:image/png;base64,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"},{"name":"texture.png","relative_path":"../main/resources/assets/szar/textures/block/texture.png","folder":"block","namespace":"szar","id":"2","group":"","width":32,"height":32,"uv_width":16,"uv_height":16,"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":"afb827c4-2ae7-3d20-b3a3-16ebdbf248aa","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaUlEQVR4AeyUSQoAIQwEe+bR84j5tEYC3lwuLR4KbFAStCgwr6RiTlw/Xg1A+oLBkfG7vZIA/Xh+AwAGMJAG/kdyZONXJ8BGo6sFAAxgAANXGIg5LGemQ/QKA1NCdxEDGMAABuwGVoOsAgAA//8rh1tVAAAABklEQVQDAJQ6REE4cobcAAAAAElFTkSuQmCC"},{"name":"slot_1.png","relative_path":"../main/resources/assets/szar/textures/block/slot_1.png","folder":"block","namespace":"szar","id":"3","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"b97b93a0-f247-f808-179f-305e5bdb0abe","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_1_up.png","relative_path":"../main/resources/assets/szar/textures/block/slot_1_up.png","folder":"block","namespace":"szar","id":"4","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"4e450878-228f-3317-e84a-1e772b4e6909","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_1_down.png","relative_path":"../main/resources/assets/szar/textures/block/slot_1_down.png","folder":"block","namespace":"szar","id":"5","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"a65c776c-7e40-31a7-34d9-522255f91d51","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2.png","relative_path":"../main/resources/assets/szar/textures/block/slot_2.png","folder":"block","namespace":"szar","id":"6","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"36cdf80d-11d3-fc14-9e20-254e9461d124","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2_down.png","relative_path":"../main/resources/assets/szar/textures/block/slot_2_down.png","folder":"block","namespace":"szar","id":"7","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"9aefd789-4950-0d98-b5ff-c408fba7d85e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2_up.png","relative_path":"../main/resources/assets/szar/textures/block/slot_2_up.png","folder":"block","namespace":"szar","id":"8","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"8c5c13b5-12cd-0eb5-a51b-38bb4b9ec91e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3.png","relative_path":"../main/resources/assets/szar/textures/block/slot_3.png","folder":"block","namespace":"szar","id":"9","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"43bbae2a-38b9-1982-73fa-2a7a8f1dc513","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3_up.png","relative_path":"../main/resources/assets/szar/textures/block/slot_3_up.png","folder":"block","namespace":"szar","id":"10","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"730ee38d-0188-1080-f712-d96b4b185867","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3_down.png","relative_path":"../main/resources/assets/szar/textures/block/slot_3_down.png","folder":"block","namespace":"szar","id":"11","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"97bd466e-8ab5-1494-2b40-558cbdeada2e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="}],"display":{"thirdperson_righthand":{"translation":[0,-1.5,-3.75],"scale":[0.5,0.5,0.5]},"thirdperson_lefthand":{"translation":[2,-1.5,-3.75],"scale":[0.5,0.5,0.5]},"firstperson_righthand":{"rotation":[0,160,0],"translation":[4,0,-2],"scale":[0.5,0.5,0.5]},"firstperson_lefthand":{"rotation":[0,160,0],"translation":[1.5,0,-2],"scale":[0.5,0.5,0.5]},"ground":{"translation":[-1,2.5,0],"scale":[0.5,0.5,0.5]},"head":{"translation":[-2,3,-1.75]},"fixed":{"translation":[0,0,-1],"scale":[0.5,0.5,0.5]},"on_shelf":{"rotation":[0,-180,0],"translation":[0,0,2.5]}}} \ No newline at end of file diff --git a/src/client/java/dev/tggamesyt/szar/client/SlotMachineScreen.java b/src/client/java/dev/tggamesyt/szar/client/SlotMachineScreen.java new file mode 100644 index 0000000..b0376a4 --- /dev/null +++ b/src/client/java/dev/tggamesyt/szar/client/SlotMachineScreen.java @@ -0,0 +1,149 @@ +package dev.tggamesyt.szar.client; + +import com.mojang.blaze3d.systems.RenderSystem; +import dev.tggamesyt.szar.SlotMachineBlockEntity; +import dev.tggamesyt.szar.SlotMachineScreenHandler; +import dev.tggamesyt.szar.Szar; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import dev.tggamesyt.szar.SlotSymbol; + +public class SlotMachineScreen extends HandledScreen { + + private static final Identifier BG_TEXTURE = + new Identifier(Szar.MOD_ID, "textures/gui/slot_machine.png"); + + private static final Identifier HANDLE_1 = + new Identifier(Szar.MOD_ID, "textures/gui/handle1.png"); + private static final Identifier HANDLE_2 = + new Identifier(Szar.MOD_ID, "textures/gui/handle2.png"); + private static final Identifier HANDLE_3 = + new Identifier(Szar.MOD_ID, "textures/gui/handle3.png"); + + private final int handleX = 120; + private final int handleY = 20; + + private boolean handleClicked = false; + private int handleAnimTicks = 0; + private Identifier currentHandleTexture = HANDLE_1; + + public SlotMachineScreen(SlotMachineScreenHandler handler, + PlayerInventory inventory, + Text title) { + super(handler, inventory, title); + this.backgroundWidth = 176; + this.backgroundHeight = 166; + } + + // ---------------------------- + // BACKGROUND + // ---------------------------- + + @Override + protected void drawBackground(DrawContext context, float delta, int mouseX, int mouseY) { + int guiLeft = (width - backgroundWidth) / 2; + int guiTop = (height - backgroundHeight) / 2; + + context.drawTexture(BG_TEXTURE, guiLeft, guiTop, + 0, 0, backgroundWidth, backgroundHeight); + + drawReels(context, guiLeft, guiTop); + } + + private void drawReels(DrawContext context, int guiLeft, int guiTop) { + + SlotMachineBlockEntity be = handler.blockEntity; + if (be == null) return; + + int reelX = guiLeft + 70; + int reelY = guiTop + 35; + + for (int i = 0; i < 3; i++) { + + int idx = be.getSymbol(i); + if (idx < 0 || idx >= SlotSymbol.values().length) + idx = 0; + + SlotSymbol symbol = SlotSymbol.values()[idx]; + ItemStack stack = new ItemStack(symbol.item); + + context.drawItem(stack, reelX + i * 18, reelY); + } + } + + // ---------------------------- + // RENDER + // ---------------------------- + + @Override + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + + renderBackground(context); + super.render(context, mouseX, mouseY, delta); + if (client != null && client.player != null) { + handler.tick(client.player); + } + drawMouseoverTooltip(context, mouseX, mouseY); + + int guiLeft = (width - backgroundWidth) / 2; + int guiTop = (height - backgroundHeight) / 2; + + // Handle animation + if (handleClicked) { + handleAnimTicks++; + + if (handleAnimTicks < 5) { + currentHandleTexture = HANDLE_2; + } else if (handleAnimTicks < 10) { + currentHandleTexture = HANDLE_3; + } else { + currentHandleTexture = HANDLE_1; + handleClicked = false; + handleAnimTicks = 0; + + // CALL SCREEN HANDLER LOGIC HERE + if (client != null && client.player != null && client.interactionManager != null) { + client.interactionManager.clickButton(handler.syncId, 0); + } + } + } + + // Draw handle + context.drawTexture(currentHandleTexture, + guiLeft + handleX, + guiTop + handleY, + 0, 0, + 32, 32, + 32, 32); + } + + // ---------------------------- + // MOUSE + // ---------------------------- + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + + int guiLeft = (width - backgroundWidth) / 2; + int guiTop = (height - backgroundHeight) / 2; + + double relX = mouseX - (guiLeft + handleX); + double relY = mouseY - (guiTop + handleY); + + if (relX >= 0 && relX <= 32 && relY >= 0 && relY <= 32) { + handleClicked = true; + handleAnimTicks = 0; + return true; + } + + return super.mouseClicked(mouseX, mouseY, button); + } +} \ No newline at end of file diff --git a/src/client/java/dev/tggamesyt/szar/client/SzarClient.java b/src/client/java/dev/tggamesyt/szar/client/SzarClient.java index b19d50d..23952e3 100644 --- a/src/client/java/dev/tggamesyt/szar/client/SzarClient.java +++ b/src/client/java/dev/tggamesyt/szar/client/SzarClient.java @@ -9,12 +9,15 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallba import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.ingame.HandledScreens; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.render.entity.FlyingItemEntityRenderer; import net.minecraft.client.render.entity.animation.Animation; @@ -86,6 +89,7 @@ public class SzarClient implements ClientModInitializer { }); ThirdpersonModelRegisterer.register(new Identifier(MOD_ID, "weed_joint"), new Identifier(MOD_ID, "weed_joint_in_hand")); ThirdpersonModelRegisterer.register(new Identifier(MOD_ID, "fasz"), new Identifier(MOD_ID, "fasz_in_hand")); + ThirdpersonModelRegisterer.register(new Identifier(MOD_ID, "slot_machine"), new Identifier(MOD_ID, "slot_machine_3d")); ClientTickEvents.END_CLIENT_TICK.register(client -> { if (client.player == null) return; @@ -224,6 +228,12 @@ public class SzarClient implements ClientModInitializer { }); } ); + /*BlockEntityRendererRegistry.register( + SLOT_MACHINE_BLOCKENTITY, + SlotMachineRenderer::new + );*/ + HandledScreens.register(Szar.SLOT_MACHINE_SCREEN_HANDLER_TYPE, SlotMachineScreen::new); + EntityRendererRegistry.register( Szar.NiggerEntityType, NiggerEntityRenderer::new diff --git a/src/main/java/dev/tggamesyt/szar/SlotMachineBlock.java b/src/main/java/dev/tggamesyt/szar/SlotMachineBlock.java new file mode 100644 index 0000000..342d247 --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/SlotMachineBlock.java @@ -0,0 +1,165 @@ +package dev.tggamesyt.szar; + +import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; +import net.minecraft.block.*; +import net.minecraft.block.entity.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.SimpleNamedScreenHandlerFactory; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.text.Text; +import net.minecraft.util.*; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.*; +import net.minecraft.util.shape.*; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +public class SlotMachineBlock extends Block implements BlockEntityProvider { + + public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + + public SlotMachineBlock(Settings settings) { + super(settings); + setDefaultState(getStateManager().getDefaultState().with(FACING, Direction.NORTH)); + } + + // ===== YOUR SHAPES ===== + + VoxelShape shape0 = VoxelShapes.cuboid(0.25f, 0f, 0.625f, 1f, 1.5f, 1f); + VoxelShape shape1 = VoxelShapes.cuboid(0.25f, 0f, 0.25f, 1f, 0.75f, 0.625f); + VoxelShape shape2 = VoxelShapes.cuboid(0.25f, 1.375f, 0.5625f, 1f, 1.5f, 0.625f); + VoxelShape shape3 = VoxelShapes.cuboid(0.75f, 0.75f, 0.3125f, 0.875f, 0.8125f, 0.4375f); + VoxelShape shape4 = VoxelShapes.cuboid(0.5f, 0.75f, 0.3125f, 0.625f, 0.8125f, 0.4375f); + VoxelShape shape5 = VoxelShapes.cuboid(0.0625f, 1f, 0.5f, 0.25f, 1.1875f, 0.6875f); + VoxelShape shape6 = VoxelShapes.cuboid(0.125f, 0.5625f, 0.5625f, 0.1875f, 1f, 0.625f); + VoxelShape shape7 = VoxelShapes.cuboid(0.125f, 0.4375f, 0.5625f, 0.25f, 0.5625f, 0.625f); + VoxelShape BASE_SHAPE = VoxelShapes.union(shape0, shape1, shape2, shape3, shape4, shape5, shape6, shape7); + + private static VoxelShape rotateShape(Direction from, Direction to, VoxelShape shape) { + VoxelShape[] buffer = new VoxelShape[]{shape, VoxelShapes.empty()}; + + int times = (to.getHorizontal() - from.getHorizontal() + 4) % 4; + + for (int i = 0; i < times; i++) { + buffer[0].forEachBox((minX, minY, minZ, maxX, maxY, maxZ) -> + buffer[1] = VoxelShapes.union(buffer[1], + VoxelShapes.cuboid(1 - maxZ, minY, minX, 1 - minZ, maxY, maxX)) + ); + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } + + @Override + public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return rotateShape(Direction.NORTH, state.get(FACING), BASE_SHAPE); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return getCollisionShape(state, world, pos, context); + } + + // ===== ROTATION ===== + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new SlotMachineBlockEntity(pos, state); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, + PlayerEntity player, Hand hand, BlockHitResult hit) { + + if (hand != Hand.MAIN_HAND) return ActionResult.PASS; + + BlockEntity blockEntity = world.getBlockEntity(pos); + if (!(blockEntity instanceof SlotMachineBlockEntity be)) { + return ActionResult.PASS; + } + + Vec3d hitVec = hit.getPos().subtract(pos.getX(), pos.getY(), pos.getZ()); + Direction facing = state.get(FACING); + + double x = hitVec.x; + double y = hitVec.y; + double z = hitVec.z; + + // Rotate based on facing (proper Minecraft rotation logic) + switch (facing) { + case NORTH -> { + // no change + } + case SOUTH -> { + x = 1 - x; + z = 1 - z; + } + case WEST -> { + double temp = x; + x = z; + z = 1 - temp; + } + case EAST -> { + double temp = x; + x = 1 - z; + z = temp; + } + } + + boolean isHandle = + x >= 0.0625 && x <= 0.25 && + y >= 0.5 && y <= 0.6875 && + z >= 0.4375 && z <= 1.1875; + if (!world.isClient) { + // Open the GUI (client will receive block position) + player.openHandledScreen(state.createScreenHandlerFactory(world, pos)); + } + + return ActionResult.SUCCESS; + } + @Override + public NamedScreenHandlerFactory createScreenHandlerFactory(BlockState state, World world, BlockPos pos) { + BlockEntity be = world.getBlockEntity(pos); + if (!(be instanceof SlotMachineBlockEntity slotBe)) return null; + + // Return an ExtendedScreenHandlerFactory that sends the BlockPos to the client + return new ExtendedScreenHandlerFactory() { + @Override + public void writeScreenOpeningData(ServerPlayerEntity player, PacketByteBuf buf) { + buf.writeBlockPos(pos); // send the block pos to client for the constructor + } + + @Override + public Text getDisplayName() { + return Text.literal("Slot Machine"); + } + + @Override + public ScreenHandler createMenu(int syncId, PlayerInventory inv, PlayerEntity player) { + return new SlotMachineScreenHandler(syncId, inv, slotBe); + } + }; + } +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/SlotMachineBlockEntity.java b/src/main/java/dev/tggamesyt/szar/SlotMachineBlockEntity.java new file mode 100644 index 0000000..421088c --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/SlotMachineBlockEntity.java @@ -0,0 +1,68 @@ +package dev.tggamesyt.szar; + +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket; +import net.minecraft.util.ItemScatterer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +import java.util.Random; + +public class SlotMachineBlockEntity extends BlockEntity { + + public final int[] currentSymbol = new int[3]; + public static final int TOTAL_SYMBOLS = 7; + + public SlotMachineBlockEntity(BlockPos pos, BlockState state) { + super(Szar.SLOT_MACHINE_BLOCKENTITY, pos, state); + } + + public void setSymbols(int s0, int s1, int s2) { + currentSymbol[0] = s0; + currentSymbol[1] = s1; + currentSymbol[2] = s2; + markDirty(); + if (world != null && !world.isClient) { + world.updateListeners(pos, getCachedState(), getCachedState(), 3); + } + } + + public int getSymbol(int i) { + return currentSymbol[i]; + } + + @Override + public void writeNbt(NbtCompound nbt) { + super.writeNbt(nbt); + for (int i = 0; i < 3; i++) { + nbt.putInt("Symbol" + i, currentSymbol[i]); + } + } + + @Override + public void readNbt(NbtCompound nbt) { + super.readNbt(nbt); + for (int i = 0; i < 3; i++) { + currentSymbol[i] = nbt.getInt("Symbol" + i); + } + } + + @Override + public Packet toUpdatePacket() { + return BlockEntityUpdateS2CPacket.create(this); + } + + @Override + public NbtCompound toInitialChunkDataNbt() { + NbtCompound nbt = new NbtCompound(); + writeNbt(nbt); + return nbt; + } +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/SlotMachineScreenHandler.java b/src/main/java/dev/tggamesyt/szar/SlotMachineScreenHandler.java new file mode 100644 index 0000000..5969ead --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/SlotMachineScreenHandler.java @@ -0,0 +1,246 @@ +package dev.tggamesyt.szar; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.SimpleInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.slot.Slot; +import net.minecraft.util.ItemScatterer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; + +import java.util.Random; + +public class SlotMachineScreenHandler extends ScreenHandler { + + public final SlotMachineBlockEntity blockEntity; + private final SimpleInventory betInventory = new SimpleInventory(1); + private final Random random = new Random(); + private final PlayerInventory playerInventory; + private int currentBetAmount = 0; + private ItemStack currentBetStack = ItemStack.EMPTY; + + private boolean spinning = false; + private int spinTicks = 0; + + private SlotSymbol final0, final1, final2; + + public SlotMachineScreenHandler(int syncId, PlayerInventory playerInv, SlotMachineBlockEntity blockEntity) { + super(Szar.SLOT_MACHINE_SCREEN_HANDLER_TYPE, syncId); + this.playerInventory = playerInv; + this.blockEntity = blockEntity; + + this.addSlot(new Slot(betInventory, 0, 44, 35) { + @Override + public boolean canInsert(ItemStack stack) { + return !spinning; + } + + @Override + public boolean canTakeItems(PlayerEntity playerEntity) { + return !spinning; + } + }); + + for (int y = 0; y < 3; y++) + for (int x = 0; x < 9; x++) + this.addSlot(new Slot(playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18)); + + for (int x = 0; x < 9; x++) + this.addSlot(new Slot(playerInv, x, 8 + x * 18, 142)); + } + + @Override + public boolean canUse(PlayerEntity player) { + return true; + } + + @Override + public boolean onButtonClick(PlayerEntity player, int id) { + + if (id != 0) return false; + if (spinning) return false; + + ItemStack bet = betInventory.getStack(0); + if (bet.isEmpty()) return false; + + // TAKE BET IMMEDIATELY + currentBetAmount = bet.getCount(); + currentBetStack = bet.copy(); + betInventory.setStack(0, ItemStack.EMPTY); + + spinning = true; + spinTicks = 60; + + final0 = SlotSymbol.roll(random); + final1 = rollWithBias(final0); + final2 = rollWithBias(final0, final1); + + return true; + } + + public void tick(PlayerEntity player) { + + if (!spinning) return; + + spinTicks--; + + // Animate random symbols during spin + if (spinTicks > 40) { + blockEntity.setSymbols( + random.nextInt(7), + random.nextInt(7), + random.nextInt(7) + ); + } + + // Lock first reel + if (spinTicks == 40) { + blockEntity.setSymbols( + final0.ordinal(), + random.nextInt(7), + random.nextInt(7) + ); + } + + // Lock second reel + if (spinTicks == 20) { + blockEntity.setSymbols( + final0.ordinal(), + final1.ordinal(), + random.nextInt(7) + ); + } + + // Lock third reel + if (spinTicks == 0) { + blockEntity.setSymbols( + final0.ordinal(), + final1.ordinal(), + final2.ordinal() + ); + + finishSpin(player); + spinning = false; + } + } + + private SlotSymbol rollWithBias(SlotSymbol... biasToward) { + + float bonusChance = 0.20f; // 20% bonus chance toward existing symbol + + float r = random.nextFloat(); + + if (r < bonusChance) { + return biasToward[random.nextInt(biasToward.length)]; + } + + return SlotSymbol.roll(random); + } + + private void finishSpin(PlayerEntity player) { + + int payout = 0; + + if (final0 == final1 && final1 == final2) { + payout = switch (final0) { + case SEVEN -> currentBetAmount * 100; + case BELL -> currentBetAmount * 15; + default -> currentBetAmount * 2; + }; + } + + if (payout > 0) { + Direction facing = blockEntity.getCachedState().get(SlotMachineBlock.FACING); + BlockPos drop = blockEntity.getPos().offset(facing); + + ItemScatterer.spawn( + player.getWorld(), + drop.getX(), + drop.getY(), + drop.getZ(), + new ItemStack(currentBetStack.getItem(), payout) + ); + } + + currentBetAmount = 0; + currentBetStack = ItemStack.EMPTY; + } + + @Override + public ItemStack quickMove(PlayerEntity player, int index) { + ItemStack newStack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + + if (slot.hasStack()) { + ItemStack original = slot.getStack(); + newStack = original.copy(); + + // Prevent shift-click while spinning + if (spinning) { + return ItemStack.EMPTY; + } + + // If clicking bet slot → move to player inventory + if (index == 0) { + if (!this.insertItem(original, 1, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + } + // If clicking player inventory → move to bet slot + else { + if (!this.insertItem(original, 0, 1, false)) { + return ItemStack.EMPTY; + } + } + + if (original.isEmpty()) { + slot.setStack(ItemStack.EMPTY); + } else { + slot.markDirty(); + } + } + + return newStack; + } + + @Override + public void sendContentUpdates() { + super.sendContentUpdates(); + + if (!spinning) return; + + spinTicks--; + + int reel0; + int reel1; + int reel2; + + if (spinTicks > 40) { + reel0 = random.nextInt(7); + } else { + reel0 = final0.ordinal(); + } + + if (spinTicks > 20) { + reel1 = random.nextInt(7); + } else { + reel1 = final1.ordinal(); + } + +// Reel 3 stops at tick 0 + if (spinTicks > 0) { + reel2 = random.nextInt(7); + } else { + reel2 = final2.ordinal(); + } + + blockEntity.setSymbols(reel0, reel1, reel2); + + if (spinTicks <= 0) { + finishSpin(playerInventory.player); + spinning = false; + } + } +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/SlotSymbol.java b/src/main/java/dev/tggamesyt/szar/SlotSymbol.java new file mode 100644 index 0000000..101d405 --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/SlotSymbol.java @@ -0,0 +1,39 @@ +package dev.tggamesyt.szar; + + +import net.minecraft.item.Item; +import net.minecraft.item.Items; + +public enum SlotSymbol { + SEVEN(Items.ENCHANTED_GOLDEN_APPLE), + BELL(Items.GOLDEN_APPLE), + APPLE(Items.APPLE), + SWEET_BERRIES(Items.SWEET_BERRIES), + GLOW_BERRIES(Items.GLOW_BERRIES), + MELON_SLICE(Items.MELON_SLICE), + CHORUS_FRUIT(Items.CHORUS_FRUIT); + + public final Item item; + + SlotSymbol(Item item) { + this.item = item; + } + + // Roll a random symbol according to the specified probabilities + public static SlotSymbol roll(java.util.Random random) { + float r = random.nextFloat(); + if (r < 0.0255f) return SEVEN; // 2.55% + else if (r < 0.0255f + 0.101f) return BELL; // 10.1% + else { + // 5 fruits, equally likely + int fruitIndex = random.nextInt(5); + switch (fruitIndex) { + case 0: return APPLE; + case 1: return SWEET_BERRIES; + case 2: return GLOW_BERRIES; + case 3: return MELON_SLICE; + default: return CHORUS_FRUIT; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/Szar.java b/src/main/java/dev/tggamesyt/szar/Szar.java index 940f7e3..f196840 100644 --- a/src/main/java/dev/tggamesyt/szar/Szar.java +++ b/src/main/java/dev/tggamesyt/szar/Szar.java @@ -22,6 +22,7 @@ import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRe import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.fabric.api.object.builder.v1.world.poi.PointOfInterestHelper; +import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; import net.minecraft.advancement.Advancement; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; @@ -41,6 +42,7 @@ import net.minecraft.registry.*; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.BiomeTags; import net.minecraft.registry.tag.BlockTags; +import net.minecraft.screen.ScreenHandlerType; import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; @@ -284,6 +286,7 @@ public class Szar implements ModInitializer { entries.add(Szar.BAITER_DISK); entries.add(Szar.MERL_SPAWNEGG); entries.add(Szar.EFN_DISK); + entries.add(Szar.SLOT_MACHINE); // nsfw entries.add(Szar.FASZITEM); entries.add(Szar.CNDM); @@ -681,11 +684,7 @@ public class Szar implements ModInitializer { }) ); }); - Registry.register( - Registries.ITEM, - new Identifier(MOD_ID, "towers"), - new BlockItem(OBELISK_CORE, new Item.Settings()) - ); + } public static ObeliskCoreBlockEntity findNearestObelisk(ServerWorld world, BlockPos center, int radius) { ObeliskCoreBlockEntity closest = null; @@ -774,10 +773,45 @@ public class Szar implements ModInitializer { OBELISK_CORE // block(s) this BE is linked to ).build(null) ); + public static final Item TOWERS_ITEM = Registry.register( + Registries.ITEM, + new Identifier(MOD_ID, "towers"), + new BlockItem(OBELISK_CORE, new Item.Settings()) + ); - - - + public static final ScreenHandlerType SLOT_MACHINE_SCREEN_HANDLER_TYPE = + ScreenHandlerRegistry.registerExtended( + new Identifier(Szar.MOD_ID, "slot_machine"), + (syncId, inv, buf) -> { + BlockPos pos = buf.readBlockPos(); + BlockEntity be = inv.player.getWorld().getBlockEntity(pos); + if (!(be instanceof SlotMachineBlockEntity blockEntity)) { + throw new IllegalStateException("BlockEntity is not a SlotMachineBlockEntity"); + } + return new SlotMachineScreenHandler(syncId, inv, blockEntity); + } + ); + public static final Block SLOT_MACHINE_BLOCK = Registry.register( + Registries.BLOCK, + new Identifier(MOD_ID, "slot_machine"), + new SlotMachineBlock( + AbstractBlock.Settings + .copy(Blocks.IRON_BLOCK) + ) + ); + public static final BlockEntityType SLOT_MACHINE_BLOCKENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, + new Identifier(MOD_ID, "slot_machine"), + FabricBlockEntityTypeBuilder.create( + SlotMachineBlockEntity::new, + SLOT_MACHINE_BLOCK // block(s) this BE is linked to + ).build(null) + ); + public static final Item SLOT_MACHINE = Registry.register( + Registries.ITEM, + new Identifier(MOD_ID, "slot_machine"), + new BlockItem(SLOT_MACHINE_BLOCK, new Item.Settings()) + ); public static final Feature CANNABIS_PATCH = Registry.register( Registries.FEATURE, diff --git a/src/main/resources/assets/szar/blockstates/slot_machine.json b/src/main/resources/assets/szar/blockstates/slot_machine.json new file mode 100644 index 0000000..844ed43 --- /dev/null +++ b/src/main/resources/assets/szar/blockstates/slot_machine.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "szar:block/slot_machine", "y": 0 }, + "facing=south": { "model": "szar:block/slot_machine", "y": 180 }, + "facing=west": { "model": "szar:block/slot_machine", "y": 270 }, + "facing=east": { "model": "szar:block/slot_machine", "y": 90 } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/lang/en_us.json b/src/main/resources/assets/szar/lang/en_us.json index 88c7add..b637bec 100644 --- a/src/main/resources/assets/szar/lang/en_us.json +++ b/src/main/resources/assets/szar/lang/en_us.json @@ -79,5 +79,6 @@ "death.attack.fck": "%1$s got fucked too hard by %2$s", "item.szar.white_liquid": "...", "item.szar.plane": "Plane", - "item.szar.wheel": "Wheel" + "item.szar.wheel": "Wheel", + "block.szar.slot_machine": "Slot Machine" } diff --git a/src/main/resources/assets/szar/models/block/SlotMachine_outline.bbmodel b/src/main/resources/assets/szar/models/block/SlotMachine_outline.bbmodel new file mode 100644 index 0000000..7dab9c8 --- /dev/null +++ b/src/main/resources/assets/szar/models/block/SlotMachine_outline.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"5.0","model_format":"java_block","box_uv":false},"name":"SlotMachine_outline","parent":"","java_block_version":"1.9.0","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":4,"height":4},"elements":[{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,0,10],"to":[16,24,16],"autouv":0,"color":8,"origin":[0,0,14],"faces":{"north":{"uv":[0,0,0.75,1.5],"texture":0},"east":{"uv":[0,1.5,0.375,3],"texture":0},"south":{"uv":[0.75,0,1.5,1.5],"texture":0},"west":{"uv":[1.5,0,1.875,1.5],"texture":0},"up":{"uv":[2.625,0.375,1.875,0],"texture":0},"down":{"uv":[2.625,0.375,1.875,0.75],"texture":0}},"type":"cube","uuid":"48103a53-022d-9e36-137a-fc1bc7ee668a"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,0,4],"to":[16,12,10],"autouv":0,"color":8,"origin":[0,0,8],"faces":{"north":{"uv":[0.375,1.5,1.125,2.25],"texture":0},"east":{"uv":[1.875,0.75,2.25,1.5],"texture":0},"south":{"uv":[1.125,1.5,1.875,2.25],"texture":0},"west":{"uv":[1.875,1.5,2.25,2.25],"texture":0},"up":{"uv":[1.125,2.625,0.375,2.25],"texture":0},"down":{"uv":[3,0.75,2.25,1.125],"texture":0}},"type":"cube","uuid":"4f36edc8-e1d8-2d14-d1c7-ad443b287bda"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[4,22,9],"to":[16,24,10],"autouv":0,"color":8,"origin":[10,24,10],"faces":{"north":{"uv":[2.25,1.4375,3,1.5625],"texture":0},"east":{"uv":[1.25,2.5625,1.3125,2.6875],"texture":0},"south":{"uv":[2.25,1.5625,3,1.6875],"texture":0},"west":{"uv":[1.3125,2.5625,1.375,2.6875],"texture":0},"up":{"uv":[3,1.875,2.25,1.8125],"texture":0},"down":{"uv":[2.625,2.25,1.875,2.3125],"texture":0}},"type":"cube","uuid":"9b898315-c63d-e41e-0c50-342e65c59ac7"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[2,9,9],"to":[3,16,10],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.4375,2.3125,2.5,2.75],"texture":0},"east":{"uv":[1.875,2.5,1.9375,2.9375],"texture":0},"south":{"uv":[1.9375,2.5,2,2.9375],"texture":0},"west":{"uv":[2,2.5,2.0625,2.9375],"texture":0},"up":{"uv":[2.6875,0.1875,2.625,0.125],"texture":0},"down":{"uv":[2.6875,0.1875,2.625,0.25],"texture":0}},"type":"cube","uuid":"b0e4f115-58a4-7824-1c3d-59d891aeab10"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[2,7,9],"to":[4,9,10],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.5,2.4375,2.625,2.5625],"texture":0},"east":{"uv":[2.5,2.5625,2.5625,2.6875],"texture":0},"south":{"uv":[1.125,2.5625,1.25,2.6875],"texture":0},"west":{"uv":[2.5625,2.5625,2.625,2.6875],"texture":0},"up":{"uv":[2.75,0.0625,2.625,0],"texture":0},"down":{"uv":[2.75,0.0625,2.625,0.125],"texture":0}},"type":"cube","uuid":"1d701cf8-b350-a42c-4d9d-ce78a11d94d0"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[1,16,8],"to":[4,19,11],"autouv":0,"color":5,"origin":[4,8,10],"faces":{"north":{"uv":[2.25,1.875,2.4375,2.0625],"texture":0},"east":{"uv":[2.25,2.0625,2.4375,2.25],"texture":0},"south":{"uv":[1.875,2.3125,2.0625,2.5],"texture":0},"west":{"uv":[2.0625,2.3125,2.25,2.5],"texture":0},"up":{"uv":[2.4375,2.5,2.25,2.3125],"texture":0},"down":{"uv":[2.625,1.875,2.4375,2.0625],"texture":0}},"type":"cube","uuid":"6a9e5538-f204-935b-f59b-dd3c2126f6bc"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[12,12,5],"to":[14,13,7],"autouv":0,"color":1,"origin":[0,1,8],"faces":{"north":{"uv":[2.4375,2.1875,2.5625,2.25],"texture":0},"east":{"uv":[1.375,2.5625,1.5,2.625],"texture":0},"south":{"uv":[1.5,2.5625,1.625,2.625],"texture":0},"west":{"uv":[1.625,2.5625,1.75,2.625],"texture":0},"up":{"uv":[2.5625,2.1875,2.4375,2.0625],"texture":0},"down":{"uv":[2.3125,2.5,2.1875,2.625],"texture":0}},"type":"cube","uuid":"7542442f-5bac-133f-9a69-33076f1972d8"},{"name":"cube","box_uv":false,"render_order":"default","rescale":false,"locked":false,"shade":true,"light_emission":0,"allow_mirror_modeling":true,"from":[8,12,5],"to":[10,13,7],"autouv":0,"color":1,"origin":[-4,1,8],"faces":{"north":{"uv":[1.75,2.5625,1.875,2.625],"texture":0},"east":{"uv":[2.5625,2.0625,2.6875,2.125],"texture":0},"south":{"uv":[2.5625,2.125,2.6875,2.1875],"texture":0},"west":{"uv":[2.5625,2.1875,2.6875,2.25],"texture":0},"up":{"uv":[2.4375,2.625,2.3125,2.5],"texture":0},"down":{"uv":[2.625,2.3125,2.5,2.4375],"texture":0}},"type":"cube","uuid":"9e2e52aa-3fad-6a78-064b-bf150d0c93ac"}],"groups":[{"uuid":"e39a778d-9f80-3480-4cb0-d34a2cabb289","export":true,"locked":false,"origin":[2,18,9],"rotation":[0,0,0],"color":0,"name":"handle","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":false,"primary_selected":false},{"uuid":"d87c15e1-4672-153b-073a-9508c110198c","export":true,"locked":false,"origin":[0,0,14],"rotation":[0,0,0],"color":0,"name":"main_body","children":[],"reset":false,"shade":true,"mirror_uv":false,"selected":false,"visibility":true,"autouv":0,"isOpen":true,"primary_selected":false}],"outliner":[{"uuid":"d87c15e1-4672-153b-073a-9508c110198c","isOpen":true,"children":["48103a53-022d-9e36-137a-fc1bc7ee668a","4f36edc8-e1d8-2d14-d1c7-ad443b287bda","9b898315-c63d-e41e-0c50-342e65c59ac7","7542442f-5bac-133f-9a69-33076f1972d8","9e2e52aa-3fad-6a78-064b-bf150d0c93ac"]},{"uuid":"e39a778d-9f80-3480-4cb0-d34a2cabb289","isOpen":false,"children":["6a9e5538-f204-935b-f59b-dd3c2126f6bc","b0e4f115-58a4-7824-1c3d-59d891aeab10","1d701cf8-b350-a42c-4d9d-ce78a11d94d0"]}],"textures":[{"name":"slot_machine.png","relative_path":"../../textures/block/slot_machine.png","folder":"block","namespace":"szar","id":"0","group":"","width":64,"height":64,"uv_width":64,"uv_height":64,"particle":true,"use_as_default":false,"layers_enabled":true,"sync_to_project":"4d3a6b97-e64b-55c8-918e-248c5c0f8fe3","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":"67edb0ff-f82b-18cc-231c-8197bc9e6bd9","layers":[{"name":"layer","offset":[0,0],"scale":[1,1],"opacity":100,"visible":true,"blend_mode":"default","width":64,"height":64,"data_url":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACqElEQVR4Aexa3U3EMAwOtwXvMAaPjMEENwCMcAxwEzAGj4wB7wzAAEe+SqmsKE5j12maKqjfJee/2F9MlUh3cs7deoBP8gZcfL6WAAG+ftnjE3AlCFFj2yDfw6giAIl/+Y8fBtB5lfnzbh7ROTUB95lkcrqMWxOVmoCts62x+6hhIuB6vboSwOFomAg4WlGSegYBEraOaDs64Ii7KqlpdACOqX/nsysBbCXsWtq++WApePGqp3oHcKRBHmNVJUrn6gTQ+wK9I3ByZR1qt+oE0My4OwInp75W8zjOpgTEi+/h+yBgD7vQMofRAS3Z38Pa6g74zWTP6aTyzBJmKjUBTz6FBwbQedX0UJsS+eS04YeKgNSRNCVDHVI5fLbECQnGC0LGIbYN3+Nj7dL34Nd6zHbAUhFBry0i+NNRG0vrlyVAG1Tih/sBvRdIfC1smxPQ8h4AApsTgCQo6L9DyZz6aua7I4B7+XJyTdHUZ3cE0OTonOsGaqOZd0OApjj4LGEQsMRQbT13P8C6t2/nAMzxDsBojeYdgPsBvS9YF7gUL0sAWC/B0iKcPhWb2t49Oge4in9ZArg3byxHfqlicjL4SIA1JfaltkkCai1WmlSwu/kJcgH8tMozE9D6TF6luoKgMwGtz+Rcrq9eAfihyjMTUCV6JijaOyCYodUB9/HpJgRFxdGMgLiYijmbhmYJmHaicKmULWQ55EJfXp4dkLOx0rEESBfAz9iAULTUn7NHTIDTr5WbEbA2kZR/zcLDejMBuTN5MK41WneNJM+ZgNZncknSlrYTAakjq+UiqVho74CUXiuT+p1C+8WjNFCv9lMH9Jq8Rd6DAAsWe44xOqDn3bPIfXSABYs9xxgd0PPuWeQ+OsCCxZ5jjA7oefcsch8dYMFiyxhr1/4HAAD//3KIE5EAAAAGSURBVAMARNj/QbNxTPgAAAAASUVORK5CYII="}],"source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACqElEQVR4Aexa3U3EMAwOtwXvMAaPjMEENwCMcAxwEzAGj4wB7wzAAEe+SqmsKE5j12maKqjfJee/2F9MlUh3cs7deoBP8gZcfL6WAAG+ftnjE3AlCFFj2yDfw6giAIl/+Y8fBtB5lfnzbh7ROTUB95lkcrqMWxOVmoCts62x+6hhIuB6vboSwOFomAg4WlGSegYBEraOaDs64Ii7KqlpdACOqX/nsysBbCXsWtq++WApePGqp3oHcKRBHmNVJUrn6gTQ+wK9I3ByZR1qt+oE0My4OwInp75W8zjOpgTEi+/h+yBgD7vQMofRAS3Z38Pa6g74zWTP6aTyzBJmKjUBTz6FBwbQedX0UJsS+eS04YeKgNSRNCVDHVI5fLbECQnGC0LGIbYN3+Nj7dL34Nd6zHbAUhFBry0i+NNRG0vrlyVAG1Tih/sBvRdIfC1smxPQ8h4AApsTgCQo6L9DyZz6aua7I4B7+XJyTdHUZ3cE0OTonOsGaqOZd0OApjj4LGEQsMRQbT13P8C6t2/nAMzxDsBojeYdgPsBvS9YF7gUL0sAWC/B0iKcPhWb2t49Oge4in9ZArg3byxHfqlicjL4SIA1JfaltkkCai1WmlSwu/kJcgH8tMozE9D6TF6luoKgMwGtz+Rcrq9eAfihyjMTUCV6JijaOyCYodUB9/HpJgRFxdGMgLiYijmbhmYJmHaicKmULWQ55EJfXp4dkLOx0rEESBfAz9iAULTUn7NHTIDTr5WbEbA2kZR/zcLDejMBuTN5MK41WneNJM+ZgNZncknSlrYTAakjq+UiqVho74CUXiuT+p1C+8WjNFCv9lMH9Jq8Rd6DAAsWe44xOqDn3bPIfXSABYs9xxgd0PPuWeQ+OsCCxZ5jjA7oefcsch8dYMFiyxhr1/4HAAD//3KIE5EAAAAGSURBVAMARNj/QbNxTPgAAAAASUVORK5CYII="},{"name":"lower_screen_info.png","relative_path":"../../textures/block/lower_screen_info.png","folder":"block","namespace":"szar","id":"1","group":"","width":512,"height":512,"uv_width":16,"uv_height":16,"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":"dff31a4a-e9d6-d0e8-935e-c28d9ed1885f","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAQAElEQVR4AezYiXEkyREEQNhpQZmoBnWnGCT2XwDzdE/Xm+Fn+wAzPVUZnjC7sP3n329v/0v+/Z/3/H6//Y8BAz8DfgbSfgaS/9/3Lfs/b/4jQIAAAQIEwgTe3hSAuJULTIAAAQIEFAA/AwQIECBAIE7gW2D/AvBNwW8CBAgQIBAmoACELVxcAgQIEEgX+JFfAfjh4E8CBAgQIBAloABErVtYAgQIEEgX+JVfAfgl4W8CBAgQIBAkoAAELVtUAgQIEEgX+JNfAfhj4SsCBAgQIBAjoADErFpQAgQIEEgX+Du/AvC3hq8JECBAgECIgAIQsmgxCRAgQCBd4GN+BeCjh+8IECBAgECEgAIQsWYhCRAgQCBd4HN+BeCziO8JECBAgECAgAIQsGQRCRAgQCBd4Gt+BeCriVcIECBAgEB5AQWg/IoFJECAAIF0gVv5FYBbKl4jQIAAAQLFBRSA4gsWjwABAgTSBW7nVwBuu3iVAAECBAiUFlAASq9XOAIECBBIF7iXXwG4J+N1AgQIECBQWEABKLxc0QgQIEAgXeB+fgXgvo13CBAgQIBAWQEFoOxqBSNAgACBdIFH+RWARzreI0CAAAECRQUUgKKLFYsAAQIE0gUe51cAHvt4lwABAgQIlBRQAEquVSgCBAgQSBd4ll8BeCbkfQIECBAgUFBAASi4VJEIECBAIF3geX4F4LmRJwgQIECAQDkBBaDcSgUiQIAAgXSBI/kVgCNKniFAgAABAsUEFIBiCxWHAAECBNIFjuVXAI45eYoAAQIECJQSUABKrVMYAgQIEEgXOJpfATgq5TkCBAgQIFBIQAEotExRCBAgQCBd4Hh+BeC4lScJECBAgEAZAQWgzCoFIUCAAIF0gTP5FYAzWp4lQIAAAQJFBBSAIosUgwABAgTSBc7lVwDOeXmaAAECBAiUEFAASqxRCAIECBBIFzibXwE4K+Z5AgQIECBQQEABKLBEEQgQIEAgXeB8fgXgvJlPECBAgACB7QUUgO1XKAABAgQIpAu8kl8BeEXNZwgQIECAwOYCCsDmCzQ+AQIECKQLvJZfAXjNzacIECBAgMDWAgrA1uszPAECBAikC7yaXwF4Vc7nCBAgQIDAxgIKwMbLMzoBAgQIpAu8nl8BeN3OJwkQIECAwLYCCsC2qzM4AQIECKQLXMmvAFzR81kCBAgQILCpgAKw6eKMTYAAAQLpAtfyKwDX/HyaAAECBAhsKaAAbLk2QxMgQIBAusDV/P/86/2E5N/v8f0iQIAAgUCB5P/3fcvuXwACf+hFJkCAAIHdBa7PrwBcN3QCAQIECBDYTkAB2G5lBiZAgACBdIEW+RWAForOIECAAAECmwkoAJstzLgECBAgkC7QJr8C0MbRKQQIECBAYCsBBWCrdRmWAAECBNIFWuVXAFpJOocAAQIECGwkoABstCyjEiBAgEC6QLv8CkA7SycRIECAAIFtBBSAbVZlUAIECBBIF2iZXwFoqeksAgQIECCwiYACsMmijEmAAAEC6QJt8ysAbT2dRoAAAQIEthBQALZYkyEJECBAIF2gdX4FoLWo8wgQIECAwAYCCsAGSzIiAQIECKQLtM+vALQ3dSIBAgQIEFheQAFYfkUGJECAAIF0gR75FYAeqs4kQIAAAQKLCygAiy/IeAQIECCQLtAnvwLQx9WpBAgQIEBgaQEFYOn1GI4AAQIE0gV65VcAesk6lwABAgQILCygACy8HKMRIECAQLpAv/wKQD9bJxMgQIAAgWUFFIBlV2MwAgQIEEgX6JlfAeip62wCBAgQILCogAKw6GKMRYAAAQLpAn3zKwB9fZ1OgAABAgSWFFAAllyLoQgQIEAgXaB3fgWgt7DzCRAgQIDAggIKwIJLMRIBAgQIpAv0z68A9Dd2AwECBAgQWE5AAVhuJQYiQIAAgXSBEfkVgBHK7iBAgAABAosJKACLLcQ4BAgQIJAuMCa/AjDG2S0ECBAgQGApAQVgqXUYhgABAgTSBUblVwBGSbuHAAECBAgsJKAALLQMoxAgQIBAusC4/ArAOGs3ESBAgACBZQQUgGVWYRACBAgQSBcYmV8BGKntLgIECBAgsIiAArDIIoxBgAABAukCY/MrAGO93UaAAAECBJYQUACWWIMhCBAgQCBdYHR+BWC0uPsIECBAgMACAgrAAkswAgECBAikC4zPrwCMN3cjAQIECBCYLqAATF+BAQgQIEAgXWBGfgVghro7CRAgQIDAZAEFYPICXE+AAAEC6QJz8isAc9zdSoAAAQIEpgooAFP5XU6AAAEC6QKz8isAs+TdS4AAAQIEJgooABPxXU2AAAEC6QLz8isA8+zdTIAAAQIEpgkoANPoXUyAAAEC6QIz8ysAM/XdTYAAAQIEJgkoAJPgXUuAAAEC6QJz8ysAc/3dToAAAQIEpggoAFPYXUqAAAEC6QKz8ysAszfgfgIECBAgMEFAAZiA7koCBAgQSBeYn18BmL8DExAgQIAAgeECCsBwchcSIECAQLrACvkVgBW2YAYCBAgQIDBYQAEYDO46AgQIEEgXWCO/ArDGHkxBgAABAgSGCigAQ7ldRoAAAQLpAqvkVwBW2YQ5CBAgQIDAQAEFYCC2qwgQIEAgXWCd/ArAOrswCQECBAgQGCagAAyjdhEBAgQIpAuslF8BWGkbZiFAgAABAoMEFIBB0K4hQIAAgXSBtfIrAGvtwzQECBAgQGCIgAIwhNklBAgQIJAusFp+BWC1jZiHAAECBAgMEFAABiC7ggABAgTSBdbLrwCstxMTESBAgACB7gIKQHdiFxAgQIBAusCK+RWAFbdiJgIECBAg0FlAAegM7HgCBAgQSBdYM78CsOZeTEWAAAECBLoKKABdeR1OgAABAukCq+ZXAFbdjLkIECBAgEBHAQWgI66jCRAgQCBdYN38CsC6uzEZAQIECBDoJqAAdKN1MAECBAikC6ycXwFYeTtmI0CAAAECnQQUgE6wjiVAgACBdIG18ysAa+/HdAQIECBAoIuAAtCF1aEECBAgkC6wen4FYPUNmY8AAQIECHQQUAA6oDqSAAECBNIF1s+vAKy/IxMSIECAAIHmAgpAc1IHEiBAgEC6wA75FYAdtmRGAgQIECDQWEABaAzqOAIECBBIF9gjvwKwx55MSYAAAQIEmgooAE05HUaAAAEC6QK75FcAdtmUOQkQIECAQEMBBaAhpqMIECBAIF1gn/wKwD67MikBAgQIEGgmoAA0o3QQAQIECKQL7JRfAdhpW2YlQIAAAQKNBBSARpCOIUCAAIF0gb3yKwB77cu0BAgQIECgiYAC0ITRIQQIECCQLrBbfgVgt42ZlwABAgQINBBQABogOoIAAQIE0gX2y68A7LczExMgQIAAgcsCCsBlQgcQIECAQLrAjvkVgB23ZmYCBAgQIHBRQAG4COjjBAgQIJAusGd+BWDPvZmaAAECBAhcElAALvH5MAECBAikC+yaXwHYdXPmJkCAAAECFwQUgAt4PkqAAAEC6QL75lcA9t2dyQkQIECAwMsCCsDLdD5IgAABAukCO+dXAHbentkJECBAgMCLAgrAi3A+RoAAAQLpAnvnVwD23p/pCRAgQIDASwIKwEtsPkSAAAEC6QK751cAdt+g+QkQIECAwAsCCsALaD5CgAABAukC++dXAPbfoQQECBAgQOC0gAJwmswHCBAgQCBdoEJ+BaDCFmUgQIAAAQInBRSAk2AeJ0CAAIF0gRr5FYAae5SCAAECBAicElAATnF5mAABAgTSBarkVwCqbFIOAgQIECBwQkABOIHlUQIECBBIF6iTXwGos0tJCBAgQIDAYQEF4DCVBwkQIEAgXaBSfgWg0jZlIUCAAAECBwUUgINQHiNAgACBdIFa+RWAWvuUhgABAgQIHBJQAA4xeYgAAQIE0gWq5VcAqm1UHgIECBAgcEBAATiA5BECBAgQSBeol18BqLdTiQgQIECAwFMBBeApkQcIECBAIF2gYn4FoOJWZSJAgAABAk8EFIAnQN4mQIAAgXSBmvkVgJp7lYoAAQIECDwUUAAe8niTAAECBNIFquZXAKpuVi4CBAgQIPBAQAF4gOMtAgQIEEgXqJtfAai7W8kIECBAgMBdAQXgLo03CBAgQCBdoHJ+BaDydmUjQIAAAQJ3BBSAOzBeJkCAAIF0gdr5FYDa+5WOAAECBAjcFFAAbrJ4kQABAgTSBarnVwCqb1g+AgQIECBwQ0ABuIHiJQIECBBIF6ifXwGov2MJCRAgQIDAFwEF4AuJFwgQIEAgXSAhvwKQsGUZCRAgQIDAJwEF4BOIbwkQIEAgXSAjvwKQsWcpCRAgQIDABwEF4AOHbwgQIEAgXSAlvwKQsmk5CRAgQIDAXwIKwF8YviRAgACBdIGc/ApAzq4lJUCAAAECvwUUgN8UviBAgACBdIGk/ApA0rZlJUCAAAECPwUUgJ8Q/iJAgACBdIGs/ApA1r6lJUCAAAEC3wUUgO8M/iBAgACBdIG0/ApA2sblJUCAAAEC7wIKwDuCXwQIECCQLpCXXwHI27nEBAgQIEDgTQHwQ0CAAAEC8QKJAApA4tZlJkCAAIF4AQUg/kcAAAECBNIFMvMrAJl7l5oAAQIEwgUUgPAfAPEJECCQLpCaXwFI3bzcBAgQIBAtoABEr194AgQIpAvk5lcAcncvOQECBAgECygAwcsXnQABAukCyfkVgOTty06AAAECsQIKQOzqBSdAgEC6QHZ+BSB7/9ITIECAQKiAAhC6eLEJECCQLpCeXwFI/wmQnwABAgQiBRSAyLULTYAAgXQB+RUAPwMECBAgQCBQQAEIXLrIBAgQSBeQ/+1NAfBTQIAAAQIEAgUUgMCli0yAAIFsAem/CSgA3xT8JkCAAAECYQIKQNjCxSVAgEC6gPw/BBSAHw7+JECAAAECUQIKQNS6hSVAgEC6gPy/BBSAXxL+JkCAAAECQQIKQNCyRSVAgEC6gPx/BBSAPxa+IkCAAAECMQIKQMyqBSVAgEC6gPx/CygAf2v4mgABAgQIhAgoACGLFpMAAQLpAvJ/FFAAPnr4jgABAgQIRAgoABFrFpIAAQLpAvJ/FlAAPov4ngABAgQIBAgoAAFLFpEAAQLpAvJ/FVAAvpp4hQABAgQIlBdQAMqvWEACBAikC8h/S0ABuKXiNQIECBAgUFxAASi+YPEIECCQLiD/bQEF4LaLVwkQIECAQGkBBaD0eoUjQIBAuoD89wQUgHsyXidAgAABAoUFFIDCyxWNAAEC6QLy3xdQAO7beIcAAQIECJQVUADKrlYwAgQIpAvI/0hAAXik4z0CBAgQIFBUQAEoulixCBAgkC4g/2MBBeCxj3cJECBAgEBJAQWg5FqFIkCAQLqA/M8EFIBnQt4nQIAAAQIFBRSAgksViQABAukC8j8XUACeG3mCAAECBAiUE1AAyq1UIAIECKQLyH9EQAE4ouQZAgQIECBQTEABKLZQcQgQIJAufIJXBgAAC55JREFUIP8xAQXgmJOnCBAgQIBAKQEFoNQ6hSFAgEC6gPxHBRSAo1KeI0CAAAEChQQUgELLFIUAAQLpAvIfF1AAjlt5kgABAgQIlBFQAMqsUhACBAikC8h/RkABOKPlWQIECBAgUERAASiySDEIECCQLiD/OQEF4JyXpwkQIECAQAkBBaDEGoUgQIBAuoD8ZwUUgLNinidAgAABAgUEFIACSxSBAAEC6QLynxdQAM6b+QQBAgQIENheQAHYfoUCECBAIF1A/lcEFIBX1HyGAAECBAhsLqAAbL5A4xMgQCBdQP7XBBSA19x8igABAgQIbC2gAGy9PsMTIEAgXUD+VwUUgFflfI4AAQIECGwsoABsvDyjEyBAIF1A/tcFFIDX7XySAAECBAhsK6AAbLs6gxMgQCBdQP4rAgrAFT2fJUCAAAECmwooAJsuztgECBBIF5D/moACcM3PpwkQIECAwJYCCsCWazM0AQIE0gXkvyqgAFwV9HkCBAgQILChgAKw4dKMTIAAgXQB+a8LKADXDZ1AgAABAgS2E1AAtluZgQkQIJAuIH8LAQWghaIzCBAgQIDAZgIKwGYLMy4BAgTSBeRvI6AAtHF0CgECBAgQ2EpAAdhqXYYlQIBAuoD8rQQUgFaSziFAgAABAhsJKAAbLcuoBAgQSBeQv52AAtDO0kkECBAgQGAbAQVgm1UZlAABAukC8rcUUABaajqLAAECBAhsIqAAbLIoYxIgQCBdQP62AgpAW0+nESBAgACBLQQUgC3WZEgCBAikC8jfWkABaC3qPAIECBAgsIGAArDBkoxIgACBdAH52wsoAO1NnUiAAAECBJYXUACWX5EBCRAgkC4gfw8BBaCHqjMJECBAgMDiAgrA4gsyHgECBNIF5O8joAD0cXUqAQIECBBYWkABWHo9hiNAgEC6gPy9BBSAXrLOJUCAAAECCwsoAAsvx2gECBBIF5C/n4AC0M/WyQQIECBAYFkBBWDZ1RiMAAEC6QLy9xRQAHrqOpsAAQIECCwqoAAsuhhjESBAIF1A/r4CCkBfX6cTIECAAIElBRSAJddiKAIECKQLyN9bQAHoLex8AgQIECCwoIACsOBSjESAAIF0Afn7CygA/Y3dQIAAAQIElhNQAJZbiYEIECCQLiD/CAEFYISyOwgQIECAwGICCsBiCzEOAQIE0gXkHyOgAIxxdgsBAgQIEFhKQAFYah2GIUCAQLqA/KMEFIBR0u4hQIAAAQILCSgACy3DKAQIEEgXkH+cgAIwztpNBAgQIEBgGQEFYJlVGIQAAQLpAvKPFFAARmq7iwABAgQILCKgACyyCGMQIEAgXUD+sQIKwFhvtxEgQIAAgSUEFIAl1mAIAgQIpAvIP1pAARgt7j4CBAgQILCAgAKwwBKMQIAAgXQB+ccLKADjzd1IgAABAgSmCygA01dgAAIECKQLyD9DQAGYoe5OAgQIECAwWUABmLwA1xMgQCBdQP45AgrAHHe3EiBAgACBqQIKwFR+lxMgQCBdQP5ZAgrALHn3EiBAgACBiQIKwER8VxMgQCBdQP55AgrAPHs3EyBAgACBaQIKwDR6FxMgQCBdQP6ZAgrATH13EyBAgACBSQIKwCR41xIgQCBdQP65AgrAXH+3EyBAgACBKQIKwBR2lxIgQCBdQP7ZAgrA7A24nwABAgQITBBQACagu5IAAQLpAvLPF1AA5u/ABAQIECBAYLiAAjCc3IUECBBIF5B/BQEFYIUtmIEAAQIECAwWUAAGg7uOAAEC6QLyryGgAKyxB1MQIECAAIGhAgrAUG6XESBAIF1A/lUEFIBVNmEOAgQIECAwUEABGIjtKgIECKQLyL+OgAKwzi5MQoAAAQIEhgkoAMOoXUSAAIF0AflXElAAVtqGWQgQIECAwCABBWAQtGsIECCQLiD/WgIKwFr7MA0BAgQIEBgioAAMYXYJAQIE0gXkX01AAVhtI+YhQIAAAQIDBBSAAciuIECAQLqA/OsJKADr7cREBAgQIECgu4AC0J3YBQQIEEgXkH9FAQVgxa2YiQABAgQIdBZQADoDO54AAQLpAvKvKaAArLkXUxEgQIAAga4CCkBXXocTIEAgXUD+VQUUgFU3Yy4CBAgQINBRQAHoiOtoAgQIpAvIv66AArDubkxGgAABAgS6CSgA3WgdTIAAgXQB+VcWUABW3o7ZCBAgQIBAJwEFoBOsYwkQIJAuIP/aAgrA2vsxHQECBAgQ6CKgAHRhdSgBAgTSBeRfXUABWH1D5iNAgAABAh0EFIAOqI4kQIBAuoD86wsoAOvvyIQECBAgQKC5gALQnNSBBAgQSBeQfwcBBWCHLZmRAAECBAg0FlAAGoM6jgABAukC8u8hoADssSdTEiBAgACBpgIKQFNOhxEgQCBdQP5dBBSAXTZlTgIECBAg0FBAAWiI6SgCBAikC8i/j4ACsM+uTEqAAAECBJoJKADNKB1EgACBdAH5dxJQAHballkJECBAgEAjAQWgEaRjCBAgkC4g/14CCsBe+zItAQIECBBoIqAANGF0CAECBNIF5N9NQAHYbWPmJUCAAAECDQQUgAaIjiBAgEC6gPz7CSgA++3MxAQIECBA4LKAAnCZ0AEECBBIF5B/RwEFYMetmZkAAQIECFwUUAAuAvo4AQIE0gXk31NAAdhzb6YmQIAAAQKXBBSAS3w+TIAAgXQB+XcVUAB23Zy5CRAgQIDABQEF4AKejxIgQCBdQP59BRSAfXdncgIECBAg8LKAAvAynQ8SIEAgXUD+nQUUgJ23Z3YCBAgQIPCigALwIpyPESBAIF1A/r0F/vnv+/zJv9/j+0WAAAECgQLJ/+/7lt2/AAT+0ItMgACB6wJO2F1AAdh9g+YnQIAAAQIvCCgAL6D5CAECBNIF5N9fQAHYf4cSECBAgACB0wIKwGkyHyBAgEC6gPwVBBSACluUgQABAgQInBRQAE6CeZwAAQLpAvLXEFAAauxRCgIECBAgcEpAATjF5WECBAikC8hfRUABqLJJOQgQIECAwAkBBeAElkcJECCQLiB/HQEFoM4uJSFAgAABAocFFIDDVB4kQIBAuoD8lQQUgErblIUAAQIECBwUUAAOQnmMAAEC6QLy1xJQAGrtUxoCBAgQIHBIQAE4xOQhAgQIpAvIX01AAai2UXkIECBAgMABAQXgAJJHCBAgkC4gfz0BBaDeTiUiQIAAAQJPBRSAp0QeIECAQLqA/BUFFICKW5WJAAECBAg8EVAAngB5mwABAukC8tcUUABq7lUqAgQIECDwUEABeMjjTQIECKQLyF9VQAGoulm5CBAgQIDAAwEF4AGOtwgQIJAuIH9dAQWg7m4lI0CAAAECdwUUgLs03iBAgEC6gPyVBRSAytuVjQABAgQI3BFQAO7AeJkAAQLpAvLXFlAAau9XOgIECBAgcFNAAbjJ4kUCBAikC8hfXUABqL5h+QgQIECAwA0BBeAGipcIECCQLiB/fQEFoP6OJSRAgAABAl8EFIAvJF4gQIBAuoD8CQIKQMKWZSRAgAABAp8EFIBPIL4lQIBAuoD8GQIKQMaepSRAgAABAh8EFIAPHL4hQIBAuoD8KQIKQMqm5SRAgAABAn8JKAB/YfiSAAEC6QLy5wgoADm7lpQAAQIECPwWUAB+U/iCAAEC6QLyJwkoAEnblpUAAQIECPwUUAB+QviLAAEC6QLyZwkoAFn7lpYAAQIECHwXUAC+M/iDAAEC6QLypwkoAGkbl5cAAQIECLwLKADvCH4RIEAgXUD+PAEFIG/nEhMgQIAAgTcFwA8BAQIE4gUAJAooAIlbl5kAAQIE4gUUgPgfAQAECKQLyJ8poABk7l1qAgQIEAgXUADCfwDEJ0AgXUD+VAEFIHXzchMgQIBAtIACEL1+4QkQSBeQP1dAAcjdveQECBAgECygAAQvX3QCBNIF5E8WUACSty87AQIECMQKKACxqxecAIF0AfmzBf4PAAD//13vnx4AAAAGSURBVAMAUng9rtYCU/4AAAAASUVORK5CYII="},{"name":"texture.png","relative_path":"../../textures/block/texture.png","folder":"block","namespace":"szar","id":"2","group":"","width":32,"height":32,"uv_width":16,"uv_height":16,"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":"afb827c4-2ae7-3d20-b3a3-16ebdbf248aa","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaUlEQVR4AeyUSQoAIQwEe+bR84j5tEYC3lwuLR4KbFAStCgwr6RiTlw/Xg1A+oLBkfG7vZIA/Xh+AwAGMJAG/kdyZONXJ8BGo6sFAAxgAANXGIg5LGemQ/QKA1NCdxEDGMAABuwGVoOsAgAA//8rh1tVAAAABklEQVQDAJQ6REE4cobcAAAAAElFTkSuQmCC"},{"name":"slot_1.png","relative_path":"../../textures/block/slot_1.png","folder":"block","namespace":"szar","id":"3","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"b97b93a0-f247-f808-179f-305e5bdb0abe","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_1_up.png","relative_path":"../../textures/block/slot_1_up.png","folder":"block","namespace":"szar","id":"4","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"4e450878-228f-3317-e84a-1e772b4e6909","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_1_down.png","relative_path":"../../textures/block/slot_1_down.png","folder":"block","namespace":"szar","id":"5","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"a65c776c-7e40-31a7-34d9-522255f91d51","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2.png","relative_path":"../../textures/block/slot_2.png","folder":"block","namespace":"szar","id":"6","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"36cdf80d-11d3-fc14-9e20-254e9461d124","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2_down.png","relative_path":"../../textures/block/slot_2_down.png","folder":"block","namespace":"szar","id":"7","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"9aefd789-4950-0d98-b5ff-c408fba7d85e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_2_up.png","relative_path":"../../textures/block/slot_2_up.png","folder":"block","namespace":"szar","id":"8","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"8c5c13b5-12cd-0eb5-a51b-38bb4b9ec91e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3.png","relative_path":"../../textures/block/slot_3.png","folder":"block","namespace":"szar","id":"9","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"43bbae2a-38b9-1982-73fa-2a7a8f1dc513","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3_up.png","relative_path":"../../textures/block/slot_3_up.png","folder":"block","namespace":"szar","id":"10","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"730ee38d-0188-1080-f712-d96b4b185867","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="},{"name":"slot_3_down.png","relative_path":"../../textures/block/slot_3_down.png","folder":"block","namespace":"szar","id":"11","group":"","width":16,"height":16,"uv_width":16,"uv_height":16,"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":"97bd466e-8ab5-1494-2b40-558cbdeada2e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR4AeyTsQ0AAAyCSP8/uvEGN4MHOBA4ynkAMpBBMhrw4AEAAP//uBwiawAAAAZJREFUAwBJIAAhJFoqZwAAAABJRU5ErkJggg=="}]} \ No newline at end of file diff --git a/src/main/resources/assets/szar/models/block/slot_machine.json b/src/main/resources/assets/szar/models/block/slot_machine.json new file mode 100644 index 0000000..1e044bb --- /dev/null +++ b/src/main/resources/assets/szar/models/block/slot_machine.json @@ -0,0 +1,348 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "texture_size": [4, 4], + "textures": { + "0": "szar:block/slot_machine", + "1": "szar:block/lower_screen_info", + "2": "szar:block/texture", + "3": "szar:block/slot_1", + "4": "szar:block/slot_1_up", + "5": "szar:block/slot_1_down", + "6": "szar:block/slot_2", + "7": "szar:block/slot_2_down", + "8": "szar:block/slot_2_up", + "9": "szar:block/slot_3", + "10": "szar:block/slot_3_up", + "11": "szar:block/slot_3_down", + "particle": "szar:block/slot_machine_particle" + }, + "elements": [ + { + "from": [4, 0, 10], + "to": [16, 24, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 14]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#0"}, + "east": {"uv": [0, 6, 1.5, 12], "texture": "#0"}, + "south": {"uv": [3, 0, 6, 6], "texture": "#0"}, + "west": {"uv": [6, 0, 7.5, 6], "texture": "#0"}, + "up": {"uv": [10.5, 1.5, 7.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 1.5, 7.5, 3], "texture": "#0"} + } + }, + { + "from": [4, 0, 4], + "to": [16, 12, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 8]}, + "faces": { + "north": {"uv": [1.5, 6, 4.5, 9], "texture": "#0"}, + "east": {"uv": [7.5, 3, 9, 6], "texture": "#0"}, + "south": {"uv": [4.5, 6, 7.5, 9], "texture": "#0"}, + "west": {"uv": [7.5, 6, 9, 9], "texture": "#0"}, + "up": {"uv": [4.5, 10.5, 1.5, 9], "texture": "#0"}, + "down": {"uv": [12, 3, 9, 4.5], "texture": "#0"} + } + }, + { + "from": [4, 19, 8], + "to": [16, 24, 9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10, 24, 9]}, + "faces": { + "north": {"uv": [4.5, 9, 7.5, 10.25], "texture": "#0"}, + "east": {"uv": [8.25, 10, 8.5, 11.25], "texture": "#0"}, + "south": {"uv": [9, 4.5, 12, 5.75], "texture": "#0"}, + "west": {"uv": [8.5, 10, 8.75, 11.25], "texture": "#0"}, + "up": {"uv": [12, 7, 9, 6.75], "texture": "#0"}, + "down": {"uv": [12, 7, 9, 7.25], "texture": "#0"} + } + }, + { + "from": [4, 22, 9], + "to": [16, 24, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 24, 10]}, + "faces": { + "north": {"uv": [9, 5.75, 12, 6.25], "texture": "#0"}, + "east": {"uv": [5, 10.25, 5.25, 10.75], "texture": "#0"}, + "south": {"uv": [9, 6.25, 12, 6.75], "texture": "#0"}, + "west": {"uv": [5.25, 10.25, 5.5, 10.75], "texture": "#0"}, + "up": {"uv": [12, 7.5, 9, 7.25], "texture": "#0"}, + "down": {"uv": [10.5, 9, 7.5, 9.25], "texture": "#0"} + } + }, + { + "from": [12, 12, 5], + "to": [14, 13, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 1, 8]}, + "faces": { + "north": {"uv": [9.75, 8.75, 10.25, 9], "texture": "#0"}, + "east": {"uv": [5.5, 10.25, 6, 10.5], "texture": "#0"}, + "south": {"uv": [6, 10.25, 6.5, 10.5], "texture": "#0"}, + "west": {"uv": [6.5, 10.25, 7, 10.5], "texture": "#0"}, + "up": {"uv": [10.25, 8.75, 9.75, 8.25], "texture": "#0"}, + "down": {"uv": [9.25, 10, 8.75, 10.5], "texture": "#0"} + } + }, + { + "from": [8, 12, 5], + "to": [10, 13, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [-4, 1, 8]}, + "faces": { + "north": {"uv": [7, 10.25, 7.5, 10.5], "texture": "#0"}, + "east": {"uv": [10.25, 8.25, 10.75, 8.5], "texture": "#0"}, + "south": {"uv": [10.25, 8.5, 10.75, 8.75], "texture": "#0"}, + "west": {"uv": [10.25, 8.75, 10.75, 9], "texture": "#0"}, + "up": {"uv": [9.75, 10.5, 9.25, 10], "texture": "#0"}, + "down": {"uv": [10.5, 9.25, 10, 9.75], "texture": "#0"} + } + }, + { + "from": [1, 16, 8], + "to": [4, 19, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 10]}, + "faces": { + "north": {"uv": [9, 7.5, 9.75, 8.25], "texture": "#0"}, + "east": {"uv": [9, 8.25, 9.75, 9], "texture": "#0"}, + "south": {"uv": [7.5, 9.25, 8.25, 10], "texture": "#0"}, + "west": {"uv": [8.25, 9.25, 9, 10], "texture": "#0"}, + "up": {"uv": [9.75, 10, 9, 9.25], "texture": "#0"}, + "down": {"uv": [10.5, 7.5, 9.75, 8.25], "texture": "#0"} + } + }, + { + "from": [2, 9, 9], + "to": [3, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 10]}, + "faces": { + "north": {"uv": [9.75, 9.25, 10, 11], "texture": "#0"}, + "east": {"uv": [7.5, 10, 7.75, 11.75], "texture": "#0"}, + "south": {"uv": [7.75, 10, 8, 11.75], "texture": "#0"}, + "west": {"uv": [8, 10, 8.25, 11.75], "texture": "#0"}, + "up": {"uv": [10.75, 0.75, 10.5, 0.5], "texture": "#0"}, + "down": {"uv": [10.75, 0.75, 10.5, 1], "texture": "#0"} + } + }, + { + "from": [2, 7, 9], + "to": [4, 9, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 10]}, + "faces": { + "north": {"uv": [10, 9.75, 10.5, 10.25], "texture": "#0"}, + "east": {"uv": [10, 10.25, 10.25, 10.75], "texture": "#0"}, + "south": {"uv": [4.5, 10.25, 5, 10.75], "texture": "#0"}, + "west": {"uv": [10.25, 10.25, 10.5, 10.75], "texture": "#0"}, + "up": {"uv": [11, 0.25, 10.5, 0], "texture": "#0"}, + "down": {"uv": [11, 0.25, 10.5, 0.5], "texture": "#0"} + } + }, + { + "name": "lower_screen", + "from": [6, 2, 3.99], + "to": [14, 10, 3.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-6, 2, 5]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 0, 8], "texture": "#1"}, + "south": {"uv": [0, 16, 0, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 8], "texture": "#1"}, + "up": {"uv": [8, 0, 0, 0], "texture": "#1"}, + "down": {"uv": [8, 0, 0, 0], "texture": "#1"} + } + }, + { + "name": "upper_screen", + "from": [4, 19, 7.99], + "to": [16, 24, 7.99], + "rotation": {"angle": -22.5, "axis": "x", "origin": [10, 24, 8.99]}, + "faces": { + "north": {"uv": [0, 0, 12, 5], "texture": "#2"}, + "east": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "south": {"uv": [0, 5, 12, 10], "texture": "#2"}, + "west": {"uv": [0, 0, 0, 5], "texture": "#2"}, + "up": {"uv": [12, 0, 0, 0], "texture": "#2"}, + "down": {"uv": [12, 0, 0, 0], "texture": "#2"} + } + }, + { + "name": "slot_1_up", + "from": [12, 17, 9.99], + "to": [14, 19, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 6, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#4"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#4"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#4"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#4"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#4"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#4"} + } + }, + { + "name": "slot_1", + "from": [12, 15, 9.99], + "to": [14, 17, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#3"}, + "east": {"uv": [0, 0, 0, 8], "texture": "#3"}, + "south": {"uv": [0, 0, 0, 0], "texture": "#3"}, + "west": {"uv": [0, 0, 0, 8], "texture": "#3"}, + "up": {"uv": [8, 0, 0, 0], "texture": "#3"}, + "down": {"uv": [8, 0, 0, 0], "texture": "#3"} + } + }, + { + "name": "slot_1_down", + "from": [12, 13, 9.99], + "to": [14, 15, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#5"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#5"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#5"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#5"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#5"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#5"} + } + }, + { + "name": "slot_2", + "from": [9, 15, 9.99], + "to": [11, 17, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-3, 4, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#6"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#6"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#6"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#6"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#6"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#6"} + } + }, + { + "name": "slot_2_down", + "from": [9, 13, 9.99], + "to": [11, 15, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-3, 2, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#7"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#7"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#7"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#7"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#7"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#7"} + } + }, + { + "name": "slot_2_up", + "from": [9, 17, 9.99], + "to": [11, 19, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-3, 6, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#8"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#8"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#8"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#8"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#8"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#8"} + } + }, + { + "name": "slot_3", + "from": [6, 15, 9.99], + "to": [8, 17, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-6, 4, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#9"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#9"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#9"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#9"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#9"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#9"} + } + }, + { + "name": "slot_3_up", + "from": [6, 17, 9.99], + "to": [8, 19, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-6, 6, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#10"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#10"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#10"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#10"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#10"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#10"} + } + }, + { + "name": "slot_3_down", + "from": [6, 13, 9.99], + "to": [8, 15, 9.99], + "rotation": {"angle": 0, "axis": "y", "origin": [-6, 2, 11]}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#11"}, + "east": {"uv": [12, 12, 12, 20], "texture": "#11"}, + "south": {"uv": [48, 12, 56, 20], "texture": "#11"}, + "west": {"uv": [20, 12, 20, 20], "texture": "#11"}, + "up": {"uv": [48, 20, 56, 20], "texture": "#11"}, + "down": {"uv": [48, 12, 56, 12], "texture": "#11"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, -1.5, -3.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [2, -1.5, -3.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [0, 160, 0], + "translation": [4, 0, -2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [0, 160, 0], + "translation": [1.5, 0, -2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [-1, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "translation": [-2, 3, -1.75] + }, + "fixed": { + "translation": [0, 0, -1], + "scale": [0.5, 0.5, 0.5] + }, + "on_shelf": { + "rotation": [0, -180, 0], + "translation": [0, 0, 2.5] + } + }, + "groups": [ + { + "name": "main_body", + "origin": [0, 0, 14], + "color": 0, + "children": [0, 1, 2, 3, 4, 5] + }, + { + "name": "handle", + "origin": [2, 18, 9], + "color": 0, + "children": [6, 7, 8] + }, + { + "name": "dynamic", + "origin": [0, 6, 11], + "color": 0, + "children": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/models/item/slot_machine.json b/src/main/resources/assets/szar/models/item/slot_machine.json new file mode 100644 index 0000000..ed24306 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/slot_machine.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:item/slot_machine" + } +} diff --git a/src/main/resources/assets/szar/models/item/slot_machine_3d.json b/src/main/resources/assets/szar/models/item/slot_machine_3d.json new file mode 100644 index 0000000..8cbb8ad --- /dev/null +++ b/src/main/resources/assets/szar/models/item/slot_machine_3d.json @@ -0,0 +1,3 @@ +{ + "parent": "szar:block/slot_machine" +} diff --git a/src/main/resources/assets/szar/sounds.json b/src/main/resources/assets/szar/sounds.json index 7dcadc3..4b16277 100644 --- a/src/main/resources/assets/szar/sounds.json +++ b/src/main/resources/assets/szar/sounds.json @@ -66,5 +66,21 @@ "stream": true } ] + }, + "slot_machine_base": { + "sounds": [ + { + "name": "szar:slot_machine_base", + "stream": true + } + ] + }, + "slot_machine_win": { + "sounds": [ + { + "name": "szar:slot_machine_win", + "stream": true + } + ] } } diff --git a/src/main/resources/assets/szar/sounds/slot_machine_base.ogg b/src/main/resources/assets/szar/sounds/slot_machine_base.ogg new file mode 100644 index 0000000..8a5efb0 Binary files /dev/null and b/src/main/resources/assets/szar/sounds/slot_machine_base.ogg differ diff --git a/src/main/resources/assets/szar/sounds/slot_machine_win.ogg b/src/main/resources/assets/szar/sounds/slot_machine_win.ogg new file mode 100644 index 0000000..c44a23f Binary files /dev/null and b/src/main/resources/assets/szar/sounds/slot_machine_win.ogg differ diff --git a/src/main/resources/assets/szar/textures/block/lower_screen_info.png b/src/main/resources/assets/szar/textures/block/lower_screen_info.png new file mode 100644 index 0000000..461ff8b Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/lower_screen_info.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_1.png b/src/main/resources/assets/szar/textures/block/slot_1.png new file mode 100644 index 0000000..a3c96ed Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_1.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_1.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_1.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_1.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_1_down.png b/src/main/resources/assets/szar/textures/block/slot_1_down.png new file mode 100644 index 0000000..f09e7b7 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_1_down.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_1_down.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_1_down.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_1_down.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_1_up.png b/src/main/resources/assets/szar/textures/block/slot_1_up.png new file mode 100644 index 0000000..74966f4 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_1_up.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_1_up.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_1_up.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_1_up.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_2.png b/src/main/resources/assets/szar/textures/block/slot_2.png new file mode 100644 index 0000000..7e41ed7 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_2.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_2.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_2.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_2.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_2_down.png b/src/main/resources/assets/szar/textures/block/slot_2_down.png new file mode 100644 index 0000000..8b51a55 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_2_down.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_2_down.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_2_down.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_2_down.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_2_up.png b/src/main/resources/assets/szar/textures/block/slot_2_up.png new file mode 100644 index 0000000..12aa92e Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_2_up.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_2_up.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_2_up.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_2_up.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_3.png b/src/main/resources/assets/szar/textures/block/slot_3.png new file mode 100644 index 0000000..645cd07 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_3.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_3.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_3.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_3.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_3_down.png b/src/main/resources/assets/szar/textures/block/slot_3_down.png new file mode 100644 index 0000000..6139405 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_3_down.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_3_down.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_3_down.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_3_down.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_3_up.png b/src/main/resources/assets/szar/textures/block/slot_3_up.png new file mode 100644 index 0000000..aba0d5a Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_3_up.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_3_up.png.mcmeta b/src/main/resources/assets/szar/textures/block/slot_3_up.png.mcmeta new file mode 100644 index 0000000..8ddc3cf --- /dev/null +++ b/src/main/resources/assets/szar/textures/block/slot_3_up.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": false, + "frametime": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/szar/textures/block/slot_machine.png b/src/main/resources/assets/szar/textures/block/slot_machine.png new file mode 100644 index 0000000..782a72e Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_machine.png differ diff --git a/src/main/resources/assets/szar/textures/block/slot_machine_particle.png b/src/main/resources/assets/szar/textures/block/slot_machine_particle.png new file mode 100644 index 0000000..7cbb046 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slot_machine_particle.png differ diff --git a/src/main/resources/assets/szar/textures/block/slotmachine_slots.png b/src/main/resources/assets/szar/textures/block/slotmachine_slots.png new file mode 100644 index 0000000..d58f6d8 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slotmachine_slots.png differ diff --git a/src/main/resources/assets/szar/textures/block/slotmachine_slots_noback.png b/src/main/resources/assets/szar/textures/block/slotmachine_slots_noback.png new file mode 100644 index 0000000..491fe57 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/slotmachine_slots_noback.png differ diff --git a/src/main/resources/assets/szar/textures/block/texture.png b/src/main/resources/assets/szar/textures/block/texture.png new file mode 100644 index 0000000..2042d55 Binary files /dev/null and b/src/main/resources/assets/szar/textures/block/texture.png differ diff --git a/src/main/resources/assets/szar/textures/gui/handle1.png b/src/main/resources/assets/szar/textures/gui/handle1.png new file mode 100644 index 0000000..5e2bdf3 Binary files /dev/null and b/src/main/resources/assets/szar/textures/gui/handle1.png differ diff --git a/src/main/resources/assets/szar/textures/gui/handle2.png b/src/main/resources/assets/szar/textures/gui/handle2.png new file mode 100644 index 0000000..6612caf Binary files /dev/null and b/src/main/resources/assets/szar/textures/gui/handle2.png differ diff --git a/src/main/resources/assets/szar/textures/gui/handle3.png b/src/main/resources/assets/szar/textures/gui/handle3.png new file mode 100644 index 0000000..d4137b9 Binary files /dev/null and b/src/main/resources/assets/szar/textures/gui/handle3.png differ diff --git a/src/main/resources/assets/szar/textures/gui/hopper.png b/src/main/resources/assets/szar/textures/gui/hopper.png new file mode 100644 index 0000000..dd6c16b Binary files /dev/null and b/src/main/resources/assets/szar/textures/gui/hopper.png differ diff --git a/src/main/resources/assets/szar/textures/gui/slot_machine.png b/src/main/resources/assets/szar/textures/gui/slot_machine.png new file mode 100644 index 0000000..40b638c Binary files /dev/null and b/src/main/resources/assets/szar/textures/gui/slot_machine.png differ diff --git a/src/main/resources/assets/szar/textures/item/slot_machine.png b/src/main/resources/assets/szar/textures/item/slot_machine.png new file mode 100644 index 0000000..171f6e1 Binary files /dev/null and b/src/main/resources/assets/szar/textures/item/slot_machine.png differ