New Camera System

This commit is contained in:
Matthias 2017-03-09 19:25:40 +01:00
parent f723df31d9
commit 76dc1023c7
23 changed files with 769 additions and 1653 deletions

View File

@ -1,14 +0,0 @@
Crossbow:
system-ID: 'Crossbow'
name: '&cCrossbow'
material: 383
glow: false
lore: ''
crafting:
disable: false
recipe: XAX,XOX,OBO
index:
X: 0
A: 261
O: 280
B: 44

View File

@ -1,11 +0,0 @@
GraveStone:
system-ID: 'GraveStone'
name: '&cGrave Stone'
material: 383
glow: false
lore: ''
crafting:
disable: true
recipe: XXX,XXX,XXX
index:
X: 0

View File

@ -1,14 +0,0 @@
Hammock:
system-ID: 'Hammock'
name: '&cHammock'
material: 383
glow: false
lore: ''
crafting:
disable: false
recipe: 000,XEX,A0A
index:
X: 280
E: 425
A: 17
0: 0

View File

@ -1,13 +0,0 @@
Sunshade:
system-ID: 'Sunshade'
name: '&cSunshade'
material: 383
glow: false
lore: ''
crafting:
disable: false
recipe: AAA,0X0,0X0
index:
'0': 0
X: 280
A: 171

33
src/Models/Crossbow.yml Normal file
View File

@ -0,0 +1,33 @@
Crossbow:
system-ID: Crossbow
name: '&cCrossbow'
material: 383
creator: 80f94595-e1f5-3520-b48c-c07d9f03274e
PlaceAbleSide: TOP
glow: false
lore: ''
crafting:
disable: false
recipe: XAX,XOX,OBO
index:
X: 0
A: 261
O: 280
B: 44
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRRJLdPSe/PDMvHcTjYuByLc1JLXLMS89J5WLg8HF1C4n3cXVnY2CM2D/xvrvSFYd4IDuSAQqA7CiYOFAzi4erowtILZI8iloYmwFmtmOQL9jsY+ESrzsDyjDMhoqDzHbyd4kk0mzOIE93D7jh9j8Vf4e46EqANDgI3aypN1a8BNLgwARhIzRAfWqPw6cwcbAVwCBNzSvJL6rkYGB19nANDmFg8fP3c+WABAKMw+7v5ubh6AflA33t6+jpBxLgYGDKTGHgz83MS00uSkwrsSouyUzOZgSalV+aV8LIxMDmkpibmA6KMKCRQIcFw813c3WFWgaSAiUPSHjmJyeWZObnsTFwROj6p6UVp5bsv3qoP0bjG9DxHFFQIfubM0GgASgUCVP12RgETFgZmCMTy53ZQd4FAKZdpa57AgAA
'1': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRRJLdPSe/PDMvHcTjYuByLc1JLXLMS89J5WLg8HF1C4n3cXVnY2CM2D/xvrvSFYd4IDuSAQqA7CiYOFAzi4erowtILZI8iloYmwFmtmOQL9jsY+ESrzsDyjDMhoqDzHbyd4kk0mzOIE93D7jh9j8Vf4e46EqANDgI3aypN1a8BNLgwARhIzRAfWqPw6cwcbAVwCBNzSvJL6rkYGB19nANDmFg8fP3c+WABAKMw+7v5ubh6AflA33t6+jpBxLgYGDKTGHgz83MS00uSkwrsSouyUzOZgSalV+aV8LIxMDmkpibmA6KMKCRQIcFw813c3WFWgaSAiUPSHjmJyeWZObnsTFwROj6p6UVp5bsvzkTCGYBHc8RBRO6eqg/RuPrAaBQJEzoszEImLAyMEcmljsngrwLACsAhiR7AgAA
'2': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRRJLdPSe/PDMvHcTjYuByLc1JLXLMS89J5WLg8HF1C4n3cXVnY2CM2D/xvrvSFYd4IDuSAQqA7CiYOFAzi4erowtILZI8iloYmwFmtmOQL9jsY+ESrzsDyjDMhoqDzHbyd4kk0mzOIE93D7jh9j8Vf4e46EqANDgI3aypN1a8BNLgwARhIzRAfWqPw6cwcbAVwCBNzSvJL6rkYGB19nANDmFg8fP3c+WABAKMw+7v5ubh6AflA33t6+jpBxLgYGDKTGHgz83MS00uSkwrsSouyUzOZgSalV+aV8LIxMDmkpibmA6KMKCRQIcFw813c3WFWgaSAiUPSHjmJyeWZObnsTFwROj6p6UVp5bYXz3UH6PxDeh4jiio0P6bM0GgASgUCRP6bAwCJqwMzJGJ5c5zG4B2AgDvw9uSewIAAA==
'3': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRRJLdPSe/PDMvHcTjYuByLc1JLXLMS89J5WLg8HF1C4n3cXVnY2CM2D/xvrvSFYd4IDuSAQqA7CiYOFAzi4erowtILZI8iloYmwFmtmOQL9jsY+ESrzsDyjDMhoqDzHbyd4kk0mzOIE93D7jh9j8Vf4e46EqANDgI3aypN1a8BNLgwARhIzRAfWqPw6cwcbAVwCBNzSvJL6rkYGB19nANDmFg8fP3c+WABAKMw+7v5ubh6AflA33t6+jpBxLgYGDKTGHgz83MS00uSkwrsSouyUzOZgSalV+aV8LIxMDmkpibmA6KMKCRQIcFw813c3WFWgaSAiUPSHjmJyeWZObnsTFwROj6p6UVp5bY35wJBLOAjueIggldPdQfo/H1AFAoEiq0/7MxCJiwMjBHJpY7n2oA2gkAVA+5hHsCAAA=
'4': H4sIAAAAAAAAAI1SPU/CQBh+C6UcNe7O7m5OLljotSWBlgBRykJOPJrGa5u0BeJPcHQybv4T4mJ0c3D3B/gnvIMroMTEm973ued53o87HaAMBy6J6EWYhVeMAgik1iAZ7TKSy7zSjwhjPFTKoFphKmHVSKNMKlrxfOPAWVqHpDc0XSdVmyWLMA4EVQcdzxhNjThgVAfUxtZg3Ma2Bspwef9pH3+cj3nsgzw8HhU4F6sONkzB3bn/wS1iKLyNXmfl/XJ59HXXne95S1x4NzzT/6d3rdeyna35+3P34RU1fgvqW3MpkJPW/5i0wFcl+EppnCfpLYJK08H9Aaiu52K5BASl8BoOozCmk5RM8zOWBAonJrM4V0qgmSQigXgNBFXPshzDNdd6BKhjtNxdQOVt9TeJhbEsxbWq+BzrbSYTkodJrAEannjTaUbzbetotA/5Elq+PYrzVIGyTxbNU3H9DUAkfE95AgAA
'5': H4sIAAAAAAAAAI2Sv0/CQBTHX6WUUgdXJhPdmdxcSrG/MNAiEKEs5MSDNPRH0haIf4Axjv4vDm44OTo56+DgwG5iXLyjV/wVE29673vf97l7704CyMGmhXx87MbuiYcBqFKsohg3PZSwPN/2keelMa+7EZN5JfJjVlELZmsClwOhgaIJjtKkYHjh3A3G1CqBpE09HCnB2MMSiHVN7wzqmiEA11tcPRm7D5UBiR1gi8T9TCfFvKkpKvV+2f/mzWLI2EqrsWLfdUvLy+bsF5vplF21Veef7GKrZphruPzaLR2+qBc/C+S3nfeOWi59FrBO5T86zfTVEWSkOEjC6EyE/IGptTvAW7aliekQsqRg67qpWCwnXTeUmkUFETbcU9jy3QAPIzRK9uPEHU44wgqnQcJtgKAiH43pgxEkuVh7zdc1jR1Gt+j3SOcZDlHihoEAYq9sj0YxThaPN0fL821yebHPJPl5j64KkZzMdb9y3eYh56B59Zq2+wEH3C6WewIAAA==
'6': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRhMPunpNfnpmXDlLKxcDlWpqTWuSYl56TysXA4ePqFhLv4+rOxsAYsX/ifXelKw7xQHYkAxQA2VEwcaBmFg9XRxeQWiR5FLUwNgPMbMcgX7DZx8IlXncGlGGYDRUHme3k7xJJpNmcQZ7uHnDD7Vede/m5+vVVkAZ7oIFez13aQBrsfyr+DnHRlUBogPrUHuIjF3Qb7GE+BekABmlqXkl+USUHA6uzh2twCAOLn7+fKwckEGAcdn83Nw9HPygf6GtfR08/kAAHA1NmCgNvbmZeanJRYlqJVVJ+OSPQpPzSvBJGJgY2l8TcxHRQdAENBDorGG66m6sr1CqQFChxQEIzPzmxJDM/j42BI0LXPy2tOLVk/5Kqh+7rBIBO54iCCtnfnAkCDUChSJiqwzEaXw/1J7AyMEcmljttAXkWAMbu+RZ5AgAA
'7': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRhMPunpNfnpmXDlLKxcDlWpqTWuSYl56TysXA4ePqFhLv4+rOxsAYsX/ifXelKw7xQHYkAxQA2VEwcaBmFg9XRxeQWiR5FLUwNgPMbMcgX7DZx8IlXncGlGGYDRUHme3k7xJJpNmcQZ7uHnDDkTXYv7J/vy8z7Dp2DVCf2uPwKUwcrAMYpKl5JflFlRwMrM4ersEhDCx+/n6uHJBAgHHY/d3cPBz94HwOX0dPP2QBFqCdwXCOm6sr1BwGIA8U8wzsyo5BQf7hyqAQy09OLMnMz2Nj4IjQ9U9LK04tsT9S9dB9nQjQeRxRMKGdM4FgFkgoEiZ0C6So6gErA3NkYrnTFpCHAJW79z5dAgAA
Block:
'0':
X-Offset: 0.0
Y-Offset: 0.0
Z-Offset: 0.0
Type: STEP
Data: 0

37
src/Models/GraveStone.yml Normal file
View File

@ -0,0 +1,37 @@
GraveStone:
system-ID: GraveStone
name: '&cGraveStone'
creator: 0e4e3fb0-168f-4f1b-8437-f39ef157af94
PlaceAbleSide: TOP
material: 383
glow: false
lore: ''
crafting:
disable: true
recipe: xxx,xxx,xxx
index:
X: 0
x: '7'
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAH1Sv0/CQBR+QCkHziZMJrrzD7hga1sggYJAlLKQo15JY38kbYG4sTg4Ohn/Av8BBzeig3F0MC4Ozkb/AePiHVwBQ/RN7333fd+79+5yACnY0LFLDu3Q7jsEgCFZGYek4eCI1+mWix2HpokUCJodcFiQAjfkioo3WjhQlljDwQkJ5kWm5Phj2xswag5y6tAhgeQNHJIDVFW1dq+qlkRIdKYXb6Wd570ezQ3gQfNujFOxUFYlhXFXzn9xi1/b322lkIfYW2rWZt4PR/mP88ZozZvjzFuuK8Z/3nFOudlmpVRemj/dNS4fkbx2maU5F/BJi39MGuOzFnSlxIv84BRBer+sttog6HVd5UtAkLSPYdO1PWIG2Ip2Tb9P1x9GvkcSVOAPvSiRBFHBLh6wV0GQqWtaWdKVuQ8CVJMq+iog0Ou1FoWmqrwl1Qrsk0Dq/tpki/VNHNm+JwLqFOqWFZJo+nq2dXvwSadAXQ4VXywWEwoZMev9isUkDSkDj+UbNvcPPJeGj4QCAAA=
'1': H4sIAAAAAAAAAH1SPU8CQRCdgwOWszah1Z4/YIN33gckcEeAKEdDFtwjF+8juTsgWlHYWFoZ/4SVPbExlhbG1lgaf4GxcRf2AEN0qpm3773ZmV0JIAs7JvbJsRu7A48AMKSo4Jg0PZzwOtf2sefRVMiCqLsRh0U58mOuqAWTlQNl5Rs4OiPRsigYXjh1gxGjSiBpY49EcjDyiASorumdfl0z8iB059dvxv7LYZ/mNvCgeS/FqVisarLKuBvnv7iVr73vjlouQeottxoL78eT0udVc7LlzXHmrViq/Z93mlNusVUzqmvz54fmzRNSti6zNucCPmnlj0lTfNGCrpQESRidI8gdVbV2B0TTMjW+BAQZ9xR2fTcgwwg7ycEwHND1x0kYEIEKwnGQCBnIq9jHI/YqCAqWrldlU136IEANuWZuAiK9XntV6JrGW1KtyD4JLLYaDnHihkEeULdsOU5Mksrlxbtxx0ZAvRR6dVjMKGRzaP5xy2KWg6yNp8o9G/oHp1Sx6oECAAA=
'2': H4sIAAAAAAAAAH1SPU8CQRCdgwOWszah1Z4/YIN33hcJ3BEgytGQBffIxftI7g6IHa2llfF/2BMbY2FhYaxMrI2/wNi4C3uAITrVzNv33uzMrgSQhz0LB+TUS7yhTwAYUlZwQlo+Tnld6ATY92kq5EHUvZjDohwHCVfUw+nagbKKTRxfkHhVlAw/mnnhmFElkLSJT2I5HPtEAtTQ9O6goRlFEHqL63fj8OV4QHMHeNC8n+FULJqarDLu1vkvbu3r4LurViuQecvt5tL74azyedWa7nhznHkrtur8553llFtu1w1zY/5837p5RMrOZTbmXMAnrf0xaYYvW9CVkjCN4ksEhRNT63RBtGxL40tAkPPOYT/wQjKKsZsejaIhXX+SRiERqCCahKmQg6KKAzxmr4KgZOu6KVvqygcBasp1axsQ6fU660LXNN6SakX2SWC51WiEUy8Ki4B6Vdt1E5LW3p5Y0BFQP4NeXRZzCjkcWnzcspgXIO/gmXLHhv4Bzdt5cIECAAA=
'3': H4sIAAAAAAAAAHVSMU/CQBj9gFKO+geYTHRyYXNyqYW2lAQKAaJATMiJB2lsr+ZaIP4EJ+PkzyE6GEcHBzfdnR2Mi3dwBYLxpve9e+/dfd+dBpCBHRcH5MSLvHOfAAgmX8IRafo4lnW2HWDf5zCVAcX2mKQVgwWRdFTpdJXAVWods0vClkWu4oczj46FVAPNmviEGXTsEw1QzbI7g5pVUSHVnd+9V/Zfjwcc90AujvsJz82KYxmm0Orfez8ds1jY1iYYkmyjVV9kP50WPm+a0z/ZkhfZpYbZE9qN/f+y861qxVmHvzw0759Radugr8OlQXaq/9Npwi+O4CMlNA7ZNYJs2bHaHVDchmvJISBIexewG3iUDBkexUdRHFIyuGIkiiaMA/F8Ke4MJzROpUE1cYDH4nkQ5Bq27RiuuQxEgOpG1d0kFH7P9qqwLUuezb2K+C3L8YZDHHshVQF1i43RKCKx/vb1eHt2wHtB/YT6SNpDPUnNJZWFTA/PyocC/wI0UKzgigIAAA==
'4': H4sIAAAAAAAAAHVSu04CQRS9CwsM6w9QmWhPZ2WzLuyLBHYJEGVpyIgD2bgPM7tAtLaxtPIv/AViYywt7NXaLzA2zsAsEIxTnXvmnDNz74wCkIc9B4fk1E/884AAcKZcwwlpBzgVdaEb4iBgUMqDbPpU0LJGw0Q4GtFsncBUxRaml4SuipIVxHM/mnCpAooxDQjVoklAFEBNw+wNm4ZVBKm/uH+3Dt9Ohgx7IBbDg4xnZtk2NJ1r1e+Dn55erexqMwxZttZpLbOfzypfd+3Zn2zB8+yaq3tcu7X/X3a507DsTfjrU/vhBdV2DeomXBhEp+o/nWb88gg2UhKlMb1GUKjbRrcHsuM6hhgCgpx/AfuhH5ERxeP0OEnjiAyvKEmSKWWAP5/EnPE0SqUcFHUc4gl/HgQl1zRtzdFXgQhQS2s424TM7tldF6ZhiLOZV+a/ZTXeeIRTP46KgPpVdzxOSKre3nxaj7wXNMioj6w95AlqIagC5D08rx9x/AvZ2JnTigIAAA==
'5': H4sIAAAAAAAAAHVSMU/CQBj9CgUOXB2YTHRnc3KphbaUBFoCRIGFnHiQxvZqrgWi/8DRyX/hXyAuxtHBxFGd/QXGxTu4AsFw0/vevffuvu+uAJCGPQcH5MyLvAufAAgmX8YRafo4lnWmHWDf51BJg2p5TNKqzoJIOmp0ukrgqmwDsyvClkWu6oczj46FtAAFc+ITptOxTwqA6qbVGdTNahaU7vz+o3r0djrguAdycdxPeG5WbVM3hFb7OfztGKXitjbBkGTrrcYi+/m8+H3XnP7LlrzILrtGT2g39ndl51u1qr0Of31qPryg8rZBW4dLg+xU29Fpwi+O4CMlNA7ZDYJMxTbbHVAd1zHlEBCkvEs4CDxKhgyP4pMoDikZXDMSRRPGgXg+hTvDCY2VFGQNHOCxeB4EOdeybN0xloEIUEOvOZuEyu/ZXhWWacqzuVcVv2U53nCIYy+kWUDdkjsaRSSevz/u337ZvBfUl5T2mbSHeolKUhlI9/CscizwH/60gD2KAgAA
'6': H4sIAAAAAAAAAHVSv0/CQBj9CgWO+g8wmejkwqJOLlhoS0mgJUAUiAk58SCN/WGuBeKf4GSc/HOImhhHBwc33Z0djIt3cAWC4ab3vXvv3X3fnQKQhC0Le+TECZ1zlwBwJlvEIam7OBJ1qulh12VQSoJsOFTQskq9UDgq/niRwFTpGqaXhM6LTNkNJo4/5FIFFH3kEqr6Q5cogKq60epV9XIapPb07qO8+3bcY7gDYjHcjXlmlk1d1bi28LPz29LyuXVtjCHOVhu1Wfbzae7rpj7+ly14nl20tQ7Xruxvys42KmVzGf76UL9/QcV1Q2EZLgyi08KGTmN+dgQbKfGjgF4jSJVMvdkC2bItXQwBQcK5gG3P8Umf4kF0FEaBT3pXlIThiDLAn09izmDkR1IC0hr28JA/D4KMbRimamnzQASoplasVUJm92wuCkPXxdnMK/PfMh9v0MeRE/hpQO28PRiEJCq8fz/enu2xXlA3pj7j9lBHUNOnA7b2IQXJDp6UDvn2H2DTx9mKAgAA
'7': H4sIAAAAAAAAAHVSu04CQRS9CwsM6w9QmWhPo1Y268I+IIGFAFGWhow4kI37MLMLRGsbSyv/wl8gxsRYWtirtV9gbJyBWSAYpjr3zDln5t4ZBSANOzb2yakbueceAeBMvoQj0vRwLOpM28eex6CUBtl0qaBljfqRcFSDyTKBqbJ1TC8JXRQ5ywunbjDiUgUUY+wRqgUjjyiAaobZ6dcMKwtSd3b/Ye2/n/QZdkAshnsJz8xyxdB0rlV/9n47erGwqU0wJNlaqz7PfjkrfN81J/+yBc+zSw3d4dq1/W3Z+VbVqqzC356aD6+otGlQV+HCIDpVt3Sa8PMj2EhJEIf0GkGmXDHaHZDthm2IISBIuRew67sBGVA8jI+jOAxI/4qSKBpTBvjzScwZjoNYSkFWxz4e8edBkGuYZkWz9UUgAlTXqvY6IbN7tpeFaRjibOaV+W9ZjDcc4NgNgyygbrExHEYkVm9vvqxH3gvqJdRn0h5yBDV7PmTrADKQdvC0fMS3/wCNW/LqigIAAA==
'8': H4sIAAAAAAAAAHVSPU/CQBh+gQJHXR2YTHRnUSeXWmhLSaAlQJSykBMP0tgPcy0Q/QeOTv4L/wIxJsbRwcRRnf0FxsU7uALBeNPzPvc8z9373skAGdiysE9O3Mg98wgAZwplHJGmh2NRZ9s+9jwGUxmQDJcKWlKpHwlHLZgsE5gq18D0gtBFka964dQNRlwqg6yPPULVYOQRGVBdNzr9ul7NQao7u32v7r0e9xl2QCyGewnPzJKpqxrXKt+7Px2tVNzUJhiSbLXVmGc/nRa/bpqTP9mC59llW3O4dm3/v+xCq1Y1V+EvD827Z1TeNCircGEQnSr/dJrw8yPYSEkQh/QKQbZi6u0OSJZt6WIICNLuOez4bkAGFA/joygOA9K/pCSKxpQB/nwp5gzHQZxKQ07DPh7x50GQtw3DVC1tEYgANdSatU5I7J7tZWHoujibeSX+WxbjDQc4dsMgB6hbsofDiMSzt/vt60+T9YJ6glI+kvaQk6geD9jahyxkHDytHPLtX6o36wSKAgAA
'9': H4sIAAAAAAAAAHVSMU/CQBj9CgUO/ANMJjq5sDm51EJbIIFCgCglJuTEgzS2V3MtEH+Ck3Ey+meMDkY3Bwc33Z0djIt3cAWD4ab3vXvv3X3fXQ4gCRs29smBG7rHHgEQTLaIQ9L0cCTrVNvHnsehkgTVcpmkVZ35oXRU6WSRwFXpOmanhM2LTNkLpi4dCWkOcubYI0ynI4/kANVMq9OvmeU0KN27q/fy9ut+n2MH5OK4F/PcrFZM3RBa7Xvrp2MU8qvaGEOcrbfqs+zHw/znRXPyL1vyIrvYMByh/bO/LjvbqpYry/CX++b1EyquGrRluDTITrU1ncb87Ag+UkKjgJ0jSJUqZrsDqt2wTTkEBAn3BDZ9l5IBw8NoL4wCSvpnjIThmHEgnk/hzmBMIyUBaQP7eCSeB0GmYVkV3TbmgQhQXa/afwmV37O9KCzTlGdzryp+y3y8wQBHbkDTgLqFxnAYkkh7+3q4PNrhvaBeTH3E7SEnpp5v+LqFFCQdPC3tiu1f1yP664oCAAA=
'10': H4sIAAAAAAAAAHVSu04CQRS9wALD+gNUJtrTWdngws4uJLBLgChLQ0YcyMZ9mNkForWNpZXRj/AXjI3RzsJerf0CY+MMzALBONW5Z845M/fOqAAZ2LKITw/dyD32KIBgChUS0ZZHYllnOz7xPA5TGVAMl0la0ZgfSUc9mC4TuCrXJOyUskWRN71w5gZjIVVBxROPMi0Ye1QF1MBGd9DAZg5SvYfrd3P37WDAsQNycdxPeG5WaljThbb8vfPT1UvFTW2CIcnW2s159tNR8euqNf2TLXmRXbF1R2jX9v/LLrTrZm0V/vrYunlGlU1DeRUuDbLT8j+dJvz8CD5SGsQhO0eQrdZwpwuKZVtYDgFB2j2Bbd8N6JCRUbwfxWFAB2eMRtGEcSCeL8Wd4SSIU2nI6cQnY/E8CPK2YdQ0S18EIkBNrW6tEwq/Z2dZGBjLs7lXEb9lMd5wSGI3DHKAeiV7NIpoXL68+DTvRS+on1AfSXvISaiXW77uIAsZh8yqe2L7Fzqrz9iKAgAA
'11': H4sIAAAAAAAAAHVSu04CQRS9yAIDthZUJtrTWdmsCzvLksAuAaJAQ0YcyMZ9mNkFon9gaWX0I/wFYmO0szCxVGu/wNg4A7NAMEx17plzzsy9MzmAJGxbxKPHTuicuhRAMNkiCWndJZGsU02PuC6HiSQohsMkrWjMC6Wj4o8XCVyVrhF2Ttm8yJTdYOL4QyHNQQ6PXMo0f+jSHKAqNlq9Ki6nIdGe3nyU99+Oehx3QC6OuzHPzYqJNV1o1Z+935ZeyK9rYwxxttaozbKfTvLf1/Xxv2zJi+yirXeEdmV/U3a2USmby/DXx/rtMyquG9RluDTITtUNncb87Ag+UupHAbtEkCqZuNkCxbItLIeAYMs5g13P8WmfkUF0GEaBT3sXjIbhiHEgni/BncHIjxJbkNaJR4bieRBkbMMwNUufByJANa1irRIKv2dzURgYy7O5VxG/ZT7eoE8iJ/DTgNoFezAIaTR9f9i5+jJ5L6grKfUzbg91Yurljq97SEGyQyalA7H9Bx3H1jaKAgAA
'12': H4sIAAAAAAAAAI2SPVPCQBCGNxJCiIUNhZWFvX/ABoNcEmYgQWCU0DAnHswN+ZhJAoxWNhaWlv4JKws7rKws7SwcaqmtvSMXRsdxdKvd93af2907DSAHmzb2yTGN6alHALhSrOCYND2ciDjf9rHnpb5s0EjIsh75saioBdM1QcqB0sDRmERpUDC9cEaDEU/VQEMTj0R6MPKIBmodGZ1+HZkKSN35zZu5+3LQZ74Lwpjfy3RWLFtIr/LcL+ffcjMfMrbeaqzYTyfb79fN6Q+20Dm74lTdf7KLrZppreHlj9LFwrwr/V0gJi3/MmmmryrYSkmQhNG5CvlDC7U7INuOjdR0CVlQcAzD0m0Rs6kbes3mggob9Ay2fBqQQYSHyX6c0MFYYqxwEiTSBihV7OMRfzCGZI2113wDIXEZP+LfI91nOMAJDQMF1O6eMxzGJJm/Xu08HC1Z82pPSOXlM7dHJrmZtLjldpmHnItnlXs+7icjaDOCewIAAA==
'13': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRhMPunpNfnpmXDlLKxcDlWpqTWuSYl56TysXA4ePqFhLv4+rOxsAYsX/ifXelKw7xQHYkAxQA2VEwcaBmFg9XRxeQWiR5FLUwNgPMbMcgX7DZx8IlXncGlGGYDRUHme3k7xJJpNmcQZ7uHnDD7b+JVD10XycC0mD/U25H4OtWeZAGGBuhAepTexw+hYmDrQAGaWpeSX5RJQcDq7OHa3AIA4ufv58rByQQYBx2fzc3D0c/KB/oa19HTz+QAAcDU2YKA39uZl5qclFiWolVcUlmcjYj0Kz80rwSRiYGNpfE3MR0UIQBjQQ6LBhuvpurK9QykBQoeUDCMz85sSQzP4+NgSNC1z8trTi1xP4VyN/VQMdzRMGEHvXHaHw91AAUioQJPTkDAg2sDMyRieUQ7wIACUiMrHsCAAA=
Block:
'0':
X-Offset: 0.0
Y-Offset: 0.0
Z-Offset: 0.0
Type: BARRIER
Data: 0

53
src/Models/Hammock.yml Normal file
View File

@ -0,0 +1,53 @@
Hammock:
system-ID: Hammock
name: '&cHammock'
creator: 80f94595-e1f5-3520-b48c-c07d9f03274e
material: 383
glow: false
lore: ''
PlaceAbleSide: TOP
crafting:
disable: false
recipe: 000,XEX,A0A
index:
X: 280
E: 425
A: 17
'0': 0
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAI1STU/CQBCdQilLjXfPcvYPeMFitx9JaRsgSrmQFbdN47ZN2gLxJ3j05M8hXoxHD979Ad4929ItoMTEPb15M+/NzuzKAE04sklEr8IsvGEUoGQ6fZJRl5Gcx61RRBirsKiFKadFJY0yrjDj5dZBaII0IOkdTaugrbNkFcZBWSqDjBeMpkocMCoDsrA2nllYl0CYrB8/9NP3i1mBPeCnwNOaL8SigRW1rN3L/6itMdTeynCw8X65Pvl8cJcH3pwvvfuO6v3TuzM0dWNn/vbsPr2i/m9Bb2fOBXzS3h+T1vymRbFSGudJeo+gdWng0RhE27ExXwKCRngLx1EY03lK/PycJYFQFCaLOBcaIKkkIkH5GgjajqYZiq1WegRooJj2PiEW1xptAw1j3qrQiuXnANR1TctSht1yq8mc5GESS4AmZ47vZzTfjYCmh5THqfWXvzktaHpkVaW/AfCtBOKBAgAA
'1': H4sIAAAAAAAAAI1STU/CQBCdSilLjXfOcvYPeIFCtx9JaRsgSrmQFbdNYz+StkD8BcajJ38O8WI8evDuD/Du2S5sATUm7mnmzbw3+2ZXBqjBsU1iehHm4VVEARjS7JGcuhEpeF4fxSSKtrGohRmHRSWLc84wk+VOQaiBNCDZDc22SUOP0lWYBKxVBhkvIpopSRBRGZCFtfHMwroEwmT98K6fvnVnZewBP2U8rfCSLBpYUVnvQf1bbxVDpa0MBxvt58vWx727/KXNcabdc1Tvn9rNoakbe/HXJ/fxBfV+Ejp7cU7gTjt/OK3wzYhypTQp0uwWQb1v4NEYRNuxMV8CgqPwGk7iMKHzjPjFeZQGQtmYLpJCOAJJJTEJ2GsgaDiaZii2uuUjQAPFtA8BsbzWaJdoGPNRJVdknwNQ2zUtSxm22VbTOSnCNJEATc4c389p0W1VFtCUQ3tXyOPQ+tPfnDrUPLLq37HyFwi+rvqBAgAA
'2': H4sIAAAAAAAAAHVSPVPCQBDdQAhHbLSztrHyD9hAIF/MQMIAo4SGOfBgMiaXmUuAsbRyLK38K3Zo41hQWNjb2Fn6B8zHBRgdrtp9+97b272TAYpwYGGfXLihO/YIQIJU6jgkHQ9HPC/1fOx5WSzqLuOwqDA/5IomXWwchCJIbcyuCcuSsuEFS5fOEqoMsjb3CFPozCMyoJam90ctzZBAGKwePo2Tj9oojh3gJ46HOR6LRVNT1JT7oz6dCke3f7l5DLm30m2n/NfL4+/7zuKfN8cT77qtOgl3p77Pu9JtGubW/P2l8/iG6n8F1a05F/BJq3smzfG0RbxSQqOA3SAoNUyt1wfRsi2NLwFBwb2CQ9+lZMLwNDofY0oJE2JuMKeRUABJxT6eJQ+CoGzruqlYamaBALWVprULiPHNeptE1zTeLdaKyf/IFhpMcOQGVAI0OLOn05BENWmdnOcYGnJoOxByOLT6SlnrEhQdvGzcJeVfRyfdnHwCAAA=
'3': H4sIAAAAAAAAAHVSzU7CQBCeQilLvWjigaveeQEvUOgfCbQEiFIuuOCWNLbbpK0QfQHj0ZNv4SsQL8ajB09e1LNPYLzY0i0QDHua+eb7vtmZXREgD3sG9sipEzpjlwAkSKmOQ9JxccTyQs/DrpvGvOoEDOalwAuZoklnKwcuD0IbB5ckSJOi5vpzh04TqgiicuWSQKJTl4iAWoraH7UUTQBusLj/0I7faqM4toCdOB5meCzmdUWSl9yfo9++XClvc7MYMm+p217yn8/K33ed2T9vhifedVO2Eu5GfZd3qdvU9LX561Pn4QXVtwXVtTkTsEmrOybN8GWLeKWERn5wjaDQ0JVeH3jDNBS2BAQ55wL2PYeSSYDt6GSMKSUBF3P9KxpxORBk7OFp8iAIiqaq6pIhpxYIUFtqGpsAH9+st0pURWHdYi2f/I90of4ER45PBUCDimnbIYlqB3ZyzmNoyKD1QMhi0OL9S3s8vPksQN7C88ZtUv4DChPnCHwCAAA=
'4': H4sIAAAAAAAAAI2RzU7CQBDHh/SDpb6AZzn7DNDK9iOBtqGN0l7IahbSuLRJWyE+gkdPytMQL8ajB++ejS9hl24BNSbuaf7/mfntzqwGIMGRSxb0PCmSS0YBuNMxSEF9RkqhlWBBGKtj2UxyYct6vihEh5Mud4SWBOqI5Nc0r0XbYtkqSee8VAMN3zCa6+mcUQ3QEJvhdIgtFVqTzf27dfLWn1ZxBOJUcdz4VbNsY33Aaw/y32qbGBq2Ph5t2c8Xx593/vIXW/icbXiD6J/sztix7D389cl/eEHGz4beHi4axKS9PyZt/O0V1UppWmb5LQLlzMZBCLLruRjVS2hE2zNNW3d3Go10xz005OrOYCdMjAUHKsV/HtRu4IRxly8suyJlkqUqoMmpN5sVtOyj5nUoFtb+wSgS1uZjzc+jAlJEVnX6C4hAqa1cAgAA
'5': H4sIAAAAAAAAAHVSv0/CQBR+hVKOuujm7OLk5OYChf4igZYAUcpCDjxIY3tNrgXi6Ojo5L/iRlyMg4ODuzFxc/QfsD+uQDC86b3vvu97996dDFCEAwv75NIN3bFHABKkUsch6Xg44nWp52PPy3JRdxmHRYX5IVc06WLtIBRBamN2Q1hWlA0vWLp0llBlkLW5R5hCZx6RAbU0vT9qaYYEwmD18GmcfNRGce4Ajzgf5ngsFk1NUVPur/p0Khzd7XLzHHJvpdtO+S9Xxz/3ncU/b44n3nVbdRLu1vk+70q3aZgb8/fnzuMrqu8KqhtzLuCTVvdMmuNpi3ilhEYBu0VQapharw+iZVsaXwKCgnsNh75LyYThaXQxxpQSJsTcYE4joQCSin08Sx4EQdnWdVOx1MwCAWorTWsbEOOb9daFrmm8W6wVk/+RLTSY4MgNqARocGZPpyGJapXzJGoxNOTQZiDkcGj1/ZZGCYoOXja+kuM/UqZr5nwCAAA=
'6': H4sIAAAAAAAAAI2SvU7CUBTHT6GUUgcTJ2Z3ExOdWKDQLwy0BIhQFrziLWnoR9IWiE9gHH0aR+LiC+iukw4+g8R76S1q1MQznfM/5/9rz2klgDzsmMjHp27snnsYgCqlOopxx0MJqws9H3lemvOaGzGZlyM/Zo5msNgSuDwIbRTNcJQWRd0Ll24wpaMSSOrcw5EcTD0sgdhStf64peoCcMPVzZO+/1gbk9wGFiQfZTox84YqK3T2S//bbJZDxpa77Q37flB+u+4sfrCZTtl1S7H/yS51m7rxCX8ZlE9elStqqK5v75z3deV3A9u0+semmb5xkJPiIAmjSxEKDUPt9YE3LVMV0yNkRdHSNEM2WU22bstNkwoi5NwL2PXdAE8i5CSVOHEnM46wwnmQcDkQFOSjKf1gBElerLfla6rKHkZb9PdI7xlOUOKGgQDi8MBynBgntT2HxhmRRkxaPWf7iDaTqg9HNA4LkLfRsnFM2x8K14JSewIAAA==
'7': H4sIAAAAAAAAAI1SvU7CUBj9CqWUOpg4OTsYFxMTnXSAQv8w0BJAocQEL3hLGvqTtAXiExgnw3v4DiYOvoA6u+ngapy9l7aoURO/6Zxz7znt+VoBIAsrOnLxsR3aAwcDUKVQRiFuOChKeK7lIseJMavYQSKzYuCGBDHEUfWmywTCuToKxjiISV51/JntjahLAEGeODgQvZGDBeBrstLu12SVA6Z7M39SNx5KfYJNSIbgXqoTM6vJokTvfjn/djfFkGaLzfoi+66z/nrZmP7ITnSaXTYk85/ZhWZV1T7Dnzvrhy/SBTUU3wbX882Do98NSdPiH01TfeEgK8Ve5AfnPOQqmtxqA6sbuszHS0hJ3lAUTdQTTlrXxapOBR4y9hmsuraHhwGyov0wsodjhmT5Ey9iMsBJyEUj+sFIJHmx1jJfkeXkYfSI/h7xPv0himzf44DvbhuWFeKotGbROSVSL5GKj7dXJ1vvpA9vptL9Lp2dHGRNNKvs0bofjDE1QnsCAAA=
'8': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GMhiBOrwzCuDmwDks/kmFmWnFkE47O45+eWZeekgXVwMXK6lOalFjnnpOalcDBw+rm4h8T6u7mwMjBH7J953V7riEA9kRzJAAZAdBRMHambxcHV0AalFkkdRC2MzwMx2DPIFm30sXOJ1Z0AZhtlQcZDZTv4ukUSazRnk6e6BMPxZuITXc5d2kAb7L0lrJqpZh2LXAPWpPQ6fwsTBOoBBmppXkl9UycHA6uzhGhzCwOLn7+fKAQkEGIfd383Nw9EPygf62tfR0w8kwMHAlJnCwJ+bmZeaXJSYVmJVXJKZnM0INCu/NK+EkYmBzSUxNzEdFGFAI4EOC4ab7+bqCrUMJAVKHpDwzE9OLMnMz2Nj4IjQ9U9LK04tsf/6ulVuRxDQ8RxRUKH9Vw/1x2h8AwlFwlRdNgYBA1YG5sjEcoh3Ad4pBN97AgAA
'9': H4sIAAAAAAAAAI1SPU/CQBh+KwVKHVyZHNxNTNxYsNgvDLQEiFAWcuKVXOhH0haIP8AYR3+NbsbFP6C7TjowO0q8oz3UqIk3Pc/z3vPcve+dDJCDTQv5+JjE5MTDAEwp1VCMWx5KMp7v+MjzUizqJMpkUYn8mCKBOurBbJ1AeaGJogmOUlI0vHBOgjFzySBrUw9HSjD2sAxSQ9O7w4ZmFEDo3149GTuPB0OKHcgWxQOuU7NoaorK9n6pf9vLMfBspd1cZd/3yovL1uxHdqaz7JqtOv/MLrXrhvkZ/tIrH72qF8xQXV7fue/Lyu+GrNPqH51yfeWgI8VBEkZnEuQPTa3TBdGyLU1Kh8BJ0dZ1U7EyTrtuKnWLCRJskFPY8kmARxFyk0qckNFEoFnhNEiEDSioyEdj9mA0kl6ss87XNS07jJXY90jnGY5QQsKgAFJ/13bdGCfVt8X59k2bXl4acOmZ9yM5XHrYZ2svDzkHzdPyB7WYcRV7AgAA
Block:
'0':
X-Offset: 0.0
Y-Offset: 0.0
Z-Offset: 0.0
Type: FENCE
Data: 0
'1':
X-Offset: 0.0
Y-Offset: 1.0
Z-Offset: 0.0
Type: FENCE
Data: 0
'2':
X-Offset: 6.0
Y-Offset: 0.0
Z-Offset: 0.0
Type: FENCE
Data: 0
'3':
X-Offset: 6.0
Y-Offset: 1.0
Z-Offset: 0.0
Type: FENCE
Data: 0

46
src/Models/Sunshade.yml Normal file
View File

@ -0,0 +1,46 @@
Sunshade:
system-ID: Sunshade
name: '&cSunshade'
material: 383
glow: false
lore: ''
creator: 80f94595-e1f5-3520-b48c-c07d9f03274e
PlaceAbleSide: TOP
crafting:
disable: false
recipe: AAA,0X0,0X0
index:
'0': 0
X: 280
A: 171
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAI2Sv0/CQBTHX6GUUgcXBycHdyeZTAgW6A8SaBGIUhZy4kEu9IdpC0R3B0f/BndnNzb/AhOdNMaR3dk7eiUaY/Sm977vvc+99+4UgCxsWMjDxyQipy4GYEqhgiLcclHM/VzHQ66b2KJOQi6LauhFvKLuz9YEIQtSE4UTHCZO3nCDOfHHLFUBRZu6OFT9sYsVkBua3h00NEMCobe4eTV2Hw8H1HaAH2r3U50Wi6am1ljul/i33NSGlK22myv2w8n28ro1+8HmOmNX7JrzT3ahXTfMNbz8UTq/fVJKfxfwScu/TJrqqwq6UuzHQXghQ65qap0uiJZtaXKyhNTJ27puqhb36dRNtW4xQYYMOYNNj/h4GKJRfBDFZDgRKCuY+rGQAamGPDRmD0aRtLHOmq9rGr+Mhdj3SPYZDFFMAl8Cubdnj0YRjhfPR8urnXvavNxPpZetyzfjjklOKr3vs1PMQdZB82qRjfsJmzd4nXsCAAA=
'1': H4sIAAAAAAAAAI2SvU/CQBTAX6GUUgcXBycHdzcnE4IFri0JtHxFKQs58SAN/TBtgeju4Ojf4O7sxuZuYqKTxpnFydk7eiUaY7TTe79779d7r1UAsrBhYo8cOZFz4hIARgplHJGmi2Oe5zoedt0kFjUn5FhUQy/iHTV/tjYIWZAaOJyQMEnyuhvMHX/MShVQ0NQloeqPXaKAXEdad1BHugRCb3H9qu8+Hg5obAN/aNxPOW0WDaRWWe2X82+1aQypW203Vu774+3lVXP2w805c5etqv1Pd6Fd0421vPRRPLt5Uop/N/BJS79MmvJVB10p8eMgPJchVzFQpwuiaZlITpaQJnlL0wzV5DmduqHWTAZkyDinsOk5PhmGeBQfRLEznAjUFUz9WMiAVMUeHrMPRpX0Yp21X0OIv4wdsd8j2WcwxLET+BLIvT1rNIpIvHhuLS937ujl5X6KXrYu3vRbhmyOSg+sqPWeg6yN55V9Nu4nBXVOgHsCAAA=
'2': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQklkD5rMG5iTk5EDaLW2YRVJjFsSi3GKrDM68MbgIjMwObb2JRdmoRhMPunpNfnpmXDlLKxcDlWpqTWuSYl56TysXA4ePqFhLv4+rOxsAYsX/ifXelKw7xQHYkAxQA2VEwcaBmFg9XRxeQWiR5FLUwNgPMbMcgX7DZx8IlXncGlGGYDRUHme3k7xJJpNmcQZ7uHnDD7b/ZFiy+zmVLWAPUp/Y4fAoTB+sABmlqXkl+USUHA6uzh2twCAOLn7+fKwckEGAcdn83Nw9HPygf6GtfR08/kAAHA1NmCgN/bmZeanJRYlqJVXFJZnI2I9Cs/NK8EkYmBjaXxNzEdFCEAY0EOiwYbr6bqyvUMpAUKHlAwjM/ObEkMz+PjYEjQtc/La04tWT/jcDXrXI7gI7niIIJ3ROpeui+DiQUCRWy/9Qfo/H10ARWBubIxHJnE5B3AS8g/Xt7AgAA
'3': H4sIAAAAAAAAAI2SvU7DMBDHL22SuoGBkZmOiBdgKSlxPqQ2idoKmi6VKW4VkQ/kpK14AsTIxKuwIRbEyMDOA7DxBCSN0xYqJDzd/X3/n31nKwBV2LFJSM/8xL8IKECu1FskoW5AUp5LvZAEQRGLus+4LKosTLjDiuYrglAFuUPYFWVFUjOCeOFH07xUAQXPAsrUaBpQBVAb6/1RGxsyCIOn+w/j4P1klMUe8JXFw1LPzKKJVS2v3dj/UVvGULLVbmfJfjnf/7xz51tsrufslqN5/2TXu5ZhruFvz+7DK2r9NjTXcG7gnTb/6LTUl0dkI6VRGrMbBNKpiXt9EG3HxnwICCr+JeyFfkTHjEzS4zFh1zQVstp4FqVCBWSNhGSaPwiCmqPrpmprBQIB6qiWvSmI2c16q0THmJ+WecX8f4DU6DtuI59qPCapH0cyoMGRM5kkNF23gIbbksel5tftYWXXepSg6pFFsf0NOIZS7oECAAA=
'4': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621ibUWeMgekMAdEaJCYxZcLhf39pK9BUJvY2FhxeeojbEyFjZWfIAfQOutLGIwbDXz5r03O7NrARiw4ZKQngdx0GUUQCH5IolpgxGp80wzJIzNY9MJhIZNW4SxVlT58NchZUC2TsQNFfMkV2bRKOC+olpg4QGjwuY+oxagGnZaVzVczkLq8vFhWt77OLlK4jbok8SdBZ6IzQq2S4r7hPjk3pser3IXMSy87bP6j/fLxe7XXWP4z1vjyrvoldqK+6e+zjt/Vi1Xlubvz43JKyquCgpLcy3QkxbWTLrAf1okK6VcRmKMIHNawc0WmK7nYr0EBOngGrbDgNOeIH151CWcU5FKuNGAy5QFhiS+BZtFFvVuMJeBHLeInwfUIFJSwWMraZpGkNM5pLvSUGoWqXfbgLWlLSWEbImExKdq0ZDzHKdiu6X5DRGgul11/wJmMnjzN3Ew1sMkWlN9P7D2cQ3XsdvaP1QvF/WIDCKeBXR54PX7MZXLNaHOf6itocKsOXv73LnNgNEmo3n5G7ryM6/lAgAA
'5': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErYy21ha0WeMjeQQJ3RIiCjVlwuVzc20v2Vgm9jYWFFb/gX6iNsTIWNlZ+gB9g6y0sYjRsNfPmvTc7s2sBGLDikYgehUnYZxRAIcUKSWiLEanzXDsijM1i0wmFhk1bRIlW1Pnlj0PGgHyTiHMqZknBZfEo5IGiWmDhC0aFzQNGLUAN7HROG9jNQ6Z7f/vhbr3tn6ZxD/RJ45M5norNGrarivuA+OTG/9j7y53HMPe2D5tT76fjzc/r1uU/b40r74pf7Snur/oy7+Jh3a0tzF8fW5NnVPkrKC/MtUBPWl4y6RyftkhXSrmMxRhB7qCG2x0wPd/DegkIsuEZrEchpwNBhnK3TzinIpNy4wsuMxYYkgQWrFZYPDjHXIZy3CFBEVCLSEkFT6y0aRZBQeeQ7UtDqVms3m0FlpbWlBDyVRKRgKpFQ8F3nJrtVWc3RICadt37DZjp4O2fxMFYD5NqTfX9wCrhBm5ir1PaUS8XD4gMY54H1N32h8OEysWa0Ml/qKeh8lf76+V94yoHRo+M7DtV/gZXPKFG5QIAAA==
'6': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY62NjY2lFngne0ACdwSICo1ZcLlc3NtL9laNvY2FhZWfozbGyljYWPEBfgCtt7CA0bDVzJv33uzMrgVgwIpHInocJmGfUQCFFB2S0CYjUue5dkQYm8amGwoNm7aIEq2o8au5Q8aAfIOICyqmSaHC4uuQB4pqgYUvGRU2Dxi1ANWx2zmr40oeMqdPD6PK1ufhWRp3QZ807s3wVGxWsV1W3GfEH+/90cFf7iyGmbfdaky8X082v++aV/+8Na68Hb/cVdxf9WXexVatUl2Yf7w0H9+Q81dQWphrgZ60tGTSGT5pka6UchmLGwS5oypud8D0fA/rJSDIhuewHoWcDgQZyv0+4ZyKTMqNL7nMWGBIEliw6rB4cIG5DOVNhwRFQE0iJRU8sdKmWQQFnUO2Lw2lZrF6txVYWlpTQsiXSUQCqhYNBd91q7ZXnt4QAWrYNe83YKaDt+eJi7EeJtWa6vuBtY3ruIG9zvaeerl4QGQY8zyg011/OEyoXKwJ9f5DXQ2Vxu3x+9fGbQ6MLrl2dlT5B/67kcflAgAA
'7': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621lZ0WeCd7QAJ3RIgCDVlwuVzc20v2Vo2JpY2FhZWfozbGyljYWPkBfoCtt7CAwbDVzJv33uzMrgVgwIpHInocJuGAUQCFFB2S0CYjUue5VkQYm8SmGwoNm7aIEq2o8YuZQ8aAfIOIMyomSaHC4suQB4pqgYXPGRU2Dxi1ANWx2+7XcSUPmc7j/Vdl6+Ogn8Zd0CeNe1M8FZtVbJcV9wnxhzv/a3+RO41h6m0fNcbeLyeb37fNi3/eGlfejl/uKu6f+jLv4lGtUp2bvz83H16Rsygozc21QE9aWjLpFB+3SFdKuYzFFYLcYRW32mB6vof1EhBkw1NYj0JOh4KM5N6AcE5FJuXG51xmLDAkCSxYdVg8PMNchvKqTYIioCaRkgqeWGnTLIKCziE7kIZSs1i92wosLa0pIeTLJCIBVYuGgu+6VdsrT26IADXsmvcXMNPBW7PExVgPk2pN9f3A2sZ13MBee3tXvVw8JDKMeR5QZ8cfjRIq52tCvf9QV0Oln9bP2+fGTQ6MLrl0rlX5F4YRw2flAgAA
'8': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621nZUWeCd7QAJ3RIgCjVlwuVzc20v2Vgm9jYWFlb/gX6iNsTIWNlZ+gB9g6y0sYDRsNfPmvTc7s2sBGLDikYgeh0nYZxRAIUWHJLTJiNR5rhURxqax6YZCw6YtokQravxy7pAxIN8g4pyKaVKosHgU8kBRLbDwBaPC5gGjFqA6dtundVzJQ6bzcPtZ2Xo/OE3jLuiTxr0ZnorNKrbLivuI+N2N/7n/lzuLYeZtHzUm3s8nm1/Xzct/3hpX3o5f7irur/oy7+JRrVJdmL89Ne9ekPNXUFqYa4GetLRk0hk+aZGulHIZizGC3GEVt9pger6H9RIQZMMzWI9CTgeCDOVen3BORSblxhdcZiwwJAksWHVYPDjHXIZy3CZBEVCTSEkFT6y0aRZBQeeQ7UtDqVms3m0FlpbWlBDyZRKRgKpFQ8F33artlac3RIAads37DZjp4K154mKsh0m1pvp+YG3jOm5gr729q14uHhAZxjwPqLPjD4cJlYs1od5/qKuh0nfr+/Vj4yoHRpeMnHtV/gEHhoLB5QIAAA==
'9': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621pY0WeCd7QAJ3RIgCjVlwuVzc20v2Vgm9jYWFlZ+jNsbKGGNj5Qf4AbbewgJGw1Yzb957szO7FoABKx6J6HGYhH1GARRSdEhCm4xInedaEWFsGptuKDRs2iJKtKLGL+cOGQPyDSLOqZgmhQqLRyEPFNUCC18wKmweMGoBqmO3fVrHlTxkOve3n5Wt94PTNO6CPmncm+Gp2Kxiu6y4D4jf3fif+3+5sxhm3vZRY+L9dLL5dd28/OetceXt+OWu4v6qL/MuHtUq1YX562Pz7hk5fwWlhbkW6ElLSyad4ZMW6Uopl7EYI8gdVnGrDabne1gvAUE2PIP1KOR0IMhQ7vUJ51RkUm58wWXGAkOSwIJVh8WDc8xlKMdtEhQBNYmUVPDESptmERR0Dtm+NJSaxerdVmBpaU0JIV8mEQmoWjQUfNet2l55ekMEqGHXvN+AmQ7emicuxnqYVGuq7wfWNq7jBvba27vq5eIBkWHM84A6O/5wmFC5WBPq/Ye6Gip9t75fPjaucmB0ych5U+UfGr0hH+UCAAA=
'10': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621rYUWeCd7QAJ3BIiCjVlwuVzc20v2Foy9jYWFlZ+jNsbKWNhY8QF+gI2Ft7CI0bDVzJv33uzMrgVgwIpHInoUJmGfUQCFFB2S0CYjUue5dkQYm8WmGwoNm7aIEq2o8fGPQ8aAfIOIcypmSaHC4ouQB4pqgYVHjAqbB4xagOrY7ZzWcSUPme797aSy9XZwmsY90CeNT+Z4Kjar2C4r7gPidzf+ZP8vdx7D3NtuNabeT8ebH9fN8T9vjStvxy/3FPdXfZl3sVWrVBfmr4/Nu2fk/BWUFuZaoCctLZl0jk9bpCulXMbiEkHusIrbHTA938N6CQiy4RmsRyGnA0GGcq9POKcik3LjEZcZCwxJAgtWHRYPzjGXobzskKAIqEmkpIInVto0i6Cgc8j2paHULFbvtgJLS2tKCPkyiUhA1aKh4Ltu1fbKsxsiQA275v0GzHTw9k/iYqyHSbWm+n5gbeM6bmCvs72rXi4eEBnGPA+ou+MPhwmVizWhk/9QT0Olz/bny/vGVQ6MHrlwvlT5G+ppktflAgAA
'11': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ETE2MttbWJFnjAHpDAHRGiYmMWXC4X9vaSvVVCb2NhYcXnqI2xMhY2Vn6AH2DrrSxiIGw18+a9NzuzawEYsOaSkJ4EcdBjFEAh+RKJaYsRqfNMOySMTWPTCYSGTVuEsVbU+fWfQ8qAbJOIIRXTJFdl0SjgvqJaYOErRoXNfUYtQA3sdC4auJqF1NnD/Wd19/3oIom7oE8Sn8/wRGzWsF1R3EfEJ3fe5+EidxbDzNs+bv56P5/ufN22rpe8Na68S16lq7j/6qu888f1am1u/vbUmryg0qKgODfXAj1pccWkM/y3RbJSymUkxggy5Rpud8B0PRfrJSBIB5ewGQac9gUZyIMe4ZyKVMKNrrhMWWBI4luwXmJRf4i5DOS4Q/w8oBaRkgoeW0nTNIKcziHdk4ZSs0i92xqsLG0oIWQrJCQ+VYuGnOc4NdutTG+IADXtuvsfMJPB23+Jg7EeJtGa6vuBVcAN3MRup7CvXi7qExlEPAvobM8bDGIq52tC58tQV0PF7/b368f2TQaMLhmVt1T5BzIpi9vlAgAA
'12': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY62Njb3RAg/ZAxK4I0BUaMyCy+Xi3l6yt0robSwsrPwctTFWxsLGig/wA2i9hUWIhq1m3rz3Zmd2LQAD1lwS0tMgDnqMAigkXyQxbTAidZ5phYSxWWw6gdCwaYsw1ooqv/l1SBmQrRNxRcUsyZVZNAy4r6gWWPiaUWFzn1ELUA077YsaLmchdf70MC7vfB5fJHEH9Eni7hxPxGYF2yXFfUb88d4bH/3lzmOYe9vN+tT79Wz7+65x889b48q76JU6irtUX+Wdb1bLlYX5x0vj8Q0V/woKC3Mt0JMWVkw6x6ctkpVSLiMxQpA5qeBWG0zXc7FeAoJ0cAmbYcBpX5CBPOwRzqlIJdzomsuUBYYkvgXrRRb1rzCXgRy1iZ8H1CBSUsFjK2maRpDTOaR70lBqFql3W4OVpQ0lhGyJhMSnatGQ8xynYrul2Q0RoLpddZcBMxm89Zs4GOthEq2pvh9Yu7iG69ht7x6ol4v6RAYRzwI63/cGg5jKxZpQ9z/U0VBh0pq8f23dZsDokOHJnir/AKf5og/lAgAA
'13': H4sIAAAAAAAAAHVSsU4CQRAduAOWM1ErY621H6DG4CF7QAJ3BIgKjVlwuVzc20v2Vgm9jYWFlZ+jNsbKWNhY8QF+AK23sAjRsNXMm/fe7MyuBWDAmktCehrEQY9RAIXkiySmDUakzjOtkDA2i00nEBo2bRHGWlHlN78OKQOydSKuqJgluTKLhgH3FdUCC18zKmzuM2oBqmGnfVHD5Sykzp8exuWdz+OLJO6APkncneOJ2Kxgu6S4z4g/3nvjw7/ceQxzb7tZn3q/nm1/3zVu/nlrXHkXvVJHcZfqq7zzzWq5sjD/eGk8vqHiX0FhYa4FetLCiknn+LRFslLKZSRGCDInFdxqg+l6LtZLQJAOLmEzDDjtCzKQBz3CORWphBtdc5mywJDEt2C9yKL+FeYykKM28fOAGkRKKnhsJU3TCHI6h3RPGkrNIvVua7CytKGEkC2RkPhULRpynuNUbLc0uyECVLer7jJgJoO3fhMHYz1MojXV9wNrF9dwHbvt3X31clGfyCDiWUDne95gEFO5WBPq/oc6GipMWpP3r63bDBgdMjw5UuUfJiJjyuUCAAA=
'14': H4sIAAAAAAAAAHVSsU4CQRAduAOWI1ErYy21ibZa4CF7QAJ3BIgCjVlwuVzc20v2Vo29jYWFFZ+jNsbKWNhY+QF+gK23sIjBsNXMm/fe7MyuBWBAwSUhPQ7iYMgogELyZRLTFiNS55lOSBibxaYTCA2btghjrajzy1+HlAHZJhHnVMySXJVFVwH3FdUCC18wKmzuM2oBamCne9rA1Sykeg/3n9Xt98PTJO6DPkk8mOOJ2Kxhu6K4j4hP7rzPg2XuPIa5t91uTr2fT7a+bluX/7w1rrzLXqWvuH/qq7zz7Xq1tjB/e2pNXlB5WVBamGuBnrS0YtI5Pm2RrJRyGYlrBJmjGu50wXQ9F+slIEgHZ7ARBpyOBBnL/SHhnIpUwo0uuExZYEjiW7BWZtHoHHMZyOsu8fOAWkRKKnhsJU3TCHI6h/RQGkrNIvVuBVhZWldCyFZISHyqFg05z3FqtluZ3RABatp19y9gJoN3fhMHYz1MojXV94NCETdwE7vd4t6uerpoRGQQ8Syg3o43HsdULvaEBv+hvoZK353v14/NmwwYfXJ11FblHy+EihfmAgAA
'15': H4sIAAAAAAAAAHVSPU8CMRh+4Q4oR6JOxllnB1Yd8JAekMAdEaLgYgqWy8VeL+kVCLuLg4MTP0ddjJNxcHHyB/gDXL1CEaOh0/s+fZ6nfT8sAAMKLgnpaRAHfUYBFJIvk5i2GJE6z7RDwtgiNp1AaNi0RRhrRZ2PfxxSBmSbRFxRsUhyVRZNAu4rqgUWHjEqbO4zagFqYKdz0cDVLKS693cf1d23o4sk7oE+SXy+xBOxWcN2RXEfEJ/deh+Hf7nLGJbe9klz7v10tvN50xr/89a48i57lZ7i/rpf550/qVdrK/PXx9bsGZX/Ckorcy3QlZbWVLrE508kLaVcRmKKIHNcw+0OmK7nYt0EBOngErbCgNOBIEN50CecU5FKuNGIy5QFhiS+BRtlFg2uMJeBnHaInwfUIlJSwWMreTSNIKdzSPelodQsUnMrwNqrTSWEbIWExKeq0ZDzHKdmu5XFDxGgpl13fwNmUnj7J3Ew1sUkWlOtHxT2cAM3sdvZKxbV6KIBkUHEs4C6+95wGFO56hM6/w/1NFT6an+9vG9fZ8DokcnxfOe+AapwihPmAgAA
'16': H4sIAAAAAAAAAHVSsU4CQRAduAOWI1ErY621hZZa4CF7QAJ3BIgKjVlwuVzc20v2Vo2JpY2FhZWfozbGyljYWPEBfgCtt7CA0bDVzJv33uzMrgVgQMElIT0K4qDPKIBC8iUS0yYjUueZdkgYm8amEwgNm7YIY62o8cu5Q8qAbIOIcyqmSa7CoquA+4pqgYUvGBU29xm1ANWx0zmt40oWUidPD6PK5ufBaRJ3QZ8k7s3wRGxWsV1W3GfEH++90f5f7iyGmbfdaky8X483vu+al/+8Na68S165q7i/6su8861apbow/3hpPr6h0l9BcWGuBXrS4pJJZ/ikRbJSymUkrhFkDqu43QHT9Vysl4AgHZzBWhhwOhBkKPf6hHMqUgk3uuAyZYEhiW/BSolFg3PMZSCvO8TPA2oSKangsZU0TSPI6RzSfWkoNYvUuxVgaWlVCSFbJiHxqVo05DzHqdpueXpDBKhh19zfgJkM3p4nDsZ6mERrqu8HhS1cxw3sdrZ2dtXTRQMig4hnAZ1se8NhTOViT6j3H+pqqDhuj9+/1m8zYHTJ1eGNKv8ArJP4suYCAAA=
'17': H4sIAAAAAAAAAHVSMU8CMRR+cAeUI1En46yzg3HTAQ/pAQncESEqLqZguVzs9ZJe0bg5OOjg4OTPURfjZBxcnPwB/gBXWyliNHR673vf972+1zoAFpR8EtPdKI36jAJopFghKW0zIk2e68SEsXFse5EwsO2KODWKBj/5cchYkG8RcUzFOCnUWHIa8VBTHXDwiFHh8pBRB1ATe93DJq7lIbN/d/NeW37dOlRxD8xR8cEEV2K7jt2q5t4jfnsdvG/+5U5imHi7O61v78e9pY+r9sk/b4Nr70pQ7Wnur/os7+JOo1afmr88tG+fUOWvoDw1NwIzaXnGpBP8u4VaKeUyEWcIctt13OmC7Qc+NktAkI2OYCGOOB0IMpQbfcI5FRnFTUZcZhywJAkdmKuwZHCMuYzkWZeERUBtIiUVPHVU0yyCgskh25eWVrNEv1sJZpbmtRDyVRKTkOpFQyHwvLrrV8c3RIBabsP/Ddhq8M5P4mFshlFaW38/KK3gJm5hv7uytq6fLhkQGSU8D2h/NRgOUyqne0IH/6Gegcqfnc/nt8WLHFg9crp9ea7KX3kQ1I/mAgAA
'18': H4sIAAAAAAAAAHVSsU4CQRAduAOWI1ErY621hYmVFnjIHpDAHQGiQmMWXC4X9/aSvVVjb2NhYSz8HLUxVsbCxooP8ANovYUFjIatZt6892Zndi0AAwouCelREAd9RgEUki+RmDYZkTrPtEPC2DQ2nUBo2LRFGGtFjV/OHVIGZBtEnFMxTXIVFl0F3FdUCyx8waiwuc+oBaiOnc5pHVeykDp5uh9VNj8PTpO4C/okcW+GJ2Kziu2y4j4j/njnjfb/cmcxzLztVmPi/Xq88X3bvPznrXHlXfLKXcX9VV/mnW/VKtWF+cdL8/ENlf4KigtzLdCTFpdMOsMnLZKVUi4jcY0gc1jF7Q6YrudivQQE6eAM1sKA04EgQ7nXJ5xTkUq40QWXKQsMSXwLVkosGpxjLgN53SF+HlCTSEkFj62kaRpBTueQ7ktDqVmk3q0AS0urSgjZMgmJT9WiIec5TtV2y9MbIkANu+b+Bsxk8PY8cTDWwyRaU30/KGzhOm5gt7O1s6ueLhoQGUQ8C+hk2xsOYyoXe0K9/1BXQ8Vxe/z+tX6TAaNLrg4fVPkHyU6Jr+YCAAA=
'19': H4sIAAAAAAAAAHVSMU8CMRR+cAeUI1En46yzg4OLDnhID0jgjghRcTEFy+Vir5f0isbNwcXBwcnJ36Iuxsk4uDj5A/wBrrZSxGjo9N73vu97fa91ACwo+SSmu1Ea9RkF0EixQlLaZkSaPNeJCWPj2PYiYWDbFXFqFA1+8uOQsSDfIuKYinFSqLHkNOKhpjrg4BGjwuUhow6gJva6h01cy0Nm/+76vbb8unWo4h6Yo+KDCa7Edh27Vc29R/zmKnjf/MudxDDxdnda396Pe0sfl+2Tf94G196VoNrT3F/1Wd7FnUatPjV/eWjfPKHKX0F5am4EZtLyjEkn+HcLtVLKZSLOEOS267jTBdsPfGyWgCAbHcFCHHE6EGQoN/qEcyoyipuMuMw4YEkSOjBXYcngGHMZybMuCYuA2kRKKnjqqKZZBAWTQ7YvLa1miX63EswszWsh5KskJiHVi4ZC4Hl116+Ob4gAtdyG/xuw1eCdn8TD2AyjtLb+flBawU3cwn53ZW1dP10yIDJKeB7Q/mowHKZUTveEDv5DPQOVPzufz2+LFzmweuR0+/Zclb8A4IUhkOYCAAA=
'20': H4sIAAAAAAAAAHVSsU4CQRAduAOWI1ErY621hY2FFnjIHpDAHQGiQmMWXC4X9/aSvVVjb2NhYeUv+BdqY6yMhY0VH+AH0HoLCxgNW828ee/NzuxaAAYUXBLSoyAO+owCKCRfIjFtMiJ1nmmHhLFpbDqB0LBpizDWihq/nDukDMg2iDinYprkKiy6CrivqBZY+IJRYXOfUQtQHTud0zquZCF18nQ/qmx+HpwmcRf0SeLeDE/EZhXbZcV9Rvzhzhvt/+XOYph5263GxPv1eOP7tnn5z1vjyrvklbuK+6u+zDvfqlWqC/OPl+bDGyr9FRQX5lqgJy0umXSGT1okK6VcRuIaQeawitsdMF3PxXoJCNLBGayFAacDQYZyr084pyKVcKMLLlMWGJL4FqyUWDQ4x1wG8rpD/DygJpGSCh5bSdM0gpzOId2XhlKzSL1bAZaWVpUQsmUSEp+qRUPOc5yq7ZanN0SAGnbN/Q2YyeDteeJgrIdJtKb6flDYwnXcwG5na2dXPV00IDKIeBbQybY3HMZULvaEev+hroaK4/b4/Wv9JgNGl1wdPqryD7hB+6LmAgAA
'21': H4sIAAAAAAAAAHVSsU7DMBC9NmnrphIwIWaYGZiQYCgpddpKbVLRCigLcosbRTiO5LggNgYWBgYm/oMfABbEhBhYmPgAPoAVm7oUgerp7t1773xnOwAWlHwS090ojfqMAmikWCEpbTMiTZ7rxISxcWx7kTCw7Yo4NYoGP/lxyFiQbxFxTMU4KdRYchrxUFMdcPCIUeHykFEHUBN73cMmruUhs393/V5bft06VHEPzFHxwQRXYruO3arm3iN+cxW8b/7lTmKYeLs7rW/vx72lj8v2yT9vg2vvSlDtae6v+izv4k6jVp+avzy0b55Q5a+gPDU3AjNpecakE/y7hVop5TIRZwhy23Xc6YLtBz42S0CQjY5gIY44HQgylBt9wjkVGcVNRlxmHLAkCR2Yq7BkcIy5jORZl4RFQG0iJRU8dVTTLIKCySHbl5ZWs0S/Wwlmlua1EPJVEpOQ6kVDIfC8uutXxzdEgFpuw/8N2Grwzk/iYWyGUVpbfz8oreAmbmG/u7K2rp8uGRAZJTwPaH81GA5TKqd7Qgf/oZ6Byp+dz+e3xYscWD1yun17rspf07szCOYCAAA=
Block:
'0':
X-Offset: 0.0
Y-Offset: 2.0
Z-Offset: 0.0
Type: BARRIER
Data: 0

97
src/Models/Tent1.yml Normal file
View File

@ -0,0 +1,97 @@
Tent1:
system-ID: Tent1
name: '&cTent #1'
creator: 10eabfae-1d87-3120-b9bc-cb16bfa6ce88
material: 383
glow: false
lore: ''
PlaceAbleSide: TOP
crafting:
disable: false
recipe: 0X0,XEX,EAE
index:
'0': 0
E: 35
A: 58
X: 280
ProjectModels:
ArmorStands:
'0': H4sIAAAAAAAAAH1SvVLCQBDeQIAjNpbW9r6ADQZzSZiBhAFGCQ1z4sFkzI9zCTA+gqWVP2/gI1gxNo52FvY+gK0P4B25AOroVrvfft93t3unARRhyyEhPfIT/ySgAAKp1klC2wFJRa0UodQNSRBkPdX0maSpOgsTqWhEs5UDV5RbhJ1RlhUVK4jnfjQRVA00PA0o06NJQDVATWz2hk1slUHpL67erd23gyHPPZDB80GOc7FqY90Q3I3+d+7LrYg7yL31Tmvp/XS883HZnv3iS1x4113D+887zzm32mlY9tr89bF9/YzqPwW1tbkUyElrf0ya48sj+EpplMbsAkHp0MbdHqiO62C5BAQF/xS2Qz+iI0bG6f6IsHOaKpwbT6NUKUDZICGZiAdBUHFN09YdI7NAgFp6w9kEVH6z7qowMZanca0q/gcsFxqPSOrHURlQf88djxOa1h7Eum/47dEgh+5XkCehxWc2YwmKHpln+RcBBP6yfAIAAA==
'1': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs7G0sLKy8Q/Y4OF9kcAdAaIcMSEr7uHF+zDHAfEnWBkr9Sf4K1ALY6GJhb2JrYmdvbvcHqBGp5p5+96bndmVALKwZGKf7LgDd98jAAwplvGA1D0cs1rIQq7pY89LzkTNjThNlCN/wBWVYDRzoIp8DUdHJEqKgu6FYzfoM6oEkjr0SCQHfY9IgKqq1upWVT0PQnty/qqvvWx1aW4DD5p3UpyKRUOVFcZdOP/GvVl9ZPEEqbfcqE2973dX3k/ro1/eHGfeZUux//NOc8otNiq6MTd/vq1fPKDyT0Fpbs4FfNLSH5Om+LQFXSkJ4jA6QZDbNtRmC0TTMlW+BAQZ9wCWfTcgvQg78WYPR8ckFig3HAaxkIG8gn3cZw+CoGBpmiGbSmKBANXkirkIiPRmzVmhqSrvRrUi+x8wXWjYw7EbBnlA7Q3LcQYkLr2d7a1/3tHbo04KXV/RuGSQzaHJh8PiMAdZG4+Teb8A8iVf6HwCAAA=
'2': H4sIAAAAAAAAAH1SvU4CQRAe5IDlbCwtTEzsfQETg4f3RwJ3CEQ5GrLiQi7eD7k7ID6AhaWVWlv5BnZoYyw0sTCxMj4Aic/gLrcHqNGpZr79vm92ZlcESMOygV2yb4f2oUMAGJIv4pBUHRyxOpWGTN3FjhOfCaodcJogBW7IFSVvOHOgimwFB8ckiIuc5vgj2+sxqgiiMnBIIHk9h4iAyoraaJcVLQup5vj8Q9t43WnT3AIeNG8lOBULuiLJjLtw/o17t/bE4hkSb6lWmXo/HKxOzqrDX94cZ95FU7b+805yys3XSpo+N3+5r148ouJPQWFuzgV80sIfkyb4tAVdKfEiPzhBkNnVlXoDBMM0FL4EBEv2Eay4tkc6Ae5GWx0c9EmUolx/4EWpJcjK2MU99iAIcqaq6pIhxxYIUEUqGYuAQG9WnxWqovBuVCuw/wHThfodHNm+lwXU3DS73ZBEhc/bvcnpOr09aiXQzRWNSwZZHBq/96/fxO1+BtIWHsXzfgFXv3A3fAIAAA==
'3': H4sIAAAAAAAAAH1SPVPCQBDdQAhHbCwsrHTG3j9gg8F8MQMJAqOEhjnxYDLmw0kCjGNtYWml/gQbaju1cSx0xsLesabzF3hHEkAd3Wr33Xtvb/dOBMjCkoFdsmeH9oFDABhSKOGQ1BwcsZrLQq7hYseJz3jVDhIaLwVumCjK3nDmQBVCFQdHJIiLvOb4I9vrM6oIojJwSCB5fYeIgCqK2uxUFE0ArnV38a5tvG13aG5BEjRvpzgV87oiyYy7cP6Ne7/2zOIFUm+pXp16P+6vTs5rw1/eCc68S6Zs/eed5pRbqJc1fW7++lC7fEKln4Li3DwRJJMW/5g0xact6EqJF/nBCYLcjq40msAbpqEkS0CQsQ9h2bU90g1wL9rq4uCYRBzl+gMv4jIgyNjFffYgCPKmquqSIccWCFBVKhuLAE9v1pgVqqIk3aiWZ/8Dpgv1uziyfU8A1No0e72QRMXPD228ckpvj9opdHNN44pBVgqNb3cnZ+uQg6yFR/G8X8cJJp58AgAA
'4': H4sIAAAAAAAAAH1Su07DQBBcJ05yMQ0FBTU9P0ATHHy2IyV2lEQQp4mOcI4s/EBnJwgqWkoq4BNo+AVEgygp6FEoEBIfQMv5lQQQbLU7NzN7u3cSQBFWDOLRXSd09l0KECPVOglp2yVRXAtFKHU94rrpmag6LKOJMvPCTNHwp3MHrii3CDukLC0qmhscO/44pkog4YlLmeyPXSoBamK1N2xirQxC/+7iRdt43h7y3IIseD7IcS4WdSwrMXfp/Dv3zU4Ccm+500q8H/bWP87b01/8DI+966Zi/eed55xb7TQ0fWH+dN++fET1n4LawjwTZJPW/pg0x5MWfKXUjwJ2gqC0o+NuD0TDNHC2BAQF5wBWPcenI0bsaGtE2BGNBM4NJn4kFKCsEI+M4wdBUDFVVZcNJbVAgFpyw1gGRH6z7rxQMc66ca0Y/w9IFhqMSOQEfhlQf9O07ZBGtc/btdOZdsahQQ7dXPO44gMhK4deZxrnvZegaJHjdN4vX2NUyHwCAAA=
'5': H4sIAAAAAAAAAH1STU/CQBCdQoGlXjx69u4fMDFQ7LYlgZYAUcqFrLiQxn6QtmD8CR49+XH1V3giXozePJh4NPHq1R/gLt0CanROM2/ee7szuwpAHjYs4tMDN3aPPArAkXKNxLTlkYTXUh4KHZ94XtqTdTcSNFmN/Fgo6sFs6cAUxSaJTmiUFiXDC0/dYMypCih46tFIDcYeVQA1sN4dNLBRBKk3v3gztl+qA5Y7IILl/QxnYtnEqsa5a/3v3KdrHjeQeavt5sL74XDr47w1+8UXOPeu2Zrzn3eWM265XTfMlfnzfevyEdV+CiorcyEQk1b+mDTDF0ewldIgCaMzBIV9E3e6IFu2hcUSEOTcY9j03YAOIzJKdockmtBEYtxwGiRSDooa8cmYPwiCkq3rpmppqQUC1FTr1jogs5t1loWOsTiNaWX+P2Cx0HBIEjcMioB6O/ZoFNOkcsfXfcVuj/oCmr/vTW5flSqDnAz6TGcsQN4hp2n+BWi43UV8AgAA
'6': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs7G0sLKy8Q+YGDi8PSCBOwJEOWJCVlzw4n2Y44D4E6yMlT/AH4JaGAtNLEwsTWhN7Ozd5fYANTrVzNv33uzMrgKQhBWDuHTPHtiHDgXgSLZABrTmkJDXUhJSDZc4TnQm63YgaLIauAOhKHujuQNTpKskOKFBVGSKjj+2vT6nKqDgoUMD1es7VAFUwXqzU8HFNEityeVbceMl32G5BSJY3o5xJpZLWNU4d+n8G/dm/ZHHE8Tear06877fX3s/r41+eQucexdMzfrPO84ZN1svF0sL8+fb2tUDKvwU5BbmQiAmzf0xaYzPWrCVUi/0gzMEqd0SbjRBNkwDiyUgSNhHsOraHu0GpBdud0lwSkOJcf2hF0oJSGvEJX3+IAgypq6XVEOLLBCgqlo2lgGZ3awxL3SMRTemlfn/gNlC/S4Jbd9LA2ptmb3egIa56cXB5ucduz1qC2gy3Tm9flXyDLJi6KPH4zgFSYuMo3m/AJuZfB98AgAA
'7': H4sIAAAAAAAAAH1SvU4CQRCek+NYzsbSwsTE3hcwIXB4P5DAHQJRjoasuJCL90OOA+IDWFha+QC+hB3aGAtNLEysjIktic/gLrcHqNGpZr75vm93ZlcGSMG6iT1y6AydY5cAMCRbxENSc3HEaiEF6YaHXTfuiboTcpqohN6QK8r+eOFAFVIVh6ckjIuM4QYTx+8zqgyyNnJJqPh9l8iAKpre7FQ0QwKhNb18N3ZeCh2a28CD5u0Ep2KxpCkq4670v3Fvtx5ZPEHirdSrc+/7o83ZRW38y5vjzLtoqfZ/3klOudl62SgtzZ/valcPqPhTkF+acwGfNP/HpAk+P4KulPhREJ4hSO+XtEYTRNMyNb4EBGvOCWx4jk+6Ie5Fe10cDkgkUG4w8iNhDSQVe7jPHgRBxtL1kmKqsQUCVFXK5iog0ps1FoWuafw0qhXZ/4D5QoMujpzAlwC1dq1eb0ii/OfNwex8m94etTk0/cgNrl/lAoXsBHpjSG6QhpSNJ/G8Xz4DU8B8AgAA
'8': H4sIAAAAAAAAAH1SPU8CQRAd4DiWs7GwsNLE3j9gYuDwvkjgDoEo0JAVF3LxPsjdATHWFpZW/gB7aju0MRaaWJhYGm3p/AXucXuAGp1q5s17b3dmVwBIwYqObXJg+uaRRQBCJFvAPqlYOAjrRArSNRtbVtTjFNNjNE70bJ8pis5w7kAVfBl7J8SLioxquSPT6YVUAQR5YBFPdHoWEQCVZKXeLskqD4nG5PJN3XrJt2neBBY0b8U4FXOaLEohd6n/jXu78RjGE8TeYrU8874/XJ9eVIa/vBkeehcMqfmfd5xTbrZaVLWF+fNd5eoBFX4KcgtzJmCT5v6YNMZnR9CVEidwvVME6T1NrtWB0w1dZktAkDSPYdU2HdLxcDfY6WCvT4IE5boDJ0gkgZewjXvhgyDIGIqiiboUWSBAZbGoLwMcvVltXiiyzE6jWi78HzBbqNvBgek6PKDGttHt+iTIfb6r47UzenvUYtDkY7d//SrkKdSMWeOb/en5JqQh1cSjaN4vrrUFaXwCAAA=
'9': H4sIAAAAAAAAAH1SPU/CUBS9hQKlLg4Ozu7+ARMDxX6RSEuAKGUhT3wljf0grwWik6ujkz/A3b9AXIyjg4mjgcGY+ANcfW1fATX6pnvPPefcd+97IkAeNgzk4SMndE5cDBAj5RoKcdNFUZxzeSi0PeS6aY1XHcJovES8kCnq/mTpQBXFBiJnmKRJSXODqeMPY6oIojJ2MZH8oYtFEA4VtdM/VLQicN3Z9au281zt09gCdmjcy3Aq5nVFkmPuWv07981ODmTeUquReD8cb39cNSe/+AyPvWumbP3nncWUW27VNX1l/nTfvHkUaj8FlZU5E7BJK39MmuFJC7pS7EcBORegcKAr7Q7whmkobAkC5JxT2PQcHw8IsqO9ASIjHHGUG4z9iMtBUUYeGsYPIkDJVFVdMuTUQgChIdWNdYCnN2svE1VRWDeq5eP/AclCgwGKnMAvgtDdNW07xFHl827rYq5dUqjHoNlif3T7IlYpZGWsxVyjvPcC5C00Tef9Ajbfdz98AgAA
'10': H4sIAAAAAAAAAH1Su04CQRS9CwsMa2Npaez9ARODi/sikV0CRFkaMuJANu6DzC4QP8HSykfrV1gRG6OdhYmlH2CpH+AMOwuo0Vvde+45Z+beGQUgD2s2DsihF3vHPgHgSLmKY9LwccJrKQ+FVoB9P+3JhkcFTVZpEAtFLZwsHJiiWMf0lNC0KJl+NPXCIacqoOhjn1A1HPpEAXSgG+3egW4WQerMLt7MrZe9HstdEMHyboYzsWzpqsa5K/3v3KdrHjeQeavN+tz74Wjj/bwx+cUXOPeuOpr7n3eWM265WTOtpfnzfePyEVV/CipLcyEQk1b+mDTD50ewlZIwiegZgsK+pbfaINuOrYslIMh5J7AeeCHpUzxIdvqYjkgiMW40DhMpB0UNB3jIHwRByTEMS7W11AIBqqs1exWQ2c1ai8LQdXEa08r8f8B8oVEfJ14UFgF1tp3BICZJ5Y6v+4rdHnUFNPtQdke3r5sMcjPoM52xAHkXT9P8C4n47+d8AgAA
'11': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs7G0sDBWNv4BE4OH9wEJ3BEgyhETsuKCF+/D3B0Qf4KVsfIH+ENQC2OhiYWJpYmtiY2xd5fbA9ToVDNv33uzM7sSQBoWDOySHTu09x0CwJB8EYek5uCI1UIaMg0XO058Jmp2wGmiHLghV5S94dSBKrJVHByRIC5yuuOPbK/PqBJI6sAhgez1HSIBqqhas1NR9SwIrfH5i776tNWhuQU8aN5OcCoWS6qsMO7c+Tfu1fI9iwdIvOV6deJ9u7v0dlob/vLmOPMumor1n3eSU26+XtZLM/PH69rFHSr+FBRm5lzAJy38MWmCT1rQlRIv8oMTBJntktpogmiYhsqXgCBlH8Cia3ukG+BetNHFwTGJBMr1B14kpCCrYBf32YMgyJmaVpINJbZAgKpy2ZgHRHqzxrTQVJV3o1qR/Q+YLNTv4sj2vSyg1rrZ64UkKrye7a193tDbozaHxh/S5vHl8wqFrAR677E4zEDawqN43i962U69fAIAAA==
'12': H4sIAAAAAAAAAH2SzU7CQBSFb6GUoW5cujDRuPcFTAwW+0cCLQJRyoaMOJDG/pC2QHwAFy5d+QC+hDt0Y1xo4sLElfEBSNz4Ak7pFFCjs7rzzTln5t5WBMjCioFdcmiH9rFDAGJSKOGQ1BwcxXsuC7mGix0nOeNVO2AyXgrckDnK3mieQB1CFQenJEg2ec3xx7bXj6UiiMrQIYHk9R0iAqooarNTUTQBuNbk8l3betnr0NoCtmjdTjk187oiybF26fyb9nb9MV5PkGZL9eos+/5obXpRG/3KZjzOLpmy9V92WlNtoV7W9EX4813t6gGVfhqKi3BmYJ0W/+g05bMr6EiJF/nBGYLcvq40msAbpqGwISDI2Cew6toe6Qa4F+10cTAgEUe1/tCLuAwIMnZxP/4gCPKmquqSIScRCFBVKhvLgKcva8w3qqKw26iXj/8PmA3U7+LI9j0BUGvb7PVCEhU/bg6m5xv09ajN0ORT3B1cv25SZKXojQJKc5C18Djp9wvfQ2FifAIAAA==
'13': H4sIAAAAAAAAAH1Sv0/CQBR+hQJHXRwcnNS4+w+YGCz2WkigIBAFFnLiQRr7g7QFYpwdHJ38A9yZ3dDFOGjiYOJonNn0H/BKr4AafdN73/u+7+69OwkgDks6seiB4RlHJgUIkHSWeLRsEj+ohTgkqhYxzbAnqobLaaLsWh5X5O3BzIEpkkXinlA3LFKa6QwNuxtQJZBw36SubHdNKgEqYLXWKmAtCUJ9fPmmbb7stljeAB4sb0Y4E4s5LCsBd6H/jXu79hjEE0TecqU49b4/XJ1clAe/vDkeeGdLSuM/7yhn3HQlr+Xm5s935asHlP0pyMzNuYBPmvlj0gifHsFWSm3fcU8RJPZyuFoDUS/pmC8BQcw4hmXLsGnbJR1/u03cHvUFxnX6ti/EIKkQi3SDB0GQKqlqTtaV0AIBKsp5fREQ2c2qs0LFmJ/GtGLwP2C6UKdNfMOxk4DqW6VOx6N+5uNdG62csdujJofGn9JO7/p1g0GNiDW62Z+cr0MC4g0yDOf9Ak/1N8t8AgAA
'14': H4sIAAAAAAAAAH1SPU/CUBS9hVJKXRwcHI27f8DEYLFfJNASIEpZyBNfSWM/yKNCdHJ1dPIHuPsXiItxdDBxNDgYE0cHV1/bV0CNvunec8859937ngSQhxUT+XjfHbmHHgaIkVIFjXDDQ1Gcc3kotHzkeWmN11zCaLxM/BFTVIPx3IEqhDoix5ikSVH3wokbDGKqBJJ64mEiBwMPSyDWVK3dq6m6AFxnevmsbz7u9mhsAzs07mY4FfOGKisxd6n+nfvqJAcyb7lZT7zvDtbfLxrjX3yGx94VS7H/885iyi01q7qxMH+4bVzdi5WfgvLCnAnYpOU/Js3wpAVdKQ6ikJyKUNgz1FYbeNMyVbYEEXLuEaz6boD7BDnRdh+RIY44yg1PgojLgaAgHw3iBxGhaGmaIZtKaiGCWJer5jLA05u15ommqqwb1fLx/4BkoWEfRW4YCCB2tizHGeGo/HmzdjbTzynUZdD0Q9oZXj9tUMjOWC8znfLeCpC30SSd9wvXn0WdfAIAAA==
'15': H4sIAAAAAAAAAH1SPVPCQBDdQIAjNpbWdhb+ARsM5pIwAwkDjBLGGebEg8mYDycJMv4EK8fKj39ixWjhaGdh7w+w1c7CO3IB1NGtdt++9+527xSAPKxYxKe7buweeBSAI+UqiWnTIwmvpTwU2j7xvLQn624kaLIa+bFQ1IKTuQNTFBskOqJRWpQML5y4wYhTFVDw2KORGow8qgCqY73Tr2OjCFJ3evFqrL9s91nugAiW9zKciWUTqxrnLvW/c5+uedxA5q22GjPvh721t7PmyS++wLl31dac/7yznHHLrZphLsyf75qXj6j6U1BZmAuBmLTyx6QZPjuCrZQGSRidIijsmLjdAdmyLSyWgCDnHsKq7wZ0EJFhsjUg0TFNJMYNx0Ei5aCoEZ+M+IMgKNm6bqqWllogQA21Zi0DMrtZe17oGIvTmFbm/wNmCw0HJHHDoAiou2kPhzFNKrd83Vfs9qgnoOnnx/35/gaHnAx6T2csQN4hkzT/AoFDj2V8AgAA
'16': H4sIAAAAAAAAAH1SPU8CQRAd5DgWbCwtrKy08A/Y4OHdAQncESDKERKy4h5evA+zd0D8CVbEyp+DUhgLTSzsTWxN7Ogs3IU9QI1ONfP2vTc7s5sFSMK6gT1y5ITOiUsAOJLJ45BUXRzxOpGEVN3Drjs/k3SHCpqkUC8UipI/WDgwhVzB9JzQeZEuuMHQ8XucmoWs1ncJVfyeS7KAypre6JS1ggyJ5vj6tbD9ctBhuQUiWN6KcSaWipqicu7K+Tfu7dYjjyeIvZVaZeZ9f7z5flUd/PIWOPfOm6r1n3ecM26mVioUl+bPd9WbB5T/KcgtzYVATJr7Y9IYn7VgKyV+FNBLBKnDolZvgGSYhiaWgGDNOYUNz/FJl2I72u9iekGiBOMGfT9KrIGsYg/3+IMgSJu6XlQMdW6BAFWUkrEKSOxm9UWha5roxrQS/x8wW2jQxZET+DKg5p5p2yGJcm+j9s50wm6PWgIaf04no/Yuh6wY+rB5nKUgaeHhfN4vcmIuP3wCAAA=
'17': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQkloD4jMwMrMG5iTk5EDkWt8wiqDIWx6LcYqgOz7wyuAlAHWy+iUXZqUUQDrt7Tn55Zl46SCkXA5draU5qkWNeek4qFwOHj6tbSLyPqzsbA2PE/on33ZWuOMQD2ZEMUABkR8HEgZpZPFwdXUBqkeRR1B6QOQMCZxlgZjsG+YLNPhYu8bozoAzDbKg4yGwnf5dIfGbD2EC1nEGe7h4Iwy8cDJh+gsMJXYM9wnCoBqhP7XH4FCYOtgIYpKl5JflFlRwMrM4ersEhDCx+/n6u0EDgYGDKTGEQyM3MS00uSkwrsUpOLCpILWEEqs0vzSthZGJgc0nMTUwHRQgHA7u/m5uHo58LxAgOBg5fR08/ZAEWoMuC4Rw3V1eobUC9LKD0wQAO0PzkxJLM/Dw2Bo4IXf+0tOLUEvt3OwJft8oDXc8RBRXa/+frof4YTZBQJEzobsHi61y2BawMzJGJ5RD/AgDX+AHgfAIAAA==
'18': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs7GwsNLEzsI/YIOH9wEJ3CEQBWJCVlzIxfswdwfEWFtYGSv/BbUdamEsNLGwN9Z0JnYW7sIeoEanmnnz3tud2ZUA4rBgYIfsWoF1YBMAhqSzOCAlG4esFuKQqDjYtic9UbN8ThNl3wm4Iu/2pg5UkSxi/4j4kyKl217fcjuMKoGkdm3iy27HJhKggqpVmwVVT4JQG16+6msvW02a14EHzRsRTsViTpUVxp3rf+PerDyyeILIWy4Xx973e8uj81LvlzfHmXfWVOr/eUc55abLeT03M3++LV09oOxPQWZmzgV80swfk0b4+Ai6UuKGnn+CILGdUytVEA3TUPkSEMSsQ1h0LJe0fNwON1vYPyahQLle1w2FGCQV7OAOexAEKVPTcrKhTCwQoKKcN+YBkd6sMi00VeWnUa3I/geMF+q1cGh5bhJQbcNstwMSZt7f9MHSKb09anBo+Plxd7G/zqB6xBpc74zOViEB8TruT+b9AkdOV0l8AgAA
'19': H4sIAAAAAAAAAH1SPU/CUBS9hQKPujg4OLs5+AdcsNgvEmkJEKXEhDzxlTT2w7QFopOrk3HyX/gXiA7G0cHd4GBMnI2Lg6/tK6BG33Tvueec++59TwDIw5KOXbJrh/aBQwBipFzFIWk4OIpzLg+FlosdJ63xih0wGi8GbsgUNW80c6CKYh0HRyRIk5Lq+GPbG8RUAQR56JBA9AYOEQDtyEq7tyOrReA6k8snde1xq0djE9ihcTfDqZjXZFGKuQv179wXKzmQeYvNeuJ9t7f6dt4Y/eIzPPauGpL5n3cWU265WVO1ufnDTePqHlV/CipzcyZgk1b+mDTDkxZ0pcSL/OAEQWFbk1tt4HVDl9kSEOTsQ1h2bY/0A2xFm30cHJOIo1x/6EVcDooSdvEgfhAEJUNRNFGXUgsEqC7W9EWApzdrzRJFllk3quXj/wHJQv0+jmzfKwLqbBiWFZKo8nG9cjpVzyjUZdDk8/32Yn+dDoTMjPU8VSnvtQB5E4/Teb8A3yQlH3wCAAA=
'20': H4sIAAAAAAAAAH1Sy07CQBS9paUMdePStXt/wMRgsS8SaAkQpWzIiANp7IO0BeInuHTlY+tXuEI3RncuTFz6AW79AGfoFFCjd3XvueecmXtnFAARNmwckEMv8Y59AsCQchUnpOnjlNWCCMV2gH0/60mGF3OapMZBwhW1cLp0oAq5geNTEmdFyfSjmReOGFUBRZ/4JFbDkU8UQHXd6PTruimD0J1fvJvbr/t9mrvAg+a9HKdiydJVjXHX+t+5z9csbiD3VluNhffj0dbHeXP6i89x5l11NPc/7zyn3HKrZlor85eH5uUTqv4UVFbmXMAnrfwxaY4vjqArJWEaxWcIigeW3u6AZDu2zpeAoOCdwGbghWQQ42G6O8DxmKQC5UaTMBUKIGs4wCP2IAhKjmFYqq1lFghQQ63Z64BEb9ZeFoau89OoVmL/AxYLjQY49aJQBtTdcYbDhKSVO7buK3p71OPQvTi+fVP2xhRyOTT/zGYsgujiWZZ/Ae8ukMl8AgAA
'21': H4sIAAAAAAAAAH1SPU8CQRAd4DiWs7G0sLKy8Q+YGDxkD0jgIECUIyZkxQUv3gfZOyD+BCtj5Q/wh4AWxkITCxNLE1sTO3t3YQ9Qo1PNvH3vzc7sagAJWDGJS/ftwD5yKIBA0lkS0KpDQlHHEpCsu8RxZmeKYTNJU3TmBlJR9IZzB65Qy4SdUjYrUnnHH9leT1A10PDAoUz3eg7VAJWw0WiXcF6FWHN8+ZrfeN5t89wCGTxvRTgXKwWs5wR36fwbd7L+IOIRIm+9Vp563x2svZ9Xh7+8JS68s5Wc9Z93lHNuulbMFxbmTzfVq3uU/SnILMylQE6a+WPSCJ+24CulXuizMwTJvQKuN0AxKyaWS0AQt49h1bU92mGkG253COvTMMa5/sALY3FQc8QlPfEgCFIVwyjoZm5mgQCV9aK5DCj8ZvV5YWAsu3GtIv4HTBfqd0ho+54KqLlV6XYDGmbeLg43P2/57VFLQpNE//pF2+lzyJLQ+KMr4iQJCYuMZvN+ARwPMZN8AgAA
'22': H4sIAAAAAAAAAH1SzU7CQBCe2lKWevHowcTEuy9gYrDYPxJoEYhSLmTFhTT2h7QF4gN48OjJB/AlvIEX40ETDyaejA9A4jO4pVtAjc5p5pvv+3ZndiUAHtZN7JFjJ3JOXQKQIIUSjkjNxXFSczzkGh523bQnaE7IaIIcehFTlP3RwoEqxCoOz0mYFnndDcaO30+oEkjq0CWh7PddIgGqqFqzU1F1EbjW5PpD33k96NDcBhY0b2c4FQuGKisJd6X/jTvdekriGTJvuV6dez+cbM6uaqNf3gxPvEuWYv/nneWUW6iXdWNp/nJfu3lEpZ+C4tKcCdikxT8mzfD5EXSlxI+D8AJB7tBQG00QTMtU2RIQrDlnsOE5PumGuBfvdXE4IDFHucHQj7k1EBXs4X7yIAjylqYZsqmkFghQVS6bq4BAb9ZYFJqqstOoVkj+B8wXGnRx7AS+CKi1a/V6EYmLn3dHs8ttenvUZtCUH9y+SfsDCtkMmrynUA54G4/Teb8AuZUeTHwCAAA=
'23': H4sIAAAAAAAAAH1SPU8CQRAduONYzsbCwkoTe/+AicFD7oMEDgSiQENWXMjF+yB3B8RYW1ha+QPsqe3ExlhoYmFiaazp/AXucnuAGp1q5s17b3dmVwYQYMXEDjm0AuvYJgAMyeRwQCo2DlmdECBVc7BtRz1Rs3xOExXfCbii4A7nDlQhlbB/SvyoSOu2N7LcHqPKIKsDm/iK27OJDKioavV2UdUlSDTurt71rde9Ns2bwIPmrRinYtFQlTzjLvW/cScbTyyeIfZWqqWZ98PR+vSyMvzlzXHmnSvnm/95xznlZqoF3ViYv9xXrh9R7qcguzDnAj5p9o9JY3x2BF0pcUPPP0OQ2jfUWh1Es2yqfAkIktYJrDqWSzo+7oY7Hez3SZigXG/ghokkSHns4B57EATpsqYZipmPLBCgklIwlwGR3qw2LzRV5adRrcj+B8wW6nVwaHmuBKixXe52AxJmPz/08do5vT1qcWgi9G/e5N0+hZoxa3x7ML3YhBQITTyK5v0CKSNI5XwCAAA=
'24': H4sIAAAAAAAAAH1Su07DQBBcx07imIaCgpqeH0BCwcGvSMSOkgjiNNERzpGFH9HZSQQVLSUVH0DPLwANoqRAokShQEh8AC1n+5wEEFy1Ozsze7t3EgAPKyby8b4buYceBkiQSg1FuOmhOMk5HoptH3leVhM0lzCaIBM/Yop6MJk7UEWpgcgxJllS1r1w6gbDhCqBpI49TORg6GEJxD1V6/T3VL0EXPfm4kXfeNrp09gGdmjcy3EqFgxVVhLuUv07981JD+TecquRet8frH+cNye/+AxPvGuWYv/nnceUW2nVdWNh/njXvHwQaz8F1YU5E7BJq39MmuNpC7pSHMQhORGhuGuo7Q4IpmWqbAkiFNwjWPXdAA8IcuKtASIjHHOUG46DmCtASUE+GiYPIkLZ0jRDNpXMQgSxIdfNZUCgN2vPE01VWTeqFZL/AelCwwGK3TAogdjdtBwnwnH183rtdKafUajHoFt+dPUsbY8oZOes15lOee9F4G00zeb9ArFJOrN8AgAA
'25': H4sIAAAAAAAAAH1SvVLCQBDeSAhHbCyt7X0BGwzmkjADCQOMEhrmxAuTMT9MEmB8BEsrf97ECm0c7SzsfQBbH8A7cgHU0a12v/u+b2/3TgUowbZNQnrsp/5pQAE4Uq2TlLYDkvFaKkG5G5IgyM9kw08ETdaSMBWKRjRbOTCF0iLJOU3yomIG8dyPxpyqgoqnAU20aBxQFVATG71hE5sKSP3F1bu593Y4ZLkLIlg+KHAmli2s6Zy7cf6d+3LL4w4Kb63TWno/nex+XLZnv/gC5951R3f/8y5yxq12Gqa1Nn99bF8/o/pPQW1tLgRi0tofkxb4sgVbKY2yOLlAUD6ycLcHsu3YWCwBwZZ/BjuhH9FRQrzsYESSCc0kxo2nUSZtgaKTkIz5gyCoOIZhabaeWyBALa1hbwIyu1l3VRgYi25MK/P/AcuFxiOS+XGkAOrvO56X0qx2z9d9w26PBgJ6QB6PCYNcAS0+8xnLUHLJPM+/AC6oF558AgAA
'26': H4sIAAAAAAAAAH1SPU8CQRCdg+NYzsbSwsrKxj9gg4fcB4ncESAKxISsuODF+yB7B8SfYGWs/DmghbHQxMLexNbEzt7dYw9Qo1PNvH3vzc7sqgBZWLOxTw7dyD3xCABHCiUckZqHY15LWcg1fOx58zPZcKmgyRr1I6GoBOOFA1MoVUzPCZ0XedMLJ24w4FQVVH3kEaoFA4+ogA50o9k90E0FpNb0+tXcetnrsrwNIljeSXEmli1dK3Puyvk37mzzkccTpN5avZp43x9tvF/Wxr+8Bc69S065/Z93mjNuoV4xraX5823t5gGVfgqKS3MhEJMW/5g0xZMWbKUkiEN6gSC3b+mNJsi2Y+tiCQgy7ims+25AehT3490epkMSS4wbjoJYyoBSxj4e8AdBkHcMw9Ls8twCAapqFXsVkNnNGovC0HXRjWll/j8gWWjYw7EbBgqg1o7T70ckLr5dHW9/3rHbo46AZqjPY8igtoCmHwl0loNsG0/m834B3Ym2xHwCAAA=
'27': H4sIAAAAAAAAAH1SvU4CQRCekwOWs7G0MDGx9wVMDB7eHwncIRDlaMiKe+Ti/eU4ID6AhaWVD+BL2IGNsdDEwsTK+AAkPoO7sAeo0almvv2+b3ZmVwLIwLqJfXLs9t1TjwAwpFDCfVLzcMJqIQPZho89b34mam7MaaIc+32uKAfDhQNV5Ko4PifxvMjrXjhygx6jSiCpA4/EctDziASoomrNTkXVcyC0xtcf+s7rQYfmNvCgeTvFqVg0VFlh3JXzb9zJ1hOLZ0i95Xp15v1wsjm9qg1/eXOceZcsxf7PO80pt1Av68bS/OW+dvOISj8FxaU5F/BJi39MmuKzFnSlJEjC+AJB9tBQG00QTctU+RIQrLlnsOG7AenG2En2ujiOSCJQbjgIEmENcgr2cY89CIK8pWmGbCpzCwSoKpfNVUCkN2ssCk1VeTeqFdn/gNlCwy5O3DDIAWrtWo7TJ0nx8+5oerlNb4/aHJogh0VEIZtD4/fo9k3aj7KQsfFoPu8XeBOZG3wCAAA=
'28': H4sIAAAAAAAAAH1SPU8CQRCdg+NYzsbCwkoTe/+ADR7eFwncIRDlaMiKC7l4H+bugBhrC0sr/wW1ndgYC00s7I01nb/AXdgD1OhUM2/fe7MzuzJAFtYs7JMjN3ZPPALAkEIJx6Tm4YTVQhZyDR973vxM1N2I00Ql8mOuKAfDhQNVSFUcnZFoXuQNLxy5QZ9RZZC1gUciJeh7RAZU0fRmp6IZEgit+5t3Y+dtv0NzB3jQvJ3iVCyamqIy7sr5N+5k65nFC6TeSr0683483pxe14a/vDnOvEu26vznneaUW6iXDXNp/vpQu31CpZ+C4tKcC/ikxT8mTfFZC7pSEiRhdIEgd2BqjSaIlm1pfAkIMu4prPtuQLoR7iV7XRydk0Sg3HAQJEIGJBX7uM8eBEHe1nVTsdS5BQJUVcrWKiDSmzUWha5pvBvViux/wGyhYRcnbhhIgFq7dq8Xk6T4+WGMNy7p7VGbQxPUY3FOISdlje8Op1fbkIOsg0fzeb8A6KXPsnwCAAA=
'29': H4sIAAAAAAAAAH1SPVPCQBDdQIAjNhYW1vb+ARsM5pIwAwkDjBIa5sQLkzEfTBJgtLK1tPJf+BfUxrG0sHewcJzxB9h6SS6AOrrV7rv33t3ungRQhA2DePTQiZxjlwIkSLVOItp2SZzUQhFKXY+4bnYmqk7IaaIcehFXNPzZ0oEpyi0SntIwKyqaG8wdf5xQJZDw1KWh7I9dKgFqYrU3bGKtDEL/9upF23neH7LcAh4sH+Q4E4s6lpWEu3b+nftmpwG5t9xppd4PR9sfl+3ZLz7HE++6qVj/eec541Y7DU1fmT/dt68fUf2noLYy5wLeae2PTnM8vYKNlPpxEJ4hKB3ouNsD0TANzIeAoOCcwKbn+HQUEjveG5FwQmOBcYOpHwsFKCvEI+NkIQgqpqrqsqFkFghQS24Y64DIXtZdFirG/DamFZP/AelAgxGJncAvA+rvmrYd0bj2ebN1vtAuGDTg0B1KNzBhkJWzXhca472XoGiRedbvF3DPveR8AgAA
'30': H4sIAAAAAAAAAH1Su04CQRS9C8syrIWW1vZ2ViYGFvZFArsEiLI0ZMSBbNwH2V0hfoKllY/Wyq8gNkY7CxNLP8DWD3CGnQXU6FT3nnvOmbn3jgyQhw0L++TQjd1jjwAwpFTFMWl5OGG5kIdCx8eel9ZE3Y04TVQiP+aKejBdOlCF1MTRKYnSpGh44cwNxowqg6ydeSRSgrFHZEANTe8OGpohgdCbX74bO6+VAY0d4IfG/QynYtHUFJVx1+rfuc837NxC5q20mwvvx6Ptj4vW9Bef48y7aqvOf95ZTLmldt0wV+YvD62rJ1T9KSivzLmAd1r+o9MMX1xBR0qCJIzOERRqptbpgmjZlsaHgCDnnsCW7wZkGOFRsj/E0YQkAuWGZ0Ei5EBSsY/HbCEIiraum4qlphYIUFOpW+uASF/WWSa6pvHbqFZk/wMWAw2HOHHDQALU27VHo5gklU35YHL3Rl+P+hwq37MNXDPI4dD8M+2xAHkHz2p7LP4Ch0j7cnwCAAA=
'31': H4sIAAAAAAAAAH1SPU8CQRCdg+NYoLG0sLKysbOygQPugATuCBDliAlZcQ8v3ofZOyB2tlbGSv0J/grUwlhoYmHvDzCxs3cXlg81OtXM2/fe7MxuGiAOGQN7ZMcJnX2XAHAklcchqbs44rUUh0TTw647PZN1hwqarFIvFIqKP5w7MIVSw/SI0GmRLLnByPH7nJqGtDZwCVX9vkvSgKqa3upWtZICUnt88VZaf811WW6BCJZ3ZjgTy2VNLXLu0vk37u3aE49nmHmrjdrE+2F39f2sPvzlLXDunTeL1n/es5xxU41Kqbwwf7mrXz6i/E9BdmEuBGLS7B+TzvBJC7ZS4kcBPUGQKJS1ZgtkwzQ0sQQEMecAVjzHJz2K7Wi7h+kxiSTGDQZ+JMVAKWIP9/mDIEiaul5WjeLUAgGqqRVjGZDZzZrzQtc00Y1pZf4/YLLQoIcjJ/AVQO1N07ZDEuUyexuf9+enDOoIKHtzzeKKDYQsAY0/bB6HCYhbeFTY4vN+AYmMAol8AgAA
'32': H4sIAAAAAAAAAH1SPU8CQRCdkwOWs7G0MBb2dlYmBg64DxK4QyAKNGTFhVy8D7IcEH+AhaWVWlv5D+zQxlhoYmFiZfwB/Al3YQ9Qo1PNvH3vzc7sKgAxWLWwRw6cvnPkEgCOpLK4T8ouDnktxSBe9bDrzs5k3aGCJqvU6wtFwR/OHZgiUcL0hNBZkTTcYOT4XU5VQNEGLqGq33WJAqio6bVWUTMSINXHF5/G1lumxfIGiGB5M8KZWDY1Nc+5S+ffuPcbzzxeIPJWK6Wp9+Ph+uS8PPzlLXDunbXzjf+8o5xxU5WCYS7MXx/Kl08o+1OQXpgLgZg0/cekET5twVZK/DCgpwjiOVOr1kC2bEsTS0Cw4hzDmuf4pE1xJ9xtY9ojocS4wcAPpRVI5LGHu/xBECRtXTdVKz+zQIBKasFaBmR2s+q80DVNdGNamf8PmC40aOPQCfwEoPq23en0SZhB+5OzzbsMg5oCSt9es7hiA6GGgMYfvZt3Za8Xh1gDj3I7fN4v62Qu2XwCAAA=
'33': H4sIAAAAAAAAAH1SPU8CQRCdg+NYzsbSShMrGzsrGzjgDkjgQCAKxISsuJCL92H2DoidjYWVsVJ/go21nR+FsdDEwt4fQG3vLuwBanSqmbfvvdmZXRUgCgsmdsi25Vt7NgHgSCKNfVKxccBrKQqxmoNte3ImGxYVNFmjji8UBXcwdWAKpYTpAaGTIp6zvaHl9jhVBVXv24Rqbs8mKqCibtTbRT2ngNS4O//Irb6n2ixvggiWt0KcieW8rmU5d+78G/d++YXHK4TeWrU09n7aWRqdVga/vAXOvdPlbPM/7zBn3ES1kMvPzN8eKhfPKP1TkJyZC4GYNPnHpCE+bsFWStzAo0cIYpm8XquDbJZNXSwBQcTah0XHckmH4m6w2cH0kAQS43p9N5AioGSxg3v8QRDEy4aR18zsxAIBKmkFcx6Q2c1q08LQddGNaWX+P2C8UK+DA8tzFUCN9XK365MgpZztrn0+HjOoJaDk9RWLSzYQaobQze3W6GQFYhBt4mFmg8/7BWCtcWV8AgAA
'34': H4sIAAAAAAAAAH1SPU/CUBS9hVIedXFwcHZycXNygUK/SKAlQJQSE/LEB2nsh2kLRP+Bk3FSf4KLf8HoYBwd3I0OxsTZ3dfyCqjRO9173jnnvnvfEwGysGRgl2zbob3nEIAYKZRxSBoOjuKay0Ku5WLHmZ7xqh0wGi8FbsgUVW88c6AKoY6DAxJMi7zm+BPbG8ZUEURl5JBA8oYOEQHVFLXdqymaAFzn5uxZW3sq9WhuAQuad1OcinldkeSYu3D+nfs2SAJSb6lZT7zvd1Y/ThrjX3yGx95lU7b+805zyi00q5o+N3+8bZw/oPJPQXFuzgRs0uIfk6Z40oKulHiRHxwhyFV0pdUG3jANhS0BQcbeh2XX9kg/wINoq4+DQxJxlOuPvIjLgCBjFw/jB0GQN1VVlwx5aoEA1aWqsQjw9GatWaEqCutGtXz8PyBZqN/Hke17AqDOhjkYhCQq8eufd6e7JQp1GVS8uqRxQQdCVgq9vmjXK8fvOchaeFLZjOf9AttnqXl8AgAA
'35': H4sIAAAAAAAAAH1SPU8CQRCdg+NYzkJLa3s7KxMDB/dFAncEiHI0ZMWFXLwPcndA/AmWVkZbfwixMdpZmFia2Nr6A9zl9gA1OtXMm/fe7syuDJCHLQv75NiN3VOPADCkVMUxaXk4YbWQh0LHx56X9kTdjThNVCI/5op6MFs5UIXUxNE5idKiaHjh3A3GjCqDrE09EinB2CMyoIamdwcNzZBA6C2u3oy9l8qA5g7woHk/w6lYNDVFZdyN/nfu0w2LW8i8lXZz6f1wsvtx2Zr94nOceVdt1fnPO8spt9SuG+ba/Pm+df2Iqj8F5bU5F/BJy39MmuHLI+hKSZCE0QWCQs3UOl0QLdvS+BIQ5Nwz2PHdgAwjPEoOhziakESg3HAaJEIOJBX7eMweBEHR1nVTsdTUAgFqKnVrExDpzTqrQtc0fhrViux/wHKh4RAnbhhIgHr79mgUk6SyLR9N7l7p7VGfQ4t3hsgVCjkZ9JnOWIC8g+e1A5Z/Ae702IV8AgAA
'36': H4sIAAAAAAAAAH1Sv0/CQBR+QCmlLI4OTk4ubk4mBgr0Bwm0BIhSYkJOvGJjf5C2QNxcnYyTf4B/COpgHDRxMHE0cTVxc/cOroAafdN7333f9+69OxEgBTkduXjXDu0DBwNQJFtEIa47KKJ1IgXpposcZ3bGKXbAaJwUuCFTVLzR3IEo+BoKjnEwKzKq449tr0+pIojy0MGB5PUdLIJQlZVWtyqrPCTak4tXdf250CW5CSxI3olxIuY0WSpT7tL5N+712gONR4i9pUZt6n23t/p+Vh/98mY49S4aZfM/7zgn3GyjomoL86eb+uW9UPwpyC/MmYBNmv9j0hiftiArxV7kBycCpEua3GwBpxu6zJYgQNI+hBXX9nAvQFa03UPBAEcJwvWHXpRIAl9GLurTBxEgYyiKJunlmYUAQk2q6MsAR27WnBeKLLNuRMvR/wHThfo9FNm+x4PQ3jQsK8RRIbe/8Xl7fkqgDoMmbzuDqxexQCAzhj4sGkdpSJloXNqi834B4DAhfnwCAAA=
'37': H4sIAAAAAAAAAH2SP0/CQBjG30KBoy6ODsbB3c3JhEChLZBAi0CUspATD9LYP+QoED+Ag6OTH8Av4YYuxkETBxMnY+LKl/AOroAavem93z3Pc/e+rQIQhw0Te+TIGTonLgHgJJ3HQ1Jzccj3UhwSDQ+77uJMNhwqZLJKvaFwlP3xMoE5klVMzwhdbFJFN5g4fp9LFVD0kUuo6vddogCq6EazU9GLSZBa06uP4u5rrsNqG8RidTvizCyXdFXj2rXzb9q77Se+niHKVuvVefbD8dbssjb+lS04z85bmv1fdlQzbbpeLpZW4S/3tetHlP9pyK7ChUF0mv2j04jPr2AjJX4Y0HMEiUJJbzRBNi1TF0NAEHNOYdNzfNKluBcedDEdkFBi2mDkh1IMkhr2cJ9/EAQpyzBKqqktIhCgqlo214HMXtZYbgxdF7cxr8z/D5gPNOji0An8JKDWntXrDUmYQ4ezi53bHENtgaafmcHNm8KRHaF3TjKDBMRtPCns836/AILYDS58AgAA
'38': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQkloD4jMwMrMG5iTk5EDkWt8wiqDIWx6LcYqgOz7wyuAlAHWy+iUXZqUUQDrt7Tn55Zl46SCkXA5draU5qkWNeek4qFwOHj6tbSLyPqzsbA2PE/on33ZWuOMQD2ZEMUABkR8HEgZpZPFwdXUBqkeRR1B6QOwMCZxlgZjsG+YLNPhYu8bozoAzDbKg4yGwnf5dIfGbD2EC1nEGe7h4Iwy8cDJh+gsMJXYM9wnCoBqhP7XH4FCYOtgIYpKl5JflFlRwMrM4ersEhDCx+/n6u0EDgYGDKTGEQyM3MS00uSkwrsUpOLCpILWEEqs0vzSthZGJgc0nMTUwHRQgHA7u/m5uHo58LxAgOBg5fR08/ZAEWoMuC4Rw3V1eobUC9LKD0wQAO0PzkxJLM/Dw2Bo4IXf+0tOLUEge2/hiNr4cagEJRUKH9j2wLFl/ncgAKRUKF7NftCHzdKs/AysAcmVjubALyLwAJEVKSfAIAAA==
'39': H4sIAAAAAAAAAH1SPU8CQRAd4DiOs7GwsLaysbMyMXBwewcJHASIcsSErLiQi/dhlgOi/8DKWPkD7P0LRAtjaWFiaaQwJtb27sIeoEa3mnnz3pud2VUBErBiYY/sOX3n0CUAHEnncJ9UXRzyPJaAZN3DrjurSYZDBU3SqNcXiqI/nDswhVzG9JjQWZIy3WDk+D1OVUFFA5dQze+5RAWlhIxGu4RMGWLN8eWLufGUbbPYBnFY3IpwJpYKSNM5d6n+nfvWnR6IvLVaeep9v7/+cV4d/uILnHvnKrr9n3cUM266VjQLC/PH2+rVg5L7KcgszIVATJr5Y9IIn7ZgKyV+GNBTBZL5Aqo3QLIqFhJLUCDuHMGq5/ikQ3E33OlgekLCGOMGAz+MxUHWsYd7/EEUSFUMo6BZ+sxCAaWsFa1lQGI3q88TAyHRjWkl/j9gutCgg0Mn8GVQmluVbrdPwqy0+Xl3cZBlUEtA48nuyfWzyiFbQJnJq3mzdvaehISNR/ltPu8XstuKjnwCAAA=
'40': H4sIAAAAAAAAAH1SPU8CQRCdg+NYzkJLa3s7KxMDB/dFAncEiHI0ZMWFXLwPcndA/AmWVkZbfwixMdpZmFj6Ayz1B7jL7QFqdKqZN++93ZldGSAPWxb2ybEbu6ceAWBIqYpj0vJwwmohD4WOjz0v7Ym6G3GaqER+zBX1YLZyoAqpiaNzEqVF0fDCuRuMGVUGWZt6JFKCsUdkQA1N7w4amiGB0FtcvRl7L5UBzR3gQfN+hlOxaGqKyrgb/e/cpxsWt5B5K+3m0vvhZPf9sjX7xec4867aqvOfd5ZTbqldN8y1+fN96/oRVX8KymtzLuCTlv+YNMOXR9CVkiAJowsEhZqpdbogWral8SUgyLlnsOO7ARlGeJQcDnE0IYlAueE0SIQcSCr28Zg9CIKireumYqmpBQLUVOrWJiDSm3VWha5p/DSqFdn/gOVCwyFO3DCQAPX27dEoJkllWz6a3L3S26M+hxYfK8jJoM90xgLkHTyvHbD8C91pWB18AgAA
'41': H4sIAAAAAAAAAH1Sv0/CQBR+QClHWRwdnJxc3JxMDBRogQRaAkQpMSEnXrGxP0hbIG6uTsbJP8A/BHUwDpo4mDj6B5i4GHfv4Aqo0Te99933fe/eu5MAEpDRsEN2rcA6sAkAQ9J5HJC6jUNWxxKQbDrYtmdngmr5nCbIvhNwRcUdzR2oQqxh/5j4syJVsr2x5fYZVQJJGdrEl92+TSRAVUVtdatKSYRYe3LxWlp/znVpbgAPmncinIqFsiIXGXfp/Bv3eu2BxSNE3nKjNvW+21t9O6uPfnlznHnn9aLxn3eUU266USmVF+ZPN/XLe5T/KcguzLmAT5r9Y9IIn7agKyVu6PknCJKFstJsgaDpmsKXgCBuHcKKY7mk52Mz3O5hf0DCGOV6QzeMxUEsYgf32YMgSOmqWpa14swCAarJFW0ZEOjNmvNCVRTejWoF9j9gulCvh0PLc0VA7U3dNAMS5jL7G5+356cU6nBo8iHtDK5e6EDIiKB3k8VREhIGHhe22Lxf062h5nwCAAA=
'42': H4sIAAAAAAAAAH2SP0/CQBjG30IpR10cHYyDu5uTiYFC/5FAi0CUspATD9LYP6YUiB/AwdHJD+CXcEMX46CJg4mT8QMw+gW8gyugRm9673fP89y9bysDpGHNwj45dAfusUcAGMkV8YDUPByzvZCGTMPHnjc/E3U34jJRifwBd5SD0SKBOqQqjk5JNN9kDS8cu0GfSWWQtaFHIiXoe0QGVNH0ZqeiGRIIrcnVh7H9WujQ2gG+aN1OODWLpqaoTLty/k17t/nE1jMk2Uq9Ost+ONqYXtZGv7I5Z9lFW3X+y05qqs3Vy4a5DH+5r10/ouJPQ34Zzg280/wfnSZ8dgUdKQniMDpHkCmZWqMJomVbGh8CgpR7Auu+G5BuhHvxXhdHZyQWqDYcBrGQAknFPu6zD4Iga+u6qVjqPAIBqiplaxWI9GWNxUbXNH4b9Yrs/4DZQMMujt0wkAC1duxeb0DiAjqYXmzdFihqczT5lPfPbt5oQ8hJ0DsFlGYg7eBxaZf1+wWxRY22fAIAAA==
'43': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQkloD4jMwMrMG5iTk5EDkWt8wiqDIWx6LcYqgOz7wyuAlAHWy+iUXZqUUQDrt7Tn55Zl46SCkXA5draU5qkWNeek4qFwOHj6tbSLyPqzsbA2PE/on33ZWuOMQD2ZEMUABkR8HEgZpZPFwdXUBqkeRR1B6QOwMCZxlgZjsG+YLNPhYu8bozoAzDbKg4yGwnf5dIfGbD2EC1nEGe7h4Iwy8cDJh+gsMJXYM9wnCoBqhP7XH4FCYOtgIYpKl5JflFlRwMrM4ersEhDCx+/n6u0EDgYGDKTGEQyM3MS00uSkwrsUpOLCpILWEEqs0vzSthZGJgc0nMTUwHRQgHA7u/m5uHo58LxAgOBg5fR08/ZAEWoMuC4Rw3V1eobUC9LKD0wQAO0PzkxJLM/Dw2Bo4IXf+0tOLUEge2/hiNr4cagEJRUKH9n7lsCxZfB3qIIxIqZL9uR+DrVnkGVgbmyMRyZxOQfwE6jNIKfAIAAA==
'44': H4sIAAAAAAAAAH1Sv0/CQBR+QIGjLg4Ozk4ubk4mBgq9FhJoCRClxISceCWN/WFKgeh/4GSc/APc/ReIDsbRwcTR6GBMHI2713IF1OhN733v+753792JAClY0ohDd6yBtW9TgBDJFcmA1m0ShHkiBemmQ2x7WhMUy+c0QfKdAVdU3NHMgSkyNeIfUn+aZFXbG1tuP6SKIOKhTX3J7dtUBFTFSqtbxWoGEu3J+ZO69lDostgAfljciXEmFspYkkPuQv0799WMDsTeUqMWed/urr6f1ke/+BwPvYu6bPznHceMm2tU1PLc/P66fnGHij8F+bk5F/BJ839MGuNRC7ZS6gaef4wgXSrjZgsETdcwXwKCpHUAy47l0p5PzGCrR/wjGiQY1xu6QSIJGZk4pB8+CIKsrihlSZOnFghQTapoi4DAbtacJQrGvBvTCuH/gGihXo8EludmALU3dNMc0KAgrH/enO0VGNTh0ORD3D66fGQDIYND+Zdn9Wrl5C0NKYOMS5vhvF+BRgoWfAIAAA==
'45': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs9DS2s7CzsrEwAH3QQJ3BIhyxISsuJCL92HuDog/wcpYGW39IUQLo52FiaU/wFY7C3e5PUCNTjXz5r23O7MrAaRhxcAu2bND+9AhAAzJl3BIGg6OWC2kIdNysePEPVG1A04T5cANuaLqjecOVJGt4+CYBHGR0xx/YntDRpVAUkYOCWRv6BAJUE1R272aomVB6EwvXrWN52KP5hbwoHk3walY1BW5wrhL/e/cxysW15B4y836zPt+f/3trDH+xec48y6ZFes/7ySn3HyzqukL86fbxuUDKv0UFBbmXMAnLfwxaYLPjqArJV7kB6cIMmVdabVBNExD4UtAkLKPYM21PdIP8CDa6ePghEQC5fojLxJSkK1gFw/ZgyDImaqqy0YltkCA6nLVWAZEerPWvFAVhZ9GtSL7HzBbqN/Hke17WUCdLXMwCElUXJV2T25e6O1Rl0PTz4+784NNBlkJ9B7PmIG0hSflbZZ/AQcPiqV8AgAA
'46': H4sIAAAAAAAAAH1SPU8CQRCdgwOWo7G0sLLSws7KBg7uAxI4CBDlCAlZcQ8v3oe5OyB2tlbGyp+DWhgLTSzs/QEmdnYW7sIeoEanmnn73pud2ZUAkpAzsEv27dA+dAgAQ7JFHJKGgyNWC0lItVzsOPMzUbMDThPlwA25ouKNFw5Uka7h4IQE8yKjO/7E9oaMKoGkjhwSyN7QIRKgqqq1+1VVT4PQmV696psvhT7NTeBB826MU7FYVmWFcVfOv3FvNh5ZPEHsLTdrM+/7g/W3i8b4lzfHmXexrpj/ecc55WabFb28NH++bVw/oOJPQX5pzgV80vwfk8b4rAVdKfEiPzhDkCqV1VYbRKNuqHwJCBL2Eay5tkcGAbaivQEOTkkkUK4/8iIhAWkFu3jIHgRBpq5pZdlQ5hYIUE2uGKuASG/WWhSaqvJuVCuy/wGzhfoDHNm+lwbU2albVkiiQq639XF3eU6hLoemnxTobdOBkBlD7xaL4xQkTTwp7bJ5vwAJy3NefAIAAA==
'47': H4sIAAAAAAAAAONiYGBm4PZLzE0NyyzOTMpJZWAAiXA6JRanBuQkloD4jMwMrMG5iTk5EDkWt8wiqDIWx6LcYqgOz7wyuAlAHWy+iUXZqUUQDrt7Tn55Zl46SCkXA5draU5qkWNeek4qFwOHj6tbSLyPqzsbA2PE/on33ZWuOMQD2ZEMUABkR8HEgZpZPFwdXUBqkeRR1B6QOQMCZxlgZjsG+YLNPhYu8bozoAzDbKg4yGwnf5dIfGbD2EC1nEGe7h4Iwy8cDJh+gsMJXYM9wnCoBqhP7XH4FCYOtgIYpKl5JflFlRwMrM4ersEhDCx+/n6u0EDgYGDKTGEQyM3MS00uSkwrsUpOLCpILWEEqs0vzSthZGJgc0nMTUwHRQgHA7u/m5uHo58LxAgOBg5fR08/ZAEWoMuC4Rw3V1eobUC9LKD0wQAO0PzkxJLM/Dw2Bo4IXf+0tOLUEgeOwNetcjscgEJRUKH9f74e6o/RBHqIIxImdLdg8XUu2wJWBubIxHJnE5B/AWsjXw58AgAA
'48': H4sIAAAAAAAAAH1SPU8CQRCdg+NYsLG00sRKCzsrGzi4LxI4EIgCISErLuTifZjjgNjZWFgRK/+FtR1KYSw0sbD3B1DTWbgLy4ca3WrmzXtvdmY3DhCGNRM75MjqWCc2AWBILIU7pGDjgOVCGCIlB9v2rCZqls9pouw7Ha7IuL2FA1VIOeyfEX+WRHXb61tum1HjEFe7NvFlt22TOKCsqpUbWVWXQKgMbz707fdkg8ZV4IfGtTlOxaKhygrjrtS/cR82X9h5hbm3XMxNvZ+ON8bXhd4vb44z71Reqf7nPY8pN1bM6MbS/O2xcPuMUj8FiaU5F/BJE39MOsenLehKiRt4/gWCSNpQS2UQzbyp8iUgCFmnsO5YLmn6uBUcNLF/TgKBcr2uGwghkBTs4DZ7EATRvKYZsqnMLBCgnJwxVwGR3qy0SDRV5d2oVmT/A6YL9Zo4sDxXAlTZy7daHRIkpUF9ZzK6pFCNQ8PPyWhQ36UDoSqHEnf3h+OrLYhAuIr76X027xfg6gCyfAIAAA==
'49': H4sIAAAAAAAAAH1SPU8CQRCdgwOWs7GwsLbSws7KBg5u7yCBOwJEgZiQFffIxfswxwHRf2BlrPwX/gWihbG0sDdaGBNrOwt3j+VDjW418+a9NzuzqwAkYcUkHt1zBs6hSwE4ki2QAa25JOK5lIRUwyOuO63JuhMKmqyG3kAoyv5o7sAU6SoJj2k4TTKGG4wdv8+pCih46NJQ9fsuVQBVsN7sVrCRBqk1uXwyNh7zXRa3QRwWd2Y4E8slrGqcu1T/zn214wMzb7Vejb3v9tffz2ujX3yBc++CpbX/857FjJutl43SwvzhpnZ1jwo/BbmFuRCISXN/TDrD4xZspdSPgvAUQapYwo0myKZlYrEEBAnnCFY9x6e9kNjRbo+EJzSSGDcY+pGUgLRGPNLnD4IgY+l6STW1qQUCVFXL5jIgs5s15omOsejGtDL/HxAvNOiRyAn8NKDWtmXbAxrl5c2P24uDPIM6App8cmSLDYTaAsq9PBvXa2dvKUi2ybi4w+f9Alsg2K58AgAA
'50': H4sIAAAAAAAAAH2SP0/CQBjG39ICRx10dHZ3czIxUOg/EmgJEKUs5MSDNPYPaQvEj+DoZHT1g6CL0c3BxNEP4OoH8I5eATV603u/e57n7n1bGUCELQv75NiN3VOPADBSquKYtDycsL0gQr7jY89LzyTdjbhMUiI/5o56MFslUEehiaNzEqWbouGFczcYM6kMsjb1SKQEY4/IgBqa3h00NKMAQm9x9W7svVYGtHaAL1r3M07NkqkpKtNunH/XPt+wdQtZttJuLrMfT3Y/LluzX3rOWXbVVp3/srOaakvtumGuw18eWtdPqPrTUF6HcwPvtPxHpxlfXkFHSoIkjC4Q5Gum1umCZNmWxoeAIOeewY7vBmQY4VFyOMTRhCQC1YbTIBFyUFCxj8fsgyAo2rpuKpaaRiBATaVubQKJvqyz2uiaxm+jXon9H7AcaDjEiRsGBUC9fXs0iklS2ZaPJndv9PWoz9G9SAGlFDkcLT7THvMgOnheO2D1F2lilQl8AgAA
'51': H4sIAAAAAAAAAH1SPU8CQRAduAOOo7G0sLKysbMyMXBwXyRwR4AoR0zIint48T7IcUDsbK2MlT/AHwJaGAtNLEws/QEmdvbuwh6gRqeaefvem53ZFQE4yBnIw/vOwDlyMQBFskU0wDUXRbROcJBqeMh152e86oSMxkuhN2CKsj9aOBBFuorCUxzOi4zmBmPH71GqCKIydHEo+T0XiyBUFLXZqShaGhKtydWbtvlS6JDcAhYkb8c4EfO6IsmUu3L+jTvdeKTxBLG3VK/OvO8P1t8vaqNf3gyn3kVTtv7zjnPCzdbLmr40f76tXT8IxZ+C/NKcCdik+T8mjfFZC7JS7EdBeCZAqqQrjSbwhmkobAkCJJ1jWPMcH3dDZEe7XRT2cZQg3GDoR4kkpGXkoR59EAEypqrqkiHPLQQQqlLZWAV4crPGolAVhXUjWp7+D5gtNOiiyAn8NAitbdO2Bzgq5A63Pu8uzwnUZtCU69+8int9AlkMmnzYNE5SwFloXNqh834BZ6Zs8nwCAAA=
'52': H4sIAAAAAAAAAH2Su04CQRSGz7oLDGtjaWEs7O2sTAws7AUSWBCIsjRkxIFs3AsZFogPYGFp5QP4EnZgYyw0sTCxMj4AL+EMO1zU6FRnvvn/f+acXRVAhk0b++TEHbhnHgHgJJ3DA1L1cMT3kgyJuo89Lz5TTJcKmaJRfyAcxWC0TGCOZBnTC0LjTcrywrEb9LhUBdUYeoRqQc8jKqCSYTbaJcNKgtSc3Hxae2/ZNqsdEIvVrQVnZqVgaDrXrp1/0053nvl6gUW2VivPsx9Pt2fX1dGvbMF5dq6iO/9lL2qmTdeKVmEV/vpQvX1CuZ+GzCpcGESnmT86XfD5FWykJIhCeokgkS8Y9QYodsU2xBAQbLjnsOW7AelQ3I0OO5j2SSQxbTgMImkDkjr2cY9/EASpimkWNFuPIxCgsla014HCXlZfbkzDELcxr8L/D5gPNOzgyA2DJKDmfqXbHZAoi45nV7v3WYZaAk3l/t27etRnyBFo8hGjBMgOHucPeL9fBU5AonwCAAA=
'53': H4sIAAAAAAAAAH1Sv0/CQBR+paWUujg6aeLk4uZkYqBAS0mgIBClxISceJDG/iBtgbi5ODgZJ/8Ad2c30cE4aOJg4ugfwOzuHVwBNXrTe9/7vu/de3cyAA9LBnLwnhVYhzYGoEgygwJcsVFIc46HeM1Btj2tCZrlM5qg+E7AFAV3MHMgCrGE/GPsT5NE3vaGltulVBlktW9jX3G7NpZBKqpavVVU8yJwjbvLj/z6W7pFYhPYIXEzwolY0FUlR7kL9W/c0eozPS8QeSvV0sT7cX9lfF4Z/PJmOPXOlHPmf95RTLjJaiGvz81f7ytXT1LmpyA1N2cCNmnqj0kjfNKCrBS7oeefSBDP6mqtDoJRNlS2BAli1hEsO5aL2z7qhNtt5PdwyBGu13dDLgZiDjmoSx9EgkRZ03TFyE0tJJBKSsFYBARys9os0VSVdSNagf4PmCzUa6PQ8lwRpMZmudMJcJgWLw42Ph9OCdRk0IjvXb/LOz0CmQxK3dzujs/WIA68iYbZLTrvF46HHx58AgAA
'54': H4sIAAAAAAAAAH1SPU/CUBS9paWUujg4ODu5uDmZGCj0iwQKAaKUmJAnvpLGfpC2QPQfOBknf4C7f8GPwTg6mDgaHYyJs7uv5RVQo2+699xzzn33vicCsLBkIBfv2KG972CAGMmXUIgbDorinGEh23KR40xrnGoHlMZJgRtSRcUbzxyIgq+h4BAH0ySnOf7E9gYxVQRRGTk4kLyBg0UQqora7lUVjQemc3X2rK09FnskNoEeEndTnIg5XZHkmLtQ/859s5IDqbfUrCXed7urHyeN8S8+xWPvUl02//NOY8LNNyuaPjd/uGmc3wuln4LC3JwK6KSFPyZN8aQFWSn2Ij84EiBb1pVWGzijbih0CQJk7ANYdm0P9wNkRVt9FAxxxBCuP/IiJgO8jFw0iB9EgFxdVXXJkKcWAgg1qWIsAhy5WWuWqIpCuxEtF/8PSBbq91Fk+x4PQmejblkhjorc+uft6V6RQF0KXbPDiydxe0ggk0KF1xftcuX4PQusiSblzXjeLzVNxwJ8AgAA
'55': H4sIAAAAAAAAAH1Su07DQBBcJ45zMQWU1PR0VEgoceJXpMSOkgjiNOEI58jCD2Q7ifgESioELR8SaBB0FEiUfAAtH8BdfHkAgq1252Zmb/dOBsjDhoUDcugl3olPABhSquKEtHycslrIQ6ETYN/PzkTdizlNVOIg4Yp6OFk6UIXUxPEZibOiaPjR1AtHjCqDrI19EivhyCcyoIamdwcNzZBA6M2u3o2d18qA5g7woHl/gVOxaGqKyrhr59+5zzcsbmHhrbSbc+/Ho+2Py9bkF5/jzLtqq85/3oucckvtumGuzF8eWtdPqPpTUF6ZcwGftPzHpAt83oKulIRpFF8gKNRMrdMF0bItjS8BQc47ha3AC8kwxm66P8TxOUkFyo3GYSrkQFJxgEfsQRAUbV03FUvNLBCgplK31gGR3qyzLHRN492oVmT/A+YLjYY49aJQAtTbtV03IWllUz44v3ujt0d9Dt0jl8UxhRwOzT6zGQuQd/C0tsfyL0GKS0N8AgAA
'56': H4sIAAAAAAAAAH1SPU8CQRAd5IDlaCwtrKxs7Kxs4OC+SOAgQBSICa64hxfvw+wdEDtbK2PlzwEtjIUmFvb+ABM7e3dhD1CjU828fe/NzuzKAEnIWdgj+07oHLsEgCPZIg5J3cURrxNJSDU97LrzM0l3qKBJCvVCoSj7o4UDU6SrmJ4ROi8yhhuMHX/AqTLI2tAlVPEHLpEBVTS91atoRhoS7cnNm7H1WuixvAMiWN6NcSaWTE1ROXfl/Bt3uvnE4xlib6VRnXk/HGy8X9VHv7wFzr2LNbXzn3ecM262UTbMpfnLXf32ERV/CvJLcyEQk+b/mDTGZy3YSokfBfQCQapkas0WSFbN0sQSEKw5J7DuOT7pU2xHe31Mz0mUYNxg6EeJNUir2MMD/iAIMjVdNxVLnVsgQFWlbK0CErtZc1Homia6Ma3E/wfMFhr0ceQEfhpQe6dm2yGJCrnD7c/760sGdQU0RTaPIwZ1BDT5mEGnKUh28Li0y+f9Ak9Osrh8AgAA
'57': H4sIAAAAAAAAAH1SvU4CQRAe4IDlbCwtjIW9nZWJgYO7AxK4QyDK0eCKe+Ti/ZC9A+IDWFha+QC+hB3YGAtNLEysjA/AS7gLy48anWrm2+/7Zmd2ZYAEbBjYI8dO6Jy5BIAjmTwOSc3FEa9jCUg2POy68zNJd6igSQr1QqEo+8OlA1OkqpheEDov0kU3GDl+j1NlkLWBS6ji91wiA6poerNT0YopiLXGN5/F3bdch+UWiGB5e4EzsVTSFJVz186/cSfbzzxeYOGt1Ksz78eTrel1bfjLW+DcO2+q1n/ei5xxM/VysbQyf32o3T6h/E9BdmUuBGLS7B+TLvBZC7ZS4kcBvUSQLJS0RhMkwzQ0sQQEceccNj3HJ12K7eigi2mfRDHGDQZ+FItDSsUe7vEHQZA2db2kGOrcAgGqKmVjHZDYzRrLQtc00Y1pJf4/YLbQoIsjJ/BTgFp7pm2HJMqho+nVzn2OQW0BTZDN45RBloDGH/27d/mwn4SEhUeFfT7vFy2mnuh8AgAA
'58': H4sIAAAAAAAAAH1Sv0/CQBR+lVKOujg6aeLk4ubkAgVaIIEWgSglJnjilTT2h2kLxM3Fwck4+V84u4kOxkETB3f/AGZ37+AKqNE3vffd933v3ruTARKwrGOX7NmhfeQQAIakczgkNQdHrBYSkGy42HGmZ6JmB5wmKoEbckXZG8wcqEKq4uCEBNMiVXT8oe31GFUGWe07JFC8nkNkQBVVa3YqalECoXV//VHceM92aG4CD5q3Y5yKxZKqFBh34fwbd7T2wuIVYm+lXp14P+2vji9rg1/eHGfeOaNg/ucd55SbrpeLpbn520Pt5hnlfgoyc3Mu4JNm/pg0xict6EqJF/nBGYJkvqQ2miDqhq7yJSBYso9hxbU90g2wFe10cXBKIoFy/b4XCUsgFbCLe+xBEKQMTSspemFqgQBVlbK+CIj0Zo1Zoakq70a1IvsfMFmo38WR7XsSoNaWYVkhibLS1cHm5+M5hdocGiGLxSGFTA5lbu92xxfrkISEiYf5bTbvF6ZvwVR8AgAA
'59': H4sIAAAAAAAAAH1SPU/CUBS9lVIedXFwcHZycXNygUK/SKAlQJQSE3ziK2nsh2kLRP+Bk3HyX/gX/BiMo4O70cGYOLv7Wl4BNXqne88757x3730iQA6WDeyRHSdyDlwCkCDFCo5I08VxUnM5yLc97LrTM151QkbjpdCLmKLmj2cOVCE0cHhEwmlR0Nxg4vjDhCqCqIxcEkr+0CUioLqidvp1RROA615fPGvrT+U+zS1gQfNehlMxryuSnHAXzr9z3+w0IPOWWo3U+3537eOsOf7FZ3jiXTFl6z/vLKfcYqum6XPzx9vm5QOq/BSU5uZMwDot/dFphqdX0JESPw7CEwT5qq60O8AbpqGwISBYcg5hxXN8MgixHW8PcHhMYo5yg5Efc0sgyNjDw2QhCAqmquqSIU8tEKCGVDMWAZ6+rD0rVEVht1Etn/wPSAcaDHDsBL4AqLtp2nZE4jK/8Xl3vlemUI9BNyjdwD6FLAaVXl+0q9XT9zzkLDypbiX9fgEdpRlIfAIAAA==
'60': H4sIAAAAAAAAAI2Sv0/CQBTHX6GUo66aOBp3/wEXKPbakkCLQJSykAMO0tgfSVtA3R0cnfwvmN2Mi3F0cDcmbvwTXukVUGPiTe99730/d+/dyQB52DGJR8+cyBm4FCBRSlUS0aZL4iQX8lBoe8R10z1Rc0JeJiqhF3FHzZ+tCcwhNUh4QcM0KepuMHf8SVIqg4ynLg0Vf+JSGVAda51+HesSCN3Hu3f98K3SZ7ENfLG4l+nMLBpYUZParf1vtVkMGVtpNVbs5/P95W1z9ovN9YRdtVT7n+xSq6YbG/jrU/P+BVV/GsobODfwTst/dJrpqyPYSKkfB+EVgsKJgdsdEE3LxHwICHLOCPY8x6fDkIzj43kQjKjfj1wyEJghmPqxkANJJR6ZJK+CoGhpmqGYaspBgBpKzdwWRHa99jrRMOZHMq+YfJJ0qsGQxE7gS4C6R9Z4HNG4sm4B9bhUXjycLm8OEsnOpM/rD32xe1mAvE3mqeML3NMY7oECAAA=
'61': H4sIAAAAAAAAAI2Sv0/CQBTHX6GUo66aODm4+w+4QLHXlgRaAkQpCzngII39kbQF1N3B0cn/wtmNuBhHB3dD4sY/4ZVeATUm3vTe9973c/fenQyQhz2TePTciZyBSwESpVQlEW26JE5yIQ+FtkdcN90TNSfkZaISehF31PzZhsAcUoOElzRMk6LuBnPHnySlMsh46tJQ8SculQHVsdbp17EugdBd3H/ox++VPott4IvFvUxnZtHAiprU7ux/q81iyNhKq7Fmv1wcru6as19srifsqqXa/2SXWjXd2MLfnpsPr6j601DewrmBd1r+o9NMXx/BRkr9OAivERTODNzugGhaJuZDQJBzRnDgOT4dhmQcn86DYET9fuSSgcAMwdSPhRxIKvHIJHkVBEVL0wzFVFMOAtRQauauILLrtTeJhjE/knnF5JOkUw2GJHYCXwLUPbHG44jGlU0LqMelxXJ1e/TUSiSbS+XPm6X+uH9VgLxN5qnjC9Xovx+BAgAA
'62': H4sIAAAAAAAAAI2Sz07CQBDGp1BgqVdNPHv3BbxAsf9IoCVAlHIhCyyksd0mbQHlDTx68i18BeLFePTgXU28efMJ3KVbQI2Je5r5dr7f7syuApCHPRsH5MyLvaFPALhSruGYtHyc8FzKQ6ETYN9P92TDi0SZrEZBLBx1Ot8QmKPYxNEFidKkZPrhwqNTXqqAos98Eql06hMFUEM3uoOGbhZB6q1uXsyj5+qAxS6IxeJ+pjOzbOmqxmt39r/VZjFkbLXdXLMfzg8/rlvzX2yhc3bN0dx/ssvtumlt4U/3rdtHVPtpqGzhwiA6rfzRaaavj2AjJTQJoysEhVNL73RBth1bF0NAkPPGcBB4lIwiPElOFmE4JnQQ+3goMUM4o4mUg6KGAzzlr4Kg5BiGpdpaykGAmmrd3hVkdr3OJjF0XRzJvDL/JOlUwxFOvJAWAfWOnckkJkl10wLqC2n1+Wbe7S9fmeQKqfK+5NplAfIuXqSOLxH5/PeBAgAA
'63': H4sIAAAAAAAAAI2SMU/CQBTHX6HAUVdNnN39Ai5Q7LUlgZYAUcpCDjhIY3tN2gLqN3B08lv4FdDFODg4uBsTN7+Cg1d6BdSYeNN7/3v/3917dwpAHnYs4tMTN3KHHgVIlHKNRLTlkTjJpTwUOj7xvHRP1t1QlMlq6EfCUWfzNYE7ik0SntEwTUqGFyxcNk1KFVDwzKOhyqYeVQA1sN4dNLBRBKm3vH41Dl6qAx47IBaP+5nOzbKJVS2p3dr/VpvFkLHVdnPFfjjd/7hqzX+xhZ6wa7bm/JNdbtcNcwN/vm/dPKLaT0NlAxcG0Wnlj04zfXUEHyllcRBeICgcm7jTBdmyLSyGgCDnjmHPdxkdhWQSHy2CYEzZIPLIUOKGYMZiKQdFjfhkmrwKgpKt66ZqaSkHAWqqdWtbkPn1OutEx1gcyb1y8knSqQYjErsBKwLqHdqTSUTj6roF1BfS8vMpWXdccoRUeb98M253zwuQd8gidXwBzqUOnoECAAA=
'64': H4sIAAAAAAAAAI2SzU7CQBDHp7TAUq+aePbkxRfwAsV+kUhLgCglJrjAQhrbbdIWUN/Ak/HkW/gKfhyMRw/ejYk3z97d0i2gxsQ9zfx3/r/dmV0ZQIQ1C/vkwI3cvkcAEqVUxRFpeDhOckGEfMvHnpfuSbob8jJJCf2IO2p0uiAwR6GOwxMSpknR8IKZS8dJqQyyNvFIqNCxR2RA+5re7u1rRgGEzu3Vq7H1Uumx2AG+WNzNdGaWTE1Rk9qV/W+1WQwZW2nW5+zHw82Pi8b0F5vrCbtqq84/2aVmzTCX8Of7xvUTqv40lJdwbuCdlv/oNNPnR7CREhoH4RmC/J6ptdogWbal8SEgyLlD2PBdSgYhHsW7syAYEtqLPNwXmCGY0FjIQUHFPh4nr4KgaOu6qVhqykGA6krNWhUkdr3WItE1jR/JvFLySdKpBgMcuwEtAOrs2KNRROLKogXU5dKdeLT9+XB5zCSHS+X38zfjZv00D6KDZ6njC5J7sYaBAgAA
'65': H4sIAAAAAAAAAI2Sv0/CQBTHX6HAUVdNnBzc/QdcoNhfJNBWIEpZyAEHaWyvSVtA3R0cnfwvnN3UxTg6uBsTN/4Jr/QKqDHxpve+976fu/fuJIA8bJnYJydu5A48ApAo5RqOiO3hOMmFPBTaPva8dE/U3JCXiXLoR9xRp7MVgTmKTRyekTBNSroXzF06SUolkNSpR0KZTjwiAWqoWqffUPUiCN2Hm3d9/63aZ7EDfLG4l+nMLBqqrCS1G/vfarMYMrbcai7Zz6e7i2t79ovN9YRdsxTnn+xyq64ba/jrk337gmo/DZU1nBt4p5U/Os305RFspITGQXiBoHBkqO0OiKZlqnwICHLuCHZ8l5JhiMfx4TwIRoT2Iw8PBGYIpjQWclBUsI8nyasgKFmaZsimknIQoKZcNzcFkV2vvUo0VeVHMq+YfJJ0qsEQx25Ai4C6B9Z4HJG4umoB9bj0iI4XV3v3NpMcLlU+Lz/0u+3zAuQdPE8dX89/vHSBAgAA
'66': H4sIAAAAAAAAAI1SzU7CQBCeQilLfQA9e/cFvGChfyTQEiBKuZAVt7ihP2ZbJD6B8ehJfRrixejNg3cfwHcwbukWUGPinGa+me+bnZlVAcqw4+CQHNOEngYEIENqDZyQboDTLJbKUOmHOAjynGxSJspkjYWJYLSiy7UCZygdzGaE5UHVCuIFjaZZqQqqMQ8I06JpQFRAbcMcjNuGpYA0XN6+W/tvR2PueyCM+6MC52TZNjQ9q93Kf6stfCi0tV5npf10svdx0738pS3wTLvh6t4/tWu9lmVvxF8fu3fPqPGTUN+IC4KYtP7HpAW+asFXSqI0ZlcIKk3b6A9AdlzHEEtAUKJnsBvSiEwY9tPDlNGLBb/N+DyOZxKnxPMolUqg6DjE0+wuCKquadqao+dKCFBHaznbgMwf2F8HpmGIppwrZ98k32s8wSmNIwXQ8MD1/YSk9ZcHbvd8CDQS0GYu5Alo+emvrAJlDy+a11n6C3gt/j+DAgAA
'67': H4sIAAAAAAAAAI1SzU7CQBCeQoGlPoCevfsCXrDQbUsCLQGilAtZcYsN/THbAvEJjEdP6tOgF6M3D959AN/BuKVbQI2Jc5r5Zr5vdmZWASjCjkUCeuzF3qlPAVKkWicx7fgkSWOpCKVeQHw/y8m6x0SZrLIgFoxmOF8rcEa5TdiUsiyoGH608MJJWqqAgmc+ZWo48akCqIX1/qiFjTJIg+XNu7H/djTivgPCuD/McU6WTaxqae1W/ltt7kOurXbbK+2nk72P6878l7bAU+26rTn/1K52m4a5EX997Nw+o/pPQm0jLghi0tofk+b4qgVfKQ2TiF0iKDVM3OuDbNkWFktAUPDOYDfwQjpmxE0OE+ZdLPhtRudRNJU4JZqFiVSAskYCMknvgqBi67qpWlqmhAC11aa1Dcj8gb11oGMsmnKunH6TbK/RmCReFJYBDQ5s141pUnu553bHh0BDAT2gfC7kCGj56a6sBEWHLBpXafoLRxWBAIMCAAA=
'68': H4sIAAAAAAAAAI1SvVLCQBDeQAgHVlZa21vZ2UAgf8xAwgCjhIY58YI35MdJAoxP4Fha+Tho41ha2PsAvoPjHbkA6jjjVrvf7vft7e5VAYqwZ+OAnNGEXvgEgCOVBk5I18cpj6UilPoB9v0sJxs0FmWyGgeJYLTCxUaBMZQOjmckzoKy6UdLGk55aRWq+twnsRpOfVIF1NaNwbitmwpIw9X9u3n0Vh8z3wVhzB/lOCPLlq5qvHYn/6029yHXVnudtfbz+eHHXXfxS1vgXLvhaO4/tSu9lmltxV+fug8vqPGTUNuKC4KYtPbHpDm+bsFWSsI0im8QlJqW3h+AbDu2LpaAoEAv4SCgIZnE2EtP05heL9ltxldRNJMYJZqHqVQARcMBnvK7ICg7hmGptpYpIUAdtWXvAjJ7YH8TGLoumjKuzL9JttdoglMahQqg4bHjeQlJ6/sn3OoMGgnoEeVzIVdAq09vbSUounjZvOXpL4HOfiiDAgAA
'69': H4sIAAAAAAAAAI1SvVLCQBDeQAhHrKy0treys4FA/piRhAFGCQ1z4gVvyI+TBBifwLG08nEYG8fSwt4H8B0c78gFUMcZt9r9dr9vb3dPBSjDnoNDck5TehkQAI7Umjgl3QBnPJbKUOmHOAjynGzSRJTJWhKmgtGOFhsFxlA6OJmRJA+qVhAvaTTlpSqoxjwgiRZNA6ICOjPMwfjMsBSQhquHd+vorTFmvgfCmD8qcEaWbUPTee1O/ltt4UOhrfU6a+3ni8OP++7il7bAuXbT1b1/atd6bcveir8+dR9fUPMnob4VFwQxaf2PSQt83YKtlERZnNwiqLRsoz8A2XEdQywBQYlewUFIIzJJsJ+dZgm9WbLbjK/jeCYxSjyPMqkEio5DPOV3QVB1TdPWHD1XQoA6WtvZBWT2wP4mMA1DNGVcmX+TfK/xBGc0jhRAw2PX91OSNfZPuDUYNBLQdi7kCWj16a+tAmUPL1t3PP0FvvYBF4MCAAA=
'70': H4sIAAAAAAAAAI2Sv07CUBTGT6GUS10cnZ1cfAEXKPa2JYGWAFFKTMgVLqSxf5K2QHwC42ScfBzUwTg6uPsALi7u3ktvATUmdjrnd7/vuz2nVQGKsGOTgJ54iXfuUwBOKnWS0LZPUt5LRSh1A+L72ZlseLGQyVocJMLRCOfrBOZQWiS+oHHWlE0/WnjhlEtVUPHMp7EWTn2qAmpiozdsYlMBqb+8fTP3X2tDVrsgHlYPcs7MsoU1nWu3zr9p8xrybK3TWmU/ne69X7fnv7IF59l1R3f/mV3pNExrE/7y0L57RvWfhuomXBjEpNU/Js356gq2UhqmUXyJoHRs4W4PZNuxsVgCgoI3ht3AC+koJpP0yCfjMY0lpo1mYSoVQNFJQKb8gyAoO4ZhabaeRSBALa1hbwOZvVl33RgYi9uYV+b/R7bQaERSLwoVQP1DZzJJaForHHw+3pzVGBoIdL8eCLkCLT8yVIKiSxbHV7z+AhPs4CV8AgAA
'71': H4sIAAAAAAAAAI1SPU/CUBS9hVIedXF0cnBy8Q+4QKFfJNBWIEqJCXnCgzT2I2kLxB9gjJNx8q+4oQ7G0cHBzR/A7O4rfQXUmPime88959x373siQB62DOyRYydyzlwCkCClKo6I5eI4ybk8FNoedt20xqtOyGi8FHoRU9T96cqBKoQmDs9JmCZFzQ1mjj9OqCKIysQloeSPXSICaihqp99QNAG47vz2Q9t7q/RpbAM7NO5lOBXzuiLJCXej/o2bxZB5S63m0vv5ZGdxbU1/eTM88a6asv1P71Krrulr89dH6+4FVX8KymtzJmCTlv+YNMOXLehKiR8H4QWCQk1X2h3gDdNQ2BIQ5JwhbHuOTwYhHsWHLh4OSchRbjDxYy4Hgow9PE4eBEHRVFVdMuTUAgFqSnVjE+DpzdqrRFUU1o1q+eR/pAsNBjh2Al8A1D0wR6OIxJXc/ufTzWmFQj0GPawGQjaD5u9Hi8vde6sAeRvPaldJ+QsuoJmQfAIAAA==
Block:
'0':
X-Offset: 2.0
Y-Offset: 0.0
Z-Offset: -2.0
Type: WORKBENCH
Data: 0

View File

@ -1,226 +1,62 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.awt.Color;
import java.util.HashMap;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.map.MapPalette;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
import de.Ste3et_C0st.FurnitureLib.main.entity.Relative;
public class GetBlocks {
public HashMap<Integer, HashMap<Integer, Byte>> returnBlocks(Location location, int höhe, int links){
HashMap<Integer, HashMap<Integer, Byte>> blockList = new HashMap<Integer, HashMap<Integer, Byte>>();
BlockFace b = main.getLocationUtil().yawToFace(location.getYaw());
höhe = höhe/2;
//links = links/2;
location = main.getLocationUtil().getRelativ(location, b, 0D,- (double) (links/2));
Integer tiefe = 24;
int layer = 0;
for(int x = 0;x<=tiefe;x++){
HashMap<Integer, Byte> layerlist = new HashMap<Integer, Byte>();
Integer blockindex = 0;
for(int y = 0;y<=links;y++){
for(int z = 0;z<=höhe;z++){
Block b1 = main.getLocationUtil().getRelativ(location, b,(double) x, (double) y).add(0,z,0).getBlock();
byte byte1 = getByteFromBlock(b1);
layerlist.put(blockindex, byte1);
blockindex++;
layerlist.put(blockindex, byte1);
blockindex++;
public class GetBlocks {
Class<?> CraftBlockClass = null;
Class<?> CraftMagicNumbersClass = null;
public List<Layer> returnBlocks(Location startLocation, int width, int heigt, int depth, int offsetZ){
try{
String str = FurnitureLib.getInstance().getBukkitVersion();
this.CraftBlockClass = Class.forName("org.bukkit.craftbukkit."+str+".block.CraftBlock");
this.CraftMagicNumbersClass = Class.forName("org.bukkit.craftbukkit."+str+".util.CraftMagicNumbers");
BlockFace face = main.getLocationUtil().yawToFace(startLocation.getYaw()).getOppositeFace();
List<Layer> layerList = new ArrayList<Layer>();
for(int i = depth; i>=0; i--){
Layer l = new Layer(i);
Location start = new Relative(startLocation, - offsetZ - i, 0, (width/2), face).getSecondLocation();
for(int z = 0; z < width; z++){
for(int y = 0; y < heigt; y++){
Location loc = new Relative(start, 0, y, - z, face).getSecondLocation();
l.addPixel(new Pixel(width - z, heigt - y, getByteFromBlock(loc.getBlock())));
}
}
layerList.add(l);
}
blockList.put(layer, layerlist);
layer++;
return layerList;
}catch(Exception ex){
ex.printStackTrace();
return null;
}
return blockList;
}
@SuppressWarnings("deprecation")
public Color getRedByte(Block b){
return MapPalette.getColor((byte) b.getTypeId());
}
@SuppressWarnings("deprecation")
public Byte getByteFromBlock(Block b){
Material m = b.getType();
Integer subID = (int) b.getData();
switch (m){
//green
case GRASS:return (byte) 4;
case MYCEL:return (byte) 4;
//yellow
case SAND: return (byte) 8;
case GRAVEL: return (byte) 8;
case SOUL_SAND: return (byte) 8;
case SANDSTONE: return (byte) 8;
//Light Gray
case STAINED_CLAY: return (byte) 12;
case SPONGE : return (byte) 12;
case BED_BLOCK: return (byte) 12;
case WEB: return (byte) 12;
//--
case GOLD_BLOCK: return (byte) 13;
case IRON_BLOCK: return (byte) 13;
case DIAMOND_BLOCK: return (byte) 13;
case IRON_DOOR_BLOCK: return (byte) 13;
case IRON_BARDING: return (byte) 13;
case BREWING_STAND: return (byte) 13;
case CAULDRON: return (byte) 13;
//RED
case TNT: return (byte) 16;
case LAVA: return (byte) 16;
//BLUE
case ICE: return (byte) 21;
case PACKED_ICE: return (byte) 20;
case LAPIS_BLOCK: return (byte) 100;
//GREEN DARK
case SAPLING: return (byte) 28;
case LEAVES: return (byte) 28;
case LEAVES_2: return (byte) 28;
case LONG_GRASS: return (byte) 28;
case DEAD_BUSH: return (byte) 28;
case RED_ROSE: return (byte) 28;
case YELLOW_FLOWER: return (byte) 28;
case DOUBLE_PLANT: return (byte) 28;
case RED_MUSHROOM: return (byte) 28;
case BROWN_MUSHROOM: return (byte) 28;
case WHEAT: return (byte) 28;
case CACTUS: return (byte) 28;
case SUGAR_CANE_BLOCK: return (byte) 28;
case PUMPKIN: return (byte) 28;
case JACK_O_LANTERN: return (byte) 28;
case MELON_BLOCK: return (byte) 28;
case PUMPKIN_STEM: return (byte) 28;
case MELON_STEM: return (byte) 28;
case VINE: return (byte) 28;
case WATER_LILY: return (byte) 28;
case NETHER_WARTS: return (byte) 28;
case DRAGON_EGG: return (byte) 28;
//WHITE
case WOOL: switch (subID) {
case 0: return (byte) 34;
case 1: return (byte) 62;
case 2: return (byte) 66;
case 3: return (byte) 70;
case 4: return (byte) 122;
case 5: return (byte) 78;
case 6: return (byte) 82;
case 7: return (byte) 15;
case 8: return (byte) 14;
case 9: return (byte) 92;
case 10: return (byte) 99;
case 11: return (byte) 51;
case 12: return (byte) 107;
case 13: return (byte) 31;
case 14: return (byte) 19;
case 15: return (byte) 119;
default: return (byte) 34;
}
case SNOW: return (byte) 34;
case SNOW_BLOCK: return (byte) 34;
//GRAY
case CLAY: return (byte) 36;
case MONSTER_EGG: return (byte) 36;
//Borwn
case DIRT: return (byte) 53;
//Farmlandcase F: return (byte) 9;
//GRAY
case STONE: return (byte) 56;
case COBBLESTONE: return (byte) 56;
case BEDROCK: return (byte) 56;
case GOLD_ORE: return (byte) 56;
case IRON_ORE: return (byte) 56;
case COAL_BLOCK: return (byte) 56;
case LAPIS_ORE: return (byte) 56;
case DISPENSER: return (byte) 56;
case DROPPER: return (byte) 56;
case PISTON_STICKY_BASE: return (byte) 56;
case PISTON_BASE: return (byte) 56;
case OBSIDIAN: return (byte) 56;
case MOB_SPAWNER: return (byte) 56;
case DIAMOND_ORE: return (byte) 56;
case FURNACE: return (byte) 56;
case STONE_PLATE: return (byte) 56;
case REDSTONE_ORE: return (byte) 56;
case NETHERRACK: return (byte) 56;
case STONE_SLAB2: return (byte) 56;
case BRICK: return (byte) 56;
case BRICK_STAIRS: return (byte) 56;
case NETHER_BRICK: return (byte) 56;
case NETHER_BRICK_STAIRS: return (byte) 56;
case NETHER_FENCE: return (byte) 56;
case ENCHANTMENT_TABLE: return (byte) 56;
case ENDER_STONE: return (byte) 56;
case SMOOTH_BRICK: return (byte) 56;
case SMOOTH_STAIRS: return (byte) 56;
//Blue
case WATER: return (byte) 68;
//Brown
case LOG: switch (subID) {
case 0: return (byte) 43;
case 1: return (byte) 52;
case 2: return (byte) 57;
case 3: return (byte) 60;
default: return (byte) 43;
}
case LOG_2: switch (subID) {
case 0:return (byte) 44;
case 1:return (byte) 55;
default:return (byte) 44;
}
//Brown
case WOOD_PLATE: return (byte) 40;
case WOOD: switch (subID) {
case 0:return (byte) 42;
case 1:return (byte) 40;
case 2:return (byte) 8;
case 3:return (byte) 41;
case 4:return (byte) 62;
case 5:return (byte) 104;
default:return (byte) 42;
}
case NOTE_BLOCK: return (byte) 40;
case BOOKSHELF: return (byte) 40;
case WOOD_STAIRS: switch (subID) {
case 0:return (byte) 42;
case 1:return (byte) 40;
case 2:return (byte) 8;
case 3:return (byte) 41;
default:return (byte) 42;
}
case CHEST: return (byte) 40;
case WOOD_DOUBLE_STEP: return (byte) 40;
case WOOD_STEP: return (byte) 42;
case ACACIA_STAIRS:switch (subID) {
case 0:return (byte) 62;
case 1:return (byte) 104;
default:return (byte) 104;
}
case JUKEBOX: return (byte) 40;
case FENCE: switch (subID) {
case 0:return (byte) 42;
case 1:return (byte) 40;
case 2:return (byte) 8;
case 3:return (byte) 41;
default:return (byte) 42;
}
case ACACIA_FENCE:switch (subID) {
case 0:return (byte) 62;
case 1:return (byte) 104;
default:return (byte) 104;
}
case WOOD_DOOR: return (byte) 42;
case SPRUCE_DOOR: return (byte) 40;
case BIRCH_DOOR: return (byte) 8;
case JUNGLE_DOOR: return (byte) 41;
case ACACIA_DOOR:return (byte) 62;
case DARK_OAK_DOOR: return (byte) 104;
case TRAP_DOOR: return (byte) 40;
default: return (byte) 0;
try {
Object obj = CraftBlockClass.cast(b);
Object NMSBlock = CraftMagicNumbersClass.getDeclaredMethod("getBlock", org.bukkit.block.Block.class).invoke(null, obj);
Object IBlockData = NMSBlock.getClass().getSuperclass().getMethod("getBlockData", null).invoke(NMSBlock);
java.lang.reflect.Method m = IBlockData.getClass().getMethod("g", null);
m.setAccessible(true);
Object o = m.invoke(IBlockData);
int baseColor = (int) o.getClass().getField("M").get(o);
int color = baseColor * 4 + 0;
return (byte) color;
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
e.printStackTrace();
return 0;
}
}
}

View File

@ -0,0 +1,26 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.util.ArrayList;
import java.util.List;
public class Layer {
private int layerID = 0;
private List<Pixel> pixelList = new ArrayList<Pixel>();
public Layer(int layerID){
this.layerID = layerID;
}
public void addPixel(Pixel p){
this.pixelList.add(p);
}
public List<Pixel> getPixelList(){
return this.pixelList;
}
public int getLayerID(){
return this.layerID;
}
}

View File

@ -0,0 +1,23 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.util.UUID;
public class Pixel {
int x = 0;
int z = 0;
byte color = 0;
@SuppressWarnings("unused")
private UUID serialID = UUID.randomUUID();
public Pixel(int x, int z, byte color){
this.x = x;
this.z = z;
this.color = color;
}
public int getX(){return this.x;}
public int getZ(){return this.z;}
public byte getColor(){return this.color;}
}

View File

@ -1,6 +1,7 @@
package de.Ste3et_C0st.Furniture.Camera.Utils;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.entity.Player;
@ -10,20 +11,20 @@ import org.bukkit.map.MapView;
public class RenderClass extends MapRenderer {
private boolean hasRendered = false;
private HashMap<Integer, HashMap<Integer, Byte>> byteList = new HashMap<Integer, HashMap<Integer, Byte>>();
private List<Layer> layerList = new ArrayList<Layer>();
Integer height = 55;
Integer width = 55;
public RenderClass(Location loc){
GetBlocks blocks = new GetBlocks();
hasRendered = true;
this.byteList = blocks.returnBlocks(loc, height, width);
this.layerList = blocks.returnBlocks(loc, 56, 56, 29, 0);
}
@Override
public void render(MapView mapView, MapCanvas mapCanvas, Player player) {
if(!hasRendered){return;}
if(this.byteList.isEmpty()){return;}
try {
mapView.setWorld(player.getWorld());
mapView.setCenterX(player.getLocation().getChunk().getX());
@ -49,29 +50,14 @@ public class RenderClass extends MapRenderer {
}
}
for(int layer = byteList.size()-1; layer>=0;layer--){
HashMap<Integer, Byte> colorList = this.byteList.get(layer);
Integer index = colorList.size()-1;
for(int y = 0; y<=width;y++){
for(int z = 0; z<=height;z++){
Integer Y = startX+y;
Integer Z = startY+z;
if(colorList.get(index)!=null&&colorList.get(index)!=0){
mapCanvas.setPixel(Y,Z,colorList.get(index));
mapCanvas.setPixel(Y,Z,colorList.get(index));
}
index--;
}
for(Layer l : this.layerList){
for(Pixel p : l.getPixelList()){
Byte b = p.getColor();
if(b == 0) continue;
mapCanvas.setPixel(- 1 + startX + p.getX(),- 1 + startY + p.getZ(), b);
}
}
//mapCanvas.drawText(10, 10, font, "<EFBFBD>18;TESTPHASE");
hasRendered = false;
}catch(Exception e){e.printStackTrace();}
}
}

View File

@ -44,12 +44,12 @@ import de.Ste3et_C0st.Furniture.Objects.outdoor.tent_3;
import de.Ste3et_C0st.Furniture.Objects.trap.BearTrap;
import de.Ste3et_C0st.FurnitureLib.Crafting.Project;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureLateSpawnEvent;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.ProjectLoader;
import de.Ste3et_C0st.FurnitureLib.Utilitis.LocationUtil;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.CenterType;
import de.Ste3et_C0st.FurnitureLib.main.Type.PlaceableSide;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
public class main extends JavaPlugin implements Listener{
@ -68,52 +68,51 @@ public class main extends JavaPlugin implements Listener{
instance = this;
lib = (FurnitureLib) Bukkit.getPluginManager().getPlugin("FurnitureLib");
util = lib.getLocationUtil();
if(lib.getDescription().getVersion().startsWith("1.8")){
if(lib.getDescription().getVersion().startsWith("1.8") || lib.getDescription().getVersion().startsWith("1.9")){
new Project("Camera", this,getResource("Crafting/Camera.yml"),PlaceableSide.TOP, camera.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("GraveStone", this,getResource("Crafting/GraveStone.yml"),PlaceableSide.TOP, graveStone.class).setSize(1, 2, 3, CenterType.CENTER);
new Project("LargeTable", this,getResource("Crafting/LargeTable.yml"),PlaceableSide.TOP, largeTable.class).setSize(2, 1, 2, CenterType.RIGHT);
new Project("Sofa", this,getResource("Crafting/Sofa.yml"),PlaceableSide.TOP, sofa.class).setSize(1, 1, 3, CenterType.RIGHT);
new Project("Campfire1", this,getResource("Crafting/Campfire1.yml"),PlaceableSide.TOP, campfire_1.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("Campfire2", this,getResource("Crafting/Campfire2.yml"),PlaceableSide.TOP, campfire_2.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("Tent1", this,getResource("Crafting/Tent1.yml"),PlaceableSide.TOP, tent_1.class).setSize(4, 3, 5, CenterType.RIGHT);
new Project("Tent2", this,getResource("Crafting/Tent2.yml"),PlaceableSide.TOP, tent_2.class).setSize(4, 3, 5, CenterType.RIGHT);
new Project("Tent3", this,getResource("Crafting/Tent3.yml"),PlaceableSide.TOP, tent_3.class).setSize(3, 2, 3, CenterType.CENTER);
new Project("Sunshade", this, getResource("Crafting/Sunshade.yml"),PlaceableSide.TOP, sunshade.class).setSize(1, 3, 1, CenterType.RIGHT);
new Project("Streetlamp", this, getResource("Crafting/Streetlamp.yml"),PlaceableSide.TOP, streetlamp.class).setSize(2, 4, 1, CenterType.FRONT);
new Project("Billboard", this, getResource("Crafting/Billboard.yml"),PlaceableSide.TOP, billboard.class).setSize(1, 3, 3, CenterType.RIGHT);
new Project("WeaponStand", this, getResource("Crafting/WeaponStand.yml"),PlaceableSide.TOP, weaponStand.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("Hammock", this, getResource("Crafting/Hammock.yml"),PlaceableSide.TOP, hammock.class).setSize(1, 2, 7, CenterType.RIGHT);
new Project("Guillotine", this, getResource("Crafting/guillotine.yml"),PlaceableSide.TOP, guillotine.class).setSize(1, 5, 2, CenterType.RIGHT);
new Project("Log", this, getResource("Crafting/log.yml"), PlaceableSide.TOP, log.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("FlowerPot", this, getResource("Crafting/FlowerPot.yml"),PlaceableSide.BOTTOM, TFlowerPot.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("BearTrap", this, getResource("Crafting/BearTrap.yml"), PlaceableSide.TOP, BearTrap.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("TrashCan", this, getResource("Crafting/TrashCan.yml"), PlaceableSide.TOP, TrashCan.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("Crossbow", this, getResource("Crafting/Crossbow.yml"), PlaceableSide.TOP, Crossbow.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("Flag", this, getResource("Crafting/flag.yml"), PlaceableSide.TOP, flag.class).setSize(1, 3, 1, CenterType.RIGHT);
new Project("AdventCalender", this, getResource("Crafting/AdventCalender.yml"), PlaceableSide.TOP, AdventCalender.class).setSize(1, 1, 1, CenterType.RIGHT);
new Project("FireworkLauncher", this, getResource("Crafting/FireworkLauncher.yml"), PlaceableSide.TOP, FireworkLauncher.class).setSize(1, 1, 1, CenterType.CENTER);
new Project("Catapult", this, getResource("Models/Catapult.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(3, 2, 3, CenterType.RIGHT).setEditorProject(false);
new Project("HumanSkeleton", this, getResource("Models/HumanSkeleton.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(3, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("CandyCane", this, getResource("Models/CandyCane.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(3, 4, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SnowGolem", this, getResource("Models/SnowGolem.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 2, 1, CenterType.RIGHT).setEditorProject(false);
new Project("TV", this, getResource("Models/TV.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 2, 3, CenterType.CENTER).setEditorProject(false);
new Project("Chair", this, getResource("Models/Chair.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("CampChair", this, getResource("Models/CampChair.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("CactusPlant", this, getResource("Models/CactusPlant.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SleepingBag", this, getResource("Models/SleepingBag.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("ChristmasTree", this, getResource("Models/ChristmasTree.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("Table", this, getResource("Models/Table.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SchoolChair", this, getResource("Models/SchoolChair.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SchoolTable", this, getResource("Models/SchoolTable.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("BlackBoard", this, getResource("Models/BlackBoard.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 2, 3, CenterType.RIGHT).setEditorProject(false);
new Project("Barrels", this, getResource("Models/Barrels.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("WaxCandle", this, getResource("Models/WaxCandle.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Lantern", this, getResource("Models/Lantern.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Mailbox", this, getResource("Models/Mailbox.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 2, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Fence", this, getResource("Models/Fence.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Trunk", this, getResource("Models/Trunk.yml"), PlaceableSide.TOP, ProjectLoader.class).setSize(1, 1, 4, CenterType.RIGHT).setEditorProject(false);
new Project("Catapult", this, getResource("Models/Catapult.yml")).setSize(3, 2, 3, CenterType.RIGHT).setEditorProject(false);
new Project("HumanSkeleton", this, getResource("Models/HumanSkeleton.yml")).setSize(3, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("CandyCane", this, getResource("Models/CandyCane.yml")).setSize(3, 4, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SnowGolem", this, getResource("Models/SnowGolem.yml")).setSize(1, 2, 1, CenterType.RIGHT).setEditorProject(false);
new Project("TV", this, getResource("Models/TV.yml")).setSize(1, 2, 3, CenterType.CENTER).setEditorProject(false);
new Project("Chair", this, getResource("Models/Chair.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("CampChair", this, getResource("Models/CampChair.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("CactusPlant", this, getResource("Models/CactusPlant.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SleepingBag", this, getResource("Models/SleepingBag.yml")).setSize(1, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("ChristmasTree", this, getResource("Models/ChristmasTree.yml")).setSize(1, 1, 2, CenterType.RIGHT).setEditorProject(false);
new Project("Table", this, getResource("Models/Table.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SchoolChair", this, getResource("Models/SchoolChair.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("SchoolTable", this, getResource("Models/SchoolTable.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("BlackBoard", this, getResource("Models/BlackBoard.yml")).setSize(1, 2, 3, CenterType.RIGHT).setEditorProject(false);
new Project("Barrels", this, getResource("Models/Barrels.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("WaxCandle", this, getResource("Models/WaxCandle.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Lantern", this, getResource("Models/Lantern.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Mailbox", this, getResource("Models/Mailbox.yml")).setSize(1, 2, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Fence", this, getResource("Models/Fence.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Trunk", this, getResource("Models/Trunk.yml")).setSize(1, 1, 4, CenterType.RIGHT).setEditorProject(false);
new Project("Sunshade", this, getResource("Models/Sunshade.yml")).setSize(1, 3, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Hammock", this, getResource("Models/Hammock.yml")).setSize(1, 2, 7, CenterType.RIGHT).setEditorProject(false);
new Project("Crossbow", this, getResource("Models/Crossbow.yml")).setSize(1, 1, 1, CenterType.RIGHT).setEditorProject(false);
new Project("Tent1", this,getResource("Models/Tent1.yml")).setSize(4, 3, 5, CenterType.RIGHT).setEditorProject(false);
new Project("GraveStone", this,getResource("Models/GraveStone.yml")).setSize(1, 2, 3, CenterType.CENTER).setEditorProject(false);
addDefault("fence", "whiteList", "config.yml");
addDefault("bearTrap", "damage", "damage.yml");
addDefault("catapult", "range", "range.yml");
@ -176,7 +175,8 @@ public class main extends JavaPlugin implements Listener{
public void loadModels(){
for(ObjectID id : FurnitureLib.getInstance().getFurnitureManager().getObjectList()){
if(id==null) continue;
if(id.getProjectOBJ() == null) return;
if(id.getProjectOBJ() == null) continue;
if(id.getSQLAction().equals(SQLAction.REMOVE)) continue;
switch (id.getProjectOBJ().getName()) {
case "Catapult":new Catapult(id);break;
case "Barrels": new barrels(id);break;
@ -184,6 +184,11 @@ public class main extends JavaPlugin implements Listener{
case "Lantern": new WaxCandle(id);break;
case "Fence": new fance(id);break;
case "Trunk": new Trunk(id);break;
case "Sunshade": new sunshade(id);break;
case "Hammock": new hammock(id);break;
case "Crossbow": new Crossbow(id);break;
case "Tent1": new tent_1(id);break;
case "GraveStone": new graveStone(id);break;
default:break;
}
}
@ -193,6 +198,7 @@ public class main extends JavaPlugin implements Listener{
public void onFurnitureLateSpawn(FurnitureLateSpawnEvent event){
if(event.getProject()==null) return;
if(event.getProject().getName()==null) return;
if(event.getID().getSQLAction().equals(SQLAction.REMOVE)) return;
switch (event.getProject().getName()) {
case "Catapult":new Catapult(event.getID());break;
case "Barrels": new barrels(event.getID());break;
@ -200,6 +206,11 @@ public class main extends JavaPlugin implements Listener{
case "Lantern": new WaxCandle(event.getID());break;
case "Fence": new fance(event.getID());break;
case "Trunk": new Trunk(event.getID());break;
case "Sunshade": new sunshade(event.getID());break;
case "Hammock": new hammock(event.getID());break;
case "Crossbow": new Crossbow(event.getID());break;
case "Tent1": new tent_1(event.getID());break;
case "GraveStone": new graveStone(event.getID());break;
default:break;
}
}

View File

@ -1,26 +1,39 @@
package de.Ste3et_C0st.Furniture.Objects.RPG;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
import org.bukkit.EntityEffect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.EulerAngle;
import org.bukkit.util.Vector;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.NBT.CraftItemStack;
import de.Ste3et_C0st.FurnitureLib.NBT.NBTTagCompound;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
@ -33,6 +46,7 @@ public class Catapult extends FurnitureHelper implements Listener{
private fArmorStand stand1;
private HashMap<Entity, Player> fallingSandList = new HashMap<Entity, Player>();
private List<EntityType> entityList = Arrays.asList(EntityType.PIG, EntityType.CREEPER, EntityType.COW);
public Catapult(ObjectID id) {
super(id);
@ -67,6 +81,23 @@ public class Catapult extends FurnitureHelper implements Listener{
}
}
@EventHandler
public void onFallingSand(EntityChangeBlockEvent e){
if(e.getEntity()==null) return;
if(e.getEntity() instanceof FallingBlock){
if(fallingSandList.containsKey(e.getEntity())){
Entity entity = e.getEntity();
Player p = fallingSandList.get(e.getEntity());
fallingSandList.remove(e.getEntity());
Block b = entity.getLocation().getBlock().getRelative(BlockFace.DOWN);
if(!FurnitureLib.getInstance().getPermManager().canBuild(p, b.getLocation())){
e.setCancelled(true);
e.getEntity().remove();
}
}
}
}
@EventHandler
public void FurnitureClickEvent(ProjectClickEvent e){
if(getObjID()==null) return;
@ -85,36 +116,10 @@ public class Catapult extends FurnitureHelper implements Listener{
tnt.setVelocity(v.multiply(1));
fallingSandList.put(tnt, e.getPlayer());
}else if(stack.getType().equals(Material.AIR)){
if(stand1!=null){
int x = -59;
String name = "#range:1";
switch (stand1.getName().substring(stand1.getName().length()-1, stand1.getName().length())) {
case "1":
name = "#range:2";
x -= 4;
break;
case "2":
name = "#range:3";
x -= 8;
break;
case "3":
name = "#range:4";
x -= 12;
break;
case "4":
name = "#range:5";
x -= 16;
break;
default: break;
}
stand1.setName(name);
EulerAngle angle = stand1.getLeftArmPose();
angle = getLutil().Radtodegress(angle);
angle = angle.setX(x);
stand1.setLeftArmPose(getLutil().degresstoRad(angle));
update();
}
setRange(e.getPlayer());
return;
}else{
if(stack.getType().isBlock()){
@SuppressWarnings("deprecation")
FallingBlock block = getWorld().spawnFallingBlock(loc, stack.getType().getId(), (byte) stack.getDurability());
if(block == null) return;
@ -123,11 +128,107 @@ public class Catapult extends FurnitureHelper implements Listener{
block.setDropItem(false);
block.setVelocity(v.multiply(1));
fallingSandList.put(block, e.getPlayer());
e.getPlayer().playSound(getLocation(), Sound.ENTITY_ARROW_SHOOT, 1, (float) getPitch());
}else if(stack.getType().equals(Material.MONSTER_EGG)){
try{
NBTTagCompound nbtTag = new CraftItemStack().getNBTTag(stack);
if(nbtTag.hasKey("tag")){
NBTTagCompound tag = nbtTag.getCompound("tag");
NBTTagCompound id = tag.getCompound("EntityTag");
String str = id.getString("id").replace("minecraft:", "");
@SuppressWarnings("deprecation")
EntityType type = EntityType.fromName(str);
if(!entityList.contains(type)){setRange(e.getPlayer());return;}
Vector v= getLaunchVector(getBlockFace());
Entity entity = getWorld().spawnEntity(loc, type);
entity.setVelocity(v);
LivingEntity entiLivingEntity = (LivingEntity) entity;
entiLivingEntity.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 4), false);
if(type.equals(EntityType.CREEPER)){
if(randInt(0, 25)==7){
Creeper creeper = (Creeper) entity;
creeper.setPowered(true);
}
}else if(type.equals(EntityType.SHEEP)){
Sheep mob = (Sheep) entity;
int i = randInt(0, DyeColor.values().length);
mob.setColor(DyeColor.values()[i]);
if(randInt(0, 25)==7){
mob.setCustomName("jeb_");
mob.setCustomNameVisible(false);
}
}
}
e.getPlayer().playSound(getLocation(), Sound.ENTITY_ARROW_SHOOT, 1, (float) getPitch());
return;
}catch(Exception ex){
ex.printStackTrace();
}
}else{
setRange(e.getPlayer());
return;
}
}
consumeItem(e.getPlayer());
}
public void setRange(Player p){
if(stand1!=null){
int x = -59;
String name = "#range:1";
switch (stand1.getName().substring(stand1.getName().length()-1, stand1.getName().length())) {
case "1":
name = "#range:2";
x -= 4;
break;
case "2":
name = "#range:3";
x -= 8;
break;
case "3":
name = "#range:4";
x -= 12;
break;
case "4":
name = "#range:5";
x -= 16;
break;
default: break;
}
stand1.setName(name);
EulerAngle angle = stand1.getLeftArmPose();
angle = getLutil().Radtodegress(angle);
angle = angle.setX(x);
stand1.setLeftArmPose(getLutil().degresstoRad(angle));
update();
p.playSound(getLocation(), Sound.UI_BUTTON_CLICK, 1, (float) getPitch());
}
}
public static int randInt(int min, int max) {
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
public double getPitch(){
String str = "#range:1";
if(this.stand1!=null){str = stand1.getName().toLowerCase();}
str = str.replace("#range:", "");
if(str.equalsIgnoreCase("1")){
return .1;
}else if(str.equalsIgnoreCase("2")){
return .4;
}else if(str.equalsIgnoreCase("3")){
return .6;
}else if(str.equalsIgnoreCase("4")){
return .7;
}else if(str.equalsIgnoreCase("5")){
return .8;
}
return .1;
}
public Vector getLaunchVector(BlockFace face){
String str = "#range:1";
if(this.stand1!=null){str = stand1.getName().toLowerCase();}

View File

@ -1,130 +1,38 @@
package de.Ste3et_C0st.Furniture.Objects.RPG;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.SpectralArrow;
import org.bukkit.entity.TippedArrow;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
import org.bukkit.util.Vector;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockClickEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
public class Crossbow extends Furniture implements Listener {
public class Crossbow extends FurnitureHelper implements Listener {
public Crossbow(ObjectID id){
super(id);
setBlock();
if(isFinish()){
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
}
spawn(id.getStartLocation());
}
private void setBlock(){
Block b = getLocation().getBlock();
if(b.getType()==null||!b.getType().equals(Material.STEP)){
b.setType(Material.STEP);
}
getObjID().addBlock(Arrays.asList(b));
}
@Override
public void spawn(Location paramLocation) {
List<fArmorStand> asList = new ArrayList<fArmorStand>();
float yaw = 90;
for(int i = 0; i<4;i++){
Location loc = getLutil().getRelativ(getCenter().add(0, -1.7, 0), getLutil().yawToFace(yaw), .34, .4);
loc.setYaw(yaw+45);
fArmorStand stand = spawnArmorStand(loc);
stand.setItemInMainHand(new ItemStack(Material.STICK));
stand.setMarker(false);
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(90,270,135)));
asList.add(stand);
yaw+=90;
}
fArmorStand stand = spawnArmorStand(getCenter().add(0, -0.7, 0));
stand.setHelmet(new ItemStack(Material.LOG));
stand.setSmall(true);
asList.add(stand);
Location loc = getRelative(getCenter().add(0, -.74, 0), getBlockFace(), -.6, .48);
loc.setYaw(getYaw()-90);
stand = spawnArmorStand(loc);
stand.setItemInMainHand(new ItemStack(Material.STICK));
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(80,0,90)));
stand.setMarker(false);
asList.add(stand);
loc = getRelative(getCenter().add(0, -.62, 0),getBlockFace(), -.4,.07);
loc.setYaw(getYaw()-90);
stand = spawnArmorStand(loc);
stand.setItemInMainHand(new ItemStack(Material.BOW));
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(0,10,90)));
stand.setMarker(false);
asList.add(stand);
loc = getRelative(getCenter().add(0, -.08, 0), getBlockFace(), -.1, .25);
loc.setYaw(getYaw()-90);
stand = spawnArmorStand(loc);
stand.setName("#ARROW#");
stand.setRightArmPose(getLutil().degresstoRad(new EulerAngle(0,135,0)));
stand.setMarker(false);
asList.add(stand);
for(fArmorStand asp : asList){
asp.setInvisible(true);
asp.setBasePlate(false);
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
}
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())) return;
if(!e.canBuild()){return;}
e.remove();
delete();
Bukkit.getPluginManager().registerEvents(this, main.instance);
}
@EventHandler
public void onFurnitureBreak(FurnitureBlockBreakEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())) return;
if(!e.canBuild()){return;}
e.remove();
delete();
}
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e) {
public void onFurnitureClick(ProjectClickEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())) return;
@ -132,89 +40,65 @@ public class Crossbow extends Furniture implements Listener {
fEntity stand = getArmorStand();
if(stand==null){return;}
ItemStack is = e.getPlayer().getInventory().getItemInMainHand();
if(!hasArrow()||(is!=null&&is.getType()!=null&&is.getType().equals(Material.ARROW))){
if(e.getPlayer().getInventory().getItemInMainHand()==null){return;}
if(e.getPlayer().getInventory().getItemInMainHand().getType()==null){return;}
if(!e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.ARROW)){return;}
addArmor(is, stand);
}else{
spawnArrow();
removeArrow(stand);
if(is!=null&& (is.getType().equals(Material.ARROW) || is.getType().equals(Material.SPECTRAL_ARROW) || is.getType().equals(Material.TIPPED_ARROW)) ){
if(!hasArrow()){
fEntity entity = getArmorStand();
entity.setItemInMainHand(is.clone());
update();
consumeItem(e.getPlayer());
return;
}
}
if(hasArrow()){
spawnArrow(getArrow().getType(), e.getPlayer());
}
}
@EventHandler
public void onFurnitureClick(FurnitureBlockClickEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())) return;
if(!e.canBuild()){return;}
fEntity stand = getArmorStand();
if(stand==null){return;}
ItemStack is = e.getPlayer().getInventory().getItemInMainHand();
if(!hasArrow()||(is!=null&&is.getType()!=null&&is.getType().equals(Material.ARROW))){
if(e.getPlayer().getInventory().getItemInMainHand()==null){return;}
if(e.getPlayer().getInventory().getItemInMainHand().getType()==null){return;}
if(!e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.ARROW)){return;}
addArmor(is, stand);
}else{
spawnArrow();
removeArrow(stand);
}
}
private void spawnArrow(){
private void spawnArrow(Material mat, Player p){
Location loc = getRelative(getCenter(), getBlockFace(), 0,18);
loc.setYaw(getYaw());
Vector v=null;
switch (getBlockFace()) {
case NORTH:v= new Vector(0, 0.5, 1.2);break;
case SOUTH:v= new Vector(0, 0.5, -1.2);break;
case EAST: v= new Vector(-1.2, 0.5, 0);break;
case WEST: v= new Vector(1.2, 0.5, 0);break;
default:break;
}
Vector v= getLaunchVector(getBlockFace());
if(v == null) return;
getWorld().playSound(getLocation(), Sound.ENTITY_ARROW_SHOOT, 1, 1);
Location start = getRelative(getCenter(), getBlockFace(), 0,0);
start.setYaw(getYaw());
start = start.add(0, 1.8, 0);
Arrow a = getWorld().spawnArrow(start, v.multiply(2), 2F, 3F);
a.setCritical(true);
}
public static Set<Entity> getEntitiesInChunks(Location l, int chunkRadius) {
Block b = l.getBlock();
Set<Entity> entities = new HashSet<Entity>();
for (int x = -16 * chunkRadius; x <= 16 * chunkRadius; x += 16) {
for (int z = -16 * chunkRadius; z <= 16 * chunkRadius; z += 16) {
for (Entity e : b.getRelative(x, 0, z).getChunk().getEntities()) {
entities.add(e);
}
}
}
return entities;
}
private void removeArrow(fEntity stand){
ItemStack is = stand.getItemInMainHand();
if(is.getAmount()-1<=0){
stand.setItemInMainHand(new ItemStack(Material.AIR));
update();
return;
Arrow a = null;
if(mat.equals(Material.ARROW)){
a = (Arrow) getWorld().spawnEntity(start, EntityType.ARROW);
}else if(mat.equals(Material.SPECTRAL_ARROW)){
a = (SpectralArrow) getWorld().spawnEntity(start, EntityType.SPECTRAL_ARROW);
}else if(mat.equals(Material.TIPPED_ARROW)){
a = (TippedArrow) getWorld().spawnEntity(start, EntityType.TIPPED_ARROW);
}
is.setAmount(is.getAmount()-1);
stand.setItemInMainHand(is);
a.setCritical(true);
a.setVelocity(v);
a.setShooter(p);
fEntity entity = getArmorStand();
entity.setItemInMainHand(null);
update();
}
private void addArmor(ItemStack is, fEntity stand){
if(getArrow()!=null){is.setAmount(getArrow().getAmount());}
stand.setItemInMainHand(is);
update();
public Vector getLaunchVector(BlockFace face){
int j = random(75, 45), l =random(150, 80);
double k = ((double) j / 100), h = ((double) l / 100);
Vector v = new Vector(0, k, h);
switch (face) {
case SOUTH:v= new Vector(-v.getY(), v.getY(), -v.getZ());break;
case EAST: v= new Vector(-v.getZ(), v.getY(), -v.getY());break;
case WEST: v= new Vector(v.getZ(), v.getY(), v.getY());break;
default:break;
}
return v;
}
public int random(int max, int min){
Random r = new Random();
int randInt = r.nextInt(max-min) + min;
return randInt;
}
private fEntity getArmorStand(){
for(fEntity stand : getfAsList()){

View File

@ -1,52 +1,37 @@
package de.Ste3et_C0st.Furniture.Objects.garden;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Utilitis.LocationUtil;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
public class graveStone extends Furniture implements Listener{
public graveStone(ObjectID id){
super(id);
if(isFinish()){
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
setBlock();
return;
}
spawn(id.getStartLocation());
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
setBlock();
}
public class graveStone extends FurnitureHelper implements Listener{
private Location signLoc;
private Block sign;
private String[] lines = new String[4];
Location signLoc;
Block sign;
String[] lines = new String[4];
public graveStone(ObjectID id) {
super(id);
setBlock();
Bukkit.getPluginManager().registerEvents(this, main.instance);
}
@SuppressWarnings("deprecation")
private void setBlock(){
@ -74,94 +59,14 @@ public class graveStone extends Furniture implements Listener{
getObjID().addBlock(Arrays.asList(this.sign));
}
public void spawn(Location location){
List<fArmorStand> aspList = new ArrayList<fArmorStand>();
if(getBlockFace().equals(BlockFace.WEST)){location = getLutil().getRelativ(location, getBlockFace(), .0, -1.02);}
if(getBlockFace().equals(BlockFace.SOUTH)){location = getLutil().getRelativ(location, getBlockFace(), -1.0, -1.02);}
if(getBlockFace().equals(BlockFace.EAST)){location = getLutil().getRelativ(location, getBlockFace(), -1.0, .0);}
Location center = getLutil().getRelativ(location, getBlockFace(), .18D, .955D);
center.add(0,-.8,0);
center.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()) + 90);
Location kreutz1 = getLutil().getRelativ(center, getBlockFace(), -.55, .0);
kreutz1.add(0, 1.5, 0);
kreutz1.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()) + 90);
Location kreutz2 = getLutil().getRelativ(center, getBlockFace(), -.23, -1.27);
kreutz2.add(0, 1.6, 0);
kreutz2.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
Location loc = center;
for(int i = 0; i<=2;i++){
Location l = getLutil().getRelativ(loc, getBlockFace(), .0, -.44*i);
l.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()) + 90);
fArmorStand as = getManager().createArmorStand(getObjID(), l);
as.getInventory().setHelmet(new ItemStack(Material.COBBLESTONE));
as.setSmall(true);
as.setPose(getLutil().degresstoRad(new EulerAngle(0, 0, 90)), BodyPart.HEAD);
aspList.add(as);
}
Double l = .3;
for(int i = 0;i<=2;i++){
setRow(center, .38, l, -.15,2,getLutil().degresstoRad(new EulerAngle(90, 0, 0)), aspList);
l+=.35;
}
fArmorStand as = getManager().createArmorStand(getObjID(), kreutz1.add(0, -.15, 0));
as.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
as.setPose(new EulerAngle(1.38,.0,.0), BodyPart.RIGHT_ARM);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), kreutz2.add(0, -.15, 0));
as.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
as.setPose(new EulerAngle(1.38,1.57,1.57), BodyPart.RIGHT_ARM);
aspList.add(as);
for(fArmorStand asp : aspList){
asp.setInvisible(true);
asp.setBasePlate(false);
}
send();
}
@EventHandler(priority=EventPriority.LOW)
public void onFurnitureBreak(FurnitureBreakEvent e){
@EventHandler
private void onBlockBreak(ProjectBreakEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().getPlugin().equalsIgnoreCase(main.getInstance().getName())){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
e.remove();
sign.setType(Material.AIR);
sign = null;
delete();
removeSign();
}
@EventHandler
private void onPhysiks(BlockPhysicsEvent e){
if(getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if (sign==null) return;
if (e.getBlock() == null) return;
if (!e.getBlock().equals(sign)) return;
e.setCancelled(true);
}
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().getPlugin().equalsIgnoreCase(getPlugin().getName())){return;}
Player p = e.getPlayer();
if(!e.getID().equals(getObjID())) return;
if(!e.canBuild()){return;}
ItemStack is = p.getInventory().getItemInMainHand();
if (is == null) return;
if (!is.getType().equals(Material.WRITTEN_BOOK)) return;
readFromBook(is);
if(sign!=null){
sign.setType(Material.AIR);
}
}
public void resetSign(){
@ -174,6 +79,8 @@ public class graveStone extends Furniture implements Listener{
});
}
public Location getSignLocation(){return this.signLoc;}
public void removeSign(){
if(sign!=null){
sign.setType(Material.AIR);
@ -239,19 +146,4 @@ public class graveStone extends Furniture implements Listener{
sign.update(true, false);
lines[line] = text;
}
public void setRow(Location loc, double x,double y, double z, int replay, EulerAngle angle, List<fArmorStand> list){
Double d = .0;
for(int i = 0; i<=replay;i++){
Location loc1= getLutil().getRelativ(loc, getBlockFace(), z, d-.825);
loc1.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc1.add(0, y,0);
fArmorStand packet = getManager().createArmorStand(getObjID(), loc1);
packet.getInventory().setHelmet(new ItemStack(Material.STONE_PLATE));
packet.setSmall(true);
packet.setPose(angle, BodyPart.HEAD);
list.add(packet);
d+=x;
}
}
}

View File

@ -1,223 +0,0 @@
package de.Ste3et_C0st.Furniture.Objects.garden;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.EventType;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
public class mailBox extends Furniture implements Listener {
List<Block> blockList = new ArrayList<Block>();
UUID uuid;
public mailBox(ObjectID id){
super(id);
setBlock();
if(isFinish()){
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
}
spawn(id.getStartLocation());
}
public void spawn(Location location){
List<fArmorStand> aspList = new ArrayList<fArmorStand>();
Location middle = getLutil().getCenter(getLocation());
middle.add(0, -1.4, 0);
switch (getBlockFace()) {
case NORTH:middle = getLutil().getRelativ(middle, getBlockFace(), 0D, 0.03D);break;
case EAST:middle = getLutil().getRelativ(middle, getBlockFace(), 0D, 0.03D);break;
default:break;
}
fArmorStand as = getManager().createArmorStand(getObjID(), middle);
as.getInventory().setHelmet(new ItemStack(Material.STONE));
as.setSmall(true);
aspList.add(as);
for(int i = 0; i<=1;i++){
Location loc = getLutil().getRelativ(middle.clone(), getBlockFace(), .47, .38).add(0, .88*i, 0);
fArmorStand packet = getManager().createArmorStand(getObjID(), loc);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(new EulerAngle(1.39, 0, 0), BodyPart.RIGHT_ARM);
aspList.add(packet);
}
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.25, 0), getBlockFace(), -.21, -.0D));
as.getInventory().setHelmet(new ItemStack(Material.SMOOTH_BRICK, 1, (short) 0));
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.25, 0), getBlockFace(), .21, 0D));
as.getInventory().setHelmet(new ItemStack(Material.SMOOTH_BRICK, 1, (short) 0));
as.setSmall(true);
aspList.add(as);
for(int i = 0; i<=4;i++){
Location loc = getLutil().getRelativ(middle.clone().add(0, 1.898, 0), getBlockFace(), -.44+.165*i, .462D);
fArmorStand packet = getManager().createArmorStand(getObjID(), loc);
packet.setSmall(true);
//x z y
//-.7 .73 -.3
packet.setPose(new EulerAngle(-.716D, .71D, -.32D), BodyPart.RIGHT_ARM);
packet.getInventory().setItemInMainHand(new ItemStack(Material.SMOOTH_STAIRS));
aspList.add(packet);
loc = getLutil().getRelativ(middle.clone().add(0, 1.898, 0), getBlockFace().getOppositeFace(), -.44+.165*i, .462D);
packet = getManager().createArmorStand(getObjID(), loc);
packet.setSmall(true);
//x z y
//-.7 .73 -.3
packet.setPose(new EulerAngle(-.716D, .71D, -.32D), BodyPart.RIGHT_ARM);
packet.getInventory().setItemInMainHand(new ItemStack(Material.SMOOTH_STAIRS));
aspList.add(packet);
loc = getLutil().getRelativ(middle.clone().add(0, 1.898, 0), getBlockFace().getOppositeFace(), -.44+.165*i, .362D);
packet = getManager().createArmorStand(getObjID(), loc);
packet.setSmall(true);
//x z y
//-.7 .73 -.3
packet.setPose(new EulerAngle(-.716D, .71D, -.32D), BodyPart.RIGHT_ARM);
packet.getInventory().setItemInMainHand(new ItemStack(Material.SMOOTH_BRICK, 1 ,(short) 0));
aspList.add(packet);
}
BlockFace face = getBlockFace();
face = getLutil().yawToFace(getLutil().FaceToYaw(getBlockFace()) + 90);
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.5, 0), face, -.04, -.55D));
as.getInventory().setHelmet(new ItemStack(Material.REDSTONE_TORCH_ON, 1, (short) 0));
as.setPose(getLutil().degresstoRad(new EulerAngle(0, 0, 90)), BodyPart.HEAD);
as.setName("#ELEMENT#");
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.10, 0), face.getOppositeFace(), -.0, .31D));
as.getInventory().setItemInMainHand(new ItemStack(Material.PAPER, 1, (short) 0));
as.setPose(getLutil().degresstoRad(new EulerAngle(0, -120, -90)), BodyPart.RIGHT_ARM);
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.40, 0), face.getOppositeFace(), -.15, .33D));
as.getInventory().setItemInMainHand(new ItemStack(Material.WOOD_BUTTON, 1, (short) 0));
as.setPose(getLutil().degresstoRad(new EulerAngle(-15,-67, -90)), BodyPart.RIGHT_ARM);
as.setSmall(true);
aspList.add(as);
as = getManager().createArmorStand(getObjID(), getLutil().getRelativ(middle.clone().add(0, 1.2, 0), getBlockFace(), .2, .07D));
as.getInventory().setItemInMainHand(new ItemStack(Material.EMPTY_MAP, 1, (short) 0));
as.setPose(getLutil().degresstoRad(new EulerAngle(0, -120, -90)), BodyPart.RIGHT_ARM);
as.setSmall(true);
aspList.add(as);
for(fArmorStand asp : aspList){
asp.setInvisible(true);
asp.setBasePlate(false);
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
}
public void setBlock(){
for(int i = 0; i<=1;i++){
Block b = getLocation().clone().add(0, i, 0).getBlock();
b.setType(Material.BARRIER);
blockList.add(b);
}
getObjID().addBlock(blockList);
}
/*public void addMailbox(Player p){
if(Bukkit.getPluginManager().isPluginEnabled("PostalService")){
try {
PostalService.getMailboxManager().addMailboxAtLoc(blockList.get(1).getLocation(), p);
this.uuid = p.getUniqueId();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void setSendet(Boolean b){
for(fArmorStand packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet!=null&&packet.getName().equalsIgnoreCase("#ELEMENT#")){
if(b){
packet.setPose(getLutil().degresstoRad(new EulerAngle(0, 0, 0)), BodyPart.HEAD);
getManager().updateFurniture(getObjID());
return;
}
packet.setPose(getLutil().degresstoRad(new EulerAngle(0, 0, 90)), BodyPart.HEAD);
getManager().updateFurniture(getObjID());
return;
}
}
}
@EventHandler
private void onMove(PlayerSendMailEvent e){
if(!Bukkit.getPluginManager().isPluginEnabled("PostalService")){return;}
UUID p1 = this.uuid;
UUID p2 = e.getRecipient().getUUID();
if(!p1.equals(p2)){return;}
setSendet(true);
}*/
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())) return;
if(!e.canBuild()){return;}
for(Block b : blockList){
b.setType(Material.AIR);
}
blockList.clear();
e.remove();
delete();
}
public void onFurnitureClick(FurnitureClickEvent e){}
@EventHandler
private void onInteract(PlayerInteractEvent e){
if(getObjID()==null){return;}
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(e.isCancelled()){return;}
if(e.getAction()==null){return;}
if(e.getClickedBlock()==null){return;}
if(!blockList.contains(e.getClickedBlock())){return;}
if(!getLib().canBuild(e.getPlayer(), getObjID(), EventType.INTERACT)){return;}
if(e.getAction().equals(Action.LEFT_CLICK_BLOCK)){
e.setCancelled(true);
for(Block b : blockList){
b.setType(Material.AIR);
}
blockList.clear();
this.getObjID().remove(e.getPlayer());
delete();
}
}
}

View File

@ -1,299 +1,30 @@
package de.Ste3et_C0st.Furniture.Objects.garden;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BannerMeta;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockClickEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectBreakEvent;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.EventType;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
public class sunshade extends Furniture implements Listener{
List<Material> matList = Arrays.asList(
Material.SPRUCE_FENCE,
Material.BIRCH_FENCE,
Material.JUNGLE_FENCE,
Material.DARK_OAK_FENCE,
Material.ACACIA_FENCE,
Material.COBBLE_WALL,
Material.NETHER_FENCE);
Material m;
public class sunshade extends FurnitureHelper implements Listener{
public boolean isRunning = false;
Integer timer;
Block block;
public sunshade(ObjectID id){
public sunshade(ObjectID id) {
super(id);
if(isFinish()){
setblock();
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
}
setblock();
spawn(id.getStartLocation());
}
private void setblock(){
Location loc = getLocation().clone();
loc.add(0, 2, 0);
block = loc.getBlock();
block.setType(Material.BARRIER);
getObjID().addBlock(Arrays.asList(block));
}
public void spawn(Location location){
Location center = getLutil().getCenter(location).clone();
List<fArmorStand> asList = new ArrayList<fArmorStand>();
center.add(0, -1.1, 0);
for(int i = 0; i<=2;i++){
Location loc = getLutil().getRelativ(center.clone(), getBlockFace(), .47, .38).add(0, .88*i, 0);
fArmorStand packet = getManager().createArmorStand(getObjID(), loc);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(new EulerAngle(1.39, 0, 0), BodyPart.RIGHT_ARM);
asList.add(packet);
}
center.add(0, 1.758, 0);
fArmorStand aspacket = getManager().createArmorStand(getObjID(), center);
aspacket.getInventory().setHelmet(new ItemStack(Material.CARPET));
aspacket.setName("#TOP#");
asList.add(aspacket);
Location loc = center.clone();
loc.add(0, 0.3, 0);
ItemStack is = new ItemStack(Material.BANNER);
BannerMeta banner = (BannerMeta) is.getItemMeta();
banner.setBaseColor(DyeColor.LIME);
banner.addPattern(new Pattern(DyeColor.YELLOW, PatternType.TRIANGLE_BOTTOM));
banner.addPattern(new Pattern(DyeColor.WHITE, PatternType.TRIANGLE_BOTTOM));
is.setItemMeta(banner);
for(int i = 0; i<=17; i++){
loc.setYaw(i*21);
fArmorStand packet = getManager().createArmorStand(getObjID(), loc.clone());
packet.getInventory().setHelmet(is);
packet.setPose(new EulerAngle(-3.054, 0, 0), BodyPart.HEAD);
packet.setName("#ELEMENT#" + i);
asList.add(packet);
}
for(fArmorStand packet : asList){
packet.setInvisible(true);
packet.setBasePlate(false);
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
}
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
Player p = e.getPlayer();
ItemStack is = p.getInventory().getItemInMainHand();
if(!getLib().canBuild(e.getPlayer(), getObjID(), EventType.INTERACT)){return;}
if(is.getType().equals(Material.BANNER)){
if(isRunning()){return;}
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.BANNER)){
packet.getInventory().setHelmet(is);
}else if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.CARPET)){
ItemStack item = new ItemStack(Material.CARPET);
item.setDurability(getLutil().getFromDey((short) is.getDurability()));
packet.getInventory().setHelmet(item);
}
}
removeItem(p);
update();
}else{
if(isRunning()){return;}
if(!isOpen()){
open();
}else{
close();
}
}
}
private boolean isRunning(){
if(timer!=null)return true;
return false;
}
@EventHandler
public void onBlockBreak(FurnitureBlockBreakEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
stopTimer();
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getName().equalsIgnoreCase("#ITEM#")){
if(packet.getInventory().getItemInMainHand()!=null&&!packet.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
ItemStack is = packet.getInventory().getItemInMainHand();
getWorld().dropItem(getLocation(), is);
}
}
}
getObjID().remove(e.getPlayer());
delete();
}
@EventHandler
public void onBlockBreak(FurnitureBlockClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
Player p = e.getPlayer();
ItemStack is = p.getInventory().getItemInMainHand();
if(is.getType().equals(Material.BANNER)){
if(isRunning()){return;}
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.BANNER)){
packet.getInventory().setHelmet(is);
}else if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.CARPET)){
ItemStack item = new ItemStack(Material.CARPET);
item.setDurability(getLutil().getFromDey((short) is.getDurability()));
packet.getInventory().setHelmet(item);
}
}
removeItem(p);
update();
}else{
if(isRunning()){return;}
if(!isOpen()){
open();
}else{
close();
}
}
}
public void removeItem(Player p){
Boolean useGameMode = FurnitureLib.getInstance().useGamemode();
if(useGameMode&&p.getGameMode().equals(GameMode.CREATIVE)){return;}
Integer slot = p.getInventory().getHeldItemSlot();
ItemStack itemStack = p.getInventory().getItemInMainHand().clone();
itemStack.setAmount(itemStack.getAmount()-1);
p.getInventory().setItem(slot, itemStack);
p.updateInventory();
}
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
stopTimer();
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getName().equalsIgnoreCase("#ITEM#")){
if(packet.getInventory().getItemInMainHand()!=null&&!packet.getInventory().getItemInMainHand().getType().equals(Material.AIR)){
ItemStack is = packet.getInventory().getItemInMainHand();
getWorld().dropItem(getLocation(), is);
}
}
}
e.remove();
this.block.setType(Material.AIR);
this.block = null;
getManager().remove(getObjID());
delete();
}
private void close(){
timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(getPlugin(), new Runnable() {
@Override
public void run() {
try{
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getName().startsWith("#ELEMENT#")){
if(!isClose((fArmorStand) packet)){
Double x = ((fArmorStand) packet).getPose(BodyPart.HEAD).getX();
((fArmorStand) packet).setPose(new EulerAngle(x-.32, 0, 0), BodyPart.HEAD);
}else{
stopTimer();
return;
}
getManager().updateFurniture(getObjID());
}
}
}catch(Exception e){
stopTimer();reset();
}
}
}, 0, 10);
}
private void open(){
timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(getPlugin(), new Runnable() {
@Override
public void run() {
try{
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(packet.getName().startsWith("#ELEMENT#")){
if(!isOpen((fArmorStand) packet)){
Double x = ((fArmorStand) packet).getPose(BodyPart.HEAD).getX();
((fArmorStand) packet).setPose(new EulerAngle(x+.32, 0, 0), BodyPart.HEAD);
}else{
stopTimer();
return;
}
getManager().updateFurniture(getObjID());
}
}
}catch(Exception e){
stopTimer();reset();
}
}
}, 0, 10);
}
private void reset(){
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
if(!isOpen((fArmorStand) packet)){
((fArmorStand) packet).setPose(new EulerAngle(-3.054, 0, 0), BodyPart.HEAD);
}
}
update();
}
private boolean isClose(fArmorStand packet){
if(packet.getPose(BodyPart.HEAD).getX()> -3.054){
return false;
}return true;
Bukkit.getPluginManager().registerEvents(this, main.instance);
}
private boolean isOpen(fArmorStand packet){
@ -302,8 +33,97 @@ public class sunshade extends Furniture implements Listener{
}return true;
}
private boolean isClose(fArmorStand packet){
if(packet.getPose(BodyPart.HEAD).getX()> -3.054){
return false;
}return true;
}
@EventHandler
public void onClick(ProjectClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
Player p = e.getPlayer();
ItemStack is = p.getInventory().getItemInMainHand();
if(is.getType().equals(Material.BANNER)){
for(fEntity packet : getfAsList()){
if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.BANNER)){
packet.getInventory().setHelmet(is.clone());
}else if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.CARPET)){
ItemStack item = new ItemStack(Material.CARPET);
item.setDurability(getLutil().getFromDey((short) is.getDurability()));
packet.getInventory().setHelmet(item);
}
}
update();
consumeItem(p);
}else{
if(!isOpen()){
open();
}else{
close();
}
}
}
@EventHandler
public void onBreak(ProjectBreakEvent e){
if(e.getID() == null || getObjID() == null) return;
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
if(isRunning){
stopTimer();
}
}
private void open() {
if(isRunning) return;
this.isRunning = true;
timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(getPlugin(), new Runnable() {
@Override
public void run() {
for(fEntity packet : getfAsList()){
if(packet.getName().startsWith("#ELEMENT#")){
if(!isOpen((fArmorStand) packet)){
Double x = ((fArmorStand) packet).getPose(BodyPart.HEAD).getX();
((fArmorStand) packet).setPose(new EulerAngle(x+.02, 0, 0), BodyPart.HEAD);
}else{
stopTimer();
return;
}
}
}
update();
}
}, 0, 1);
}
private void close() {
if(isRunning) return;
this.isRunning = true;
timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(getPlugin(), new Runnable() {
@Override
public void run() {
for(fEntity packet : getfAsList()){
if(packet.getName().startsWith("#ELEMENT#")){
if(!isClose((fArmorStand) packet)){
Double x = ((fArmorStand) packet).getPose(BodyPart.HEAD).getX();
((fArmorStand) packet).setPose(new EulerAngle(x-.02, 0, 0), BodyPart.HEAD);
}else{
stopTimer();
return;
}
}
}
update();
}
}, 0, 1);
}
private boolean isOpen(){
for(fEntity packet : getManager().getfArmorStandByObjectID(getObjID())){
for(fEntity packet : getfAsList()){
if(packet.getName().startsWith("#ELEMENT#")){
if(((fArmorStand) packet).getPose(BodyPart.HEAD).getX()< -1.85){
return false;
@ -317,6 +137,7 @@ public class sunshade extends Furniture implements Listener{
if(timer!=null){
Bukkit.getScheduler().cancelTask(timer);
timer=null;
isRunning = false;
}
}
}
}

View File

@ -238,7 +238,11 @@ public class largeTable extends Furniture implements Listener{
}
ItemStack IS = is.clone();
IS.setAmount(1);
if(IS.getAmount()<=0){
IS.setAmount(0);
}else{
IS.setAmount(1);
}
as.getInventory().setItemInMainHand(IS);
update();

View File

@ -1,66 +1,61 @@
package de.Ste3et_C0st.Furniture.Objects.outdoor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBlockClickEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureLib;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.EventType;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
import de.Ste3et_C0st.FurnitureLib.main.entity.fEntity;
public class hammock extends Furniture implements Listener{
public class hammock extends FurnitureHelper implements Listener{
public hammock(ObjectID id) {
super(id);
setBlock();
if(isFinish()){
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
}
@EventHandler(priority = EventPriority.LOW)
public void onClick(ProjectClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
Player p = e.getPlayer();
ItemStack stack = p.getInventory().getItemInMainHand();
if(stack!=null){
if(isMaterial(stack.getType())){
if(stack.getType().equals(Material.BANNER)){
for(fEntity entity : getfAsList()){
if(entity.getHelmet()!=null){
if(entity.getHelmet().getType().equals(Material.BANNER)){
entity.setHelmet(stack.clone());
}
}
}
e.setCancelled(true);
consumeItem(p);
update();
}else{
for(fEntity entity : getfAsList()){
if(entity.getHelmet()!=null){
if(entity.getHelmet().getType().toString().toLowerCase().startsWith("log")){
entity.setHelmet(stack.clone());
}
}
}
e.setCancelled(true);
consumeItem(p);
update();
}
}
}
spawn(id.getStartLocation());
}
private void setBlock(){
BlockFace Right = getLutil().yawToFace(getLutil().FaceToYaw(getBlockFace())+90);
Location center2 = getLutil().getRelativ(getLocation(), Right, 6D, 0D);
Block b1 = getLocation().getBlock();
Block b2 = getLocation().getBlock().getRelative(BlockFace.UP);
Block b3 = center2.getBlock();
Block b4 = center2.getBlock().getRelative(BlockFace.UP);
if(!isFence(b1.getType())) b1.setType(Material.FENCE);
if(!isFence(b2.getType())) b2.setType(Material.FENCE);
if(!isFence(b3.getType())) b3.setType(Material.FENCE);
if(!isFence(b4.getType())) b4.setType(Material.FENCE);
getObjID().addBlock(Arrays.asList(b1,b2,b3,b4));
}
private boolean isFence(Material m){
if(m==null){return false;}
return m.toString().toLowerCase().endsWith("fence");
}
private boolean isMaterial(Material m){
@ -75,229 +70,4 @@ public class hammock extends Furniture implements Listener{
return b;
}
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(e.getID() == null || getObjID() == null) return;
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
e.remove();
delete();
}
@EventHandler
public void onFurnitureBreak(FurnitureBlockBreakEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
e.remove();
delete();
}
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
List<fEntity> aspList = getManager().getfArmorStandByObjectID(getObjID());
Player p = e.getPlayer();
ItemStack stack = p.getInventory().getItemInMainHand();
if(stack!=null){
if(isMaterial(stack.getType())){
if(setColor(p,stack, getLib().canBuild(e.getPlayer(), getObjID(), EventType.INTERACT), aspList)){return;}
}
}
for(fEntity packet : aspList){
if(packet.getName().equalsIgnoreCase("#SITZ#")){
if(packet.getPassanger()==null){
packet.setPassanger(e.getPlayer());
return;
}
}
}
}
public void removeItem(Player p){
Boolean useGameMode = FurnitureLib.getInstance().useGamemode();
if(useGameMode&&p.getGameMode().equals(GameMode.CREATIVE)){return;}
Integer slot = p.getInventory().getHeldItemSlot();
ItemStack itemStack = p.getInventory().getItemInMainHand().clone();
itemStack.setAmount(itemStack.getAmount()-1);
p.getInventory().setItem(slot, itemStack);
p.updateInventory();
}
@EventHandler
public void onFurnitureClick(FurnitureBlockClickEvent e) {
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
List<fEntity> aspList = getManager().getfArmorStandByObjectID(getObjID());
Player p = e.getPlayer();
ItemStack stack = p.getInventory().getItemInMainHand();
if(stack!=null){
if(isMaterial(stack.getType())){
if(setColor(p,stack, e.canBuild(), aspList)){return;}
}
}
for(fEntity packet : aspList){
if(packet.getName().equalsIgnoreCase("#SITZ#")){
if(packet.getPassanger()==null){
packet.setPassanger(e.getPlayer());
return;
}
}
}
}
private boolean setColor(Player p,ItemStack stack, Boolean canbuild, List<fEntity> aspList){
if(!canbuild){return true;}
if(stack!=null){
switch (stack.getType()) {
case BANNER:
for(fEntity packet : aspList){
if(packet.getInventory().getHelmet()!=null&&packet.getInventory().getHelmet().getType().equals(Material.BANNER)){
packet.getInventory().setHelmet(stack);
}
}
removeItem(p);
getManager().updateFurniture(getObjID());
return true;
case LOG:
for(fEntity packet : aspList){
if(packet.getName().equalsIgnoreCase("#PILLAR#")){
packet.getInventory().setHelmet(stack);
}
}
setPillar(stack.getDurability());
removeItem(p);
getManager().updateFurniture(getObjID());
return true;
case LOG_2:
for(fEntity packet : aspList){
if(packet.getName().equalsIgnoreCase("#PILLAR#")){
packet.getInventory().setHelmet(stack);
}
}
setPillar(4 + stack.getDurability());
removeItem(p);
getManager().updateFurniture(getObjID());
return true;
default: break;
}
}
return false;
}
private void setPillar(int i){
Material m = null;
switch (i) {
case 0: m = Material.FENCE;break;
case 1: m = Material.SPRUCE_FENCE;break;
case 2: m = Material.BIRCH_FENCE;break;
case 3: m = Material.JUNGLE_FENCE;break;
case 4: m = Material.ACACIA_FENCE;break;
case 5: m = Material.DARK_OAK_FENCE;break;
}
if(m!=null){
for(Location b : getObjID().getBlockList()){
getWorld().getBlockAt(b).setType(m);
}
}
}
public void spawn(Location location) {
Location center1 = getLutil().getCenter(location);
center1 = center1.add(0, -1.9, 0);
BlockFace Right = getLutil().yawToFace(getLutil().FaceToYaw(getBlockFace())+90);
Location center2 = getLutil().getRelativ(center1, Right, 6D, 0D);
List<fArmorStand> aspList = new ArrayList<fArmorStand>();
fArmorStand packet = getManager().createArmorStand(getObjID(), center1);
packet.getInventory().setHelmet(new ItemStack(Material.LOG));
packet.setName("#PILLAR#");
aspList.add(packet);
packet = getManager().createArmorStand(getObjID(), center2);
packet.getInventory().setHelmet(new ItemStack(Material.LOG));
packet.setName("#PILLAR#");
aspList.add(packet);
Location middle = getLutil().getRelativ(center1, Right, 2.85D, 0D);
middle = middle.add(0, .75, 0);
packet = getManager().createArmorStand(getObjID(), middle);
packet.getInventory().setHelmet(new ItemStack(Material.BANNER, 1, (short) 0));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-69f,0f,0f)), BodyPart.HEAD);
aspList.add(packet);
Location middle2 = getLutil().getRelativ(middle, Right, 1.5D, 0D);
middle2 = middle2.add(0, .23, 0);
packet = getManager().createArmorStand(getObjID(), middle2);
packet.getInventory().setHelmet(new ItemStack(Material.BANNER, 1, (short) 0));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-90f,0f,0f)), BodyPart.HEAD);
aspList.add(packet);
Location sitz = getLutil().getRelativ(center1, Right, 3D, 0D).add(0, .6, 0);
sitz.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
packet = getManager().createArmorStand(getObjID(), sitz);
packet.setName("#SITZ#");
aspList.add(packet);
middle = getLutil().getRelativ(middle, Right, .3D, 0D);
middle.setYaw(middle.getYaw()+180);
packet = getManager().createArmorStand(getObjID(), middle);
packet.getInventory().setHelmet(new ItemStack(Material.BANNER, 1, (short) 0));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-69f,0f,0f)), BodyPart.HEAD);
aspList.add(packet);
Location stick = getLutil().getRelativ(center1, Right, 4.6d, .5d);
stick = stick.add(0, 1.7, 0);
stick.setYaw(getLutil().FaceToYaw(getBlockFace()));
packet = getManager().createArmorStand(getObjID(), stick);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-40f,110f,0f)), BodyPart.RIGHT_ARM);
aspList.add(packet);
stick = getLutil().getRelativ(center1, Right, 4.6d, -.335d);
stick = stick.add(0, 1.7, 0);
stick.setYaw(getLutil().FaceToYaw(getBlockFace()));
packet = getManager().createArmorStand(getObjID(), stick);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-40f,73f,0f)), BodyPart.RIGHT_ARM);
packet.setArms(true);
aspList.add(packet);
stick = getLutil().getRelativ(center1, Right.getOppositeFace(), -1.37d, -.335d);
stick = stick.add(0, 1.7, 0);
stick.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
packet = getManager().createArmorStand(getObjID(), stick);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-40f,73f,0f)), BodyPart.RIGHT_ARM);
packet.setArms(true);
aspList.add(packet);
stick = getLutil().getRelativ(center1, Right.getOppositeFace(), -1.37d, .5d);
stick = stick.add(0, 1.7, 0);
stick.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
packet = getManager().createArmorStand(getObjID(), stick);
packet.getInventory().setItemInMainHand(new ItemStack(Material.STICK));
packet.setPose(getLutil().degresstoRad(new EulerAngle(-40f,110f,0f)), BodyPart.RIGHT_ARM);
packet.setArms(true);
aspList.add(packet);
for(fArmorStand pack : aspList){
pack.setInvisible(true);
pack.setBasePlate(false);
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
}
}

View File

@ -1,264 +1,35 @@
package de.Ste3et_C0st.Furniture.Objects.outdoor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.EulerAngle;
import de.Ste3et_C0st.Furniture.Main.main;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureBreakEvent;
import de.Ste3et_C0st.FurnitureLib.Events.FurnitureClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.Furniture;
import de.Ste3et_C0st.FurnitureLib.ShematicLoader.Events.ProjectClickEvent;
import de.Ste3et_C0st.FurnitureLib.main.FurnitureHelper;
import de.Ste3et_C0st.FurnitureLib.main.ObjectID;
import de.Ste3et_C0st.FurnitureLib.main.Type.BodyPart;
import de.Ste3et_C0st.FurnitureLib.main.Type.ColorType;
import de.Ste3et_C0st.FurnitureLib.main.Type.EventType;
import de.Ste3et_C0st.FurnitureLib.main.Type.SQLAction;
import de.Ste3et_C0st.FurnitureLib.main.entity.fArmorStand;
public class tent_1 extends Furniture implements Listener{
public class tent_1 extends FurnitureHelper implements Listener{
Block block;
public tent_1(ObjectID id){
super(id);
Location loc = id.getStartLocation();
if(getBlockFace().equals(BlockFace.WEST)){loc=getLutil().getRelativ(loc, getBlockFace(), 1D, 0D);}
if(getBlockFace().equals(BlockFace.NORTH)){loc=getLutil().getRelativ(loc, getBlockFace(), 1D, 1D);}
if(getBlockFace().equals(BlockFace.EAST)){loc=getLutil().getRelativ(loc, getBlockFace(), 0D, 1D);}
if(id.isFinish()){
setblock();
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
return;
}
spawn(loc);
}
public void setblock(){
Location blockLocation = new Location(getWorld(), getLocation().getBlockX(), getLocation().getBlockY(), getLocation().getBlockZ());
if(getBlockFace().equals(BlockFace.SOUTH)){
this.block = blockLocation.getWorld().getBlockAt(getLutil().getRelativ(blockLocation, getBlockFace(), 2D, -2D));
this.block.setType(Material.WORKBENCH);
}else if(getBlockFace().equals(BlockFace.WEST)){
this.block = blockLocation.getWorld().getBlockAt(getLutil().getRelativ(blockLocation, getBlockFace(), 2D, -2D));
this.block.setType(Material.WORKBENCH);
}else if(getBlockFace().equals(BlockFace.NORTH)){
this.block = blockLocation.getWorld().getBlockAt(getLutil().getRelativ(blockLocation, getBlockFace(), 2D, -2D));
this.block.setType(Material.WORKBENCH);
}else if(getBlockFace().equals(BlockFace.EAST)){
this.block = blockLocation.getWorld().getBlockAt(getLutil().getRelativ(blockLocation, getBlockFace(), 2D, -2D));
this.block.setType(Material.WORKBENCH);
}
getObjID().addBlock(Arrays.asList(block));
}
public void spawn(Location loc){
List<fArmorStand> aspList = new ArrayList<fArmorStand>();
Location loc_1 = new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
Location loc_2 = new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
Location loc_3 = new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
Location karabine1 = getLutil().getRelativ(loc, getBlockFace(), -.5D, -.7D);
Location karabine2 = getLutil().getRelativ(loc, getBlockFace(), 2.5D, -.7D);
Location karabine3 = getLutil().getRelativ(loc, getBlockFace(), 2.5D, -4.8D);
Location karabine4 = getLutil().getRelativ(loc, getBlockFace(), -.5D, -4.8D);
karabine1.setYaw(getYaw()+90);
karabine2.setYaw(getYaw()+90);
karabine3.setYaw(getYaw()+90);
karabine4.setYaw(getYaw()+90);
Location saveLoc = getLutil().getRelativ(loc_1, getBlockFace(), -.55D, -0.6);
saveLoc.add(0,-1.25,0);
saveLoc.setYaw(getLutil().FaceToYaw(getBlockFace()) -90);
Location saveLoc2 = getLutil().getRelativ(loc_2, getBlockFace(), -4.27, -4.4);
saveLoc2.add(0,-1.25,0);
saveLoc2.setYaw(getLutil().FaceToYaw(getBlockFace()) -90);
Location saveLoc3 = getLutil().getRelativ(loc_3, getBlockFace(), -8D, -2.5D);
saveLoc3.add(0,.64,0);
saveLoc3.setYaw(getLutil().FaceToYaw(getBlockFace()) -90);
Double d = .0;
setblock();
double offsetY = .02;
for(int i = 0; i<=5;i++){
Location loc1= getLutil().getRelativ(saveLoc, getBlockFace(), d, 0D);
Location loc2= getLutil().getRelativ(saveLoc, getBlockFace(), d, -.48).add(0,.3,0);
Location loc3= getLutil().getRelativ(saveLoc, getBlockFace(), d, -.86).add(0,.81,0);
Location loc4= getLutil().getRelativ(saveLoc, getBlockFace(), d, -1.08).add(0,1.33,0);
Location loc5= getLutil().getRelativ(saveLoc, getBlockFace(), d, -1.38).add(0,1.86,0);
loc1.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc2.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc3.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc4.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc5.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc.add(loc1);
loc.add(loc2);
loc.add(loc3.subtract(0,offsetY,0));
loc.add(loc4.subtract(0,offsetY,0));
loc.add(loc5.subtract(0,offsetY,0));
fArmorStand asp = getManager().createArmorStand(getObjID(), loc1);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc2);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc3);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc4);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.7), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc5);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -.7), BodyPart.HEAD);
aspList.add(asp);
d+=.62;
}
for(int i = 0; i<=5;i++){
Location loc1= getLutil().getRelativ(saveLoc2, getBlockFace(), d, .02D);
Location loc2= getLutil().getRelativ(saveLoc2, getBlockFace(), d, .48).add(0,.3,0);
Location loc3= getLutil().getRelativ(saveLoc2, getBlockFace(), d, .86).add(0,.81,0);
Location loc4= getLutil().getRelativ(saveLoc2, getBlockFace(), d, 1.08).add(0,1.33,0);
Location loc5= getLutil().getRelativ(saveLoc2, getBlockFace(), d, 1.38).add(0,1.86,0);
loc1.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc2.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc3.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc4.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc5.setYaw(getLutil().FaceToYaw(getBlockFace()));
loc.add(loc1);
loc.add(loc2);
loc.add(loc3.subtract(0,offsetY,0));
loc.add(loc4.subtract(0,offsetY,0));
loc.add(loc5.subtract(0,offsetY,0));
fArmorStand asp = getManager().createArmorStand(getObjID(), loc1);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc2);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc3);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.2), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc4);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -7.7), BodyPart.HEAD);
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), loc5);
asp.getInventory().setHelmet(new ItemStack(Material.CARPET));
asp.setPose(new EulerAngle(0, 0, -.7), BodyPart.HEAD);
aspList.add(asp);
d+=.62;
}
//middle
for(int i = 0; i<=5;i++){
Location loc1= getLutil().getRelativ(saveLoc3, getBlockFace(), d, 0D);
loc1.setYaw(getLutil().FaceToYaw(getBlockFace().getOppositeFace()));
loc.add(loc1);
fArmorStand asp = getManager().createArmorStand(getObjID(), loc1);
asp.getInventory().setHelmet( new ItemStack(Material.WOOD_STEP));
aspList.add(asp);
d+=.62;
}
fArmorStand asp = getManager().createArmorStand(getObjID(), karabine1.add(0,-1.9,0));
asp.getInventory().setHelmet(new ItemStack(Material.TRIPWIRE_HOOK));
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), karabine2.add(0,-1.9,0));
asp.getInventory().setHelmet(new ItemStack(Material.TRIPWIRE_HOOK));
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), karabine3.add(0,-1.9,0));
asp.getInventory().setHelmet(new ItemStack(Material.TRIPWIRE_HOOK));
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), karabine4.add(0,-1.9,0));
asp.getInventory().setHelmet(new ItemStack(Material.TRIPWIRE_HOOK));
aspList.add(asp);
Location crafting = getRelative(getLutil().getCenter(block.getLocation()), getBlockFace(), 0, -.27).add(0, -.5, 0);
crafting.setYaw(getYaw()+90);
asp = getManager().createArmorStand(getObjID(), crafting.add(0,-1,0).clone());
asp.getInventory().setHelmet(new ItemStack(Material.LADDER));
aspList.add(asp);
asp = getManager().createArmorStand(getObjID(), crafting.add(0,.62,0).clone());
asp.getInventory().setHelmet(new ItemStack(Material.LADDER));
aspList.add(asp);
for(fArmorStand packet : aspList){
packet.setInvisible(true);
}
send();
Bukkit.getPluginManager().registerEvents(this, getPlugin());
Bukkit.getPluginManager().registerEvents(this, main.getInstance());
}
@EventHandler
public void onFurnitureBreak(FurnitureBreakEvent e){
if(getObjID()==null||e.getID()==null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
block.setType(Material.AIR);
e.remove();
delete();
}
@EventHandler
public void onFurnitureClick(FurnitureClickEvent e){
public void onFurnitureClick(ProjectClickEvent e){
if(e.getID() == null || getObjID() == null) return;
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(!e.getID().equals(getObjID())){return;}
if(!e.canBuild()){return;}
final Player p = e.getPlayer();
if(!p.getInventory().getItemInMainHand().getType().equals(Material.INK_SACK)){
p.openWorkbench(this.block.getLocation(), true);
p.openWorkbench(null, true);
}else{
getLib().getColorManager().color(p, e.canBuild(), Material.CARPET, getObjID(), ColorType.BLOCK, 1);
}
}
@EventHandler
private void onBlockBreak(BlockBreakEvent e){
if(getObjID()==null){return;}
if(getObjID().getSQLAction().equals(SQLAction.REMOVE)){return;}
if(e.isCancelled()){return;}
if(e.getBlock()==null){return;}
if(block==null){return;}
if(!e.getBlock().equals(block)){return;}
if(!getLib().canBuild(e.getPlayer(), getObjID(), EventType.BREAK)){return;}
if(this.block!=null&&e.getBlock().equals(block)){this.block.setType(Material.AIR);this.block=null;}
this.getObjID().remove(e.getPlayer());
delete();
}
}

View File

@ -1,5 +1,5 @@
name: DiceFurniture
version: 3.1
version: 3.2.0.2
description: Add some new Objects to the Server
author: Ste3et_C0st
website: http://dicecraft.de